350 likes | 516 Views
SOAP Simple Object Access Protocol. Leitung: Dr. Ingrid Wetzel / Universität Hamburg Referenten: Nicole Brandstätter, 9955780 Christian Haim, 9955433 Martin Kottrasch, 9955823 Projektstudium E-Business & E-Service, WS 2001/2002 Institut f. WIN, Abteilung Software-Engineering,
E N D
SOAPSimple Object Access Protocol Leitung: Dr. Ingrid Wetzel / Universität Hamburg Referenten: Nicole Brandstätter, 9955780 Christian Haim, 9955433 Martin Kottrasch, 9955823 Projektstudium E-Business & E-Service, WS 2001/2002 Institut f. WIN, Abteilung Software-Engineering, Universität Linz
Gliederung • Einführung • Aufbau von SOAP-Nachrichten • SOAP-Datentypen • SOAP und RPCs • Zusammenfassung E-Business / E-Service WS 01/02
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
Einführung (2) • prinzipieller Ablauf (Request): Nachricht Nachricht ... DFÜ DFÜ SOAP SOAP-Anwendung SOAP E-Business / E-Service WS 01/02
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 ferneMethodenaufrufe 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
Funktionale Vorteile von SOAP • Programmiersprachenunabhängig • Betriebssystemunabhängig • Plattformunabhängig • Keine Beeinträchtigung durch Firewalls • Breite Unterstützung, weil viele große Firmen an der Entwicklung mitarbeiten. E-Business / E-Service WS 01/02
Technische Vorteile von SOAP • Einfache Technologie • Erweiterbar • Benutzt industrieweite Standards: XML, HTTP, SMTP, FTP • Stellt die Trennung von Inhalt und Struktur sicher E-Business / E-Service WS 01/02
Nachteile von SOAP • 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 und keine komplette verteilte Objektarchitektur. E-Business / E-Service WS 01/02
Gliederung • Einführung • Aufbau von SOAP-Nachrichten • SOAP-Datentypen • SOAP und RPCs • Zusammenfassung E-Business / E-Service WS 01/02
Aufbau eines SOAP-Pakets Scribner, K.; Stiver, M.: SOAP developer‘s guide S. 37 E-Business / E-Service WS 01/02
Elemente einer SOAP-Nachricht • SOAP-Envelope • SOAP-Header • SOAP-Body Envelope-Element Header-Element (optional) Body-Element E-Business / E-Service WS 01/02
Exkurs: XML-Namensräume (1) • wird von einer URI-Referenz identifiziert • erweitert die Bezeichnung von Element- und Attributnamen • verhindert Namenskonflikte und • ermöglich Wiederverwendung von ganzen Wortschätzen E-Business / E-Service WS 01/02
Exkurs: 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
Exkurs: 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
SOAP-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
SOAP-Header(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
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
Header-Element und seine Attribute • 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
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
SOAP-Body (2) • 3 mögliche Inhalte des SOAP-Bodys: • Aufruf -Informationen • Antwort -Informationen • Fehler -Informationen E-Business / E-Service WS 01/02
SOAP-Body beim Aufruf einer Methode 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
SOAP-Body einer Antwortnachricht HTTP/1.1 200 OK 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> <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
SOAP-Body einer Fehlernachricht 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
Gliederung • Einführung • Aufbau von SOAP-Nachrichten • SOAP-Datentypen • SOAP und RPCs • Zusammenfassung E-Business / E-Service WS 01/02
Datentypen bei SOAP • Einfache Datentypen • direkt in XML verankert • Zusammengesetzte Datentypen • Strukturen • Arrays E-Business / E-Service WS 01/02
Einfache 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
Zusammengesetzte 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
Zusammengesetzte Datentypen (2) Arrays: <queue SOAP-ENC:arrayType="xsd:int[2]"> <zahl>3</zahl> <zahl>5</zahl> </queue> E-Business / E-Service WS 01/02
Gliederung • Einführung • Aufbau von SOAP-Nachrichten • SOAP-Datentypen • SOAP und RPCs • Zusammenfassung E-Business / E-Service WS 01/02
SOAP 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
Entfernter Methodenaufruf Objektendpunktkennung POST /creator.pl?objekt=meinobj HTTP/1.1 HOST: www.mcp.com Accept: text/* Content-type: text/xml Content-length: nnnn SOAPAction: 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> Maschinenadresse SOAP-Nutzlast Methodenname Schnittstelle E-Business / E-Service WS 01/02
ORPC – Object Remote Procedure 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
Gliederung • Einführung • Aufbau von SOAP-Nachrichten • SOAP-Datentypen • SOAP und RPCs • Zusammenfassung E-Business / E-Service WS 01/02
Zusammenfassung (1) • SOAP = Netzwerkprotokoll, keine Architektur • Aufbau: Envelope, [Header], Body • XML-Dokument mit spez. Namespaces • Serialisierung von Datenströmen • Übetragung hauptsächl. über HTTP • für Remote Procedure Calls E-Business / E-Service WS 01/02
Zusammenfassung (2) • Ausblick / Zukunft von SOAP: • Tools von der Programmiersprache zum XML-Schema • XML-Schemata für die Schnittstellendefinition • SOAP-fähige Betriebssysteme E-Business / E-Service WS 01/02