10. juli 2006 - 16:13Der er
9 kommentarer og 1 løsning
Mini-server
Jeg ønsker at lave en simpel Java-applikation, der venter på request udefra - altså en slags server-funktionalitet i sin helt enkle form.
I sin simpleste udgave kunne der være tale om en applikation, der venter på og viser en modtaget besked i en dialogboks, når beskeden modtages fra en anden maskine.
Lad mig spørge lidt mere uddybende: Antag at jeg har en række brugere, som med jævne mellemrum skal modtage forskellige nyheder fra en tjeneste. Når der er en nyhed, skal brugerne modtage beskeden via en dialogboks/pop-up vindue eller f.eks. en lyd. I denne situation vil jeg umiddelbart tænke på brugerne som klienter og tjenesten som server.
Men hvordan skal teknikken så skrues sammen? Ja, brugernes applikation kan f.eks. med faste mellemrum spørge serveren, om der er nyheder og i bekræftende fald vise dialogboksen. Dette er dog ikke umiddelbart hensigtsmæssigt, idet de fleste requests (hvis der requestes ofte) vil resultere i ingenting, idet der ikke er nyheder. Her kunne man som jeg ser det med fordel vende klient/server-forholdet om, således at brugernes applikation er små servere, der lytter på requests. Når tjenesten har en nyhed (og kun da) orienteres serverne. Dette vil minimere antallet af requests til det absolut nødvendige, idet linien kun belastes, når der er en nyhed. Dette kan have stor betydning ved mange brugere, der har brug for real-time nyheder.
Er dette en rigtig måde at tænke på? - altså at vende klient/server-forholdet.
sockets er lige ud af landevejen - grundliggende har server en ServerSocket som accepterer connections og gemmer Socket, den skriver saa til alle relevante klienter, hver klient har an Thread som staar i blocking read paa dens Socket og displayer naar der kommer noget
RMI kraever mindre kode men er maaske lidt mere kompleks - laes evt. min avanceret RMI artikel
Et enkelt tillægsspm.: Antag at man distribuerer nyheder via en hjemmeside, og brugerne igen skal orienteres som forklaret. Er du da bekendt med, om der her - altså ved brug af "almindelig" HTTP, HTML mv. - er muligt at etablere det omtalte forhold; altså at siden så at sige automatisk opdateres hos brugerne, når der er noget nyt at rapportere?
De teknikker du omtaler kan vel naturligt bygges ind i en Java-applet, som jo så kører via en hjemmeside, men jeg er lidt interesseret i, om samme teknik (også) kan etableres uden bruge af Java/Java-applets.
->arne_v: Er det en sikkerhedsmæssig restriktion? Rent funktionelt er det vel noget skidt i en situation med mange brugere, der har brug for real-time information, tænker jeg. Her ville det netop være elegant med interaktion initieret af server for at begrænse trafikken. Er det i øvrigt det samme med FTP? Og et sidste måske dumt spm.: Vil man kunne omgå denne restriktion ved at bruge passende Java-Script i stedet for f.eks. en applet?
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.