Webdevelopment: PUSH vs PULL

 
20 september 2009

De laatste jaren lijkt het klassieke web zoals we het kennen (HTML + Javascript over HTTP) niet meer te voldoen op verschillende gebieden. Zo is het meer en meer gebruikelijk om bovenop deze technologieën een RIA (Rich Internet Application) platform als Microsoft Silverlight, Adobe Flex of JavaFX te draaien. Sterke tegenhangers hiervan zijn op de klassieke standaarden gebaseerde frameworks als JQuery.

Ook op gebied van communicatie tussen webserver en client is meer en meer wrijving aan het ontstaan. Zo voldoet het klassieke pull-model van HTTP (de browser vraagt een resource op via een HTTP request message, waarop de server een response terugstuurt) niet meer in veel webgebaseerde scenario’s. AJAX biedt hiervoor een redelijke aanvulling, maar blijft pull-gebaseerd. Veel real-time applicaties vereisen een push model: de server zou zijn clients (of subscribers) op eigen initiatief moeten kunnen notificeren.

Ik heb vandaag wat tijd besteed aan het uitzoeken van verschillende technologische alternatieven hiervoor. Een term die je in deze context tegenkomt is Comet. Dit is eigenlijk een verzamelterm, net als AJAX, voor technologie die push i.p.v. pull gedreven werkt: ook wel bekend als reverse-AJAX of push-AJAX. (Comet is trouwens een ander bekend merk schoonmaakmiddel net als AJAX, vandaar de naam :)). Een veel gebruikte techniek voor Comet applicaties is ofwel de streaming HTTP response (een response elke keer bijvullen met nieuwe gegevens) of “long-polling”: op elk event een nieuwe poll request afvuren, die pas beantwoordt wordt bij het volgende request. Allemaal redelijk ‘smerig’.

Een meer expliciete PUSH benadering is reverse-HTTP (ook wel PTTH genoemd :)): een interessante implementatie vindt je hier. Het principe is hier dat je binnen je browser eigenlijk een (javascript-based) webserver draait die vanuit de server aangeroepen kan worden. Dat is wel èchte push.

Ik sluit af met een aantal resources waar meer te vinden is:


Werken met ?
Kijk dan bij onze mogelijkheden voor starters en/of ervaren IT'ers.


Categorieën: Architectuur, Development

Tags: , , , ,


Reactie

  • Ivo Limmen schreef:

    Ik heb eigenlijk nooit in Comet programmeren gedoken maar het Pushlets verhaal is mij wel bekend. Ik heb samengewerkt met Just van den Broecke (de maintainer van dit framework) toen ik bij Virgil werkte. Tegenwoordig zijn er een hoop alternatieven zoals DWR (http://directwebremoting.org/dwr/index.html) dat beide kanten op kan communiceren.

    Geplaatst op 07 oktober 2009 om 21:22 Permalink