• Keine Ergebnisse gefunden

Block Web Services Block Web Services

N/A
N/A
Protected

Academic year: 2022

Aktie "Block Web Services Block Web Services"

Copied!
80
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

WSDL WSDL

(2)

Block Web Services Block Web Services

Vorlesungs Vorlesungs--

termin termin

Vorlesung Vorlesung

4 + 1 + 1 Termine 4 + 1 + 1 Termine

Übung Übung – 2 Termine 2 Termine 06.06.

SOAP WSDL

04.07. Web Services in der Praxis &

Ausblick 11.07. Rückblick

+ (14:00-16:00) Sprechstunde vor der Klausur, Fabeckstr. 15 20.06.

27.06.

(heute)

18.07.

ÜbungsÜbungs-- termin termin Web Services, SOA, RPCs vs.

Messaging

SOAP im Detail 25./26.06

WSDL im Detail 02./03.07

Klausur

(3)

Heutige Vorlesung Heutige Vorlesung

letzte Woche letzte Woche

;; prinzipieller Aufbauprinzipieller Aufbau

;; Kodierung von Kodierung von RPCsRPCs

;; Verarbeitung & Verarbeitung & ÜÜbertragungbertragung

;; VorVor-- und Nachteileund Nachteile

heutige Vorlesung

heutige Vorlesung ÆÆ WSDLWSDL

ƒ Wozu WSDL-Syntax verstehen?

ƒ prinzipieller Aufbau

(4)

Web Services

Web Service WSDL

Beschreibt Service UDDI

Verzeichnis

Sucht nach Service

Verweist auf

die Service-Beschreibung

Verweist a

uf de

n Service Service Nutzer SOAP

(Service Consumer)

(5)

Web Services (2)

(6)

Web Services (3)

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

(7)

WSDL = Web W Services S DescriptionD LanguageL

ƒ 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)

WSDL bei W3C

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

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

ƒ WSDL Version 1.2 Æ W3C Working Draft, Juni 2003

ƒ Part 1: Core Language

ƒ Part 2: Message Patterns

ƒ Part 3: Bindings

ƒ WSDL Version 2.0 Æ W3C Working Draft, März 2004

ƒ Part 1: Core Language

ƒ Part 2: Message Exchange Patterns

ƒƒ WSDL Version 2.0 ÆWSDL Version 2.0 Æ W3C W3C ProposedProposedRecommendation, MRecommendation, Määrz 2007rz 2007

ƒ Part 0: Primer

ƒƒ WSDL Version 2.0 ÆWSDL Version 2.0 Æ W3C W3C ProposedProposedRecommendation, Mai 2007Recommendation, Mai 2007

ƒ Part 1 : Core Language

(9)

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

Nachfrager Anbieter

Schnittstelle Dienst publizieren Dienst abrufen

(10)

Wozu WSDL-Syntax verstehen?

Java, C#

WSDL

ƒ WSDL = zu veröffentlichende

Schnittstellenbeschreibung (Vertrag)

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

Ö Web-Service-Anbieter sollte WSDL (Vertrag) verstehen!

ƒ mögliche Probleme bei generierten WSDLs:

- Fehlermeldungen nicht korrekt beschrieben

- optionale RPC-Parameter ungünstig beschrieben

(11)

Prinzipieller Aufbau

Prinzipieller Aufbau

(12)

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

(13)

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

abstrakte Schnittstelle

Operation

Anfrage Antwort

versch. Bindungen

Operation

SOAP-Anfrage SOAP-Antwort

(14)

Beispiel (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 Beschreibungeine Beschreibung (WSDL), aber 4 Zugriffmaber 4 Zugriffmööglichkeitenglichkeiten (Bindungen):

1. SOAP/HTTP-POST

2. SOAP/HTTP-GET (Rest) 3. SOAP/SMTP (asynchron)

4. HTML/HTTP-GET (Browser)

(15)

Web Service von

Dienst: SucheSuche

Name der Operation:

doGoogleSearch doGoogleSearch

Rückgabe:

doGoogleSearchResponse doGoogleSearchResponse

(16)

Web Service von

Dienst:

Zugriff auf Web

Zugriff auf Web--CacheCache

Name der Operation:

doGetCachedPage doGetCachedPage

Rückgabe:

doGetCachedPageResponse doGetCachedPageResponse

(17)

Web Service von

Dienst:

Rechtschreibkorrektur Rechtschreibkorrektur

Name der Operation:

doSpellingSuggestion doSpellingSuggestion Rückgabe:

(18)

Grundstruktur Grundstruktur

Ports Ports Bindings

Bindings PortTypes

PortTypes Operations

Operations

SOAP/HTTP POST

SOAP/SMTP GoogleSearchPort

doGetCachedPage doGoogleSearch

doSpellingSuggestion

http://…

http://…

mailto:

HTML/

HTTP GET

http://…

(19)

Abstrakte Schnittstellen Abstrakte Schnittstellen

ƒ in WSDL 1.1 portTypeportType genannt

ƒ in WSDL 2.0 interfaceinterface genannt

ƒ portType = Menge von abstrakten Operationen

ƒ jede abstrakte Operation beschreibt Eingangs- und Ausgangsnachricht

ƒ meist nur ein portType,

PortTypes PortTypes Operations

Operations

GoogleSearchPort doGoogleSearch

doSpellingSuggestion doGetCachedPage

(20)

Bindungen Bindungen

ƒ in WSDL bindingbinding genannt

ƒƒ ffüür jede abstrakte r jede abstrakte Schnittstelle (

Schnittstelle (portTypeportType) ) mindestens eine Bindung mindestens eine Bindung

ƒ ein portTypeportType kann also mit unterschiedlichen

Bindungen realisiert sein

Bindings Bindings PortTypes

PortTypes

SOAP/HTTP POST

SOAP/SMTP

GoogleSearchPort

HTML/HTTP GET

(21)

Kommunikationsendpunkte Kommunikationsendpunkte

ƒ in WSDL 1.1 portport genannt

ƒ in WSDL 2.0 endpointendpoint genannt

ƒƒ portport = Bindung + Web- Adresse

ƒƒ ffüür jede Bindung (r jede Bindung (bindingbinding) ) mindestens ein

mindestens ein portport

ƒ ein bindingbinding kann also über unterschiedliche Web-

Adressen zugänglich sein

Ports Ports Bindings

Bindings

SOAP/HTTP POST

SOAP/SMTP

http://…

http://…

mailto:

HTML/HTTP

http://…

(22)

Service Service

ƒ Menge von ports bilden zusammen einen ServiceService

ƒ ports können auch in verschiedene Services gruppiert

gruppiert werden

ƒ ports eines Service =

semantisch äquivalente Alternativen

Ports Ports Bindings

Bindings

SOAP/HTTP POST

SOAP/SMTP

Service Service

http://…

http://…

mailto:

HTML/HTTP GET

http://…

(23)

Die WSDL-Beschreibung von

abstrakte Schnittstelle

Endpunkt SOAP/HTTP-POST-Bindung

(24)

WSDL 1.1. – Elemente (1)

Element Beschreibung

Abstrakte Beschreibung

<types>

</types>

- Maschinen- und sprachunabhängige Typdefinitionen Æ definiert die verwendeten DatentypenDatentypen

<message>

</message>

- NachrichtenNachrichten, die übertragen werden sollen

- Funktionsparameter (Trennung zwischen Ein- und Ausgabeparameter) oder Dokumentbeschreibungen

<portType>

</portType>

- Nachrichtendefinitionen im Messages-Abschnitt - definiert OperationenOperationen, die beim Web Service ausgeführt werden

(25)

WSDL 1.1. – Elemente (2)

Element Definiert

Konkrete Beschreibung

<binding>…</binding> - KommunikationsprotokollKommunikationsprotokoll, der beim 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 mehrere Ports)

(26)

Abstrakte vs. Konkrete Definition

Messages Types

portTypes Operations

Bindings Operations

Services Ports

enthalten (Container)

Abstrakte Definitionen

Konkrete Definitionen

verweisen

modifizieren

(27)

WSDL – Schematische Darstellung

(28)

XML- XML - Syntax Syntax von WSDL von WSDL

<?xml version="1.0"?>

<definitionsdefinitions 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/">

</definitionsdefinitions>

ƒƒ WurzelWurzel--Element Element definitions aus entsprechendem Namensraum

ƒƒ NamensraumNamensraum von definitions = Version

ƒ WSDL-Beschreibung kann Ziel-Namensraum definieren

Ö SOAP-Nachricht kann auf diesen Ziel- Namensraum verweisen

(29)

Prinzipieller Aufbau Prinzipieller Aufbau

(1/4) (1/4)

Datenschema

Datenschema

(30)

<types>

<types>

<?xml version="1.0"?>

<definitions name="GoogleSearch"

targetNamespace="urn:GoogleSearch"

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

<typestypes>…</types> types

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

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

</definitions>

types types

ƒ Definition von Datentypen

ƒ werden für Spezifikation von abstrakten abstrakten

Nachrichten

Nachrichten verwendet

message message

ƒ Definition einer

abstrakten Nachricht

ƒ werden für Spezifikation der abstrakten abstrakten

Schnittstelle

Schnittstelle verwendet

portType

types message

(31)

Definition von Datentypen Definition von Datentypen

<typestypes>

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

targetNamespace="urn:GoogleSearch">

</schema>

</typestypes>

ƒ Datentypen für Spezifikation von abstrakten Nachrichten

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

portType

types message

(32)

Beispiel:

Beispiel: - - Suchresultat Suchresultat

<typestypes>

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

</typestypes> ƒ vollständiges XML-Schema

ƒ Ziel-Namensraum normalerweise identisch mit Ziel-Namensraum von WSDL

(33)

Prinzipieller Aufbau Prinzipieller Aufbau

(2/4) (2/4)

Funktionalit

Funktionalit ä ä t t

(34)

<message>

<definitions name="GoogleSearch"

targetNamespace="urn:GoogleSearch"

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

<types>…</types>

<messagemessagename="doGoogleSearch">…</messagemessage>

<messagemessagename="doGoogleSearchResponse">…</messagemessage>

</definitions>

portType

types message

(35)

Definition einer abstrakten Nachricht Definition einer abstrakten Nachricht

<messagemessage name="doGoogleSearchResponse">

<partpartname="return" type="tns:GoogleSearchResult"/>

</messagemessage>

ƒ Name muss innerhalb der WSDL eindeutig sein

ƒ setzten sich aus logischen Bestandteilen (partparts) zusammen: #parts ≥ 1

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

ƒ jedes part hat eindeutigen Namen

ƒ Reihenfolge der logischen Bestandteile unerheblich

(36)

Definition strukturierter Nachrichten Definition strukturierter Nachrichten

<message name="doGoogleSearchResponse">

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

</message>

zwei unterschiedliche Modellierungen 1. mehrere parts:

<message name="doGoogleSearchResponse">

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

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

</message>

2. ein part mit komplexen Datentyp:

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

(37)

Definition strukturierter Nachrichten Definition strukturierter Nachrichten

<message name="doGoogleSearchResponse">

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

</message>

zwei unterschiedliche Modellierungen 1. mehrere parts:

<message name="doGoogleSearchResponse">

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

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

</message>

2. ein part mit komplexen Datentyp:

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

(38)

<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

(39)

Definition der abstrakten Schnittstelle Definition der abstrakten Schnittstelle

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

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

<portTypeportType name="GoogleSearchPort">

<operation name="doGoogleSearch">

<input message="tns:doGoogleSearch"/>

<output message="tns:doGoogleSearchResponse"/>

</operation>

<operation name="doSpellingSuggestion">

</operation>

</portTypeportType>

(40)

Abstrakte Schnittstelle:

Abstrakte Schnittstelle: operation operation

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

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

<portType name="GoogleSearchPort">

<operation name="doGoogleSearch">

<inputinput messagemessage="tns:doGoogleSearch"/>

<outputoutput messagemessage="tns:doGoogleSearchResponse"/>

</operation>

</portType>

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

ƒ wichtig: verwendet keine Datentypen, sondern abstrakte Nachrichten

(41)

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>

Datentyp

portType message

(42)

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>

portType

types message

Definition einer abstrakten

Definition einer abstrakten Nachricht

Definition des Datentyps

(43)

Interaktionsmuster (2) Interaktionsmuster (2)

<operation name="…">

<input message="…"/>

</operation>

Einweg (

Einweg (onewayoneway))

Anfrage

Anfrage--Antwort (requestAntwort (request--responseresponse))

<operation name="…">

<input message="…"/>

<output message="…"/>

Client Server

Client Server

(44)

Interaktionsmuster (2) Interaktionsmuster (2)

<operation name="…">

<output message="…"/>

</operation>

Benachrichtigung (

Benachrichtigung (notificationnotification))

Benachrichtigung

Benachrichtigung--AntwortAntwort ((solicit-solicit-responseresponse))

<operation name="…">

<output message="…"/>

<input message="…"/>

</operation>

Client Server

Client Server

(45)

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

(46)

Komplexe Interaktionsmuster Komplexe Interaktionsmuster

Î Registrierung zum Börsenticker Í Bestätigung der Registrierung

Í aktueller Börsenkurs (Benachrichtigung)

Client Server

<operation name="…">

<inputmessage="…"/>

<outputmessage="…"/>

<outputmessage="…"/>

</operation>

In WSDL nicht erlaubt!

(47)

Fehlermeldungen Fehlermeldungen

Client

Client ServerServer

<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 gemeldet Anfrage-Antwort Benachrichtigung-Antwort

Client

Client ServerServer

(48)

Prinzipieller Aufbau Prinzipieller Aufbau

(3/4) (3/4)

Protokollbindung

Protokollbindung

(49)

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>

<bindingbindingname="GoogleSearchBinding" type="tns:GoogleSearchPort">

</bindingbinding>

<binding …>…</binding>

</definitions>

(50)

Grundstruktur von

Grundstruktur von binding binding

<bindingbinding name="GoogleSearchBinding" typename type="tns:GoogleSearchPort">

Erweiterungselement

<operation name="doGoogleSearch">

Erweiterungselement

<input>

Erweiterungselement

</input>

<output>

Erweiterungselement

</output>

</operation>

</bindingbinding>

ƒ 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

(51)

Grundstruktur von

Grundstruktur von binding binding

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

Erweiterungselement

<operationoperation name="doGoogleSearch">

Erweiterungselement

<input>

Erweiterungselement

</input>

<output>

Erweiterungselement

</output>

</operation>

ƒ Bindung mit sog.

Erweiterungselementen Erweiterungselementen

((extensibilityextensibility elements) kodiertelements

ƒ Informationen über Bindung auf allen Ebenen:

- Bindung allgemein

- einzelnen Operationen

(52)

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

(53)

Prinzipieller Aufbau Prinzipieller Aufbau

(4/4) (4/4)

Service

Service - - Adresse Adresse

(54)

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

<serviceservicename="GoogleSearchService">…</serviceservice>

</definitions>

(55)

Service Service

<service name="GoogleSearchService">

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

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

</port>

<port>…</port>

</service>

ƒƒ ServiceService = Menge von Ports

ƒƒ PortPort = Bindung + Web-Adresse

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

(56)

Bindung

Bindung

(57)

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

(58)

Bindung Bindung

SOAP SOAP - - Bindung Bindung

(59)

SOAP- SOAP - Bindung Bindung

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

Erweiterungselement soap:binding

<operation name="doGoogleSearch">

Erweiterungselement soap:operation

<input>

Erweiterungselemente soap:body und soap:header

</input>

<output>

Erweiterungselemente soap:body und soap:header

</output>

<fault>

Erweiterungselement soap:fault

</fault> ƒ Erweiterungselemente beschreiben

(60)

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:body und soap:header

</input>

<output>

Erweiterungselement soap:body und soap:header

</output>

<fault>

Erweiterungselement soap:fault

</fault>

</operation>

</binding>

(61)

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 portTypesoap:binding mit SOAP realisiert ist

ƒƒ style: entfernter Prozeduraufruf (style rpc) oder Messagingrpc (documentdocument)

ƒƒ transport: Übertragungsprotokolltransport

(62)

SOAP- SOAP - Stile Stile : Etwas irref : 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""

(63)

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>

Erweiterungselement soap:header und soap:body

</output>

<fault>

Erweiterungselement soap:fault

</fault>

(64)

soap:body soap:body

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

<operation name="doGoogleSearch">

<input>

<soap:body use="literal"/>

</input>

<output>…</output>

</operation>

(65)

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>

(66)

use="encoded use="encoded" "

<operation name="doGoogleSearch">

<input>

<soap:body use="encoded"

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

</input>

<output>…</output>

</operation>

ƒƒ use="encodeduse="encoded": Abstrakte Nachricht wird mit Hilfe "

eines bestimmten Verfahrens (encodingStyle) kodiert.

ƒ hier Kodierungsverfahren von SOAP (Î RPC-Struktur, einschl. SOAP-Arrays)

(67)

soap:header soap:header

ƒ Teile der abstrakten Nachricht Î SOAP-Header

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

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

(68)

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>

(69)

Bindung Bindung

HTTP HTTP - - Bindung Bindung

(70)

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

(71)

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"/>

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

(72)

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>

(73)

Modularisieren von Modularisieren von

WSDL WSDL - - Beschreibungen Beschreibungen

(74)

Modularisierung Modularisierung

Prinzip Prinzip

ƒ Gruppierung einzelner Komponente nach verschiedenen Gesichtspunkten

ƒ Einbinden von Dokumentteilen

ƒƒ includeinclude

ƒƒ importimport Vorteile

Vorteile

ƒ ermöglicht Wiederverwendung von Teilen einer WSDL-Datei

ƒ erleichtert die Wartbarkeit

ƒ erleichtert die Lesbarkeit

ƒ erlaubt eine klare Strukturierung

(75)

<include < include > >

ƒ aufteilen verschiedener Komponenten einer Dienstdefinition in unabhängige WSDL-Dokumente

ƒ Einbindung von Komponenten aus dem gleichen (wie die der inkludierten Beschreibung) Zielnamensraum

ƒ eingebundene Komponente

ƒ Teil des Komponentenmodells der inkludierten Beschreibung

ƒ werden über ihren qualifizierten Namen (von anderen Komponenten) referenziert

<include location="URI">

(76)

<import < import > >

ƒ Einbindung von Komponenten aus anderen Zielnamensräumen

ƒ importierten Komponente werden über ihren qualifizierten Namen (von anderen Komponenten) referenziert

<import

namespace="URI"

location="URI " >

</import>

(77)

Vor Vor - - und Nachteile und Nachteile von WSDL

von WSDL

(78)

Vorteile von WSDL Vorteile von WSDL

sollen unterschiedliche Probleme l

sollen unterschiedliche Probleme löösensen

+ Interoperabilität zwischen unterschiedlichen Implementierungs- plattformen

+ gemeinsame Technologie für verschiedene Anwendungsgebiete + 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)

(79)

Nachteile von WSDL Nachteile von WSDL

schaffen neue Probleme schaffen neue Probleme

- nicht alle Entwicklungen werden akzeptiert (vgl. UDDI, REST vs. SOAP) - geforderte Funktionalitäten sind noch nicht 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) -

(80)

Wie geht es weiter?

Wie geht es weiter?

WSDLWSDL

; Prinzipieller Aufbau

; SOAP- und HTTP-Bindungen

; Vor- und Nachteile

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

ƒ WSDL

Vorlesung n

Vorlesung näächste Wochechste Woche

ƒ Web Services in der Praxis & Ausblick

Referenzen

ÄHNLICHE DOKUMENTE

service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web- related

•  505 HTTP Version Not Supported: The server does not support the HTTP version that was used to make the request. Complete

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

§ Für den Einsatz von SOAP muss man Parameter, Datentypen, Methodennamen und die Adresse eines Web Services kennen. § Beschreibung eines WS durch die Web Service

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

EMPTY: leerer Inhalt, Element kann aber Attribute haben EMPTY!. &lt;!ELEMENT br EMPTY&gt; Î &lt;

- theoretisch aber auch synchron: Sender solange blockiert, bis Empfang der Nachricht bestätigt flüchtige Kommunikation. - auch in der Praxis sowohl synchron als auch

ƒ Seit SOAP 1.2 steht SOAP nicht mehr für Simple Object Access Protocol.