Seminar Praktische Informatik Web Services
Download
Report
Transcript Seminar Praktische Informatik Web Services
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
SOAP
SOAP
Finden
Eintragen
SOAP
Benutzer
Benutzen des WS
WSDL
Anbieter
Anwendungsbeispiel
Kunde 1
Kunde 2
OS: Windows
Sprache: VB
OS: Mac OS
Sprache: Java
Anbieter
CORBA
DCOM
RMI
Server
Kunde 3
OS: Linux
Sprache: Python
CORBA-IDL
Kunde 4
OS: UNIX
Sprache: C++
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
Viele
Plattformen
Programmiersprachen
ORBs sind jedoch nicht sehr einheitlich, deshalb
werden nicht auf allen Plattformen alle Sprachen
unterstützt
Lösungen (2)
Eventuelle Lösung
HTML
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
SOAP
SOAP
Finden
Eintragen
SOAP
Benutzer
Benutzen des WS
WSDL
Anbieter
UDDI
HTTP
server
Client
SOAP
server
Server
HTTP
server
Web
Service
SOAP
server
UDDI
WebApp
UDDI
Business
Logic
UDDI
DB
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“>
<!– Header -->
<SOAP:Header>
</SOAP:Header>
<!– Body -->
<SOAP:Body>
</SOAP:Body>
</SOAP:Envelope>
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 mit
Methodenaufrufen
Parameterübergaben
Rückgabewerten
Fehlermeldungen
(Antworten von Methoden)
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>
Methode
Parametername
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>
Methode
Parametername
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
WSDL – Struktur
<definitions>
<documentation>
<portType> listet alle Operationen eines Web Services auf.
<import>
Dazu
dienen die <operation>-Elemente, die als Attribut
<types>
„name“
den Namen der Funktion haben. <operation> hat
wiederum
Unterelemente, und zwar <input>, <output> und
<message>
<documentation>
<fault>. <part> und <import> sind optional.
In <message> werden mittels der <part>-Unterelemente
In
kannAttributen
eine textuelle
Beschreibung der
<portType>
die<documentation>
Funktionen
mit deren
undjedoch
Rückgabewerten
<types>
ist ebenfalls
optional. Werden
eigens
WSDL
und
des
Dienstes
stehen.
<operation>
aufgelistet,
wobei
<message>
das Attribut
„name“dann
hat, das
definierte Datentypen z.B. Strukturen
verwendet,
den
Namen
der Funktion
erhält und
<part>
dem Attribut
<binding>
müssen
sie hier
definiert werden,
damit
sie mit
in SOAP
Mit
<import>
kann man
„name“
denwerden
Namen
desWSDL-Dokumente
Parameters und mitmodular
„type“ den
verwendet
können.
<service>
aufbauen
so WSDL-Teile
importieren
Typen desund
Parameters
festlegt.
Gibt es mehrere Parameter
<port>
dann muss man mehrere <part>-Elemente verwenden
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
SOAP
SOAP
Finden
Eintragen
SOAP
Benutzer
Benutzen des WS
WSDL
Anbieter
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
Application Layer
WS-Trust
SOAP
WS-Security Policy
WS-Policy
WS-Security
XML
HTTP, FTP,
SMTP, …
TCP/IP
Transport Layer
XML
Signature
XML
Encryption
SSL
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://www106.ibm.com/developerworks/webservices/
http://www6.software.ibm.com/developerworks/e
ducation/ws-dewsdl/ws-dewsdl-a4.pdf
http://www.topxml.org/soap/articles/soapservices
/default.asp
Quellen (3)
www.xmethods.net
www.salcentral.com