• Keine Ergebnisse gefunden

WSDL WSDL

N/A
N/A
Protected

Academic year: 2022

Aktie "WSDL WSDL"

Copied!
82
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

WSDL WSDL

Dr. Malgorzata Mochol Freie Universität Berlin Institut für Informatik

Netzbasierte Informationssysteme mochol@inf.fu-berlin.de

(2)

Block Web Services Block Web Services

Vorlesungs Vorlesungs

-termine - termine Vorlesung (4 + 1 + 1) Vorlesung (4 + 1 + 1) Übung Ü bung – 2 Termine

2 Termine Übungs Ü bungs - - termine termine 10.06. Web Services, RPCs vs.

Messaging

17.06. SOAP im Detail SOAP 24./25.06

24.06.

(heute)

WSDL im Detail WSDL 01./02.07

01.07. Web Services in der Praxis

& Ausblick

08.07. Rückblick

15.07. Klausur

(3)

Heutige Vorlesung Heutige Vorlesung

letzte Woche letzte Woche

; ; prinzipieller Aufbau prinzipieller Aufbau

; ; Kodierung von Kodierung von RPCs RPCs

; ; Verarbeitung & Ü Verarbeitung & Ü bertragung bertragung

; ; Vor- Vor - und Nachteile und Nachteile heutige Vorlesung

heutige Vorlesung Æ Æ WSDL WSDL

ƒ Wozu WSDL-Syntax verstehen?

ƒ prinzipieller Aufbau

ƒ Datenschemata

ƒ Funktionalität

ƒ Protokollbindung

ƒ Service-Aufbau

ƒ standardisierte Bindungen (SOAP & HTTP)

ƒ Vor- und Nachteile

(4)

Web Services Web Services

Web Service WSDL

Beschreibt Service UDDI

Verzeichnis

Sucht nach Service

Verweist auf

die Service-Beschreibung

Verw eist a

uf de

n Ser vice Service Nutzer SOAP

(Service Consumer)

(5)

Web Services (2)

Web Services (2)

(6)

Web Services (3) Web Services (3)

Quelle: http://www.jeckle.de/files/WSDL2002.pdf

(7)

WSDL =

WSDL = W Web eb S S ervices D ervices Description escription Language L anguage

ƒ baut auf XML-Schema auf

ƒ stellt ein XML-Vokabular zur Beschreibung von Web Services (Schnittstellen, Operationen und Dienste) dar Æ Standard für die Beschreibung dessen, was zwischen Konsument und Anbieter geschickt wird

Æ Syntax einer Schnittstelle kann bis ins kleinste Detail festgelegt werden

Æ Beschreibung von Grundlegende Interaktionsmuster

(wie Anfrage-Antwort)

(8)

Wozu dient WSDL?

Wozu dient WSDL?

ƒ Client möchte bestimmten Web Service nutzen

ƒ Client benötigt hierfür:

- Struktur des Aufrufes: Name, Parameter, Ergebnis, Fehlermeldungen

- Übertragungsprotokoll und Web-Adresse

ƒ genau dies wird mit WSDL beschrieben

Formale Beschreibung der Schnittstelle von Services Formale Beschreibung der Schnittstelle von Services

Nachfrager Anbieter

Schnittstelle Dienst

publizieren

Dienst abrufen

(9)

Wozu

Wozu WSDL WSDL - - Syntax Syntax verstehen? verstehen?

Java, C#

WSDL

ƒ WSDL = zu veröffentlichende Schnittstellenbeschreibung (Vertrag)

ƒ Nutzer des Web Service kennt nur WSDL, nicht Programm-Code

Ö Web-Service-Anbieter/Nutzer

sollten WSDL (Vertrag) verstehen!

ƒ mögliche Probleme bei generierten WSDLs:

- Fehlermeldungen nicht korrekt beschrieben

- optionale RPC-Parameter ungünstig

beschrieben

(10)

WSDL bei W3C WSDL bei W3C

ƒ Web Services Description Working Group http://www.w3.org/2002/ws/desc/

ƒ WSDL 1.1. Æ W3C Note, März 2001

ƒ WSDL Version 1.2 Æ W3C Working Draft, März 2003

ƒ Part 1: Core Language

ƒ Part 2: Message Patterns

ƒ Part 3: Bindings

ƒ ƒ WSDL Version 2.0 Æ WSDL Version 2.0 Æ W3C Recommendation W3C Recommendation, Juni 2007 , Juni 2007

ƒ Part 0: Primer

ƒ Part 1: Core Language

ƒ Part 2: Adjuncts

A. Dhesiaseelan„What's New in WSDL 2.0“, 2004, http://www.hotcoding.com/xmls/webservice/33297.html

Keine Kompatibilit Keine Kompatibilitä ät t

zwischen WSDL 1.1. und WSDL 2.0

zwischen WSDL 1.1. und WSDL 2.0

(11)

WSDL 2.0 WSDL 2.0

• berücksichtigt Verbesserungen für WSDL1.1 von WS-I Basic Profile

• eingebaute Vererbung, import-Funktionen, verbesserte Beschreibung von Fehlern

• solider, interoperabler Standard

• trifft die Anforderungen von

Web-Applikation-Entwicklern

(12)

WSDL 2.0 im Vergleich mit WSDL 1.1 WSDL 2.0 im Vergleich mit WSDL 1.1

+ Einfachere und flexiblere Beschreibung von Services and Service Wiederverwendung

+ Reicherer Syntax für Beschreibung von Aspekte der

„Quality of Service“

+ Interface-Vererbung

- mehr Komplexität

- Keine Rückwertskompatibilität

- (noch) nicht weit verbreitet

(13)

Tools f

Tools f ür WSDL 2.0 ü r WSDL 2.0

• Apache Woden

• WSDL 2.0 Parser & Validator

• Subprojekt von Apache Web Services Project

• Lesen, Bearbeiten, Erzeugen und Schreiben von WSDL- Dokumenten

• ursprünglich für WSDL 2.0 aber mit dem Ziel alle WSDL- Version zu unterstützen

Æ http://ws.apache.org/woden/

• WSDL 1.1 to WSDL 2.0 Konverter

• implementiert als XSLT 2.0 Stylesheet

• keine Garantie für ein valides WSDL 2.0 Dokument

Æ http://www.w3.org/2006/02/WSDLConvert.html

(14)

Prinzipieller Aufbau

Prinzipieller Aufbau – – allgemein allgemein

(15)

WSDL Aufbau WSDL Aufbau

ƒ beschreibt Netzwerkdienste als Kommunikationsendpunkte

(Ports), die bestimmte

Nachrichten über bestimmte Protokolle austauschen

Operationen doGoogleSearch

SOAP-Anfrage SOAP-Antwort

Web-Adresse

http://api.google.com/

...

Web Service

(16)

Grundidee Grundidee

abstrakte Schnittstelle abstrakte Schnittstelle

ƒ Beschreibung der

Schnittstelle unabhängig von

- Nachrichtenformaten wie SOAP

- Übertragungsprotokollen wie HTTP

Bindung Bindung

ƒ Realisierung einer abstrakten Schnittstelle mit

bestimmtem

Nachrichtenformat und Übertragungsprotokoll

abstrakte Schnittstelle

Operation

Anfrage Antwort

versch. Bindungen

Operation

SOAP-Anfrage

SOAP-Antwort

(17)

Beispiel

Beispiel (fiktiv) (fiktiv)

ƒ ein Dienst (abstrakte Schnittstelle):

ƒ Name der Operation: doGoogleSearch

ƒ Eingangsparameter: key:string, q:string, …

ƒ Rückgabewert: doGoogleSearchResponse

ƒ Kind-Elemente von doGoogleSearchResponse: Rückgabewerte (komplexer Datentyp)

ƒ ƒ eine Beschreibung eine Beschreibung (WSDL), aber 4 aber 4 Zugriffs- Zugriffs - mö m öglichkeiten glichkeiten (Bindungen):

1.SOAP/HTTP-POST

2.SOAP/HTTP-GET (Rest)

3.SOAP/SMTP (asynchron)

(18)

Web Service von Web Service von

Dienst: Suche Suche

Name der Operation:

doGoogleSearch doGoogleSearch

Rückgabe:

doGoogleSearchResponse

doGoogleSearchResponse

(19)

Web Service von Web Service von

Dienst:

Zugriff auf Web

Zugriff auf Web- -Cache Cache Name der Operation:

doGetCachedPage doGetCachedPage Rückgabe:

doGetCachedPageResponse

doGetCachedPageResponse

(20)

Web Service von Web Service von

Dienst:

Rechtschreibkorrektur Rechtschreibkorrektur

Name der Operation:

doSpellingSuggestion doSpellingSuggestion

Rückgabe:

doSpellingSuggestionResponse

doSpellingSuggestionResponse

(21)

WSDL- WSDL - Inhalt Inhalt

• Was? Æ Typen, Messages, PortTypes (Interfaces)

• Deklaration des verfügbaren Operationen

• Struktur der ausgetauschten Nachrichten (Aufruf und Rückruf, Fehlermeldungen)

• Wie Æ Bindings

• unterstützte Transportprotokolle

• verwendete Nachrichtenformate

• Wo Æ Service

• Wie heißt der Service?

• Unter welchen URLs kann er gefunden werden?

(22)

Grundstruktur Grundstruktur

Ports Ports Bindings

Bindings PortTypes

PortTypes Operations

Operations

SOAP/HTTP POST

SOAP/SMTP GoogleSearchPort

doGoogleSearch

doSpellingSuggestion doGetCachedPage

Service Service

http://…

http://…

mailto:

HTML/

HTTP GET

http://…

(23)

Abstrakte Schnittstellen Abstrakte Schnittstellen

ƒ ƒ portType portType (WSDL 1.1) = = interface

interface (WSDL 2.0)

ƒ portType = Menge von abstrakten Operationen

ƒ jede abstrakte Operation beschreibt Eingangs- und Ausgangsnachricht

ƒ meist nur ein portType, aber in WSDL 1.1 auch mehrere möglich

PortTypes PortTypes Operations

Operations

GoogleSearchPort doGoogleSearch

doSpellingSuggestion

doGetCachedPage

(24)

Bindungen Bindungen

ƒ in WSDL binding binding genannt

ƒ ƒ fü f ür jede abstrakte r jede abstrakte Schnittstelle (

Schnittstelle ( portType portType ) ) mindestens eine Bindung mindestens eine Bindung

ƒ ein portType portType kann also mit unterschiedlichen unterschiedlichen

Bindungen

Bindungen realisiert sein Bindings

Bindings PortTypes

PortTypes

SOAP/HTTP POST

SOAP/SMTP

GoogleSearchPort

HTML/HTTP

GET

(25)

Kommunikationsendpunkte Kommunikationsendpunkte

ƒ ƒ port port (WSDL 1.1) = = endpoint

endpoint (WSDL 2.0)

ƒ ƒ port port = Bindung + Web- Adresse

ƒ ƒ fü f ür jede Bindung ( r jede Bindung ( binding binding ) ) mindestens ein

mindestens ein port port

ƒ ein binding binding kann also über unterschiedliche Web-

Adressen zugänglich sein Ports

Ports Bindings

Bindings

SOAP/HTTP POST

SOAP/SMTP

http://…

http://…

mailto:

HTML/HTTP GET

http://…

(26)

Service Service

ƒ Menge von port ports bilden zusammen einen Service Service

ƒ ƒ ports können in port

verschiedene Services gruppiert werden

ƒ ƒ ports eines Service = port semantisch äquivalente Alternativen

Ports Ports Bindings

Bindings

SOAP/HTTP POST

SOAP/SMTP

Service Service

http://…

http://…

mailto:

HTML/HTTP GET

http://…

(27)

Die WSDL Die WSDL- - Beschreibung Beschreibung von von

abstrakte Schnittstelle

Endpunkt

SOAP/HTTP-POST-Bindung

(28)

WSDL 1.1.

WSDL 1.1. – – Elemente (1) Elemente (1)

Element Beschreibung

Abstrakte Beschreibung

<types>

</types>

- Maschinen- und sprachunabhängige

Typdefinitionen Æ definiert die verwendeten Datentypen

Datentypen

<message>

</message>

- Nachrichten, die übertragen werden sollen Nachrichten - Funktionsparameter (Trennung zwischen Ein- und Ausgabeparameter) oder

Dokumentbeschreibungen

<portType>

</portType>

- Nachrichtendefinitionen im Messages- Abschnitt

- definiert Operationen, die beim Web Service Operationen

ausgeführt werden

(29)

WSDL 1.1.

WSDL 1.1. – – Elemente (2) Elemente (2)

Element Beschreibung

Konkrete Beschreibung

<binding>…</binding> - Kommunikationsprotokoll, der beim Kommunikationsprotokoll Web Service benutzt wird

- Gibt die Bindung(en) der einzelnen Operationen im portType-Abschnitt an

<service>…</service> - gibt die Anschlussadresse(n) der

einzelnen Bindungen an (Sammlung von

einem oder mehreren Ports)

(30)

Abstrakte vs. Konkrete Definition Abstrakte vs. Konkrete Definition

Messages Types

portTypes Operations

Bindings Operations

Services Ports

enthalten (Container)

Abstrakte Definitionen

Konkrete Definitionen

verweisen

modifizieren

(31)

WSDL

WSDL – – Schematische Darstellung Schematische Darstellung

Æport (WSDL1.1)

Æporttype (WSDL1.1)

(32)

XML XML - - Syntax Syntax von WSDL von WSDL

<?xml version="1.0"?>

<definitions definitions name="GoogleSearch"

targetNamespace="urn:GoogleSearch"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap"

xmlns="http://schemas.xmlsoap.org/wsdl/">

</definitions definitions>

ƒ ƒ Wurzel- Wurzel - Element definitions Element aus entsprechendem Namensraum

ƒ ƒ Namensraum Namensraum von definitions = Version

ƒ WSDL-Beschreibung kann Ziel-Namensraum definieren

Ö SOAP-Nachricht kann auf diesen Ziel- Namensraum verweisen

XML-Deklaration

Wurzel-Element

(33)

Namespaces Namespaces

• Prefixe für Namenräume - Konvention

(34)

Prinzipieller Aufbau (1/4): Datenschema

Prinzipieller Aufbau (1/4): Datenschema

(35)

<types>

<types>

<?xml version="1.0"?>

<definitions name="GoogleSearch"

targetNamespace="urn:GoogleSearch"

xmlns="http://schemas.xmlsoap.org/wsdl/">

<types types>…</types types>

</definitions>

portType

types message

types types

ƒ Definition von Datentypen

ƒ werden für Spezifikation von abstrakten Nachrichten

abstrakten Nachrichten verwendet

(36)

Definition von Datentypen Definition von Datentypen

< types> types

<schema xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="urn:GoogleSearch">

</schema>

</ types> types

ƒ Datentypen für Spezifikation von abstrakten Nachrichten

ƒ XML-Schema als Typsystem empfohlen, theoretisch jedes andere Typsystem aber auch erlaubt

ƒ Beachte: XML-Schema kann auch verwendet werden, wenn Nachrichten nicht in XML übertragen werden.

portType

types

message

(37)

Beispiel:

Beispiel: -Suchresultat - Suchresultat

<types types>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:tns="urn:GoogleSearch"

targetNamespace="urn:GoogleSearch">

<xsd:complexType name="GoogleSearchResult">

<xsd:all>

<xsd:element name="estimatedTotalResultsCount" type="xsd:int"/>

<xsd:element name="resultElements" type="tns:ResultElementArray"/>

<xsd:element name="searchQuery" type="xsd:string"/>

<xsd:element name="startIndex" type="xsd:int"/>

<xsd:element name="endIndex" type="xsd:int"/>

</xsd:all>

</xsd:complexType>

</schema>

</ types> types ƒ vollständiges XML-Schema

ƒ Ziel-Namensraum normalerweise identisch

(38)

Prinzipieller Aufbau (2/4): Funktionalit

Prinzipieller Aufbau (2/4): Funktionalitä ät t

(39)

< < message> message >

<definitions name="GoogleSearch"

targetNamespace="urn:GoogleSearch"

xmlns="http://schemas.xmlsoap.org/wsdl/">

<types>…</types>

<message message name="doGoogleSearch">…</message message>

<message message name="doGoogleSearchResponse">…</message message>

</definitions>

portType

types message

message message

ƒ Definition einer abstrakten Nachricht

ƒ werden für Spezifikation der abstrakten Schnittstelle

abstrakten Schnittstelle verwendet

(40)

Definition einer abstrakten Nachricht Definition einer abstrakten Nachricht

< message name="doGoogleSearchResponse"> message

<part part name="return" type="tns:GoogleSearchResult"/>

</ message> message

ƒ name muss innerhalb der WSDL eindeutig sein

ƒ setzten sich aus logischen Bestandteilen (part part s) zusammen: # part s ≥ 1

ƒ part kann z.B. ein Parameter eines RPCs sein

ƒ jedes part hat eindeutigen Namen

ƒ Reihenfolge der logischen Bestandteile unerheblich

(41)

Definition strukturierter Nachrichten Definition strukturierter Nachrichten

<message name="doGoogleSearchResponse">

<part name="return" type="tns:complexType"/>

</message>

zwei unterschiedliche Modellierungen

1. mehrere parts:

2. ein part mit komplexen Datentyp:

<message name="doGoogleSearchResponse">

<part name="param1" element="tns:param1"/>

<part name="param2" element="tns:param2"/>

</message>

(42)

Definition strukturierter Nachrichten Definition strukturierter Nachrichten

<message name="doGoogleSearchResponse">

<part name="return" type="tns:complexType"/>

</message>

zwei unterschiedliche Modellierungen

1. mehrere parts:

2. ein part mit komplexen Datentyp:

tns:complexType könnte z.B. 2 Parameter enthalten

<message name="doGoogleSearchResponse">

<part name="param1" element="tns:param1"/>

<part name="param2" element="tns:param2"/>

</message>

Unterschiede Unterschiede

ƒ parts immer

reihenfolgeunabhängig

ƒ parts können in Bindung unterschiedlich

behandelt werden, z.B.:

ein part in Body der

SOAP-Nachricht, ein

anderes part in den

Header

(43)

< < portType> portType >

<definitions name="GoogleSearch"

targetNamespace="urn:GoogleSearch"

… xmlns="http://schemas.xmlsoap.org/wsdl/">

<types>…</types>

<message name="doGoogleSearch">…</message>

<message name="doGoogleSearchResponse">…</message>

<portType name="GoogleSearchPort">…</portType>

</definitions> …

portType

types

message

(44)

Definition der abstrakten Schnittstelle Definition der abstrakten Schnittstelle

<message name="doGoogleSearch">…</message>

<message name="doGoogleSearchResponse">…</message>

< portType name="GoogleSearchPort"> portType

<operation name="doGoogleSearch">

<input message="tns:doGoogleSearch"/>

<output message="tns:doGoogleSearchResponse"/>

</operation>

<operation name="doSpellingSuggestion">

</operation>

</portType portType>

ƒ abstrakte Schnittstelle = Menge von abstrakten

Operationen ( operation operation s)

(45)

Abstrakte Schnittstelle:

Abstrakte Schnittstelle: operation operation

<message name="doGoogleSearch">…</message>

<message name="doGoogleSearchResponse">…</message>

<portType name="GoogleSearchPort">

<operation name="doGoogleSearch">

<input input message message="tns:doGoogleSearch"/>

<output output message message="tns:doGoogleSearchResponse"/>

</operation>

</portType> …

ƒ definiert einfaches Interaktionsmuster mit Eingangs- und Ausgangs-Nachrichten.

ƒ wichtig: verwendet keine Datentypen, sondern

abstrakte Nachrichten

(46)

Abstrakte Nachricht vs. Datentyp Abstrakte Nachricht vs. Datentyp

<message name="doGoogleSearchResponse">

<part name="return" type="tns:GoogleSearchResult"/>

</message>

<portType>

<operation name="doGoogleSearch">

<input message="tns:doGoogleSearch"/>

<output message="tns:doGoogleSearchResponse"/>

</operation>

</portType>

portType

types message

Datentyp

abstrakte

Nachricht

(47)

Datentyp / Nachricht /Porttyp Datentyp / Nachricht /Porttyp

<types>

<xsd:schema xmlns:xsd="…" xmlns:tns="…" targetNamespace="…">

<xsd:complexType name="GoogleSearchResult">

</xsd:complexType>

</schema>

</types>

<message name="doGoogleSearch">…</message>

<message name="doGoogleSearchResponse">

<part name="return" type="tns:GoogleSearchResult"/>

</message>

<portType>

<operation name="doGoogleSearch">

<input message="tns:doGoogleSearch"/>

<output message="tns:doGoogleSearchResponse"/>

</operation>

portType message

Definition einer

Definition einer abstrakten

Nachricht Definition des

Datentyps

(48)

Struktur in WSDL 1.1 & 2.0 Struktur in WSDL 1.1 & 2.0

Quelle: http://ssagara.blogspot.com/2009/01/converting-wsdl11-to-wsdl20-using-woden.html

(49)

Interaktionsmuster (1) Interaktionsmuster (1)

<operation name="…">

<input message="…"/>

</operation>

Einweg (

Einweg (oneway oneway) )

Anfrage

Anfrage- -Antwort ( Antwort (request request- - response response ) )

<operation name="…">

<input message="…"/>

<output message="…"/>

Client Server

Client Server

(50)

Interaktionsmuster (2) Interaktionsmuster (2)

<operation name="…">

<output message="…"/>

</operation>

Benachrichtigung (

Benachrichtigung (notification notification) )

Benachrichtigung

Benachrichtigung- - Antwort Antwort (solicit ( solicit- -response response ) )

<operation name="…">

<output message="…"/>

<input message="…"/>

</operation>

Client Server

Client Server

(51)

Abstrakte (!) Interaktionsmuster Abstrakte (!) Interaktionsmuster

ƒ Anfrage-Antwort-Muster müssen nicht mit einer Netzwerkkommunikation (z.B. mit HTTP)

realisiert werden.

ƒ auch mit zwei unabhängigen Kommunikationen (z.B. E-Mails) möglich

ƒ Realisierung wird erst in der Bindung (binding)

festgelegt

(52)

Komplexe Interaktionsmuster Komplexe Interaktionsmuster

Î Registrierung zum Börsenticker

Í Bestätigung der Registrierung

Í aktueller Börsenkurs (Benachrichtigung)

Client Server

<operation name="…">

<input message="…"/>

<output message="…"/>

<output message="…"/>

</operation>

In WSDL 1.1

nicht erlaubt!

(53)

Fehlermeldungen Fehlermeldungen

<operation name="…">

<input message="…"/>

<output message="…"/>

<fault message="…"/>

</operation>

<operation name="…">

<output message="…"/>

<input message="…"/>

<fault message="…"/>

</operation>

ƒ abstrakte Beschreibung von Fehlermeldungen

ƒ statt Antwort/Bestätigung kann auch Fehler

Anfrage-Antwort Benachrichtigung-Antwort

Client

Client Server Server Client Client Server Server

(54)

Prinzipieller Aufbau (3/4): Protokollbindung

Prinzipieller Aufbau (3/4): Protokollbindung

(55)

Bindungen Bindungen

<definitions name="GoogleSearch"

targetNamespace="urn:GoogleSearch"

… xmlns="http://schemas.xmlsoap.org/wsdl/">

<types>…</types>

<message name="doGoogleSearch">…</message>

<message name="doGoogleSearchResponse">…</message>

<portType name="GoogleSearchPort">…</portType>

<binding binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">

</binding … binding>

<binding …>…</binding>

</definitions>

(56)

Grundstruktur von

Grundstruktur von binding binding

<binding binding name="GoogleSearchBinding" name type="tns:GoogleSearchPort"> type Erweiterungselement

<operation name="doGoogleSearch">

Erweiterungselement

<input>

Erweiterungselement

</input>

<output>

Erweiterungselement

</output>

</operation>

</binding binding>

ƒ definiert eine Bindung

ƒ ƒ name: eindeutiger Name der name Bindung

ƒ ƒ type: die zu realisierende type

abstrakte Schnittstelle (portType)

ƒ mehrere binding-Elemente für

eine abstrakte Schnittstelle

erlaubt

(57)

Grundstruktur von

Grundstruktur von binding binding

<binding binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">

Erweiterungselement

<operation operation name="doGoogleSearch">

Erweiterungselement

<input>

Erweiterungselement

</input>

<output>

Erweiterungselement

</output>

</operation>

</binding binding>

ƒ Bindung mit sog.

Erweiterungselementen Erweiterungselementen

( ( extensibility extensibility elements) kodiert elements

ƒ Informationen über Bindung auf allen Ebenen:

-Bindung allgemein

-einzelnen Operationen

-Input- und Output-Nachrichten

(58)

Erweiterungselemente Erweiterungselemente

ƒ Platzhalter in der WSDL-Grammatik

ƒ WSDL 1.1 standardisiert drei Bindungen:

1.SOAP

2.HTTP

ƒ GET & POST Methoden

ƒ absolute URI für jedes Port

ƒ relative URI für jeder Operation

ƒ optional: encoding für Anfrage-Nachricht (URL encoding, URL replacement)

3.MIME

ƒ spezifiziert MIME types (text/xml, multipart/related, ...)

(59)

Prinzipieller Aufbau (4/4): Service

Prinzipieller Aufbau (4/4): Service- - Aufbau Aufbau

(60)

< < service service > >

<definitions name="GoogleSearch"

targetNamespace="urn:GoogleSearch"

… xmlns="http://schemas.xmlsoap.org/wsdl/">

<!-- abstrakte Definition -->

<types>…</types>

<message name="doGoogleSearch">…</message>

<message name="doGoogleSearchResponse">…</message>

<portType name="GoogleSearchPort">…</portType>

<!-- konkrete Definition -->

<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">

</binding> …

<service service name="GoogleSearchService">…</service service>

</definitions>

(61)

Service Service

<service name="GoogleSearchService">

<port name="GoogleSearchPort" binding="tns:GoogleSearchBinding">

<soap:address location="http://api.google.com/search/beta2"/>

</port>

<port>…</port>

</service>

ƒ ƒ Service Service = Menge von Ports

ƒ ƒ Port Port = Bindung + Web-Adresse

ƒ Ports eines Service sollen semantisch äquivalente

Alternativen einer abstrakten Schnittstelle sein

(62)

Bindungen

Bindungen

(63)

Bindungen Bindungen

1.SOAP

2.HTTP

ƒ GET & POST Methoden

ƒ absolute URI für jedes Port

ƒ relative URI für jeder Operation

ƒ optional: encoding für Anfrage-Nachricht (URL encoding, URL replacement)

3.MIME

ƒ spezifiziert MIME types (text/xml, multipart/related, ...)

(64)

Bindung:

Bindung: SOAP- SOAP -Bindung Bindung

(65)

SOAP SOAP - - Bindung Bindung

<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">

Erweiterungselement soap:binding

<operation name="doGoogleSearch">

Erweiterungselement soap:operation

<input>

Erweiterungselemente soap:header und soap:body

</input>

<output>

Erweiterungselemente soap:header und soap:body

</output>

<fault>

Erweiterungselement soap:fault

</fault>

</operation>

</binding> ƒ Erweiterungselemente beschreiben

Abbildung portType Î SOAP-Nachricht

(66)

Bindung allgemein:

Bindung allgemein: soap:binding soap:binding

<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">

Erweiterungselement soap:binding

<operation name="doGoogleSearch">

Erweiterungselement soap:operation

<input>

Erweiterungselemente soap:header und soap:body

</input>

<output>

Erweiterungselemente soap:header und soap:body

</output>

<fault>

Erweiterungselement soap:fault

</fault>

</operation>

</binding>

(67)

Bindung allgemein:

Bindung allgemein: soap:binding soap:binding

<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">

<soap:binding xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

style="rpc"

transport="http://schemas.xmlsoap.org/soap/http"/>

<operation name="doGoogleSearch">

</operation>

</binding>

ƒ ƒ soap:binding: gibt an, dass soap:binding portType portType mit SOAP realisiert ist

ƒ ƒ style: entfernter Prozeduraufruf (rpc style rpc) oder Messaging (document document)

ƒ ƒ transport: Übertragungsprotokoll transport

ƒ Beachte: HTTP meint hier HTTP-POST

(68)

SOAP SOAP - - Style: Etwas irref Style : Etwas irref ü ü hrend! hrend!

ƒ legt lediglich Struktur des SOAP-

Nachrichteninhalts (Body) fest, darüber hinaus keine Bedeutung

<body>

<procedure-name>

<part-1>…<part-1>

<part-n>…<part-n>

</procedure-name>

</body>

style="rpc style="rpc " "

<body>

<part-1>…<part-1>

<part-n>…<part-n> …

</body>

style="document

style="document " "

(69)

Abbildung der abstrakten Nachrichten Abbildung der abstrakten Nachrichten

<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">

Erweiterungselement soap:binding

<operation name="doGoogleSearch">

Erweiterungselement soap:operation

<input>

Erweiterungselemente soap:header und soap:body

</input>

<output>

Erweiterungselemente soap:header und soap:body

</output>

<fault>

Erweiterungselement soap:fault

</fault>

</operation>

</binding>

(70)

soap:body soap:body

ƒ ƒ soap:body: Wie wird abstrakte input- bzw. soap:body output-Nachricht auf SOAP-Body abgebildet?

<operation name="doGoogleSearch">

<input>

<soap:body use="literal"/>

</input>

<output>…</output>

</operation>

(71)

use="literal use="literal " "

ƒ ƒ use="literal use="literal ": abstrakte Nachricht wird "

unverändert übernommen

<operation name="doGoogleSearch">

<input>

<soap:body use="literal"/>

</input>

<output>…</output>

</operation>

(72)

use="encoded use="encoded " "

<operation name="doGoogleSearch">

<input>

<soap:body use="encoded"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

</input>

<output>…</output>

</operation>

ƒ ƒ use="encoded" use="encoded ": Abstrakte Nachricht wird mit Hilfe eines bestimmten Verfahrens (encodingStyle)

kodiert.

ƒ hier Kodierungsverfahren von SOAP (Î RPC-

Struktur, einschl. SOAP-Arrays)

(73)

soap:header soap:header

ƒ Teile der abstrakten Nachricht Î SOAP-Header

ƒ für jeden Header Block ein soap:header-Element

ƒ Struktur von soap:header analog zu soap:body

<operation name="doGoogleSearch">

<input>

<soap:header messsage="tns:doGoogleSearch" part="key"

use="literal"/>

<soap:body parts="q start maxResults …" use="encoded" …/>

</input>

<output>…</output>

</operation>

input-Nachricht wird auf SOAP-

Header und -Body verteilt.

(74)

soap:address soap:address

<port name="GoogleSearchPort" binding="tns:GoogleSearchBinding">

<soap:address location="http://api.google.com/search/beta2"/>

</port>

ƒ Jedem Port muss genau eine Web-Adresse (soap:address) zugeordnet sein.

ƒ wichtig: Web-Adresse muss zum Transportprotokoll der Bindung passen.

<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort">

<soap:binding xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

style="rpc"

transport="http://schemas.xmlsoap.org/soap/http"/>

</binding>

(75)

Bindung:

Bindung: HTTP- HTTP -Bindung Bindung

(76)

Beispiel f

Beispiel f ür ü r HTTP HTTP - - Bindung Bindung (fiktiv) (fiktiv)

ƒ HTTP-GET-Anfrage kodiert alle Parameter in URL:

GET /search/beta2/doGoogleSearch?key=45675353&q=Anfrage&…

HTTP/1.1

Host: api.google.com

Content-Type: text/html; charset="utf-8"

Content-Length: nnnn

Antwort soll HTML-Dokument sein

(77)

HTTP- HTTP - Bindung Bindung

<port name="GoogleSearchPort" binding="tns:GoogleSearchBinding">

<http:address

xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"

location="http://api.google.com/search/beta2"/>

</port>

<binding name="GoogleSearchBinding" type="tns:GoogleSearchPort"

xmlns:http="http://schemas.xmlsoap.org/wsdl/http/">

<http:binding verb="GET"/>

<operation name="doGoogleSearch">

<input><http:urlEncoded/></input>

<output><mime:content type="text/html"/></output>

</operation>

</binding>

(78)

Und XML statt HTML als Antwort Und XML statt HTML als Antwort

<binding name="GoogleSearchBinding"

type="tns:GoogleSearchPort">

<http:binding verb="GET"/>

<operation name="doGoogleSearch">

<input><http:urlEncoded/></input>

<output><mime:mimeXml/></output>

</operation>

</binding>

(79)

Vor Vor - und Nachteile von WSDL - und Nachteile von WSDL

(80)

Vorteile von WSDL Vorteile von WSDL

sollen unterschiedliche Probleme l

sollen unterschiedliche Probleme lö ösen: sen:

ƒ ƒ Interoperabilitä Interoperabilit ät t

Æ Interoperabilität zwischen unterschiedlichen Implementierungsplattformen

Æ gemeinsame Technologie für verschiedene Anwendungsgebiete

ƒ ƒ Kosten Kosten Æ geringe Entwicklungskosten durch allgemein verfügbare Basistechnologien

Vorteile Vorteile

+ Plattformunabhängig

+ allgemein akzeptiert und etabliert

+ Syntax der Schnittstelle kann genau festgelegt werden

+ Unterschiedliche Realisierungen einer abstrakter Schnittstelle

möglich (z.B. SOAP über HTTP und SMTP)

(81)

Nachteile von WSDL Nachteile von WSDL

schaffen neue Probleme schaffen neue Probleme

- nicht alle Entwicklungen werden akzeptiert (vgl. UDDI, REST vs.

SOAP)

- nicht alle geforderte Funktionalitäten sind verfügbar (Sicherheit, Transaktionen, Schnittstellenversionierung, etc.)

- eine weitere Schnittstellentechnologie, die gewartet werden muss Nachteile

Nachteile

- verschiedene Protokoll-Bindungen (wie HTTP vs. SMTP) können unterschiedliche Semantik haben

- keine komplexen Interaktionsmuster

- keine qualitativen Aspekten (quality of service)

- keine Sicherheitsaspekte

- unzureichend, um automatisch die Kompatibilität (Interoperabilität)

zweier Web Services feststellen zu können Æ Semantic Web Services

(82)

Wie geht es weiter?

Wie geht es weiter?

WSDL WSDL

; Prinzipieller Aufbau

; SOAP- und HTTP-Bindungen

; Vor- und Nachteile

Ü Ü bung diese Woche bung diese Woche

ƒ SOAP

Ü Ü bung n bung n ächste Woche (letzte ä chste Woche (letzte Übung) Ü bung)

ƒ WSDL

Vorlesung n

Vorlesung n ä ä chste Woche chste Woche

ƒ Web Services in der Praxis & Ausblick

Referenzen

ÄHNLICHE DOKUMENTE

Fügen Sie ein zusätzlich zur vorhandenen Bindung (SOAP/HTTP-POST) eine HTTP- GET-Bindung hinzu, wie sie von ECS auch angeboten wird, die also XML und nicht SOAP zurückliefert.

ƒ Ports eines Service sollen semantisch äquivalente Alternativen einer abstrakten Schnittstelle sein..

&lt;http:address location=&#34;http http:// ://webservices.amazon.com webservices.amazon.com/ /onca

ƒ Ports eines Service sollen semantisch äquivalente Alternativen einer abstrakten Schnittstelle

ƒ Konkrete Schnittstelle (binding) bildet abstrakte Syntax auf bestimmte Protokolle und Nachrichtenformate ab. ƒ Dennoch kann abstrakte Nachricht einer konkreten

Sequenz von SOAP SOAP- -Nachrichten Nachrichten senden senden Erste SOAP Erste SOAP- -Nachricht Nachricht.

Wie abstrakt eine abstrakte Syntax ist, zeigt also erst die konkrete Schnittstelle (binding). Wie abstrakt eine abstrakte Syntax ist, zeigt also erst die konkrete

ein Sender authentifiziert werden kann, wird weder in SOAP noch WSDL festgelegt. Î Ein Web-Dienst kann nicht ohne weiteres durch einen anderen ersetzt werden, selbst wenn beide