Avatar billede Droa Seniormester
04. november 2014 - 14:24 Der 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å? :)

Mange tak
Avatar billede arne_v Ekspert
04. november 2014 - 14:33 #2
Generelt skal du passe paa, fordi diverse firewalls har det med at lukke en HTTP forbindelse efter nogen tid.
Avatar billede Droa Seniormester
06. november 2014 - 07:54 #3
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?
Avatar billede arne_v Ekspert
07. november 2014 - 02:57 #4
Der er flere muligheder.

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.
Avatar billede Droa Seniormester
07. november 2014 - 08:37 #5
hmm.. clienten er ikke en browser, men et telefon software, som skal køre på en windows pc, så ajax, websockets og silverligt er ikke en mulighed
Avatar billede arne_v Ekspert
07. november 2014 - 15:41 #6
#1 og #2 er stadig mulige. Jeg er sikker paa at den objective-C eller Java kode du har i telefonen godt kan lave et HTTP kald med timeout.
Avatar billede Droa Seniormester
17. november 2014 - 11:07 #7
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 :)
Avatar billede arne_v Ekspert
17. november 2014 - 20:37 #8
Remoting duer naeppe. .NET specifik og de fleste firewalls vil blokere.

REST service maa vaere vejen frem.

XML eller JSON som format er en mindre detalje.
Avatar billede Droa Seniormester
17. november 2014 - 20:48 #9
takker, jeg brugte en masse elementer, af det du nævnte, kan du lige lave et svar :)
Avatar billede arne_v Ekspert
17. november 2014 - 20:54 #10
svar
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

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