Push vs Pull

Tags:    programmering webprogrammering generelt

Hej udviklere,

Jeg har gået lidt og funderet over forskellen på push og pull i programmeringsmæssig sammenhæng. Jeg har tidligere bygget et script til en hjemmeside, der gjorde brug af longpolling for opdatere indholdet på en given side.

På iPhone - som jeg forstår det - får man jo en så-kaldt push-besked når der sker et eller andet (F.eks. en notifikation på facebook el.lign.), men hvordan fungerer denne push-teknik egentligt i praksis?

Og hvad er fordele/ulemper ved push og pull når man skal lave noget?

Det skal lige siges, at jeg ikke har nogen avanceret uddannelse inden for programmering, så ville sætte pris på at terminologien bliver holdt relativt simpel :)



Sådan som jeg har forstået findes der 2 metoder at benytte Push i webudvikling.

Du kan læse lidt om dem her:

Server-sent Events
http://www.w3.org/TR/eventsource/

WebSocket
https://developer.mozilla.org/en-US/docs/WebSockets/WebSockets_reference/WebSocket

Men i bund og grund tror jeg det fungerer sådan at Klienten (I dette tilfælde browseren), står og lytter, men først laver en egentlig connection når data er tilgængelig, som serveren meddeler.



Indlæg senest redigeret d. 15.08.2012 10:42 af Bruger #16319
Forskellen er, at ved pull er det dit ansvar at tjekke med jævne intervaller, om en begivenhed er indtruffet. Ved push læner du dig tilbage og venter på at begivenheden indtræffer og det bagvedliggende system fortæller dig det.

Dit mail program tjekker sandsynligvis hvert 10. minut eller lignende, om der er kommet nye mails. Dette er pull.

Dit IM program fortæller IM serveren at du er online. Derefter leverer IM serveren beskeder til dig, når de kommer til serveren. Dette er push.

Fordelen ved push er, at der er lavt overhead og lav latenstid...forestil dig, at du skulle ned på posthuset hver dag for at se, om der er breve til dig...det overhead kan du sikkert godt leve uden. Du kan så istedet gå derned hver 10. dag, så er der lavere overhead, men så er der høj latenstid...lidt skidt hvis der kommer et brev til dig lige efter, du har tjekket. Så får du det 10 dage forsinket.

Håber det giver mening :-)



synes roberts eksempel er godt for ved pull der tjekker du for nye breve med et mellemrum
går ned på posthuset og får svar for så at gå hjem lige efter..
stort arbejde for dig og for posthuset - server og klient

ved long pull går du ned på posthuset og står der i en periode og venter på om der skal komme noget til dig.. ikke lige så hårdt for jer men stadig meget spild tid..

ved push venter du på at post manden banker på din dør og siger der er post til dig.. server er den aktive del her og dermed bliver det langt mere effektivt fordi der ikke er en masse transport frem og tilbage som er hårdt og tungt.. der er altid en http header som et transport og trafik det sendes med hvilket ville svare til du altid skal have en mappe med papirer med der forklarer en masse hvem du et og at du snakker dansk som ofte vil være tungt og unødvendigt for du skal spørge om du har fået post..
så det er lettere for server og klient fordi begge dele kun skal gøre noget når der er behov for det men samtidigt skal der også laves flere ting for det.. er skal viser hvor du bor for de kan levere til dig



Long pull er en måde at implementere push, så det er faktisk ikke spild af tid. Du opretter en forbindelse til serveren, sender et request + headere og venter så på at noget sker. Det sker asynkront (medmindre du specifikt gør det synkront) så du kan arbejde videre. Forbindelsen holdes længe (deraf navnet), så der er ikke mere arbejde før forbindelsen timer ud og du må forbinde igen.

Der er flere måder at implementere push i web klienten. Her er et par bud: http://en.wikipedia.org/wiki/Comet_%28programming%29



Indlæg senest redigeret d. 16.08.2012 12:18 af Bruger #2695
t