Avatar billede tl Nybegynder
03. september 2002 - 14:44 Der er 33 kommentarer

Server kontakt med client.

Er det muligt i ASP.NET at få webserveren, f.eks. et messageboard til at kontakte en web-client der er logget på ASP.NET applikationen.

Når der f.eks. kommer en ny besked, skal HTML clienten automatisk blive opdatered (push).

Muligt i asp.net og f.eks. ved brug af en web service?

Thanx!
Avatar billede a1a1 Novice
03. september 2002 - 14:50 #1
det tror jeg desværre ikke er muligt, html er jo stadig html
Avatar billede tl Nybegynder
03. september 2002 - 16:20 #2
det må jeg kunne lade sig gøre -- hvordan skulle et CHAT rum ellers virke?
Avatar billede z42cool Nybegynder
03. september 2002 - 16:22 #3
Du kan ikke pushe fra en server til en klient over HTTP da denne protokol jo i sin natur er stateless. I princippet er det nok muligt at logge indgående klienters IP adresser og efterfølgende udforme klienten så den "lytter" efter pakker fra serveren der så broadcaster til alle loggede IP adresser. Dette giver dog en lang række problemer, bla. vil det være meget svært for serveren at vide hvornår den skal holde op med at broadcaste til en bestemt klient!
Den smarteste løsning vil nok være at lade klienten spørge serveren med et vist interval om der er kommet nye beskeder!
Avatar billede cms Nybegynder
03. september 2002 - 18:02 #4
Ellers skal du skrive en klient i Java og en 'rigtig' tcp-server i c#...
Avatar billede kichian Nybegynder
03. september 2002 - 20:36 #5
Måden at implementere PUSH i HTML er at auto-refreshe siden eller en del af siden automatisk med et passende mellemrum.
Avatar billede z42cool Nybegynder
03. september 2002 - 23:41 #6
cms>> Hvorfor ikke en klient i c#
kichian>> Auto refresh på klienten er jo netop ikke push, men pull teknologi!
Avatar billede tl Nybegynder
04. september 2002 - 04:38 #7
hvorledes laver man autorefresh af siden, og kan man evt. blot lave refresh på en component.

Hvis man skulle skrive en client i C#, skulle det så være en activX for at køre i en browser.  Er man så ikke nød til at gå over til c++ for dette?
Avatar billede in2designs Nybegynder
04. september 2002 - 04:52 #8
måske kan man måske kan man ikke det er bare et spm om hvor hardcore du er.. hvis du ikke er så hardcore kan du jo altid tid skrive en mail til Karim Pedersen som ved næsten alt om ASP. kap@n-com.dk og ja det er ham som der også stå for det der internet blad som hele tiden kommer på gaden.. :) Det er da for nice et blad.. COM

Mvh
Michael T

Håber du kan bruge min hjælp..
hvis jeg staver for kert er det fordi at jeg er ordblind og er pisse fuld lige nu men har lyst til at lave opagaver til folk som dig.
Avatar billede cms Nybegynder
04. september 2002 - 06:57 #9
42cool > Det er så irriterende at skulle fortælle éns brugere at de skal hente .net Framework'et på, hvad, 50 MB? »¦~þ
Avatar billede cms Nybegynder
04. september 2002 - 06:59 #10
in2designs > LOL =)
Avatar billede z42cool Nybegynder
04. september 2002 - 09:08 #11
cms>> C# runtime delen fylder lige under 20MB.
tl>> Hvis du vil skrive en C# klient skal du netop ikke anvende activeX, men kan holde dig indenfor .Net modellen og skal derfor heller ikke anvende c++, men kan anvende VB.Net, C# eller hvad du nu foretrækker. Autorefresh kan laves på mange måder, personligt ville jeg anvende javascrits setInterval metode og alt efter publikum enten foretage kommunikationen med serveren vha. xml (kræver at alle bruger IE hvis det skal laves nemt) eller evt. køre kommunikationen i en skjult iframe vha. form posts. På denne måde undgår du at selve chat siden skal gentegnes hver gang klienten skal spørge serveren!
Avatar billede tl Nybegynder
04. september 2002 - 10:54 #12
ok tak.. Svarer en axtiveX component til en Java Applet?? Blot forskelligt sprog og ikke platformsuafhængig selvfølegelig
Avatar billede z42cool Nybegynder
04. september 2002 - 12:27 #13
tl>> Ja! Du kan godt sammenligne ActiveX komponenter med Java applets!
Avatar billede cms Nybegynder
04. september 2002 - 15:52 #14
Husk blot at hvis du skriver en ActiveX-kontrol skal den signeres digitalt hvilket koster flere 1000 kr. når man skal godkendes af en CA.
Til sammenligning kan siges, at ActiveX-kontroller er sproguafhængige men platformafhængige - Java applets er sprogafhængige men platformsuafhængige :)
Avatar billede z42cool Nybegynder
05. september 2002 - 08:11 #15
cms>> Han skal jo netop IKKE skrive en activeX komponent, men et c# assembly, sålænge det ikke behøver rettigheder på det lokale system, behøves det heller ikke at blive signeret!
Avatar billede tl Nybegynder
05. september 2002 - 10:24 #16
kan man skrive en ActiveX component i C# eller skal man over at bruge C++?
Avatar billede z42cool Nybegynder
05. september 2002 - 11:02 #17
tl>> Du kan godt skrive en ActiveX komponent i C#, men så kræver den alligevel at klienten har installeret .Net frameworket og hvis de har det er der ingen grund til at anvende ActiveX teknologien, så kan du lige så godt skrive et "rigtigt" C# assembly!
Avatar billede tl Nybegynder
05. september 2002 - 11:49 #18
ok. det er jo klart.. Det jeg vil lave skal kunne køre i en webbrowser, og skal kunne køre ved at gå ind på en URL.. Spørgsmålet er hvorledes man laver et sådant activeX program nemmest..  Kan man gøre det som et c# assembly eller er dette et normalt exe program.?
Avatar billede z42cool Nybegynder
05. september 2002 - 13:21 #19
Jeg tror følgende artikel vil interessere dig, specielt afsnittet om "The .NET Framework and Controls for Browsers"

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaskdr/html/askgui11062001.asp
Avatar billede cms Nybegynder
05. september 2002 - 16:17 #20
Et c# assymbly er overkill hvis du spørger mig, da brugeren skal hente ulideligt mange MB før det virker. Om det er 20 eller 50 er vist ligemeget :)
En 'rigtig' ActiveX har det problem at den skal signeres.
En java applet - hey! intet problam :)
Og så er der igen muligheden med at kombinere JavaScript og nogle skjulte frames m.v.
Avatar billede a1a1 Novice
05. september 2002 - 16:44 #21
der kommer vel en dag hvor alle (windows brugere ihvertfald), har frameworket installeret, så er der ikke meget at downloade...
Avatar billede z42cool Nybegynder
06. september 2002 - 08:29 #22
cms>> Hvorvidt man skal vælge .Net eller Java er vist mere en religionskrig end et spørgsmål om teknik.m Begge platforme har sine fordele. Såfrremt man skal kode til Windows alene, må .Net forventes at være det der giver de bedste resultater, alene baseret på det faktum at platform såvel som styresystem stammer fra samme leverandør!
Avatar billede tl Nybegynder
06. september 2002 - 09:03 #23
OK.. men kan man få et C# windows forms program til at køre i en browser.. og i så fald hvordan?
Avatar billede z42cool Nybegynder
06. september 2002 - 09:30 #24
Først laver du din kontrol, som skal være en subklasse til System.Windows.Forms.UserControl.

namespace MyIEControls
{
  public class TestIEControl : System.Windows.Forms.UserControl
  {
    //Implementer din kontrol her
  }
}

Dernæst kompilerer du og placerer assemblyet i en sti på din webserver. Nu bruger du <object> taggen til at indsætte kontrollen i din webside

<OBJECT id="ctrl1" classid="Assembly.dll#Namespace.Path.ControlName">
</OBJECT>

hvor Assembly.dll er stien til dit assembly. Har du f.eks. placret mycontrol.dll i http://www.minserver.dk/net/controls, skal <object> taggen se således ud:

<OBJECT id="ctrl1" classid="http://www.minserver.dk/net/controls#MyIEControls.TestIEControl">
</OBJECT>
Avatar billede Slettet bruger
20. september 2002 - 17:57 #25
Det er muligt, men dem som jeg ved gør det har en server kun til at sende data til klienten. Og kender ingen metode til det, men det er muligt.

PS. det er ikke sikkert det er i ASP.NET...
Avatar billede z42cool Nybegynder
23. september 2002 - 09:43 #26
zitchbow>> ??? Hvad mener du? At serveren sender data til en browser uden at denne har forespurgt det???
Avatar billede cms Nybegynder
23. september 2002 - 16:26 #27
Z42: Overvej følgende:
En TCP-connection som er instantieret fra klient til server kan jo godt ligge i dvale og vente indtil der kommer data fra serveren. Dette vil være en slags indirekte push fra serveren, for selvom clienten er den som i første omgang opretter forbindelsen, så vil clienten ikke skulle requeste serveren hver 10. sekund. Istedet vil den blocke, i en bagvedliggende tråd, indtil serveren kommer med response, hvilket den jo sagtens kan gøre flere gange.
Altså har du en løsning, hvor din klient sagtens kan være bagved firewall og andet godt, hvor serveren ikke behøver at kende klientens ip, og hvor trafikken kun forefindes når den er nødvendig
Avatar billede z42cool Nybegynder
24. september 2002 - 09:39 #28
cms>> Det kan selvfølgelig sagtens lade sig gøre med en binær klient på klienten og af samme årsag har vi jo allerede luftet .Net, Java og ActiveX. Dit scenarie er jo overhovedet ikke et server push, men derimod et multi threaded client pull, hvilket altså ikke gør det til et indirekte push. Problemet med dit setup er, at så snart klienten har modtaget data fra serveren bliver den straks nød til at lave en ny forespørgsel så serveren har en åben tcp forbindelse at svare på. Med i din request skal du så sende state information så serveren kan se hvad du ved og hvad du ikke ved og ud fra dette bestemme hvornår du skal have den næste opdatering. Dette virker fint på klienten om end det er en anelse omstændigt. Men se det nu fra serverens side. Med f.eks. 2000 aktive klienter vil der konstant være 2000 åbne tcp forbindelser på serveren, det er altså ikke ret performance forbedrende!
Avatar billede cms Nybegynder
24. september 2002 - 14:17 #29
Humm humm.. nej det har du komplet ret i. Så den bedste løsning må vel være at klienterne er tilgængelige (altså ikke bag firewalls osv.) for serveren, så den åbner connection'erne til klienterne når der rent faktisk *er* data. Eller?
Avatar billede z42cool Nybegynder
24. september 2002 - 14:52 #30
cms>> Ja det er afgjort den bedste løsning, men man kan jo bare bruge port 80, så bliver firewalls sandsynligvis ikke et problem!
Avatar billede cms Nybegynder
24. september 2002 - 15:06 #31
Nej, korrekt. Så er der lige proxyservere.. men i det store hele. Ellers kan den modsatte løsning med 20 sekunders intervallers pull jo benyttes som 'backup'
Avatar billede z42cool Nybegynder
17. oktober 2002 - 16:05 #32
tl>> Har du fået svar på dit spørgsmål????
Avatar billede z42cool Nybegynder
04. februar 2003 - 14:50 #33
tl>> ???? Vil du ikke snart svare på nogle af dine MANGE åbne spørgsmål?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester