57
Seminarvortrag Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Embed Size (px)

Citation preview

Page 1: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SeminarvortragSeminarvortrag

SOAPSimple Object Access Protocol

Julia Sannwald

Page 2: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

GliederungGliederung

Was ist SOAP? SOAP und XML Nachrichten Datentypen bei SOAP SOAP Transporte RPCs über SOAP Sicherheit Fazit

Page 3: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Was ist SOAP? (1)Was ist SOAP? (1)

SOAP: Simple Object Access Protocoll Entwickelt von: DevelopMentor, IBM,

Microsoft Hauptautor: Don Box, einer der Autoren des

XML Manifests Vom W3 Consortium unterstützter Standard Einfaches Protokoll, um

Nachrichtenaustausch zw. verteilten Systemen zu ermöglichen

Page 4: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Was ist SOAP (2)Was ist SOAP (2)

Ziele:– Einfachheit– Erweiterbarkeit– Einsatz auf verteilten Systemen, auch

durch Firewalls hindurch– Das Rad nicht neu erfinden, sondern

aktuelle Standards (HTTP und XML) zu nutzen

Page 5: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Was ist SOAP? (3)Was ist SOAP? (3)

basiert auf zwei bestehenden Standards:1. HTTP: übernimmt Transport einer Nachricht2. XML: Umschlag für die Nachricht

Soap kann in einem weiten Einsatzfeld gebraucht werden, von einfachen Nachrichtensystemen bis hin zu Remote Procedure Calls (RMCs).

Page 6: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

GliederungGliederung

Was ist SOAP? SOAP und XML Nachrichten Datentypen bei SOAP SOAP Transporte RPCs über SOAP Sicherheit Fazit

Page 8: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

GliederungGliederung

Was ist SOAP? SOAP und XML Nachrichten Datentypen bei SOAP SOAP Transporte RPCs über SOAP Sicherheit Fazit

Page 9: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Nachrichten (1)Nachrichten (1)

Idee: zwei Applikationen tauschen Nachrichten aus, ungeachtet auf die jeweiligen Entwicklungsumgebungen.

Programmiersprachen-, Betriebssystem- und Plattformunabhängig

Page 10: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Empfangen einer NachrichtEmpfangen einer Nachricht

Aktionen:1. Identifikation aller Teile einer SOAP-

Nachricht2. Sicherstellen, dass die Anwendung auch die

Nachricht versteht, wenn nicht wird die gesamte Nachricht verworfen.

3. Falls die Anwendung nicht der endgültige Empfänger der Nachricht ist: Entfernen aller durch Schritt 1. identifizierten Teile der Nachricht, bevor sie weitergeleitet wird.

Page 11: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Verarbeiten einer NachrichtVerarbeiten einer Nachricht

SOAP-Prozessor muss über folgende Informationen verfügen:– Das Muster des Nachrichtenaustauschs, das

verwendet wird (Einweg, Frage/Antwort, Multicast)– Seine Rolle in diesem Nachrichtenwechsel– Einsatz von evtl. vorhandenen RPC-Mechanismen– Die Datenrepräsentation und –kodierung– Alle weiteren Semantiken, die zum korrekten

Verarbeiten der Nachricht benötigt werden.

Page 12: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

AufbauAufbau

SOAP-Nachricht besteht aus den drei Komponenten:

-SOAP- Envelope

-SOAP- Header (optional) und

-SOAP- Body

Page 13: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP Nachrichten StrukturSOAP Nachrichten Struktur

SOAP envelope

SOAP headerHeader blockHeader block

SOAP body

Message body

Page 14: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

<SOAP-ENV:Envelope xmlns:s="http://schemas.xmlsoap.org/envelope/“SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding "> <SOAP-ENV:Header> <m:transaction xmlns:m="soap-transaction" SOAP-ENV :mustUnderstand="true"> <transactionID>1234</transactionID> </m:transaction> </ SOAP-ENV :Header> < SOAP-ENV :Body> <n:purchaseOrder xmlns:n="urn:OrderService"> <from><person>Christopher Robin</person> <dept>Accounting</dept></from> <to><person> Pooh Bear</person> <dept>Honey</dept></to> <order><quantity>1</quantity> <item>Pooh Stick</item></order> </n:purchaseOrder> </ SOAP-ENV :Body>< SOAP-ENV :Envelope>

Page 15: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP-EnvelopeSOAP-Envelope

Jeder Envelope darf exakt nur ein Body-Element enthalten.

Syntaxregeln:– Der Name des Elements lautet „Envelope“.– Das Element muss in jeder SOAP-

Nachricht enthalten sein.– Das Element darf zusätzliche Attribute

enthalten.

Page 16: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Das encodingStyle- AttributDas encodingStyle- Attribut

Wird gebraucht, um das Format (Datentypen) zu definieren,welches für das Dokument bzw. Nachricht verwendet wird.

< SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding ">

Page 17: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP-HeaderSOAP-Header

Jedes Element im Header bezeichnet man als „header block“.

Enthält Informationen über die SOAP-Nachricht

z.B.:Authentifizierungsangaben oder Routing-Informationen

Page 18: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Das actor-AttributDas actor-Attribut

SOAP-Nachricht kann mehrere Zwischenstationen passieren.

Zwischenstation: SOAP-Anwendung, die sowohl Nachrichten empfangen und verarbeiten als auch weiterleiten kann

Zwischenstation und endgültige Empfänger werden durch URIs eindeutig identifiziert.

Page 19: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Das mustUnderstand-AttributDas mustUnderstand-Attribut

Mit dem mustUnderstand-Attribut wird festgelegt, ob der jeweilige Empfänger den Header-Entry verarbeiten muss oder nicht.

Der aktuelle Wert kann dabei ‘‘true“ oder ‘‘false“ sein, wobei letztere der Default-Wert ist.

Hier im Beispiel bedeutet dies für den Empfänger, dass er entweder den Semantiken des Elements Folge zu leisten hat oder im Verarbeiten der Nachricht versagt und einen Fehler zurückgeben muss.

Page 20: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP-BodySOAP-Body

Das Body-Element ist ein direktes Kindelement des SOAP-Envelopes, und steht damit entweder direkt nach dem Header-Element, oder ist das erste Kindelement.

Alle direkten Kindelemente des Bodyelements werden als Body-Entries bezeichnet.

Ein Body-Entry wird durch seinen Elementnamen, der aus dem Namespace und dem lokalen Namen besteht, eindeutig identifiziert.

Page 21: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

XML Schemas und xsi:typeXML Schemas und xsi:type

SOAP definiert drei verschiedene Wege, um einen Datentyp eines Accessors zu beschreiben:

1 .Das xsi:type Attribut<person>

<name xsi:type=‘‘xsd:string“>John Doe</name>

</person>

Page 22: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

XML Schemas und xsi:type XML Schemas und xsi:type (2)(2)

2. Referenz auf ein XML Schema, welches den Datentyp definiert <person xmlns:“personschema.xsd“>

<name>John Doe</name> </person>

3.Referenz auf irgend ein anderes Schema-Dokument

<person xmlns=‘‘urn:some_namespace> <name>John Doe</name></person>

Page 23: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

GliederungGliederung

Was ist Soap?Soap und XMLNachrichtenDatentypen bei SOAPSoap TransporteRPCs über SoapSicherheitFazit

Page 24: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Datentypen bei SOAPDatentypen bei SOAP

Einfache Datentypen– Direkt in XML verankert

Zusammengesetzte Datentypen– Strukturen– Referenzen auf Werte– Arrays

Page 25: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Einfache DatentypenEinfache Datentypen

Zeichenketten (strings)Fließkommazahlen (float, double)Boolsche Werte (boolean)Festkommazahlen (decimal)Zeit-Datumsangaben (TimeDuration)Binärdaten (binary)[Aufzählungstypen]

Page 26: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Zusammengesetzte Zusammengesetzte Datentypen (1)Datentypen (1)

Strukturen: Eine Struktur ist eine zusammengesetzte

Variable, in welcher jedes Element einen unterschiedlichen Namen hat.

<person>

<firstname>Joe</firstname>

<lastname>Miller</lastname>

</person>

Page 27: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Referenzen auf WerteReferenzen auf Werte Jedes Element, dass auf ein anderes verweist, ist selbst leer und besitzt ein href-Attribut vom Typ

‘‘uri-reference“ (nach der XML-Schema-Spezifikation).

<e:Buch><autor href="#pDF"/><titel> Java in a Nutshell </titel>

</e:Buch><e:Buch>

<autor href="#pDF"/><titel> JavaScript- Das umfassende Referenzwerk </titel>

</e:Buch><e:Person id ="pDF">

<name> David Flanagan</name><adresse href"=#adrDF"/>

</e:Person><e:adresse id="adrDF">

<email>mailto:[email protected]</email><www>http://www.davidf.com</www>

</e:adresse>

Page 28: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Zusammengesetzte Zusammengesetzte Datentypen (3)Datentypen (3)

Arrays Ein Array ist eine zusammengesetzte

Variable, in welcher jedes Element den gleichen Namen hat

<people>

<person name =‘joe miller‘/> <person name =‘sebastian sommer‘/></people>

Page 29: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

GliederungGliederung

Was ist SOAP? SOAP und XML Nachrichten Datentypen bei SOAP SOAP Transporte RPCs über SOAP Sicherheit Fazit

Page 30: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP-TransporteSOAP-Transporte

SOAP über HTTP– Meist genutzte Protokoll, um Nachrichten

zu versenden– Kann man gleichsetzten mit SOAPs RPC-

Vereinbarungen, da HTTP ein anfrage-/antwort-basiertes Protokoll ist.

– Request-Nachricht wird an den HTTP-Server gesendet und der Server gibt eine SOAP-Response zurück

Page 31: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP Fehler (1)SOAP Fehler (1)

Fehler können während der Ausführung einer Nachricht auftreten

Wenn ein solcher auf der Serverseite aufgetreten ist, dann enthält der Body einen <Fault>-Tag.

Dieser ist in einen <faultcode>, <faultstring>,

<faultactor>(op) und <detail>(op) aufgeteilt.

Page 32: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP Fehler (2)SOAP Fehler (2)

Faultcode Variable, die vorgesehen ist, um den Fehlertyp

aufzunehmen. SOAP bietet einige vordefinierte Werte, die das faultcode-Element annehmen kann. Sie muss in jedem Fault-Element vorkommen

Faultstring Vorgesehen, um eine durch Menschen

lesbare Fehlermeldung zu liefern. Auch dieses muss in jedem Fault-Element vorkommen.

Page 33: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP Fehler (3)SOAP Fehler (3)

Faultactor

Wird verwendet, wenn der Fehler in einer Anwendung aufgetreten ist, die nicht das Ziel der Nachricht gewesen ist.

Detail

Wird verwendet, wenn der Inhalt des Body-Elements der SOAP-Nachricht nicht verarbeitet werden konnte.

Page 34: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Vordefinierte SOAP-FehlercodesVordefinierte SOAP-Fehlercodes

Wert Name Bedeutung

100 VersionMismatch Aufruf wurde mit falscher SOAP-Version durchgeführt

200 MustUnderstand Element war mit mustUnderstand=‘‘true“ markiert und wurde vom Empfänger nicht verstanden.

300 Client Empfänger hat Anfrage nicht bearbeitet, weil sie falsch gestellt war oder von der Anwendung nicht bearbeitet werden kann

400 Server Es kam bei der Bearbeitung der Anfrage zu einem Fehler.

Page 35: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Ein möglicher FehlerfallEin möglicher Fehlerfall200 OK

Content-Type: text/xml

Content-Length: 152

<SOAP-ENV:Envelope xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/>

<SOAP-ENV:Body>

<SOAP-ENV:Fault>

<SOAP-ENV:faultcode>200</ SOAP-ENV:faultcode>

< SOAP-ENV:faultstring>Must Understand Error</ SOAP-ENV:faultstring>

< SOAP-ENV:detail xsi:type= ‘‘Fault“>

<errorMessage>Object not installed on server </errorMessage>

</ SOAP-ENV:detail>

</ SOAP-ENV:Fault>

<SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Page 36: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

GliederungGliederung

Was ist SOAP? SOAP und XML Nachrichten Datentypen bei SOAP SOAP Transporte RPCs über SOAP Sicherheit Fazit

Page 37: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Was sind RPCsWas sind RPCs

Seit 1984 Ansatz entfernter Funktionsaufrufe Von Birrell und Nelson entwickelt Der Client ruft Routinen auf einem Server auf Zwei Kernprobleme:

– Identifikation der entfernten Prozedur/Methode– Transfer der Parameter und Ergebnisse

Page 38: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

XML-RPCsXML-RPCs

Ist eine sehr einfache Realisierung des Konzepts ‘‘Fernaufruf“ :– Identifikation durch Angabe des Servers mit Hilfe

von IP-Adresse, Port, Objekt- und Methodenname– Transfer der Daten als XML-Dokumente– HTTP-Post als Transportmedium– Zumeist Port 80, damit die Requests ungehindert

durch Firewalls transportiert werden können.

Page 39: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

RPCs mit SOAPRPCs mit SOAP

Im Wesentlichen stellt SOAP ein verbessertes XML-RPC-Konzept dar– Verwendung fortgeschrittener XML-

Technologien (inkl. Schemata und Datenbeschreibung)

– Erweiterter HTTP-Header– Verallgemeinerung:Nachrichtenkonzept

statt RPC-Konzept

Page 40: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP RequestSOAP Request

Enthält neben Protocol Header auch ein XML-Dokument, welches die aufzurufende Methode und Parameter enthält

Die Spezifikation definiert nur die Verbindung von SOAP mit dem HTTP-POST-Request

Als Content-Typ muss ‘‘text/xml“ angegeben werden

Page 41: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Der HTTP-HeaderDer HTTP-Header

Das SOAPAction-Feld im http-Header identifiziert den Zweck dieses SOAP-HTTP-Requests.

Wert ist ein URI Ein HTTP-Client, der einen Request senden will,

muss dieses Header-Feld benutzenBsp.: SOAPAction: http://....

SOAPAction: “doit.exe“SOAPAction: ““SOAPAction:

Page 42: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

POST /Object HTTP/1.1

Host:www.sampleserver.com

Content-Type: text/xml

Content-Length: 152

SOAPAction: "Some-URI"

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

SOPA-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

<SOAP-ENV:Body>

<m:GetLastTradePrice xmlns:m"Some-URI">

<symbol>DEF</symbol>

</m:GetLastTradePrice>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Objektendpunktkennung

Maschinenadresse

Schnittstelle SOAP-Nutzlast

Page 43: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP ResponseSOAP Response

Ist in etwa gleich aufgebaut.Zuerst werden HTTP-Protokoll

Informationen ausgegeben.Keine SOAP spezifischen Angaben im

Header nötig, da nur eine Antwort zurückgesendet wird.

Page 44: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

HTTP/1.1 200 OK

Content-Type: text/xml

Content-Length: 152

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

SOPA-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

<SOAP-ENV:Body>

<m:GetLastTradePriceResponse xmlns:m="Some-URI">

<Price>34.5</Price>

</m:GetLastTradePriceResponse>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Page 45: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

GliederungGliederung

Was ist SOAP? SOAP und XML Nachrichten Datentypen bei SOAP SOAP Transporte RPCs über SOAP Sicherheit Fazit

Page 46: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Sicherheit (1)Sicherheit (1)

Kein sicheres Protokoll, da Daten im Klartext übersandt werden.

Sicherheit war kein Design-ZielKeine Datenschutz-, Authentifizierungs-

und Autorisierungs-Mechanismen.Funktionen müssen entweder die

Übertragungsprotokolle abdecken oder die kommunizierenden Programme

Page 47: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Sicherheit (2)Sicherheit (2)SOAP über HTTPSSOAP über HTTPS

HTTPS nutzt den Secure Socket Layer (SSL)

Relativ sichere TransaktionenAlle Daten, die über HTTP versendet

werden, können auch mittels HTTPS übertragen werden

SSL verwendet Verschlüsselung

Page 48: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Funktionale Funktionale Vorteile von Vorteile von SOAPSOAP

Programmiersprachenunabhängig Betriebssystemunabhängig Plattformunabhängig Keine Beeinträchtigung durch Firewalls Breite Unterstützung, weil viele große Firmen

an der Entwicklung mitarbeiten. Definiert Standard, für den sich

kostengünstig, einfach und schnell Anwendungen implementieren lassen.

Page 49: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Technische Vorteile von Technische Vorteile von SOAPSOAP

Einfache TechnologieErweiterbar Benutzt industrieweite Standards: XML,

HTTP, SMTP, FTPStellt die Trennung von Inhalt und

Struktur sicher

Page 50: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Nachteile Nachteile von von SOAPSOAP

SOAP ist äußerst unsicher Noch immer keine vollständige

Interoperabilität Große Nachrichten, weil nur Werte

gespeichert werden und keine Referenzen Geringere Performance als andere RPC

SOAP ist (nur) ein Netzwerkprotokoll undkeine komplette verteilte Objektarchitektur.

Page 51: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

ZusammenfassungZusammenfassung

SOAP ist ein Kommunikations-Protokoll SOAP ist eine Erweiterung von XML-RPCs SOAP-Nachrichten müssen einen SOAP-

Envelope-Element haben SOAP-Nachrichten können einen SOAP-

Header haben SOAP-Nachrichten müssen einen SOAP-Body

haben HTTP übernimmt den Transport einer

Nachricht

Page 52: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

FazitFazit

Soap kann und will keinen völlig neuen Ansatz zur Datenübertragung zwischen zwei Systemen bieten.

SOAP setzt auf existierender, standardisierter Internet-Technologie auf.

Page 53: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP sollte nicht eingesetzt SOAP sollte nicht eingesetzt werden...werden...

In homogenen Umgebungen.In Umgebungen, die hohe Performance

erfordernIn Szenarios, die einen hohen

Sicherheitsbedarf mit sich bringen.In Umgebungen, die von einer Person

administriert werden.

Page 54: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

SOAP empfielt sich SOAP empfielt sich einzusetzen...einzusetzen...

Wenn es um die Kommunikation verschiedener Systeme aus unterschiedlichen Umgebungen über das Internet geht.

Einsatzmöglichkeiten sind uneingeschränkt Microsoft BizTalk Server 2000 Microsoft VisualStudio.NET Microsoft hat ein ToolKit herausgegeben, um

bereits in VisualStudio 6 SOAP-Anwendungen zu schreiben

Überall dort einsetzbar, wo DCOM und IIOP bereits jetzt ihren Dienst verrichten.

Page 55: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

BizTalkBizTalk

Industrieinitiative unter der Führung von MS Ziel: Standards zur Kommunikation zwischen

Anwendungen und Organisationen auf Basis aktueller XML-Technologien

Anwendung: Austausch von Geschäftsnachrichten

Techniken: aktuelle XML-Technologien und Standards (siehe www.biztalk.org)

Page 56: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Zukunft von SoapZukunft von Soap

Microsoft:VisualStudio.Net erstellt fast auf Knopfdruck die Webservices

IBM: erweitert XML Parsing Engin, um Soap-Nachrichten parsen zu können

SUN:Enterprise Java Beans sollen in der Zukunft über SOAP kommunizieren können

Page 57: Seminarvortrag SOAP Simple Object Access Protocol Julia Sannwald

Vielen Dank für Ihre Vielen Dank für Ihre Aufmerksamkeit!Aufmerksamkeit!