SOAP

SOAP
SOAP im TCP/IP‑Protokollstapel:
Anwendung SOAP
HTTP HTTPS
Transport TCP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI

SOAP (ursprünglich für Simple Object Access Protocol) ist ein Netzwerkprotokoll, mit dessen Hilfe Daten zwischen Systemen ausgetauscht und Remote Procedure Calls durchgeführt werden können. SOAP stützt sich auf XML zur Repräsentation der Daten und auf Internet-Protokolle der Transport- und Anwendungsschicht (vgl. TCP/IP-Referenzmodell) zur Übertragung der Nachrichten. Die gängigste Kombination ist SOAP über HTTP und TCP. Die Abkürzung SOAP wird offiziell seit Version 1.2 nicht mehr als Akronym gebraucht, da es erstens (subjektiv) keineswegs einfach (Simple) ist und zweitens nicht nur dem Zugriff auf Objekte (Object Access) dient.

Inhaltsverzeichnis

Geschichtlicher Abriss

Dave Winer (der „Vater“ von RSS 2.0) und Microsoft entwickelten 1998 die Spezifikation für XML-RPC. Als Weiterentwicklung daraus entstand SOAP, das Ende 1999 in Version 0.9 veröffentlicht wurde. Die Reaktion der Entwickler war jedoch noch sehr zurückhaltend. Später, im Jahr 1999 wurde die Version 1.0 veröffentlicht. Das war der Zeitpunkt, an dem die Entwicklung mehr Unterstützung fand. Dies kann man vor allem daran erkennen, dass sich IBM im Jahr 2000 der Entwicklung von SOAP anschloss, was dazu führte, dass IBM, Microsoft, DevelopMentor (Don Box) und UserLand Software (Dave Winer) die Spezifikation von SOAP 1.1 beim World Wide Web Consortium (W3C) einreichten. Dabei wurde das Ziel verfolgt, eine Arbeitsgruppe anzustoßen, die SOAP weiterentwickeln sollte. Das Ergebnis dieser Arbeitsgruppe ist SOAP Version 1.2, die im Juni 2003 als Empfehlung (engl. recommendation) anerkannt wurde. Eine wichtige Änderung war, dass SOAP seither kein Akronym mehr ist, da sämtliche Deutungen für SOAP, wie Simple Object Access Protocol oder Service Oriented Architecture Protocol, den vollständigen Sinn von SOAP nicht treffen. Zudem war es so möglich, SOAP als Namen in den USA anzumelden, da die Abkürzung nicht geschützt werden konnte.

Arbeitsweise von SOAP

SOAP ist ein Protokoll zum Austausch XML-basierter Nachrichten über ein Computernetzwerk und hat den Status einer W3C-Empfehlung. Es stellt Regeln für das Nachrichtendesign auf. Es regelt, wie Daten in der Nachricht abzubilden und zu interpretieren sind, und gibt eine Konvention für entfernte Prozeduraufrufe mittels SOAP-Nachrichten vor. SOAP macht keine Vorschriften zur Semantik applikationsspezifischer Daten, die versendet werden sollen, sondern stellt ein Rahmenwerk (framework) zur Verfügung, welches erlaubt, dass beliebige applikationsspezifische Informationen übertragen werden können. SOAP wird für entfernte Prozeduraufrufe ebenso genutzt wie für einfache Nachrichtensysteme beziehungsweise zum Datenaustausch. Zum Senden von Nachrichten können beliebige Transportprotokolle verwendet werden, beispielsweise FTP, SMTP, HTTP oder auch JMS. In der Praxis wird aufgrund der Kompatibilität mit gängigen Netzwerk-Architekturen (wie Firewalls) meist auf HTTP zurückgegriffen. Auch ist mittels HTTPS die verschlüsselte Übertragung von SOAP-Nachrichten möglich. Das XML der SOAP-Anfrage wird bei Nutzung von HTTP(S) im Body eines HTTP POST Requests an eine gegebene URL geschickt.

SOAP wird regelmäßig dort eingesetzt, wo der direkte Zugang fremder Systeme zu einer Informationsquelle nicht sinnvoll erscheint. Dies kann an Kompatibilitätsproblemen zwischen verschiedenen Anwendungsarchitekturen liegen, aber auch an Sicherheitsaspekten. So kann der (partielle) Zugriff auf eine Datenbank ermöglicht werden, ohne dass dem Anwenderprogramm der direkte Zugang gestattet werden muss. Über die SOAP-Schnittstelle kann die Menge der ausführbaren Methoden reglementiert und definiert werden.

Die Kommunikation mit SOAP ermöglicht die Kopplung von Systemen, der offene Entwurf von SOAP ermöglicht jedoch lediglich den Aufbau schwach gekoppelter Systeme. Die Flexibilität des Konzeptes wird durch Nachteile in Übertragungsvolumen und Rechenaufwand erkauft. Das XML-Dokument muss beim Sender zunächst aufgebaut und anschließend validiert werden. Das Konzept verfolgt das Ziel eines leichtgewichtigen Protokolls, aufgrund des flexiblen Einsatzbereiches führt die zu übertragende Datei jedoch eine Reihe von Metadaten mit sich, die bei der Konstruktion des XML-Dokuments hinzugefügt werden. So führt beispielsweise das einfache Versenden von „Wahr“ oder „Falsch“ zu einem Datenvolumen von mehreren hundert Bytes, obwohl in einem stark gekoppelten System theoretisch ein Bit reichen würde. Durch die Möglichkeit des flexiblen Aufbaus des Dokuments können jedoch komplexe Transaktionen in einer Anfrage atomar zusammengefasst werden, während in stark gekoppelten Systemen hierzu oftmals mehrere Anfragen gestellt werden müssen. Dies verbessert das Nutzlastverhältnis (Nutzdaten zu Meta-Daten) und den Kommunikationsaufwand (für den Aufbau einer Verbindung, nur ein Senden/Empfangen).

Aufbau von SOAP-Nachrichten

SOAP-Struktur

Eine minimale SOAP-Nachricht besteht aus einem Envelope genannten Element, welchem ein lokaler Name zugewiesen werden muss. Dieses Element referenziert mittels eines Namensraum-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 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/2003/05/soap-envelope">
    <s:Body>
        <m:TitleInDatabase xmlns:m="http://www.lecture-db.de/soap">
            DOM, SAX und SOAP
        </m:TitleInDatabase>
    </s:Body>
</s:Envelope>

Diese SOAP-Anfrage enthält kein Header-Element. Das Element „TitleInDatabase“ ist 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/2003/05/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.

Implementierungen

Auf SOAP basierende Erweiterungen

  • WS-Reliability (Web Services Reliability): Sicherheitsmechanismen, um z. B. Transaktionen verlässlich abwickeln zu können [2]
  • WS-Security (Web Services Security): Sicherstellen von Integrität und Vertraulichkeit von Nachrichten [3]
  • WSRP (Web Services for Remote Portlets): Integration von Präsentationslogik in Portale [4]
  • weitere Spezifikationen: WS-*
  • TR-069 CPE WAN Management Protokoll (CWMP)

Siehe auch

  • Serviceorientierte Architektur (SOA) – auf SOAP oder ähnlichen Protokollen basierende Architektur
  • UDDI (setzt auf SOAP auf; nutzt SOAP)
  • WSDL – Beschreibungssprache für SOAP-Nachrichten
  • soapUI – Werkzeug für den Test von SOAP-Nachrichten
  • Hessian, Burlap – alternative Protokolle
  • MTOM – Protokoll fürs Versenden von Binärdaten innerhalb von SOAP-Nachrichten
  • DSSP - ein auf SOAP basierendes Protokoll[5] für das Microsoft Robotic Developer Studio

Ferner:

Weblinks

Einzelnachweise

  1. http://sourceforge.net/projects/tclsoap/files/tclsoap/
  2. ([1])
  3. ([2])
  4. ([3])
  5. http://download.microsoft.com/download/5/6/B/56B49917-65E8-494A-BB8C-3D49850DAAC1/DSSP.pdf



Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Soap — Soap, n. [OE. sope, AS. s[=a]pe; akin to D. zeep, G. seife, OHG. seifa, Icel. s[=a]pa, Sw. s?pa, Dan. s?be, and perhaps to AS. s[=i]pan to drip, MHG. s[=i]fen, and L. sebum tallow. Cf. {Saponaceous}.] A substance which dissolves in water, thus… …   The Collaborative International Dictionary of English

  • SOAP — Saltar a navegación, búsqueda SOAP estructura SOAP (siglas de Simple Object Access Protocol) es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. Este protocolo… …   Wikipedia Español

  • SOAP — (see below for name and origins) is a protocol for exchanging XML based messages over computer networks, normally using HTTP/HTTPS. SOAP forms the foundation layer of the web services protocol stack providing a basic messaging framework upon… …   Wikipedia

  • Soap — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался, в основном, для реализации удалённого вызова процедур (RPC), а название было аббревиатурой: Simple Object Access Protocol … …   Википедия

  • soap — soap; soap·berry; Soap; soap·er; soap·ery; soap·i·ly; soap·i·ness; soap·less; soap·box·er; …   English syllables

  • soap´i|ly — soap|y «SOH pee», adjective, soap|i|er, soap|i|est. 1. covered with soap or soapsuds. 2. containing soap: »soapy water. 3. o …   Useful english dictionary

  • soap|y — «SOH pee», adjective, soap|i|er, soap|i|est. 1. covered with soap or soapsuds. 2. containing soap: »soapy water. 3. o …   Useful english dictionary

  • Soap — – Trautes Heim (Alternativtitel: Die Ausgeflippten) ist eine US amerikanische Comedy Serie, die zwischen 1977 und 1981 in den USA vom Fernsehsender ABC produziert wurde. Geschaffen wurde Soap von Susan Harris, die später auch den Ableger Benson… …   Deutsch Wikipedia

  • Soap — 〈[ soʊp] f. 10; Radio, TV; umg.; kurz für〉 Soapopera * * * Soap [soʊp ], die; , s: Kurzf. von ↑ Soap Opera. * * * SOAP   [Abk. für Simple …   Universal-Lexikon

  • soap — opéra [ sopɔpera ] n. m. • 1981; mot angl. , de soap « savon » et opera, ces feuilletons étant à l origine produits par les lessiviers ♦ Anglic. Feuilleton télévisé populaire, tourné rapidement. Les soap opéras. Abrév. fam. SOAP . Les soaps… …   Encyclopédie Universelle

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”