SOAP

Klippstein IT Service

Aus 4webmaster.de

Wechseln zu: Navigation, Suche

SOAP ist ein Netzwerkprotokoll zum Austausch XML-basierter Nachrichten über ein Computernetzwerk, z.B. über HTTP. Andere Transportprotokolle (HTTPS, SMTP, FTP) sind ebenfalls möglich. SOAP hat den Status einer W3C-Empfehlung.

Mit SOAP lassen sich z.B. Webservices realisieren. Prinzipiell wird SOAP dann eingesetzt, wenn der direkte Zugang fremder Systeme zu einer Informationsquelle vermieden werden soll, z.B. um

  • den Zugriff zu reglementieren oder
  • um Kompatiblität herzustellen.

Die Kommunikation mit SOAP ermöglicht den Aufbau gekoppelter Systeme.

Aufbau von SOAP-Nachrichten

Eine minimale SOAP-Nachricht besteht aus einem „Envelope“ genannten Element, welchem ein lokaler Name zugewiesen werden muss. Dieses Element referenziert mittels eines Namespace-Attributes auf http://www.w3.org/2003/05/soap-envelope. Kind dieses Elements muss ein Body-Element sein. Optional kann zuvor ein Header-Element stehen. In diesem können Meta-Informationen, beispielsweise zum Routing, zur Verschlüsselung oder zu Transaktionsidentifizierung, untergebracht werden. Im Body-Element sind die eigentlichen Nutzdaten untergebracht.

Struktur einer SOAP-Nachricht:

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
    <s:Header>
    </s:Header>
    <s:Body>
    </s:Body>
</s:Envelope>

Innerhalb des Body-Elements können sowohl Informationen zum Datenaustausch, als auch Anweisungen für einen entfernten Prozeduraufruf stehen. Dies ist vom Empfänger entsprechend zu interpretieren.

Arbeiten mit SOAP

SOAP wird zur Datenbankabfrage über eine Internet-Schnittstelle genutzt, beispielsweise nutzen Google, eBay oder auch Amazon diese Technik zur Abwicklung von Suchanfragen. Im Folgenden soll über eine Internet-Schnittstelle bei einer zentralen Datenbank nachgefragt werden, ob dort eine Arbeit mit dem Titel „DOM, SAX und SOAP“ vorliegt, und diese gegebenenfalls zurückgegeben werden. Diese Datenbank stellt hierzu die Methode „TitleInDatabase“ zur Verfügung, die den Titel als Eingabe verlangt. Eine Anfrage könnte dann wie folgt aussehen:

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://www.w3.org/2001/12/soap-envelope">
    <s:Body>
        <m:TitleInDatabase xmlns:m="http://www.seminar-db.de/soap">
            DOM, SAX und SOAP
        </m:TitleInDatabase>
    </s:Body>
</s:Envelope>

Diese SOAP-Anfrage enthält kein Header-Element. Die Elemente „TitleInDatabase“ und „Title“ sind nicht Teil der SOAP-Definition, sondern anwendungsspezifisch. Der Server empfängt die Nachricht und wertet sie aus. Dabei kann zum Einlesen der Nachricht sowohl SAX als auch DOM verwendet werden. In diesem Fall mag sich ein SAX-Parser empfehlen, der auf „startElement("TitleInDatabase", […])“ eine entsprechende Datenbankabfrage aufruft, deren Eingabewert beim nächsten „character-Ereignis“ eingelesen wird. So kann eine Parallelität zwischen dem Einlesen und dem Auswerten der Nachricht erreicht werden. Anschließend wird in diesem Beispiel eine SOAP-Nachricht als Antwort zurückgegeben:

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://www.w3.org/2001/12/soap-envelope">
    <s:Header>
        <m:RequestID xmlns:m="http://www.lecture-db.de/soap">a3f5c109b</m:RequestID>
    </s:Header> 
    <s:Body>
        <m:DbResponse xmlns:m="http://www.lecture-db.de/soap">
            <m:title value="DOM, SAX und SOAP">
                <m:Choice value="1">Arbeitsbericht Informatik</m:Choice>
                <m:Choice value="2">Seminar XML und Datenbanken</m:Choice>
            </m:title>
        </m:DbResponse>
    </s:Body>
</s:Envelope>

Der Server hat seiner Antwort ein Header-Element angehängt, welches in diesem Beispiel die Anfragekennung zurückliefert. Die angefragte Information findet sich wiederum im Body der Nachricht. In diesem Fall wurden zwei Arbeiten gefunden und dem anfragenden System zurückgesendet. Dies führt im Folgenden zu einer wechselseitigen Kommunikation, einem dialogorientierten Austausch von XML-Dokumenten mittels SOAP, an deren Ende schließlich die Übermittlung des angeforderten Elements stehen wird.

Weblinks




Dieser Artikel basiert auf dem Artikel SOAP aus der freien Enzyklopädie Wikipedia. Er steht unter der GNU-Lizenz für freie Dokumentation. In diesem Wiki und / oder der Wikipedia ist eine Liste der Autoren verfügbar.



Wurde_publiziert_von::W3C