Upload
ursel-langbehn
View
103
Download
0
Embed Size (px)
Citation preview
Seminar Praktische Informatik
Web Services
Norman Thomas
27. November 2003
Übersicht
Einleitung Beispiel
SOAP Struktur Datentypen
WSDL Struktur
UDDI Struktur Benutzung
Definition
Web Services sind eine im Internet veröffentlichte Software, die ihren Dienst anbietet und über XML-basierte Standardschnittstellen angesprochen wird.
Übersichtsplan
UDDI
AnbieterBenutzer
WSDL
SOAP
SOAP SOAP
Benutzen des WS
Finden Eintragen
Anwendungsbeispiel
Server
Anbieter
Kunde 1OS: WindowsSprache: VB
Kunde 3OS: Linux
Sprache: Python
Kunde 4OS: UNIX
Sprache: C++
Kunde 2OS: Mac OS
Sprache: Java
RMIDCOMCORBA
CORBA-IDL
Lösungen (1)
RMI Nur auf Java beschränkt Dafür sämtliche Java-fähige Plattformen
DCOM Nur auf Windows beschränkt Dafür programmiersprachenunabhängig
CORBA Viele Plattformen Viele Programmiersprachen ORBs sind jedoch nicht sehr einheitlich, deshalb
werden nicht auf allen Plattformen alle Sprachen unterstützt
Lösungen (2)
Eventuelle LösungHTML parsen und Benutzer simulieren
Scheint u.U. einfacher zu sein als es ist! Probleme:
Parsen ist aufwändig Änderung des Layouts → Parser anpassen Bei Änderungen ist der alte Parser auf keinen Fall weiter
nutzbar Dienste werden erweitert → Parser anpassen Verteilung des neuen Parsers an alle Kunden Man muss warten bis alle Kunden umgestellt haben
Lösungen (3)
HTTP (HTML) und CORBA boten die besten Lösungen, wenn auch jedes für sich unvollkommen
Kombination beider Techniken! HTTP als Transport-Protokoll CORBA-IDL ähnliches Verfahren zum
Beschreiben der Fähigkeiten Ergebnis: Web Services
Übersichtsplan
UDDI
AnbieterBenutzer
WSDL
SOAP
SOAP SOAP
Benutzen des WS
Finden Eintragen
Client
Server
HTTPserver
WebService
SOAPserver
UDDIHTTPserver
SOAPserver
UDDIWebApp
UDDIBusiness
Logic
UDDIDB
SOAP
Basiert auf XML Aktuelle Version 1.2 seit Juni 2003 SOAP dient zum Nachrichtenaustausch Benötigt keine exotischen offenen Ports,
da es auf Basis von HTTP, SMTP, etc. operieren kann
SOAP-Struktur<?xml version=„1.0“ encoding=„UTF-8“?><SOAP:Envelope xmlns:SOAP=„http://www.w3.org/2003/05/soap-envelope“>
</SOAP:Envelope>
<!– Header --><SOAP:Header>
</SOAP:Header>
<!– Body --><SOAP:Body>
</SOAP:Body>
SOAP-Envelope
Ist „Umschlag“ einer SOAP-Nachricht Ist Root-Element der SOAP-Nachricht
(des XML-Dokuments) In „xmlns:SOAP“ wird die verwendete
Version von SOAP angegeben (der Link aus dem Beispiel ist für SOAP 1.2)
SOAP-Header
Ist optional Falls er angegeben wird muss er vor dem
SOAP-Body stehen Im Header können Daten angegeben werden,
die nicht zur eigentlichen Nachricht gehören (z.B. Authentisierungsdaten)
Versteht der Empfänger den Header nicht, weiß also nicht die Daten auszuwerten, so wird der Header einfach verworfen
SOAP-Header (Code)
<SOAP:Header> <auth:authentication
xmlns:auth=„http://irgendwas.com/auth“> <auth:user>norman</auth:user> <auth:pass>webservices</auth:pass> </auth:authentication></SOAP:Header>
SOAP-Body
Hier steht die eigentliche Nachricht mitMethodenaufrufenParameterübergabenRückgabewerten (Antworten von Methoden)Fehlermeldungen
Java-Code
public String sayHello( String name ) {return „Hello “ + name;
}
SOAP-Body (Code)
<SOAP:Body> <anfrage:sayHello xmlns:anfrage=„http://irgendwas.com/anfrage“ SOAP:encodingStyle=„http://schemas.xmlsoap.org/SOAP/encoding/“>
<name>Norman</name> </anfrage:sayHello></SOAP:Body>
MethodeParametername
Parameterwert
SOAP-Body (Code)
<SOAP:Body> <anfrage:sayHelloResponse xmlns:anfrage=„http://irgendwas.com/anfrage“ SOAP:encodingStyle=„http://schemas.xmlsoap.org/SOAP/encoding/“>
<result>Hello Norman</result> </anfrage:sayHelloResponse></SOAP:Body>
MethodeParametername
Parameterwert
SOAP-Fault
Hierhin gehören Fehlermeldungen Fehlermeldungen werden charakterisiert durch:
faultcode (VersionMismatch, MustUnderstand, Client, Server)
faultstring faultfactor (Knoten, wo Fehler auftrat) details
Befinden sich in der Umgebung <SOAP:Fault> innerhalb des SOAP-Body‘s
SOAP & Datentypen
SOAP verwendet Standard-XML-Typen Bei komplexen Typen wie Arrays oder
Strukturen kann man eigene Typen definieren
Arrays
<anfrage:searchZIPResponse xmlns:anfrage=„…“ SOAP:encodingStyle=„…“>
<result href=„id0“/></anfrage:searchZIPResponse>
<id0 id=„id0“ SOAPenc:root=„0“ xsi:type=„SOAPEnc:Array“ SOAPEnc:arrayType=„xsd:string[2]“>
<i xsi:type=„xsd:string“>Cambria Hts.</i> <i xsi:type=„xsd:string“>Baldwin</i></id0>
Struktur
<anfrage:searchAddressResponse xmlns:anfrage=„…“ SOAP:encodingStyle=„…“>
<result href=„id0“/></anfrage:searchAddressResponse>
<id0 id=„id0“ SOAPenc:root=„0“ xsi:type=„ns1:Adresse“>
<strasse xsi:type=„xsd:string“>Mozartstr. 1</strasse>
<plz xsi:type=„xsi:string“>34117</plz> <ort xsi:type=„xsi:string“>Kassel</ort></id0>
WSDL
Web Service Description Language XML-basiert WSDL beschreibt Web Services Aus WSDL lassen sich Code-Gerüste
generieren Aktuelle Version ist 1.1, jedoch sind 1.2 und 2.0
in Arbeit Noch kein offizieller W3C-Standard wie SOAP Alternativen: RDF, DAML
<definitions>
<types>
<documentation><import>
<message><part>
<binding>
<service><port>
<portType><operation>
In <message> werden mittels der <part>-Unterelemente die Funktionen mit deren Attributen und Rückgabewerten aufgelistet, wobei <message> das Attribut „name“ hat, das den Namen der Funktion erhält und <part> mit dem Attribut „name“ den Namen des Parameters und mit „type“ den Typen des Parameters festlegt. Gibt es mehrere Parameter dann muss man mehrere <part>-Elemente verwenden
<documentation> und <import> sind optional.
In <documentation> kann eine textuelle Beschreibung der WSDL und des Dienstes stehen.
Mit <import> kann man WSDL-Dokumente modular aufbauen und so WSDL-Teile importieren
<portType> listet alle Operationen eines Web Services auf. Dazu dienen die <operation>-Elemente, die als Attribut „name“ den Namen der Funktion haben. <operation> hat wiederum Unterelemente, und zwar <input>, <output> und <fault>.
WSDL – Struktur
<types> ist ebenfalls optional. Werden jedoch eigens definierte Datentypen z.B. Strukturen verwendet, dann müssen sie hier definiert werden, damit sie in SOAP verwendet werden können.
WSDL-Operation
WSDL-binding & service
<binding> legt fest über welche Transportwege die Kommunikation laufen kann (SOAP, HTTP GET/POST, MIME, …) „type“-Attribut verweise auf ein portType
In <service> werden <port>-Elemente zusammengefasst Attribut „binding“ verweist auf <binding>-Elemente Das Unterelement <port> enthält wieder ein Unterelement
<SOAP:address> bzw <HTTP:address>, das ein Attribut „location“ mit der URL des Services besitzt.
UDDI
Universal Description, Discovery Integration UDDI ist kein W3C-Standard Katalog bzw. Suchmaschine für Web Services Anbieter registriert seinen Web Service am
UDDI Registry Anwender sucht im UDDI Registry nach Web
Services Basiert ebenfalls au XML Alternative: WSIL
Übersichtsplan
UDDI
AnbieterBenutzer
WSDL
SOAP
SOAP SOAP
Benutzen des WS
Finden Eintragen
UDDI – Publisher & Requestor
Publizieren Mit „delete“ beginnende Befehle dienen dem Löschen Mit „save“ beginnende Befehle dienen dem Speichern
Abfragen Mit „find“ beginnende Befehle suchen und browsen durch
das Verzeichnis Mit „get“ beginnende Befehle dienen dem Abrufen von
Details
UDDI
Publisher add_publisherAssertions, set_publisherAssertions,
get_publisherAssertions, delete_publisherAssertions, get_assertionStatusReport
save_business, delete_business save_service, delete_service save_tModel, delete_tModel get_registeredInfo
Requestor find_business, get_businessDetail, get_businessDetailExt find_relatedBusiness find_service, get_serviceDetail find_tModel, get_tModel
Ausblick
Nutzung von Web Services zur Integration von Google, Amazon, Babelfish, etc. in eigene Applicationen
Nutzung von Web Services zum Grid Computing
Web Service Sicherheit
SOAP
XML
HTTP, FTP,SMTP, …
TCP/IP
Transport Layer
Application Layer
SSL
XMLSignature
XMLEncryption
WS-Security
WS-TrustWS-Security Policy
WS-Policy
Quellen (1)
Perspectives on Web Services, Applying SOAP, WSDL and UDDI to Real-World Projects. Olaf Zimmermann, Mark Tomlinson, Stefan Peuser. Springer Verlag
Web Services – kompakt. Michael Kuschke, Ludger Wölfel. Spektrum Verlag
Quellen (2)
http://www.w3schools.com/soap/default.asp http://www.w3schools.com/w3c/w3c_soap.asp http://www.w3schools.com/wsdl/default.asp http://www.w3schools.com/w3c/w3c_wsdl.asp http://www-106.ibm.com/developerworks/
webservices/ http://www6.software.ibm.com/developerworks/
education/ws-dewsdl/ws-dewsdl-a4.pdf http://www.topxml.org/soap/articles/
soapservices/default.asp
Quellen (3)
www.xmethods.net www.salcentral.com