Een belangrijke ontwikkeling van de laatste tijd zorgt ervoor dat het browsen op internet nog interactiever, actueler en gebruikersvriendelijker wordt. Waar AJAX al een forse verbetering van de gebruikerservaring met zich meebrengt, zorgt de nieuwe Comet-technologie voor nog een stap en de introductie van echte push-technologie binnen het web.
De traditionele niet-internet applicaties die worden ontwikkeld lijken qua look-and-feel meer en meer op de omgeving binnen een browser. Dat wil zeggen dat nagenoeg ‘alles’ zich binnen een browser af zal spelen. Dat geldt dus ook voor meer traditionele (kantoor-)applicaties. Het verschil tussen traditionele applicaties en internetapplicaties zal wegvallen.
Web-applicaties winnen het van traditionele (desktop-)applicaties waar het gaat om look-and-feel en intuïtief gebruik. Tot nu was de ‘beleving’ binnen een website echter nog redelijk statisch vergeleken met traditionele desktopapplicaties. Immers, aan een gebeurtenis op een webpagina moet altijd een actie van de gebruiker voorafgaan. Dit werkt als volgt: De browser start, na een actie van de gebruiker wordt een http-verbinding 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, in tegenstelling tot traditionele desktopapplicaties waarbij de rijkheid van de informatie en snelheid van binnenhalen bijzonder hoog ligt.
Push-technologie en AJAX
Al ruim 10 jaar wordt er daarom gesproken van ‘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 eerste 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 (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.
Een belangrijke verbetering van de wijze waarop informatie op webpagina’s wordt ververst is AJAX. 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.
De passieve gebruiker
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 gegevens gewijzigd zijn. Dit is echter erg omslachtig omdat deze informatieaanvragen veel tijd vergen waardoor de performance van de applicatie zwaar op de proef wordt gesteld. Daarnaast worden de reactiesnelheden van de server door de vele aanvragen nog eens enorm vertraagd. Dit komt doordat er elke keer opnieuw een verbinding tot stand gebracht dient te worden als de cliënt wat aan de server vraagt. Er moet tenminste altijd één open netwerkverbinding zijn met elke actieve cliënt. Sommige web/applicatieservers proberen dit te omzeilen door als streaming servers op te treden. De basis van dit 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 aankan.
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 als vanzelf in de browser verschijnt. Op deze manier hoeft geen actie ondernomen 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 voorgedefinieerd, maar wordt beheerst door de server. Als er vaker nieuwe gegevens beschikbaar zijn, wordt de verbinding vaker geactiveerd. Hierdoor ontstaat nagenoeg een real-time situatie, hoewel nog steeds vertraging kan ontstaan in situaties waarin gegevens in hoge frequentie wijzigen. Dit wordt veroorzaakt doordat toch telkens de actie: ‘aanvraag-reactie’ moet worden opgestart; ook kent dit model nog steeds een schaalbaarheidsprobleem door de hoeveelheid verbindingen die continu gemaakt moeten worden om te pollen.
Comet-technologie levert echte push-technologie
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 gegevensoverdracht 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 gebruikersinterface. Hierdoor ontstaat een hoge verversingsfrequentie zonder al te veel vertraging en met een relatief laag bandbreedteverbruik. Er blijft een permanente verbinding 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 verbindingen met de server worden geïnitieerd. Aan de serverzijde wordt, ook al wordt niet direct aan het verzoek van de browser gehoor gegeven, de verbinding in stand gehouden totdat een gebeurtenis optreedt. Als een gebeurtenis optreedt ‘pusht’ de server de gegevens die door de gebeurtenis zijn gegenereerd door naar de browser over de al bestaande verbinding. De connectie kan blijven bestaan zonder dat de client keer op keer na hoeft 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 bandbreedteverbruik is redelijk beperkt.
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 voorraadinformatie of real-time chatten, spelletjes, etcetera binnen een browser ligt binnen handbereik.
John T. Knieriem en Chris Chabot, Intermax