soap simple object access protocol leitung: dr. ingrid wetzel / universität hamburg referenten:...
TRANSCRIPT
SOAPSOAPSimple Object Access Simple Object Access
ProtocolProtocolLeitung:
Dr. Ingrid Wetzel / Universität Hamburg
Referenten: Nicole Brandstätter, 9955780Christian Haim, 9955433Martin Kottrasch, 9955823
Projektstudium E-Business & E-Service, WS 2001/2002Institut f. WIN, Abteilung Software-Engineering,Universität Linz
E-Business / E-Service WS 01/02 2
GliederungGliederung
EinführungAufbau von SOAP-NachrichtenSOAP-DatentypenSOAP und RPCsZusammenfassung
E-Business / E-Service WS 01/02 3
Einführung (1)Einführung (1) neue Technologie, wird seit 1998 von
DevelopMentor, IBM, Lotus, Microsoft und Userland Software entwickelt
einfach, erweiterbar, plattformübergreifend, basierend auf Web-Standards (HTTP, XML)
rein XML-basiert Mechanismus zum Beschreiben der
spezifische Semantik einer Anwendung Einsatz bei RPCs (Remote Procedure Calls) Netzwerkprotokoll
E-Business / E-Service WS 01/02 4
prinzipieller Ablauf (Request):
Einführung (2)Einführung (2)
SOAP
Nachricht
SOAP
DFÜ
Nachricht
SOAP-Anwendung
... DFÜ
E-Business / E-Service WS 01/02 5
Einführung(3)Einführung(3) SOAP spezifiziert:
– Aussehen der Serialisierung (unter Verwendung spezieller XML-Tags u. -Semantik)
– Übertragungsart der XML-Informationen (gegenwärtig via HTTP)
SOAP ist als Protokoll für ferne Methodenaufrufe gedacht.
SOAP bedient sich dem HTTP um die XML-kodierten, serialisierten Methodenargumentdaten von System zu System zu transportieren.
E-Business / E-Service WS 01/02 6
Funktionale Funktionale Vorteile von Vorteile von SOAPSOAP
ProgrammiersprachenunabhängigBetriebssystemunabhängigPlattformunabhängigKeine Beeinträchtigung durch
FirewallsBreite Unterstützung, weil viele
große Firmen an der Entwicklung mitarbeiten.
E-Business / E-Service WS 01/02 7
Technische Vorteile von Technische Vorteile von SOAPSOAP
Einfache TechnologieErweiterbar Benutzt industrieweite Standards:
XML, HTTP, SMTP, FTPStellt die Trennung von Inhalt und
Struktur sicher
E-Business / E-Service WS 01/02 8
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.
E-Business / E-Service WS 01/02 9
GliederungGliederung
EinführungAufbau von SOAP-NachrichtenSOAP-DatentypenSOAP und RPCsZusammenfassung
E-Business / E-Service WS 01/02 10
Aufbau eines SOAP-PaketsAufbau eines SOAP-Pakets
Scribner, K.; Stiver, M.:SOAP developer‘s guide S. 37
HTTP-Header
SOAPAction
CR/LF
SOAP-ENV:Envelope
SOAP-ENV:Header
SOAP-ENV:Body
Header-Element 1
Header-Element n
...
Methoden-aufrufelement
E-Business / E-Service WS 01/02 11
Elemente einer SOAP-Elemente einer SOAP-NachrichtNachricht
SOAP-Envelope SOAP-HeaderSOAP-Body
Header-Element(optional)
Body-Element
Envelope-Element
E-Business / E-Service WS 01/02 12
Exkurs: Exkurs: XML-Namensräume (1)XML-Namensräume (1)
wird von einer URI-Referenz identifiziert
erweitert die Bezeichnung von Element- und Attributnamen
verhindert Namenskonflikte undermöglich Wiederverwendung von
ganzen Wortschätzen
E-Business / E-Service WS 01/02 13
Exkurs: Exkurs: XML-Namensräume (2)XML-Namensräume (2)
Gehört keinem Namensraum an:<Produkt>
<Produktname Type="1">Widget</Produktname>
</Produkt>
Deklaration eines Namensraums:xmlns:<Namensraum-Präfix> = <URI>
Voranstellung des Präfixes an lokale Elemente und Attribute:
<pns:Produkt xmlns:pns="http://www.mcp.com/prodns">
<pns:Produktname pns:Type="1">Widget</pns:Produktname>
</pns:Produkt>
E-Business / E-Service WS 01/02 14
Exkurs: Exkurs: XML-Namensräume (3)XML-Namensräume (3)
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schema.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schema.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:Print xmlns:m="Some-uri">
<norm>din</norm>
<size>a4</size>
</m:Print>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
E-Business / E-Service WS 01/02 15
SOAP-EnvelopeSOAP-Envelope
Name des Elements lautet Envelope Element muß in jeder SOAP Nachricht
enthalten sein Element darf Namensräume enthalten Element darf zusätzliche Attribute
enthalten Element darf weitere Unterelemente
enthalten
E-Business / E-Service WS 01/02 16
SOAP-HeaderSOAP-Header(1)(1)
Header Element ist erstes direktes Kindelement
ist optional besteht aus einem oder mehreren
Header Entries wird identifiziert durch Name und
Namensraum-URI Zusatzattribute “mustUnderstand” und
“actor”
E-Business / E-Service WS 01/02 17
SOAP-Header (2)SOAP-Header (2)
<SOAP-ENV:Header> <ns1:DataGram xmlns:ns1= "http://www.myurl.com/datagram"> <ns1:Datum id="EtwasWichtiges"> <!-- Hier Konstante definieren... --> </ns1:Datum> </ns1:DataGram>
</SOAP-ENV:Header>
<SOAP-ENV:Body> <ns1:Methode1 xmlns:ns1="http://www.myurl.com/datagram"> <ns1:Arg1 href="#EtwasWichtiges">123</ns1:Arg1> </ns1:Methode1>
</SOAP-ENV:Body>
E-Business / E-Service WS 01/02 18
Header-Element und seine Header-Element und seine AttributeAttribute
SOAP-ENV:mustUnderstand
dient dazu, dem SOAP-Prozessor mitzuteilen, eine unbekannte oder unerwartete Information zu verwerfen
SOAP-ENV:actor
Anwendung, die zur Verarbeitung bestimmt ist
E-Business / E-Service WS 01/02 19
SOAP-Body (1)SOAP-Body (1)
Der Body ist ein direktes Kindelement des Envelope-Elements
Der Body besteht aus ein oder mehreren Body-Entries
wird identifiziert durch– Präfix und lokalen Namen sowie Namespace-
Definition– lokaler Name (globale Namespace-Definition wird
verwendet) Der Body kann genau einmal ein Fault-Element
enthalten
E-Business / E-Service WS 01/02 20
SOAP-Body (2)SOAP-Body (2)
3 mögliche Inhalte des SOAP-Bodys:– Aufruf -Informationen– Antwort -Informationen– Fehler -Informationen
E-Business / E-Service WS 01/02 21
SOAP-Body beim SOAP-Body beim AufrufAufruf einer einer MethodeMethode
POST /StockQuote HTTP/1.1
Host: www.stockquotes.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI#GetLastTradePriceDetailed"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePriceDetailed xmlns:m="Some-URI">
<Symbol>USD</Symbol>
<Company>SAP Corp</Company>
<Price>34.1</Price>
</m:GetLastTradePriceDetailed>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
E-Business / E-Service WS 01/02 22
SOAP-Body einer SOAP-Body einer AntwortAntwortnachrichtnachricht
HTTP/1.1 200 OKContent-Type: text/xml; charset="utf-8"Content-Length: nnnn
<SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI"><PriceAndVolume>
<LastTradePrice>34.1</LastTradePrice><DayVolume>10000</DayVolume>
</PriceAndVolume></m:GetLastTradePriceResponse>
</SOAP-ENV:Body><SOAP-ENV:Envelope>
E-Business / E-Service WS 01/02 23
SOAP-Body einer SOAP-Body einer FehlerFehlernachrichtnachricht
HTTP/1.500 Internal Server Error
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:MustUnderstand</faultcode>
<faultstring>SOAP Must Understand Error</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
<SOAP-ENV:Envelope>
E-Business / E-Service WS 01/02 24
GliederungGliederung
EinführungAufbau von SOAP-NachrichtenSOAP-DatentypenSOAP und RPCsZusammenfassung
E-Business / E-Service WS 01/02 25
Datentypen bei SOAPDatentypen bei SOAP
Einfache Datentypen– direkt in XML verankert
Zusammengesetzte Datentypen– Strukturen– Arrays
E-Business / E-Service WS 01/02 26
Einfache DatentypenEinfache Datentypen
Zeichenketten (strings) Fließkommazahlen (float, double) Boolsche Werte (boolean) Festkommazahlen (decimal) Zeit- und Datumsangaben
(TimeDuration) Binärdaten (binary) [Aufzählungstypen]
E-Business / E-Service WS 01/02 27
Zusammengesetzte Zusammengesetzte Datentypen (1)Datentypen (1)
Strukturen:
<book><author>Pomberger, G.</author><title>Methoden des SWE</title><price>430.00</price>
</book>
E-Business / E-Service WS 01/02 28
Zusammengesetzte Zusammengesetzte Datentypen (2)Datentypen (2)
Arrays:
<queue SOAP-ENC:arrayType="xsd:int[2]"><zahl>3</zahl><zahl>5</zahl>
</queue>
E-Business / E-Service WS 01/02 29
GliederungGliederung
EinführungAufbau von SOAP-NachrichtenSOAP-DatentypenSOAP und RPCsZusammenfassung
E-Business / E-Service WS 01/02 30
SOAP und RPCsSOAP und RPCs
SOAP wurde hauptsächlich für RPCs entworfen Aufrufen einer "fernen" Methode RPC = Remote Procedure Call folgt dem Request/Response-Modell des HTTP Probleme wie
– Referenzübergabe oder – Identifikation ferner Endpunkte
bei verteilten Systemen bleiben auch bei SOAP bestehen
E-Business / E-Service WS 01/02 31
Entfernter MethodenaufrufEntfernter Methodenaufruf
POST /creator.pl?objekt=meinobj HTTP/1.1HOST: www.mcp.comAccept: text/*Content-type: text/xmlContent-length: nnnnSOAPAction: Some-uri#Add <SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schema.xmlsoap.org/soap/envelope/"SOAP-ENV:encodingStyle="http://schema.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body><m:Add xmlns:m="Some-uri">
<a>3</a><b>4</b>
</m:Add></SOAP-ENV:Body></SOAP-ENV:Envelope>
Objektendpunktkennung
Maschinenadresse
Schnittstelle
Methodenname
SOAP-Nutzlast
E-Business / E-Service WS 01/02 32
ORPC – Object Remote ORPC – Object Remote Procedure CallProcedure Call
SOAP ist für RPC nur ein weiteres ORPC-Protokoll, welches die gleiche Taktik zur Realisierung ferner Methodenaufrufe erfordert wie DCOM und CORBA.
E-Business / E-Service WS 01/02 33
GliederungGliederung
EinführungAufbau von SOAP-NachrichtenSOAP-DatentypenSOAP und RPCsZusammenfassung
E-Business / E-Service WS 01/02 34
Zusammenfassung (1)Zusammenfassung (1)
SOAP = Netzwerkprotokoll, keine Architektur
Aufbau: Envelope, [Header], BodyXML-Dokument mit spez.
NamespacesSerialisierung von DatenströmenÜbetragung hauptsächl. über HTTPfür Remote Procedure Calls
E-Business / E-Service WS 01/02 35
Zusammenfassung (2)Zusammenfassung (2)
Ausblick / Zukunft von SOAP:– Tools von der Programmiersprache
zum XML-Schema– XML-Schemata für die
Schnittstellendefinition– SOAP-fähige Betriebssysteme