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
