Het is een historisch gegeven dat technologieën die langzaam evolueren sneller worden geaccepteerd dan revolutionaire technologieën. Evolutie is ook het geheim achter het succes van Microsofts gedistribueerde architectuur (DCA, Document Content Architecture).
DCA begon met het simpele OLE-model van Windows en evolueerde via COM in het gedistribueerde Dcom-model. Dcom is eenvoudiger dan Corba, maar de afhankelijkheid van Windows 2000 heeft Dcoms opmars tot stilstand gebracht. Gedistribueerde systemen moeten de deur nu eenmaal openlaten voor omgevingen waarbij verschillende platformen onderling samenwerken. Een multiplatform middleware-oplossing als Corba is dan ook superieur.
De discussie over welke aanpak beter is – een puur objectmodel met overerving en polymorfisme of een eenvoudig componentmodel – zal nog wel een paar jaar doorgaan. Maar voordat we ons binden aan gedistribueerde modellen als Corba of DCA is het goed op te merken dat rpc (remote procedure call) , waarbij een dunne client-PC procedures op de server aanroept, een eenvoudige aanpak is die nog jaren meekan. Bij rpc-mechanismen moet altijd een verbinding kunnen worden gemaakt, en dat maakt deze mechanismen minder geschikt voor complexere systemen waarbij componenten of objecten over meerdere objecten gespreid kunnen zijn. Corba gaat verder en kent een ‘broker’ waarmee de locatie van componenten tijdens run-time kan worden vastgesteld. DCA daarentegen gebruikt Internet-adressering op basis van URL’s. Deze modellen zijn dynamischer dan de eenvoudige rpc-technieken en zijn bestand tegen situaties waarbij objecten van locatie veranderen, worden toegevoegd of verwijderd (zoals bij het balanceren van de werklast). Zulke systemen zijn hard nodig, maar de eenvoudige systemen zijn groter in aantal. Rpc kan worden gebruikt om procedures in legacy-applicaties aan te roepen, zonder dat er Corba of DCA-nodes aan de omgeving toegevoegd hoeven te worden.
XML heeft nog een dimensie aan al deze verwarring toegevoegd. XML is niet meer dan een opmaaktaal, die zeer geschikt is voor het construeren van berichten die zichzelf definiëren. XML is van belang voor elk systeem dat berichten moet uitwisselen. Berichten kunnen zowel opdrachten als gegevens bevatten; XML ondersteunt de metagegevens die nodig zijn voor de flexibiliteit van moderne, multidisciplinaire systemen. Het is de taal die wordt gebruikt om metagegevens aan ruwe gegevens toe te voegen; deze metagegevens worden voor specifieke applicaties gedefinieerd met behulp van relevante schema’s.
De Java-gemeenschap definieert standaarden waarmee Java-componenten gedistribueerd kunnen worden. Suns RMI is een gemeenschappelijke techniek, waarmee een Java-applet in een browser een object in een andere JVM kan aanroepen. Er is ook een sterke en voor de hand liggende steun voor Corba in de vorm van IIOP, waarmee een Java-applet elk willekeurig object dat voldoet aan Corba, kan activeren.
En nu is er dan een nieuw en zeer interessant initiatief voor gedistribueerde systemen, het Simple Object Access Protocol (Soap) genaamd. Ik citeer: "Soap is een lichtgewicht protocol voor het uitwisselen van informatie in een decentrale, gedistribueerde omgeving." Het accent ligt op lichtgewicht, en als de geschiedenis zich herhaalt, zou dit wel eens doorslaggevend voor de acceptatie van Soap kunnen zijn.
Soap maakt gebruik van XML en bestaat uit drie basisonderdelen: a) een envelop, waarin wordt gedefinieerd wat er in het bericht zit en wat er met het bericht moet gebeuren; b) een verzameling coderingsregels (schema’s) voor gegevens die door de applicatie gedefinieerd worden, en c) een conventie voor het representeren van ‘remote procedure calls’ en hun antwoorden. Met behulp van deze laatste functie kunnen programmeurs interfaces met andere systemen maken, waardoor Soap toepasbaar is voor een breed scala aan applicaties, zowel nieuw als bestaand.
Een verrassende eigenschap van Soap is dat het is afgeleid van een product van Microsoft, dat een groot voorstander van XML is. Het definitieve voorstel, waarvan ik hoop dat het een standaard wordt, is opgesteld door een team waarin ook IBM en Lotus vertegenwoordigd waren. Volgens recente berichten was de inbreng van IBM zeer serieus en werd deze zeer op prijs gesteld door Microsoft.
Soap is een protocol dat is gebaseerd op berichten. Het ondersteunt zowel volledig wederzijdse berichtenuitwisseling als eenvoudige vraag-en-antwoordprotocollen voor interactieve applicaties. Hierdoor is Soap zowel voor synchrone als voor asynchrone systemen te gebruiken. Soap is onafhankelijk van de onderliggende protocollen. Het ontwerpdocument (http://static.userland.com/xmlRpcCom/soap/SOAPv11.htm) definieert alleen de koppeling met Http, maar het is de bedoeling om Soap ook te koppelen aan MSMQ, MQSeries en een groot aantal RPC-subsystemen, met inbegrip van TP-monitoren als Cics, MTS en Tuxedo.
De eenvoud van Soap is zeer aantrekkelijk en in tegenstelling tot DCA is Soap niet gebonden aan Windows 2000. Microsoft en in mindere mate ook IBM verdienen alle lof voor zo’n agressieve en realistische oplossing voor de behoeften van het merendeel van de eenvoudige, gedistribueerde, multidisciplinaire, multiplatformsystemen. Ik heb het gevoel dat Soap een groot succes zal worden.