e98f400c44b6dd1e320b6b2439426abd.ppt
- Количество слайдов: 46
SOAP-Kurs Einführung und praktische Beispiele Franck Borel - UB-Freiburg
Ziele des SOAP-Kurses • Grundbegriffe verstehen: Web-Services, SOA, WDSL, UDDI, usw. • Zusammenhang zwischen SOAP und Web. Services verstehen • Architektur der Web-Services kennen • SOAP: Konzept, Übermittlung, Aufbau, Inhalt • Die wichtigsten SOAP-Implementierung für PHP nutzen können: PHP-SOAP, PEAR: : SOAP Franck Borel - UB-Freiburg 2
Übersicht • SOAP in der Theorie (heute) – Web-Services – SOAP – WSDL – UDDI • SOAP in der Praxis (morgen) – SOAP-Implementierungen für PHP – SOAP mit PHP-SOAP – SOAP mit PEAR: : SOAP – WSDL mit PEAR: : SOAP Franck Borel - UB-Freiburg 3
Am Anfang war der Web-Service • SOAP ist das Kernstück der Web-Services • In manchen Veröffentlichungen erscheint SOAP als Synonym für Web-Services – Nicht korrekt, aber verdeutlicht dessen Bedeutung für den Web-Service • Wie hängen SOAP und Web-Services zusammen? • Was ist den überhaupt ein Web-Service und wofür braucht man diesen? Franck Borel - UB-Freiburg 4
Was ist ein Web-Service? • Ein Web-Service ist ein Stück Logik, das sich irgendwo auf einem Server im Internet befindet und über Standard-Internet-Protokolle wie HTTP oder SMTP ansprechen lässt. • Kommunikationspartner sind hier Maschinen; Maschine-zu-Maschine-Kommunikation • Kein Benutzer notwendig! • Maschinen sprechen unterschiedliche Sprachen – Einheitliche Standards für den Daten -und Funktionalitätsaustausch notwendig Franck Borel - UB-Freiburg 5
Web-Services: Die Idee Plattform- und sprachunabhängige Kommunikation Anwendungsprogramm Web-Service. Nutzer Plattform- und sprachspezifische Kommunikation Franck Borel - UB-Freiburg 6
Was ist ein Web-Service? Web-Anwendungsserver Anwendungs -programm Franck Borel - UB-Freiburg Service-Proxy Service-Listener 7
Was ist ein Web-Service? • Paradebeispiele – Google: Google-Suche auf der eigenen Seite, z. B. sjaensch. org – Amazon: Shop-Suche als Partnerprogramm, z. B. http: //www. php 9. com/amazon. php – Dell: Warenwirtschaftssystem – vascoda : -) • • Nutzt SOAP-RPC für die Metasuche Jeder Dienstanbieter bietet die Funktion "query" SOAP-Anfrage enthält Suchkriterien SOAP-Antwort enthät Datensätze Franck Borel - UB-Freiburg 8
Web-Services: Eigenschaften • • • Modular, einfach und dezentral Technologien müssen XML-basiert sein Adressierbar sein Plattformunabhängig Erweiterbar Sicher und verlässlich Administrierbar RPC-Unterstützung (RPC = Remote Procedure Calls) Dokumentenaustausch Franck Borel - UB-Freiburg 9
Web-Services: Konzept Web-Service Protokollstapel (siehe auch W 3 C) Ebene Entdeckung Beschreibung Verpackung UDDI, Namensdienst für Web. Services: Auffinden Protokolle von WSDL zu interessierenden Web. DISCO, WSIL, Services eb. XML WSDL, RDF, eb. XML Beschreibung der SOAP, XML-RPC verpackten Nutzdaten Transport HTTP, SMTP, FTP, BEEP… Netzwerk TCP/IP Franck Borel - UB-Freiburg Verpackt die Nutzdaten 10
Web-Services: Interaktionsmodell • Interaktionsmodell basiert auf SOA (Service Oriented Architecture) Verfügbare Dienste Muss WSD kennen, damit er korrekt auf den Dienst zugreifen kann WSD Web-Service. Verzeichnis Finden Publizieren WSD Web-Service. Nutzer Nutzdaten Franck Borel - UB-Freiburg Dienst wird in einem WSDDokument beschrieben und beim Service. Verzeichnis registriert Interaktion SOAP Web. Service. Anbieter Bietet Dienst nach außen hin an Web Service Description 11
Web-Services: Interaktionsmodell • Möglichkeiten der Ausgestaltung des Interaktionsmodells: – Web-Service-Konsument und -Anbieter kennen sich vor der Interaktion. Syntax und Semantik ihrer Interaktionen muss beiden Partnern klar sein. – Web-Service-Konsument und -Anbieter kennen sich vorher, die WSD wird dynamisch geladen. Semantik muss klar sein. – Es gibt mehrere Web-Service-Anbieter, die Auswahl des Dienstes erfolgt manuell und die WSD wird dynamisch geladen. – Es gibt mehrere Web-Service-Anbieter, die Auswahl des Dienstes erfolgt manuell und die Web-Service-Beschreibung kommt vom Web-Service-Anbieter. – Es gibt mehrere Web-Service-Anbieter, die Auswahl erfolgt automatisch. Franck Borel - UB-Freiburg 12
Web-Services ausprobieren • Kleines Beispiel zum Ausprobieren: <? php $client = new Soap. Client('http: //www. xmethods. net/sd/2001/Babel. Fish. Service. wsdl'); $result = $client->Babel. Fish('de_en', 'Hallo Welt'); echo $result; ? > Franck Borel - UB-Freiburg 13
Web-Services: Alternativen • CORBA (Common Object Request Broker Architecture) • REST (Representional State Transfer) • Remoting: . NET Remoting, Java RMI • EDI (Electronic Data Interchange) Franck Borel - UB-Freiburg 14
SOAP: Geschichte • ~1998 Dave Winer veröffentlicht "RPC over HTTP via XML" • Dave Winer entwickelt XML-RPC (unterstützt von Microsoft) • Microsoft leitete von XML-RPC SOAP ab • Am 18. April 2000 reichte Microsoft mit Unterstützung von Ariba, HP, IBM, IOAN Technologies , SAP AG usw. SOAP 1. 1 beim W 3 C ein • Die aktuelle Version von SOAP ist 1. 2 und liegt seit Juni 2003 als Empfehlung beim W 3 C vor Franck Borel - UB-Freiburg 15
SOAP: Definition • SOAP ehemals Simple Object Access Protocol – Von "simple" kann bei dem Standard keine Rede sein – Mit "Object Access" (Objektzugriff) hat das Protokoll wenig zu tun – Seit Version 1. 2 ist SOAP kein Akronym mehr! • Definition: SOAP ist ein leichtgewichtiges Protokoll (Thin-Client-Protokoll) zum Austausch struturierter Informationen in einer dezentralisierten verteilten Umgebung. Franck Borel - UB-Freiburg 16
SOAP: Eigenschaften und Spezifikation • Einfaches und erweiterbares Protokoll • Grundausstattung ohne Sicherheit, Verlässlichkeit und Transaktionen • Spezifikation ist sehr offen, aber umfangreich • Zur Zeit in der Version 1. 2: – XML Protocol Working Group – SOAP Version 1. 2 Part 0: Primer → Allgemeine Einführung – SOAP Version 1. 2 Part 1: Messaging Framework →Aufbau und Funktionsweise einer SOAP-Nachricht – SOAP Version 1. 2 Part 2: Adjuncts →Zusätzliche Definitionen Franck Borel - UB-Freiburg 17
SOAP: Nachrichtenformat Wurzelelement und Namensraum. Obligatorisch Dient zur Angabe von Informationen, die nicht direkt als Anwendungsdaten zu klassifieren sind (z. B. Transaktionsnummer). Der Header ist optional! Franck Borel - UB-Freiburg Transportprotokoll (HTTP) SOAP-Envelope SOAP-Headerblock Transportiert die Anwendungsdaten. Obligatorisch SOAP-Body Anwendungsspezifischer Teil Nachricht 18
SOAP: Nachrichtenformat • Beispiel: <? xml version=„ 1. 0“ encoding=„utf-8“? > Header <env: Envelope (optional) xmlns: env="http: //www. w 3. org/2003/05/soap-envelope" xmlns: xsi="http: //www. w 3. org/2001/XML-Schema-instance" Xmlns: xsd="http: //www. w 3. org/2001/XMLSchema"> Namensraum für <env: Header>. . . </env: Header> den anwendung<env: Body> spezifschen Teil <r: reservierung xmlns: r="http: //www. airborel. de/Reserierung"> <r: hinflug> <r: abflugort>Freiburg</r: abflugort> <r: ankunftsort>Los Angeles</r: ankunftsort> </r: hinflug> <r: rueckflug>. . . </r: rueckflug> SOAP</env: Body> Nachricht </soap: Envelope> SOAP-Nachrichten verwenden einen eigenen Namensraum für alle Tags, die zum Envelope gehören (hier env) Franck Borel - UB-Freiburg 19
SOAP: Übermittlung • Für die Praxis kann man die Spezifikation auf folgende Punkte vereinfachen: – Nachrichten-Art = Message Exchange Pattern (MEP): In der Praxis entweder RPC-MEP (RPC/encoded) oder dialog-orientierte MEP (document/literal) – Pfad der Nachricht: Kommunikation läuft direkt vom Sender zum Empfänger – Protokollbindung: HTTP ist Wahl der meisten Implementierungen und Anwendungen Franck Borel - UB-Freiburg 20
SOAP: Übermittlung • Dialogorientierte MEP – Nachrichten werden in einer Richtung zwischen den SOAP-Knoten ausgetauscht – asynchron Sender Nachricht Empfänger • RPC-MEP – Anfrage-Antwort – synchron Franck Borel - UB-Freiburg Sender Anfrage Antwort Empfänger 21
SOAP: Übermittlung • Protokollbindung – HTTP ideal als Transportmodell • Request-Response-Muster passt hervorragend zum SOAPRPC-Stil • URIs identifizieren die Endpunkte • Bekannte Adressierungsschemata können für SOAP-Knoten übernommen werden • Auch in HTTP gibt es Zwischenknoten (z. B. Proxies), so dass auch hier die beiden Konzepte sehr gut zusammenpassen Franck Borel - UB-Freiburg 22
SOAP Encodings • Web-Service-Anbieter und –Konsument müssen die gleiche Sprache sprechen • SOAP-Encoding: Erlaubt die Angabe von Datentypen für ein XML -Element – SOAP-Spezifikation 1. 1: http: //schemas. xmlsoap. org/soap/encoding – SOAP-Spezifikation 1. 2: http: //www. w 3. org/2003/05/soap-encoding • Seit Version 1. 2 sind diese Kodierungsregeln optional • XML-Schemadefinition statt SOAP-Encoding • SOAP-Implementierungen übernehmen das Encoding für uns. Uff ! • Vorsicht! Manche Implementierungen sind sich nicht einig, welche Encoding-Variante angewandt werden soll: – Am verbreitesten RPC/encoded – Mickeysoft setzt alles auf document/literal Franck Borel - UB-Freiburg 23
SOAP-Encodings • Datentypen – An die Datentypen des XML-Schema-Standards angelehnt: http: //www. w 3. org/TR/xmlschema-2/ – Aufteilung in einfache (primitive) und komplexe Datentypen • Primitive Datentypen: String, boolean, int, byte… • Komplexe Datentypen: Array Franck Borel - UB-Freiburg 24
SOAP Fehlermanagement • Fehlermanagement – SOAP-Fault: Besonderer Nachrichtentyp, der über Fehler informiert – Fehler werden von SOAP-Spezifikationen 1. 1 und 1. 2 unterschiedlich behandelt • Fehlermanagement ist der beiden SOAP-Versionen ist inkompatibel • neue Fehlercodes (z. B. Data. Encoding. Unknown) • Andere Namen (z. B. Client wurde durch Sender ersetzt) • Es gibt Regeln, wie eine Implementierung sich verhalten muss, damit sie mit beiden Spezifikationen zurecht kommt! Franck Borel - UB-Freiburg 25
SOAP: Aufbau Funktionalität Version 1. 1 Version 1. 2 Spezifikation 1 Teil 3 Teile Namensraum http: //schemas. xmlsoap. org/soap/envelo pe http: //www. w 3. org/2003/05/soapenvelope Encoding Frei wählbar. Spezifikation: http: //schemas. xmlsoap. org/soap/encodi ng Frei wählbar. Spezifikation aktualisiert: http: //www. w 3. org/2003/05/soapencoding Intermediäre und Actor-Attribut Nachrichtenverteilung Intermediäre sind SOAP-Knoten, die Rollen annehmen. SOAP 1. 2 reguliert die Nachrichten-Weiterleitung exakter Fehler. Management Fehler enthält vier Elemente. Der Fehlercode gibt die Art des Fehlers aus. Vollständig überarbeitet. Neue Fehlercode! Elemente nach dem SOAPBody SOAP 1. 1 erlaubt Elemente nach dem SOAP-Body SOAP 1. 2 untersagt Elemente nach dem SOAP-Body Binding Beschreibung der Bindung an HTTP Allgemeine Spezifikation zur Bindung an andere Protokolle Franck Borel - UB-Freiburg 26
Web-Service: Beispiel • Im Browser bitte folgende URL eingeben: – http: //www. xmethods. net Franck Borel - UB-Freiburg 27
WSDL: Wofür WSDL? • Zur reinen Kommunikation reicht SOAP aus • Wie soll man aber wissen, welche Methoden ein Web-Service bietet? • Wir brauchen daher eine Beschreibung des Dienstes und eine Beschreibungssprache! Franck Borel - UB-Freiburg 28
Konzept der WSDL • Beschreibt einen Web-Service, genauer: – Beschreibt die anwendungsspezifischen Teil, der innerhalb einer SOAP-Nachricht verschickt wird • Die Implementierung des Kommunikationssystem soll automatisch erstellt werden (Maschine redet mit Maschine) • XML-Dokument mit einem – abstrakten Teil: • Name des Dienstes • Beschreibung der ausgehenden und eingehenden Nachrichten – Konkreten Teil: • Beschreibung der Protokollbindung • Adresse des Dienstes Franck Borel - UB-Freiburg 29
Wo wird die WSDL eingesetzt? • Interaktionsmodell WSD Web-Service. Verzeichnis Finden Publizieren WSD Web-Service. Nutzer Franck Borel - UB-Freiburg Interaktion SOAP Web. Service. Anbieter 30
WSDL: Aufbau • Grundstruktur der WSDL-Datei: Datentypen. Definitionen definitions types message Schnittstellenbeschreibung mit Hilfe von definierten Mustern service Nachrichten-formate (In-Out) port. Type Endpunkte und Beschreibung des Dienstanbieters Name des Dienstes, Namensräume, verwendete Standards Franck Borel - UB-Freiburg binding Beschreibt die Bindung: Operationen einer definierten Schnittstelle (interface) 31
WSDL: Aufbau • Beispiele: – Google : http: //api. google. com/Google. Search. wsdl – Amazon: http: //soap. amazon. com/schemas 2/Amazon. Web. Servic es. wsdl – Vascoda: http: //vifphys. tib. unihannover. de/Web. Services/VASCODA/vascoda. wsdl Franck Borel - UB-Freiburg 32
UDDI • UDDI = Universal Description, Discovery and Integration • UDDI ist ein Verzeichnisdienst und dient dazu Web. Services zu finden • Konzept: Web-Services sollen vom Service-Anbieter im Verzeichnis publiziert und vom Service-Konsumenten im Verzeichnis gefunden werden • Ähnlich wie LDAP aber auf Web-Services zugeschnitten (es gibt Bemühungen, LDAP mit UDDI zusammenzubringen) • Gründer: Ariba, IBM und Kleinstweich • Beispiel: http: //uddi. microsoft. com Franck Borel - UB-Freiburg 33
UDDI: Aufbau Firmen bieten öffentliche UDDIOperatoren an z. B. IBM, SAP UDDI Operator Council regelt, wer zum UBR gehören darf Universal Business Registry Möglichkeit 1: Meldet direkt an Service-Anbieter UDDI-Operator 1 Datenabgleich über GUIDs UDDI-Operator 2 Trägt ein Registrar Möglichkeit 2: Meldet an Möglichkeit 3: Meldet beim privatem Verzeichnis Privates UDDI-Verzeichnis Franck Borel - UB-Freiburg 34
Abschließende Worte • Muss ich SOAP und WSDL jemals selbst anfassen? – Man kann Web-Services implementieren, ohne jemals einen Blick auf die WSDL-Beschreibung oder auf SOAP-Datenpakete geworfen zu haben – Es gibt eine Reihe von Werkzeugen, die uns die Arbeit abnehmen – Aber: • Für das Konzipieren von Web-Services ist es wichtig die dahinterliegenden Mechanismen zu kennen (auch die Frage, ob ich überhaupt meine Anwendung als Web-Serice konzipieren möchte) • Debuggen wird leichter • Für die Entwicklung von Web-Service-Konsumenten muss man die WSDL-Beschreibung zumindest lesen können, um besser zu verstehen, wie die Software-APIs verwendet werden müssen Franck Borel - UB-Freiburg 35
SOAP Quiz • • • SOAP ist ein Akronym für? SOAP braucht man für? Wo finde ich die SOAP-Spezifikationen? Bestandteile einer SOAP-Nachricht? Welche Protokoll-Standards kann ich verwenden um eine SOAPNachricht zu transportieren? Welche Übermittlungsarten werden von SOAP unterstützt? Wofür brauche ich Encoding? Wer war der Erfinder von XML-RPC? Bestandteile des Webservices? Wo liegen die WSDs? Franck Borel - UB-Freiburg 36
SOAP in der Praxis • SOAP wurde für den Nachrichtenaustausch für Web-Services entwickelt! – Austausch von Nachrichten zwischen Dienstnutzer und Dienstanbieter – Die Nachrichten sollen auch in einem heterogenen Umfeld ausgetauscht werden können – Das Nachrichtenformat ist XML – Es soll "transportabel" sein, d. h. Transportprotokolle wie HTTP, SMTP, TCP, POP 3, Jabber müssen in der Lage sein, die Nachrichten transportieren zu können. Franck Borel - UB-Freiburg 37
SOAP in der Praxis • Der Weg zum eigenen Web-Service mit SOAP Franck Borel - UB-Freiburg 38
SOAP mit PHP • SOAP-Implentierungen für PHP – SOAPx 4: Urgroßmutter der PHP-Implementierungen. Bildet die Basis für andere Implementierungen. – Nu. SOAP: Weiterentwicklung von SOAPx 4 – PEAR: : SOAP: Weiterentwicklung von SOAPx 4 – ez SOAP: SOAP-Implementierung für das CMS e. Z Publish – PHP-SOAP: C-basierte PHP-Erweiterung – SWSAPI: Einfache API für Web-Services auf Basis von SOAPx 4 – Krysalis: Framework für Web-Services auf der Basis von XSLT Franck Borel - UB-Freiburg 39
SOAP mit PHP • Welche API sollen wir nehmen? – PEAR: : SOAP wird zur Zeit am aktivsten entwickelt und ist das beliebteste SOAP-Paket. • Sämtliche Versionen nur im Beta-Status! – Nu. SOAP: Man findet viele Einführungen zu SOAP mit PHP in denen Nu. SOAP verwendet wird. • Probleme mit der Fehlerrückgabe! – PHP-SOAP: Unterstützt SOAP 1. 1/1. 2 und WSDL 1. 1 – Die restlichen Pakete führen ein Nischendasein Franck Borel - UB-Freiburg 40
SOAP mit Nu. SOAP • Wie nutze ich die API? – Nu. SOAP besteht aus einer ZIP-Datei, die Datei nusoap. php enthält. – Nicht schön: SOAP-PHP und Nu. SOAP verwenden gleichen Klassennamen "soapclient". Um Nu. SOAP und SOAP-PHP gleichzeitig verwenden zu können, muss man in der Datei nusoap. php alle Einträge mit "soapclient" durch "soapclient<irgendetwas>" austauschen. – Diese Datei muss nur noch integriert eingebunden werden: • require_once "nusoap. php" Franck Borel - UB-Freiburg 41
PHP-SOAP • Wie nutze ich die API? – Um die Erweiterung nutzen zu können, muss PHP mit der Option -enable-soap konfiguriert werden. – http: //de. php. net/manual/de/ref. soap. php Franck Borel - UB-Freiburg 42
PHP-SOAP • Beispiele zum ausprobieren: – Einfacher Web-Service-Anbieter + -Konsument – Web-Service-Anbieter Server mit Parametern + Web. Service-Konsument – Web-Service-Anbieter mit Parameter und Fehlerrückgabe (fault) + Web-Service-Konsument – Web-Service-Konsument mit Debugging Franck Borel - UB-Freiburg 43
SOAP mit PEAR: : SOAP • Wie nutze ich die API? – PEAR: : SOAP wird mit dem PEAR-Framework installiert, diese ist ein wenig tricky: PEAR pear pear installieren install channel-update pear. php. net install Net_Socket install -f Net_DIME install Net_URL install HTTP_Request install Mail_Mime install channel: //pear. php. net/SOAP-0. 1 – PEAR: : SOAP wird z. B. require_once "SOAP/Server. php" um einen Web-Service zu erstellen Franck Borel - UB-Freiburg 44
SOAP mit PEAR: : SOAP • Beispiele zum ausprobieren: – Einfacher Web-Service-Anbieter/Konsument – Web-Service-Anbieter/Konsument mit Parametern – Web-Service-Anbieter/Konsument mit komplexen Datentypen Franck Borel - UB-Freiburg 45
WSDL • WSDL mit PEAR: : SOAP Franck Borel - UB-Freiburg 46
e98f400c44b6dd1e320b6b2439426abd.ppt