Om een uniforme manier van gegevensuitwisseling over internet mogelijk te maken, is XML ontwikkeld. XML zegt echter niets over de complexe datastructuur waarin de gegevens gegoten zijn en uit wat voor datatypen de losse elementen van de gegevensset bestaan. Wddx voegt deze informatie toe aan XML. Sander Duivestein over de voordelen van dit protocol.
De kracht van internet is gebaseerd op de samenwerking van verschillende partijen met elkaar. In het verleden was dit verbond voornamelijk gebaseerd op de traditionele relatie die er tussen een client en een server bestond. Tegenwoordig zien we echter een trend ontstaan waarbij informatie van meerdere partijen wordt gecombineerd (bijvoorbeeld een reisportaal waarbij reizen van verschillende reisorganisaties geboekt kunnen worden) alvorens het resultaat wordt aangeboden als een nieuwe bron van informatie.
Ieder bedrijf heeft voor zijn bedrijfskritieke applicaties gekozen voor het beste platform, de beste programmeertaal alsmede het framewerk waarin applicaties ontwikkeld dienen te worden. De combinatie van bovenstaande factoren bemoeilijkt de bundeling van informatiestromen echter aanzienlijk. Een uniforme wijze van gegevensuitwisseling ontbreekt immers op deze manier.
Een oplossing voor bovenstaande problematiek is het gebruik van XML (eXtended Markup Language). Wddx (Web Distributed Data Exchange) is een van de protocollen, naast bijvoorbeeld Soap (Simple Object Access Protocol), dat gebruik maakt van XML om complexe gegevensstructuren te transporteren van de ene naar de andere omgeving.
Wat is Wddx?
Wddx is door Simeon Simonov (Chief Architect van Allaire Corporation, (http://www.allaire.com) ontwikkeld om allerlei problemen op te lossen die zich kunnen voordoen wanneer er gegevens uitgewisseld worden tussen verschillende omgevingen. Wddx maakt het mogelijk om verschillende typen van gegevens uit te wisselen op een wijze die programmeertaalonafhankelijk is, en staat neutraal tegenover het gebruikte platform.
Wddx is ontwikkeld met internet in gedachten en is gebaseerd op reeds bestaande technologieën die ontwikkeld zijn voor internet. Dankzij Wddx is het mogelijk om complexe gegevensstructuren te transporteren over internet zonder dat er informatie verloren gaat over de structuur van de data alsmede de typen van data die de structuur in zich herbergt.
Wanneer een gebruiker namelijk zijn of haar geboortedatum invult in een Visual Basic formulier op een Windows 95-client, en deze informatie vervolgens verstuurt naar een Java-servlet op een Linux-machine, dan dient niet alleen de inhoud van de datum, maar ook het type (date) bewaard blijven, ongeacht de programmeertaal of het platform.
Wanneer gegevens zijn weggeschreven naar een Wddx-formaat, dan zijn ze gemakkelijk naar een disk te schrijven, te delen tussen verschillende typen van applicaties of te transporteren over internet middels Http. De data kan later ingelezen en gebruikt worden door applicaties die Wddx ondersteunen.
De basis
Internet is groot geworden dankzij twee technologieën, namelijk Http (Hyper Text Transport Protocol) en Html (Hypertext Markup Language). Http wordt gebruikt voor het transport van gegevens en Html wordt gebruikt om de gegevens te tonen in de browser. Html heeft echter één groot nadeel, er wordt namelijk een relatie gelegd tussen de opmaak van de gegevens en de gegevens zelf.
Het volgende voorbeeld maakt bovenstaande relatie duidelijk. Een beursgenoteerd bedrijf A wil zijn werknemers van dienst zijn door op het eigen intranet zijn beurskoers te tonen. Deze koers wordt rechtstreeks vanaf een Html-pagina gehaald die door een externe website wordt beheerd. In plaats van iedere dag de beurskoers af te lezen en over te tikken, heeft het bedrijf A een applicatie ontwikkeld die weet op welke plek in de Html-pagina de gegevens van de eigen organisatie worden vermeld. Wanneer nu de eigenaar van de website plotsklaps besluit om de lay-out van zijn beurspagina aan te passen en hiermee dus de locatie van de beursgegevens wijzigt, ontstaan er opeens problemen voor het bedrijf. Html is dus niet het juiste protocol om de structuur van gegevens te bewaken.
XML (eXtended Markup Language) maakt het mogelijk om de structuur van gegevens op een eenvoudige manier vast te leggen (figuur 1). Het zegt niks over de manier waarop de gegevens getoond dienen te worden, immers daar bestaat Html al voor.
Figuur 1. Voorbeeld XML. De structuur van de gegevens staat los van de opmaak.
XML zegt niets over de complexe datastructuur waarin de gegevens gegoten zijn en uit wat voor datatypen de losse elementen van de gegevensset bestaan. Wddx voegt deze informatie toe aan XML. In figuur 1 gaat het om een ‘recordset’ van gegevens; het datatype van het element ‘vandaag’ is een ‘number’ (figuur 2).
Figuur 2. Voorbeeld Wddx-pakket.
Wddx is gebaseerd op bestaande technologieën. Het maakt gebruik van Http (Hyper Text Transport Protocol) om de gegevens te transporteren en tevens van XML om de gegevens te structureren. Wddx voegt bovendien nog iets toe aan XML, namelijk datatypering.
Terminologie
Om Wddx te kunnen begrijpen is het van belang dat de volgende drie begrippen nader worden uitgelegd: ‘pakket’ (‘package’), ‘serialiseren’ (‘serialize’) en ‘deserialiseren’ (‘deserialize’).
Een Wddx-pakket wordt gecreëerd wanneer een gegevensstructuur wordt geconverteerd. Een pakket is als het ware een eendimensionale weergave van de gegevens. Omdat een Wddx-pakket een hiërarchie vertegenwoordigt in eendimensionale vorm, is het mogelijk om de gegevens over internet te versturen zonder dat er belangrijke informatie omtrent de oorspronkelijke structuur van de gegevens alsmede de datatypen van de individuele elementen verloren gaat.
Het conversieproces om een bestaande structuur van gegevens om te zetten in een Wddx-pakket, wordt ‘serialiseren’ genoemd.
Het vertalen van het Wddx-pakket naar de oorspronkelijke structuur van gegevens wordt het ‘deserialiseren’ genoemd. Het is het tegenovergestelde van ‘serialiseren’.
Wddx is gebaseerd op een heel simpel proces. Een set van gegevens dient getransporteerd te worden van de ene naar de andere omgeving. Aangezien er geen rekening gehouden kan worden met het platform aan de andere kant van de lijn, wordt de gegevensstructuur omgezet c.q. ‘geserialiseerd’ in een Wddx-formaat (een pakket). Zodra het pakket is gegenereerd uit de oude gegevensset kan het getransporteerd worden via Http naar de andere omgeving. Aldaar aangekomen, kan het pakket ‘gedeserialiseerd’ worden naar het oorspronkelijke formaat, zonder dat er informatie verloren is gegaan omtrent de gegevens zelf, de structuur van de gegevens en de datatypen van de individuele elementen.
Om gebruik te kunnen maken van Wddx binnen een bepaalde omgeving, dient er een module geïmplementeerd te worden. Deze modules zijn gratis te downloaden vanaf http://www.wddx.org. Ze maken het mogelijk dat verschillende omgevingen c.q. programmeertalen met elkaar kunnen communiceren. Door deze modules worden momenteel de volgende datatypen ondersteund: booleaans, numeriek, datum en string. Tevens wordt er een aantal complexe structuren ondersteund, namelijk: ‘array’, ‘structure’, en ‘recordset’. Wddx-modules zijn er in een aantal talen: Perl, Java, PHP, COM, ASP en Python.
WDDX Type | COM Type | Java Type | ECMAScript(JavaScript) Type |
Boolean | BOOL | java.lang.Boolean | boolean |
Number | Double | java.lang.Double | number |
DateTime | DATE | java.util.Date | Date |
String | BSTR | java.lang.String | string |
array | VARIANT array | java.util.Vector | Array |
Struct | IWDDXStruct | java.util.HashTable | Object |
Recordset | IWDDXRecordset | java.sql.ResultSet? | WddxRecordset |
Figuur 3. Wddx datatypen. Bron : http://www.wddx.org.
Wddx-scenario’s
Wddx kan in een tweetal scenario’s worden ingezet, namelijk: ‘browser naar server’ en ‘server naar server’.
Browser naar server: De rekenkracht van de clients is in de loop der jaren alleen maar toegenomen. Html maakte daar niet optimaal gebruik van. Met de komst van Dhtml (Dynamic Html) werd het mogelijk om gegevensstructuren op de client te bewerken alvorens deze terug te sturen naar de client. De eerste oplossingen op dit gebied werden alleen voor Internet Explorer toegepast door Microsoft middels RDO (Remote Data Objects). Dankzij de komst van Wddx is het mogelijk om een generieke oplossing voor een Internet Explorer- en een Netscape-browser te ontwikkelen. Wddx en Java Script maken het nu mogelijk om op de client gegevens toe te voegen, te wijzigen of te verwijderen in een gegevensset alvorens deze als geheel terug te sturen naar de webserver. Dit betekent aanzienlijk minder werk voor de webserver, hetgeen zeer ten goede komt in een website die vaak benaderd wordt.
Server naar server: Wddx biedt tevens een oplossing waarbij verschillende servers met elkaar tijdens ‘runtime’ kunnen communiceren. Een server die host is voor een reisportaal, kan zijn informatie (weer, nieuws, wisselkoersen, enzovoort) van derden onttrekken en inlijven in de eigen website. Door deze uitwisseling van gegevens kan extra toegevoegde waarde ten opzichte van het eigen product worden gegenereerd.
Wddx versus andere XML-oplossingen
De maker van Wddx, Simon Simenov, voorspelde het zelf al: Wddx dient gezien te worden als een tussentijdse oplossing voor het realiseren van gedistribueerde internet-applicaties. Echter, sinds de ontwikkeling van dit protocol (1998) is het veelvuldig toegepast voor bedrijfskritische toepassingen. In Amerika en Engeland heeft het protocol zelfs een grote naam voor het uitwisselen van gegevens.
Wddx is echter niet het enige XML-protocol dat zich bezighoudt met het uitwisselen van gegevens tussen verschillende systemen. Momenteel hebben een tweetal andere protocollen veel rugsteun verkregen door de huidige internet-gemeenschap, namelijk Soap (Simple Object Access Protocol) en Uddi (Universal Description, Discovery and Integration). De specificatie Soap richt zich op het instantiëren van externe objecten door middel van Http en XML. Uddi is een vervolg op Soap; middels Uddi is het ook mogelijk om te zoeken op de diensten die deze externe objecten aanbieden.
De huidige manier van ontwikkelen probeert een applicatie op te delen in een aantal lagen. Presentatielogica rust bij de client; businesss- en datalogica zijn de verantwoordelijkheid van de server. Wddx probeert op metaniveau naar applicaties te kijken. Het impliceert niet dat het opsplitsen van verantwoordelijkheden in lagen verkeerd is, maar de kracht van Wddx wordt pas duidelijk wanneer de client en de server gezien worden als een verenigd platform van applicaties.
Het is echter niet alleen maar zonneschijn. Door Wddx worden er ook bepaalde afhankelijkheden gecreëerd. Ten eerste is daar de grootte van de boodschap (‘payload’) die via Wddx wordt verstuurd; deze neemt toe ten opzichte van het originele formaat. Hoe snel deze boodschap wordt gelezen en geïnterpreteerd is dus afhankelijk van de ontvanger. Des te groter de boodschap, des te langzamer de informatie gebruikt kan worden. Verder bestaat er afhankelijkheid van andere systemen. Indien een bedrijf 24×7 uur een product wil aanbieden, waarbij gebruik gemaakt wordt van informatie van andere websites die niet dezelfde criteria hanteren, dan kan er een probleem ontstaan.
Wddx is een middel waardoor bedrijven elkaars informatie kunnen ophalen, interpreteren en integreren opdat nieuwe producten kunnen ontstaan. Indien bedrijven andermans informatie kunnen incorporeren in de eigen bestaande waardeketen, dan kan een bedrijf nieuwe toegevoegde waarde genereren. Of zoals Metcalfs wet het uitdrukt: ‘De waarde van een netwerk neemt exponentieel toe met iedere knoop die toegevoegd wordt aan het netwerk’.
Sander Duivestein Cap Gemini Ernst & Young
Bronnen: http://www.wddx.org
http://www.allaire.org