Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

SOAP-Kurs Einführung und praktische Beispiele

Ähnliche Präsentationen


Präsentation zum Thema: "SOAP-Kurs Einführung und praktische Beispiele"—  Präsentation transkript:

1 SOAP-Kurs Einführung und praktische Beispiele

2 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 2

3 Übersicht SOAP in der Theorie (heute) SOAP in der Praxis (morgen)
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 3

4 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? 4

5 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 5

6 Web-Services: Die Idee
Plattform- und sprachunabhängige Kommunikation Web-Service Anwendungs-programm Web-Service-Nutzer Plattform- und sprachspezifische Kommunikation 6

7 Was ist ein Web-Service?
Web-Anwendungsserver Anwendungs-programm Service-Proxy Service-Listener 7

8 Was ist ein Web-Service?
Paradebeispiele Google: Google-Suche auf der eigenen Seite, z. B. sjaensch.org Amazon: Shop-Suche als Partnerprogramm, z. B. 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 8

9 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 9

10 Web-Services: Konzept
Web-Service Protokollstapel (siehe auch W3C) Namensdienst für Web-Services: Auffinden von WSDL zu interessierenden Web-Services Ebene Protokolle Entdeckung UDDI, DISCO, WSIL, ebXML Beschreibung WSDL, RDF, ebXML Beschreibung der verpackten Nutzdaten Verpackung SOAP, XML-RPC Transport HTTP, SMTP, FTP, BEEP… Verpackt die Nutzdaten Netzwerk TCP/IP 10

11 Web-Services: Interaktionsmodell
Interaktionsmodell basiert auf SOA (Service Oriented Architecture) WSD Dienst wird in einem WSD-Dokument beschrieben und beim Service-Verzeichnis registriert Verfügbare Dienste Web-Service-Verzeichnis Publizieren Finden Muss WSD kennen, damit er korrekt auf den Dienst zugreifen kann WSD Web Service Description Bietet Dienst nach außen hin an Web-Service-Anbieter Web-Service- Nutzer Interaktion SOAP Nutzdaten 11

12 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. 12

13 Web-Services ausprobieren
Kleines Beispiel zum Ausprobieren: <?php $client = new SoapClient('http://www.xmethods.net/sd/2001/BabelFishService.wsdl'); $result = $client->BabelFish('de_en', 'Hallo Welt'); echo $result; ?> 13

14 Web-Services: Alternativen
CORBA (Common Object Request Broker Architecture) REST (Representional State Transfer) Remoting: .NET Remoting, Java RMI EDI (Electronic Data Interchange) 14

15 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 W3C ein Die aktuelle Version von SOAP ist 1.2 und liegt seit Juni 2003 als Empfehlung beim W3C vor 15

16 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. 16

17 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 Part0: Primer → Allgemeine Einführung SOAP Version 1.2 Part1: Messaging Framework →Aufbau und Funktionsweise einer SOAP-Nachricht SOAP Version 1.2 Part2: Adjuncts →Zusätzliche Definitionen 17

18 SOAP: Nachrichtenformat
Transportprotokoll (HTTP) SOAP-Envelope SOAP-Header Headerblock SOAP-Body Nachricht Wurzelelement und Namensraum. Obligatorisch Transportiert die Anwendungsdaten. Obligatorisch Dient zur Angabe von Informationen, die nicht direkt als Anwendungsdaten zu klassifieren sind (z. B. Transaktions-nummer) .Der Header ist optional! Anwendungs-spezifischer Teil 18

19 SOAP: Nachrichtenformat
Beispiel: <?xml version=„1.0“ encoding=„utf-8“?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XML-Schema-instance" Xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <env:Header>...</env:Header> <env:Body> <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> </env:Body> </soap:Envelope> Header (optional) Namensraum für den anwendung-spezifschen Teil SOAP-Nachricht SOAP-Nachrichten verwenden einen eigenen Namensraum für alle Tags, die zum Envelope gehören (hier env) 19

20 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 20

21 SOAP: Übermittlung Dialogorientierte MEP RPC-MEP
Nachrichten werden in einer Richtung zwischen den SOAP-Knoten ausgetauscht asynchron RPC-MEP Anfrage-Antwort synchron Nachricht Sender Empfänger Sender Empfänger Antwort Anfrage 21

22 SOAP: Übermittlung Protokollbindung HTTP ideal als Transportmodell
Request-Response-Muster passt hervorragend zum SOAP-RPC-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 22

23 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: SOAP-Spezifikation 1.2: 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 23

24 SOAP-Encodings Datentypen
An die Datentypen des XML-Schema-Standards angelehnt: Aufteilung in einfache (primitive) und komplexe Datentypen Primitive Datentypen: String, boolean, int, byte… Komplexe Datentypen: Array 24

25 SOAP 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. DataEncodingUnknown) 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! 25

26 SOAP: Aufbau Funktionalität Version 1.1 Version 1.2 Spezifikation
1 Teil 3 Teile Namensraum Encoding Frei wählbar. Spezifikation: Frei wählbar. Spezifikation aktualisiert: Intermediäre und Nachrichten-verteilung Actor-Attribut 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 SOAP-Body 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 26

27 Web-Service: Beispiel
Im Browser bitte folgende URL eingeben: 27

28 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! 28

29 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 29

30 Wo wird die WSDL eingesetzt?
Interaktionsmodell Web-Service-Anbieter Web-Service-Verzeichnis Web-Service-Nutzer Interaktion Finden Publizieren WSD SOAP 30

31 WSDL: Aufbau Grundstruktur der WSDL-Datei: definitions types message
Name des Dienstes, Namensräume, verwendete Standards definitions Datentypen-Definitionen types Nachrichten-formate (In-Out) message Schnittstellen-beschreibung mit Hilfe von definierten Mustern portType binding Beschreibt die Bindung: Operationen einer definierten Schnittstelle (interface) Endpunkte und Beschreibung des Dienstanbieters service 31

32 WSDL: Aufbau Beispiele:
Google : Amazon: Vascoda: 32

33 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: 33

34 UDDI: Aufbau Firmen bieten öffentliche UDDI-Operatoren an z.B. IBM, SAP UDDI Operator Council regelt, wer zum UBR gehören darf UDDI-Operator 1 Möglichkeit 1: Meldet direkt an Service-Anbieter Universal Business Registry Möglichkeit 2: Meldet an Privates UDDI-Verzeichnis Möglichkeit 3: Meldet beim privatem Verzeichnis Datenabgleich über GUIDs UDDI-Operator 2 Trägt ein Registrar 34

35 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 35

36 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 SOAP-Nachricht 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? 36

37 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, POP3, Jabber müssen in der Lage sein, die Nachrichten transportieren zu können. 37

38 SOAP in der Praxis Der Weg zum eigenen Web-Service mit SOAP 38

39 SOAP mit PHP SOAP-Implentierungen für PHP
SOAPx4: Urgroßmutter der PHP-Implementierungen. Bildet die Basis für andere Implementierungen. NuSOAP: Weiterentwicklung von SOAPx4 PEAR::SOAP: Weiterentwicklung von SOAPx4 ez SOAP: SOAP-Implementierung für das CMS eZ Publish PHP-SOAP: C-basierte PHP-Erweiterung SWSAPI: Einfache API für Web-Services auf Basis von SOAPx4 Krysalis: Framework für Web-Services auf der Basis von XSLT 39

40 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! NuSOAP: Man findet viele Einführungen zu SOAP mit PHP in denen NuSOAP verwendet wird. Probleme mit der Fehlerrückgabe! PHP-SOAP: Unterstützt SOAP1.1/1.2 und WSDL 1.1 Die restlichen Pakete führen ein Nischendasein 40

41 SOAP mit NuSOAP Wie nutze ich die API?
NuSOAP besteht aus einer ZIP-Datei, die die Datei nusoap.php enthält. Nicht schön: SOAP-PHP und NuSOAP verwenden den gleichen Klassennamen "soapclient". Um NuSOAP 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" 41

42 PHP-SOAP Wie nutze ich die API?
Um die Erweiterung nutzen zu können, muss PHP mit der Option -enable-soap konfiguriert werden. 42

43 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 43

44 SOAP mit PEAR::SOAP Wie nutze ich die API?
PEAR::SOAP wird mit dem PEAR-Framework installiert, diese ist ein wenig tricky: PEAR installieren pear install channel-update pear.php.net pear install Net_Socket pear install -f Net_DIME pear install Net_URL pear install HTTP_Request pear install Mail_Mime pear install channel://pear.php.net/SOAP PEAR::SOAP wird z. B. require_once "SOAP/Server.php" um einen Web-Service zu erstellen 44

45 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 45

46 WSDL WSDL mit PEAR::SOAP 46


Herunterladen ppt "SOAP-Kurs Einführung und praktische Beispiele"

Ähnliche Präsentationen


Google-Anzeigen