04. november 2014 - 14:24Der er
9 kommentarer og 1 løsning
REST bevare en stream mellem client og server
Jeg sad lidt og tænkte, hvis man hostede en WebServiceHost, og forbandt med en server, til en af methoderne på servicen, hvor at streamen aldrig lukkede, kan det lade sig gøre? eller ville den locke hele servicen op?
hvis ikke, er der så en anden måde at gøre det på? :)
undskyld den lange svartid, men har haft søgt og søgt på en ordenlig måde at lave den feature jeg er ude efter.
Det jeg er ude efter er en måde at lade min rest server fortælle at der nu er opdateret data i puljen, som kan hentes.
Jeg har tænkt over nogen måder at gøre det på, som undersøtter mange clienter på samme tid.
Jeg har lidt overvejet om en sekundær udp socket er en god ide? siden computernet er på samme netværk, kan jeg sende en impuls over udp, til alle de lyttende clienter, med en enkelt byte i, som betyder de skal hente fra REST servicen igen.
Dog er jeg ikke særligt klog på diverse teknologier derude, til at kunne komme med at ordenligt kvalificeret svar på hvad jeg skal gøre.
ellers er der jo Remoting, men efter min erfaring, er den ikke så god med mange forbindelser, som REST er?
1) Hvis antal klienter ikke er for stort (lad os sige <100 eller <250) saa kan du bruge long poll (AJAX request med timeout) og en normal (laes: blocking) service.
2) Du kan bruge long poll og en non-blocking service. Jeg har aldrig proevet dette i ASP.NET men lidt googling siger enten ASP.NET MVC AsyncController eller WCF service med [OperationContractAttribute(AsyncPattern=true)].
3) Hvis klienter alle har nyere browsere, saa kan du bruge web sockets. Lidt googling antyder at for ASP.NET er SignalR det bibliotek som du skal bruge.
4) Du kan vaelge at gaa imode trenden og satse paa plugin client side - SilverLight, Flash eller Java applet. Saa kan du bruge TCP socket eller UDP. Hvis altsaa dine firewalls tillader det.
Jeg har lavet en del tests på de forskellige muligheder, detsværre fik jeg ikke rigtigt det ud af det jeg gerne ville have haft, ideen er lidt at reducere trafikken som en AJAX ville lave, og syntes stadig Remoting er for ustabilt.
selvom remoting åbner for 2-vejs kommunikation, så føler jeg ikke rigtigt jeg har samme kontrol over forbindelsen, som man har med REST, jeg ved så ikke om det er fordi jeg kender mere til REST end Remoting. og det med at åbne porte op på clienterne, er jeg ret meget imod, da det i sig selv er en sikkerhedsbrist.
måske burde jeg bare lave en WCF REST side, hvor man kan indsende sit session id, og se om man har fået sidste data, som kun retunere
SYNC 200
eller
UNSYNC TIMEOUT 30 DATA 200
hvor man derefter kan finde ud af på klientsiden, om der er brug for at hente flere data.
det gode ved xml, er jo man kan tjekke på enkelte elementer i en forspørgelse :)
så i sidste ende bliver det jo nok en form for AJAX :)
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.