37
Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Embed Size (px)

Citation preview

Page 1: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Seminar Praktische Informatik

Web Services

Norman Thomas

27. November 2003

Page 2: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Übersicht

Einleitung Beispiel

SOAP Struktur Datentypen

WSDL Struktur

UDDI Struktur Benutzung

Page 3: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Definition

Web Services sind eine im Internet veröffentlichte Software, die ihren Dienst anbietet und über XML-basierte Standardschnittstellen angesprochen wird.

Page 4: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Übersichtsplan

UDDI

AnbieterBenutzer

WSDL

SOAP

SOAP SOAP

Benutzen des WS

Finden Eintragen

Page 5: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 6: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 7: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 8: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 9: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Übersichtsplan

UDDI

AnbieterBenutzer

WSDL

SOAP

SOAP SOAP

Benutzen des WS

Finden Eintragen

Page 10: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Client

Server

HTTPserver

WebService

SOAPserver

UDDIHTTPserver

SOAPserver

UDDIWebApp

UDDIBusiness

Logic

UDDIDB

Page 11: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 12: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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>

Page 13: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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)

Page 14: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 15: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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>

Page 16: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

SOAP-Body

Hier steht die eigentliche Nachricht mitMethodenaufrufenParameterübergabenRückgabewerten (Antworten von Methoden)Fehlermeldungen

Page 17: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Java-Code

public String sayHello( String name ) {return „Hello “ + name;

}

Page 18: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 19: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 20: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 21: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

SOAP & Datentypen

SOAP verwendet Standard-XML-Typen Bei komplexen Typen wie Arrays oder

Strukturen kann man eigene Typen definieren

Page 22: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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>

Page 23: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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>

Page 24: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 25: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 26: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

WSDL-Operation

Page 27: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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.

Page 28: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 29: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Übersichtsplan

UDDI

AnbieterBenutzer

WSDL

SOAP

SOAP SOAP

Benutzen des WS

Finden Eintragen

Page 30: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003
Page 31: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 32: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 33: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Ausblick

Nutzung von Web Services zur Integration von Google, Amazon, Babelfish, etc. in eigene Applicationen

Nutzung von Web Services zum Grid Computing

Page 34: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 35: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 36: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

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

Page 37: Seminar Praktische Informatik Web Services Norman Thomas 27. November 2003

Quellen (3)

www.xmethods.net www.salcentral.com