Comet brengt volgende revolutie bij internetbrowsen
Waar AJAX-technologie al een forse verbetering van de gebruikerservaring met zich meebrengt, zorgt de nieuwe Comet-technologie voor nog eens een extra stap en de introductie van echte push-technologie binnen het web. Dit artikel van John T. Knieriem en Chris Chabot van Intermax gaat in op alweer een volgende belangrijke ontwikkeling die het internetbrowsen nog interactiever, actueler en gebruikersvriendelijker maakt.
Een belangrijke ontwikkeling in de automatisering is dat traditionele niet-internetapplicaties die worden ontwikkeld, in hun look-and-feel meer en meer op de omgeving binnen een browser gaan lijken. Dat wil zeggen dat nagenoeg ‘alles’ zich binnen een browser af zal gaan spelen. Dat geldt dus ook voor meer traditionele (kantoor) applicaties. Het verschil tussen traditionele applicaties en internet applicaties zal wegvallen.
Traditionele desktop applicaties zijn dynamischer dan web-applicaties
Web-applicaties winnen het van traditionele (desktop-)applicaties waar het gaat om look-and-feel en intuïtief gebruik. Maar tot nu was de ‘beleving’ binnen een website nog redelijk statisch vergeleken met traditionele desktop applicaties. Immers, om wat te laten gebeuren op een webpagina moet hier altijd een actie van de gebruiker tegenover staan.
Dit werkt als volgt: De browser start, na een actie van de gebruiker wordt een HTTP connectie naar een webserver geopend, die vervolgens de gegevens terugstuurt waarna de connectie wordt gesloten. Dus alleen na een actie van de gebruiker treedt er verversing van de content van de pagina op. Niet alleen wordt de ‘nieuwe informatie’ opgehaald, de hele pagina wordt vernieuwd, wat natuurlijk behoorlijke vertragingen met zich meebrengt.
Bovendien werkt dit verwarring in de hand als de hele context van de pagina door een interactie veranderd, een gevoel dat voor elke gebruiker herkenbaar is. Zeker als daarbij bedacht wordt dat zowel de browserkant als de serverkant worden geblokkeerd op het moment van verversen. Het systeem is, in andere woorden volledig synchroon. Dit in tegenstelling tot traditionele desktop applicaties waarbij de rijkheid van de informatie en snelheid van binnenhalen bijzonder hoog ligt.
Pointcast probeerde het als eerste met Pushtechnologie
Al ruim 10 jaar wordt er daarom gesproken over ‘Push technologie’. Zonder zelf geïnitieerde actie wordt de informatie kant-en-klaar bij de gebruiker afgeleverd.
Push technologie is niks bijzonders in het dagelijks leven. De krant die ’s avonds in de fysieke brievenbus valt is al een voorbeeld. In 1996 was het bedrijf Pointcast een van de eersten op het gebied van internet dat beloofde gepersonaliseerd nieuws te genereren. Helaas liep het hopeloos af met Pointcast en bleef Push vooralsnog een illusie.
Enkele jaren geleden werd RSS, ofwel Really Simple Syndication geïntroduceerd. Dit is inmiddels een populaire toepassing. Het nadeel hierbij is echter dat de gebruiker weer een apart stukje software moet installeren op zijn PC. En feitelijk is het geen push technologie want het geïnstalleerde programmaatje ‘struint’ de websites af op zoek naar nieuwe informatie.
AJAX is in razend tempo erg populair geworden
Een belangrijke verbetering van de wijze waarop informatie op webpagina’s wordt ververst is AJAX (zie ook Top 10 AJAX start ups). In de afgelopen jaren is de toepassing van Ajax (Asynchronous Javascript And XML) heel populair geworden.
AJAX is een combinatie van diverse scripttalen en staat voor het ontwerp van interactieve webpagina’s waarin synchroon of asynchroon gevraagde gegevens worden opgehaald van de webserver. Alleen de informatie die gewijzigd is op de webpagina wordt ververst. Hierdoor ontstaat voor de gebruiker al meer de ‘beleving’ dat een applicatie in de browser draait. Bovendien verandert de context van de pagina veel minder waardoor minder verwarring ontstaat. Door gebruik te maken van XMLHttpRequest, hoeft de webpagina niet opnieuw ververst te worden om nieuwe inhoud te krijgen.
Een nadeel is dat in de basis de interactie tussen de browser en de server zodanig is opgezet dat behoorlijk wat bandbreedte wordt verspild en er sprake is van behoorlijke wachttijden bij de aflevering van gegevens.
Als belangrijkste nadeel blijft dat de gebruiker een actie moet ondernemen voordat de data door de server worden verstuurd.
Het basis push-model
Om de beleving nog een stap verder te brengen is noodzakelijk dat de informatie binnen webpagina’s automatisch verandert zonder actie van de gebruiker. In dit push-model wordt de gebruiker dan als het ware een passief onderdeel van het systeem. Dat zou kunnen door de applicatie zo te maken dat deze in een hoge frequentie bij de server nagaat of er een gegevens gewijzigd zijn. Maar dit is erg omslachtig omdat deze informatieaanvragen veel tijd vergen waardoor de performance van de applicatie zwaar op de proef wordt gesteld.
Daarnaast worden door de vele aanvragen de reacties snelheden van de server nog eens enorm vertraagd. Dit komt omdat elke keer als de cliënt wat aan de server vraagt, er opnieuw een verbinding tot stand gebracht dient te worden. Er moet tenminste altijd één open netwerk verbinding zijn met elke actieve cliënt.
Sommige web/applicatie servers proberen dit te omzeilen door als streaming servers op te treden. De basis van dit architectonische model is: ‘één proces per verbinding’ en dat is een model dat nooit opgeschaald kan worden naar tienduizenden of meer gebruikers tegelijkertijd. Dit model loopt dus vast omdat ofwel de server ofwel de beschikbare bandbreedte dit niet aan kan.
Schaalbare snelle push met asynchrone polling
Om tot echte werkbare, schaalbare en snelle push technologie te komen zou het mooier zijn als de server de browser informatie geeft als er informatie is veranderd waarna deze informatie als vanzelf in de browser verschijnt. Op deze manier hoeft geen actie te ondernemen te worden om steeds na te gaan of informatie is veranderd en kan door worden gegaan met ander werk.
Het klassieke AJAX kan verbeterd worden door toepassing van ‘asynchronous polling’. De periode waarop de client aan bij de server nagaat of er informatie is veranderd (polling) is hierbij niet voor gedefinieerd maar wordt beheerst door de server. Als er nieuwe gegevens beschikbaar zijn, of vaker beschikbaar zijn wordt de verbinding vaker geactiveerd. Hierdoor ontstaat nagenoeg een real-time situatie alhoewel situaties waarin in hoge frequentie gegevens wijzigen nog steeds vertraging kan ontstaan. Dit wordt veroorzaakt doordat toch telkens de actie: ‘aanvraag-reactie’ moet worden opgestart, ook kent dit model nog steeds een schaalbaarheids probleem door de hoeveelheid aan verbindingen die continue gemaakt moeten worden om te pollen.
Comet-technologie levert echte push-technologie binnen een browser
Nog een stap verder is “streaming Ajax”, “Comet” of “Forever frame” genoemd. Dit is de huidige state-of-the-art technologie die de komende tijd enorm aan populariteit zal winnen. Hierbij is sprake van daadwerkelijke push/streaming-techniek binnen bestaande standaard Webinfrastructuur.
Comet zorgt ervoor dat de traditionele gegevens overdracht tussen webservers en browsers verandert. Het is een volledig realtime & a-synchrone dataoverdracht van de server naar de browser en van de browser naar de gebruikers interface. Hierdoor ontstaat een hoge verversingsfrequentie zonder al te veel vertraging en met een relatief laag bandbreedte verbruik. Er blijft een permanente connectie tussen de browser en de server bestaan. Door de toepassing van een Javascript callback functie ontvangt de browser een signaal van de server dat informatie is veranderd. Hierdoor wordt code geactiveerd die de informatie op de pagina laat verversen.
De browser (client) zijde moet dus blijven werken terwijl asynchroon connecties met de server worden geïnitieerd. Aan de server zijde wordt, ook al wordt niet direct aan het verzoek van de browser gehoor gegeven, de connectie in stand gehouden totdat het een gebeurtenis optreedt. Als een gebeurtenis optreedt ‘pushed’ de server de gegevens die door de gebeurtenis zijn gegenereerd door naar de browser over de al bestaande connectie. De connectie kan blijven bestaan zonder dat de client keer op keer na behoeft te gaan of er nog nieuwe informatie is. Hierdoor wordt het model schaalbaar naar tienduizenden gebruikers zonder dat de server bezwijkt onder de hoeveelheid werk en ook het bandbreedte verbruik is redelijk beperkt.
Revolutionair
Het moge duidelijk zijn dat Comet-technologie revolutionair is. Voor het eerst wordt binnen browsen real-time informatie zichtbaar. De komende maanden zullen meer en meer webapplicaties gebruik gaan maken van deze technologie. Real-time koersinformatie, real-time voorraad informatie of bijv. real-time chatten, spelletjes, etc binnen een browser ligt binnen handbereik..
Dit artikel verscheen deze week eveneens in Computable.
Bronnen :
• Lang leve PointCast – Arjan Dasselaar
• Wikipedia
• Next Generation Push: a viable technology for web-based FX market data delivery -Alessandro Alinone
• The next stage of AJAX – Alex Russell
• Chris Chabot – Chat prototype – First public demo
• Ajax: A New Approach to Web Applications by Jesse James Garret
• illustraties naar Alessandro Alinone
John T. Knieriem is managing director van het Rotterdamse internetbureau Intermax en blogt ook bij Dutch Cowboys. Chris Chabot is lead programmer bij Intermax.