SOAP

SOAP (Simple Object Access Protocol) is een LDAP-protocol voor het uitwisselen van informatie in een gedecentraliseerde, gedistribueerde omgeving. Een SOAP-bericht is een overdracht van informatie van een afzender naar een ontvanger. SOAP-berichten kunnen worden gecombineerd om aanvraag/respons-patronen uit te voeren.

SOAP-berichten zijn onafhankelijk van de gebruikte transportmethode, maar worden meestal overgedragen over HTTP in aansluiting op de bestaande internetinfrastructuur. Met SOAP is het mogelijk om opgespoorde webservices te koppelen en te gebruiken door een berichtpad te definiëren voor het routeren van berichten. SOAP wordt gebruikt om query's uit te voeren op UDDI voor webservices. De workbench ondersteunt SOAP 1.1.

SOAP is een op XML gebaseerd protocol waarmee elk bericht in drie delen wordt gedefinieerd:

Bindingsmodellen

SOAP ondersteunt twee verschillende communicatiemodellen:

RPC (remote procedure call):  Aanroep van een bewerking die een resultaat retourneert. RPC's worden gewoonlijk gebruikt in combinatie met SOAP-codering, die niet compatibel is met WS-I.

Documentmodel: Dit wordt ook wel een document-georiënteerd model of bericht-georiënteerd model genoemd. Dit model heeft een lager niveau van abstractie en vereist meer programmeerwerk.

Coderingsmodellen

In gedistribueerde verwerkingsomgevingen wordt in coderingsmodellen gedefinieerd hoe gegevenswaarden in de toepassing kunnen worden omgezet van en naar de indeling van een bepaald protocol. Dit omzettingsproces wordt serialisering en deserialisering genoemd.

In de SOAP-specificatie is het SOAP-coderingsmodel gedefinieerd:

SOAP-codering:  Met het SOAP-coderingsmodel kunt u waarden van gegevenstypen in het SOAP-gegevensmodel serialiseren/deserialiseren. Dit coderingsmodel is gedefinieerd in de standaard SOAP 1.1 en is niet compatibel met WS-I.

WSDL is gedefinieerd in het literale XML-coderingsmodel:

Literale XML:  'Literaal' wil zeggen dat het document moet worden gelezen zoals het is (ongecodeerd). Het document is geserialiseerd als XMI. Dit betekent dat de XML van het bericht compatibel is met het schema in de WSDL. Bij literale codering verwijst elk onderdeel van het bericht naar een concrete schemadefinitie. Literale codering is compatibel met WS-I.

Gegevensmodel

Het doel van het SOAP-gegevensmodel is het verstrekken van een taalonafhankelijke abstractie voor gegevenstypen van gangbare programmeertalen en bestaat uit:

Alle elementen en ID's waaruit het SOAP-gegevensmodel bestaat, zijn gedefinieerd in de naamruimte-URI. De SOAP-standaard definieert de regels voor de constructie van gegeventypen. Een project-specifiek XML-schema definieert de gebruikte gegevenstypen. De elementen van de SOAP-specificatie zijn gedefinieerd in http://schemas.xmlsoap.org/soap/envelope/ en http://schemas.xmlsoap.org/soap/encoding/.

SOAP-implementaties

Er zijn tegenwoordig verschillende implementaties van het SOAP-protocol beschikbaar. Zo heeft de Apache Foundation bijvoorbeeld Apache SOAP, dat is ontstaan uit het IBM-project SOAP4J, naast Apache Axis en de IBM WebSphere runtime-omgeving. De geleverde webservicetools ondersteunen implementatie van Apache SOAP 2.3, Axis 1.0 en IBM WebSphere.

Toewijzingen

Een toewijzing is een koppeling tussen een gekwalificeerde naam van een XML-element, een Java-klassennaam en een coderingsmodel. In de toewijzing wordt opgegeven hoe, bij de gegeven codering, een binnenkomend XML-element met een volledig gekwalificeerde naam wordt omgezet naar een Java-klasse en omgekeerd.

Zie voor meer informatie over Apache SOAP xml.apache.org/soap  Meer informatie over SOAP vindt u op www.w3.org/TR/SOAP