Definition Motivation 12.07.2010
Definition Motivation Definition: A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards [http://www.w3.org/tr/ws-arch/]
Definition Motivation Beispiel-Szenario: Preisvergleich von Flugtickets.
Definition Motivation 1 Einführung Definition Motivation 2 Ablauf & Elemente UDDI & WSDL 3 Elemente Envelope, Header & Body Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns 4 Vor- und Nachteile
Ablauf & Elemente 1 Der Client muss vom Web Service erfahren 2 Die Parameter und der Aufruf der Methoden müssen bekannt sein. (Metadaten) 3 Menschliche Eingabe von Parametern und Semantiken 4 Datenaustausch
Ablauf & Elemente Ein besteht im aus 3 Einzelteilen aus der: UDDI (Universal Description Discovery and Integration) WSDL (Web Service Definition Langauge) (ehem.: Simply Object Access Protocol) 1 1 Quelle:http://upload.wikimedia.org/wikipedia/de/9/95/.png
Ablauf & Elemente UDDI: Universal Description Discovery and Integration dient der dynamischen suche nach s. WSDL: Web Service Definition Language ist eine Metasprache der technischen Beschreibung eines s. In WSDL werden alle notwendigen technischen Details beschrieben.
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns Das Simply Object Accsess Protokoll () ist ein XML basiertes protokoll mit den Zielen: Einfachheit Erweiterbarkeit
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns Eine Nachricht besteht aus 3 Elementen: Envelope Header Body
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns Der -Envelope definiert das XML Dokument zur Nachricht. <? xml v e r s i o n= 1.0?> <s o a p : E n v e l o p e x m l n s : s o a p= h t t p : //www. w3. org /2001/12/ soap e n v e l o p e soap: encodingstyle= h t t p : //www. w3. org /2001/12/ soap encoding >... </ s o a p : E n v e l o p e>
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns Im -Header werden Metainformationen der Nachricht untergebracht oder Informationen für Zwischenknoten bzw. Features. <s o a p : H e a d e r> <m:trans xmlns:m= h t t p : //www. BeispielXML. com/ Login / s o a p : m u s t U n d e r s t a n d= 1 > </ m:trans> </ s o a p :Header>
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns Der -Body enthält die eigentliche Nachricht für den Service Anbieter: <soap:body> <m : G e t P r i c e xmlns:m= h t t p : //www. BeispielXML. com/ g e t P r i c e s > <m:item>a p p l e s</ m:item> </ m :GetPrice> </ soap:body>
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns encodingstyle Attribute (Envelope) soap:encodingstyle: URI role Attribute (Header) soap:role: URI mustunderstand Attribute (Header) soap:mustunderstand= 0 oder 1 relay Attribute (Header) soap:realy= 0 oder 1
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns Nachrichten müssen nicht immer direkt vom Service Konsumenten zum Service Anbieter geleitet werden. Es können auch zwischen Zwischenknoten traversiert werden. Diese Zwischenknoten müssen über eine URI eindeutig identifizierbar sein und werden über einen Header-Block angesprochen.
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns Falls beim Senden der -Nachricht ein Fehler auftritt wird ein Fehler Code generiert und zum Sender der Nachricht geschickt. Obligatorische Inhalte: code: Spezifiziert Fehlerart reason: Beschreibung des Fehlers Optionale Inhalte: node: Welcher Knoten den Fehler verursachte role: Welche Rolle der Knoten hatte detail: Detail Informationen zum Fehler
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns Einbettung: Nachrichten werden in oder auf einem weiteren Protokoll Transportiert wie z.b. HTTP. Es gibt 2 Arten von Erweiterungen: Einbettung Features
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns Einbettung: Das Einbetten von in ein Protokoll erweitert es um die Funktionen die das Protokoll bereitstellt. Features: Features werden in einem Header-Block ber ein Modul eingebunden. Dieses Modul ist ein Zwischenknoten der das Feature zur Verfügung stellt.
Elemente Attribute Knoten & Fehler Erweiterbarkeit & Einbettung Message Exchange Patterns Konsument und Anbieter können auf mehreren Wegen miteinander kommunizieren z.b. one-way, peer-to-peer, request-response. Eine MEP muss 4 Eigenschaften erfüllen. Wird mit einer URI identifiziert Beschreibt den Lebenszyklus eines Nachrichtenaustauschs nach plan beschreibt wie Nachrichten untereinander stehen während Nachrichten ausgetauscht werden. beschreibt den normalen und die fehlerhafte Beendigung des Nachrichtenaustauschs.
Vor- und Nachteile Vorteile: Unabhängig von Rahmenbedingungen (Plattform etc.) einfach Erweiterbar Nachteile: Der Sicherheitsaspekt ist ein grosser Nachteil Eine Nachricht ist Resourcen intensiv. (Rechenzeit wie Bandbreite)
Vor- und Nachteile Vielen Dank für ihre Aufmerksamkeit! Fragen?
Vor- und Nachteile <env: Envelope xmlns:env= h t t p : //www. w3. org /2003/05/ soap envelope xmlns:m= h t t p : //www. example. org / t i m e o u t s x m l n s : x m l= h t t p : //www. w3. org /XML/1998/ namespace > <env:body> <e n v : F a u l t> <env:code> <e n v : V a l u e>e n v : S e n d e r</ e n v : V a l u e> <env:subcode> <e n v : V a l u e>m:messagetimeout</ e n v : V a l u e> </ env:subcode> </ env:code> <e n v : R e a s o n> <e n v :Text x m l : l a n g= en >Sender Timeout</ e n v :Text> </ e n v :Reason> <e n v : D e t a i l> <m:maxtime>p5m</m:maxtime> </ e n v : D e t a i l> </ e n v : F a u l t> </ env:body> </ e n v : E n v e l o p e>
Vor- und Nachteile Fault-Codes VersionMismatch (Fehlerhafter Env.) MustUnderstand (Ein Header-Block, der pflicht ist konnte nich verarbeitet werden) Client (Sender Fehler) Server (Server Fehler)
Vor- und Nachteile Rollen: next Rolle fr Zwischenknoten und auch für Endknoten none Rolle trifft auf keinen Knoten zu ultimatereceiver Rolle trift nur auf den Ultimate Receiver zu
Vor- und Nachteile // Example service for Axis Release Candidate 1 import j a v a. u t i l. ; import j a v a. l a n g. ; p u b l i c c l a s s Add{ p u b l i c i n t add ( i n t number1, i n t number2 ) { r e t u r n ( number1+number2 ) ; } //add () } // c l a s s Add
Vor- und Nachteile import j a v a. n e t. ; import org. apache. a x i s. c l i e n t. C a l l ; import org. apache. a x i s. c l i e n t. S e r v i c e ; // Types for ParameterModes import org. apache. a x i s. e n c o d i n g. XMLType ; import org. apache. a x i s. u t i l s. O p tions ; import j a v a x. xml. r p c. ParameterMode ; import j a v a x. xml. namespace. QName ; p u b l i c c l a s s A d d C l i e n t { public s t a t i c void main ( String [ ] args ) throws Exception{ i f ( a r g s. l e n g t h <=2) { System. out. p r i n t l n ( \n \nusage : A d d C l i e n t i n t i n t u r l \n } URL u r l = new URL( a r g s [ 2 ] ) ; // construct a c a l l C a l l mycall = new C a l l ( u r l ) ; // set the URL of the c a l l endpoint mycall. settargetendpointaddress ( u r l ) ; // the child of the Body element schould look l i k e t h i s : // <ns1 : add xmlns : ns1= urn :NumberAdder ></ns1 : add>
Vor- und Nachteile mycall. setoperationname ( new QName( urn : NumberAdder, add ) ) ; // prepare the parameters for the c a l l mycall. addparameter ( number1, XMLType. XSD INT, ParameterMode. IN ) ; mycall. addparameter ( number2, XMLType. XSD INT, ParameterMode. IN ) ; // set the return type of the c a l l mycall. setreturntype (XMLType. XSD INT ) ; // invoke the c a l l O b j ect myparams [ ] = new O b ject [ 2 ] ; myparams [ 0 ] = ( O b j e c t ) new I n t e g e r ( a r g s [ 0 ] ) ; myparams [ 1 ] = ( O b j e c t ) new I n t e g e r ( a r g s [ 1 ] ) ; I n t e g e r r e s p = ( I n t e g e r ) mycall. i n v o k e ( myparams ) ; System. out. p r i n t l n ( r e s p ) ; } // End main } // End Class CallAdd
Vor- und Nachteile POST / a x i s / s e r v l e t / A x i s S e r v l e t HTTP/ 1. 0 Content Type: text / xml ; charset=utf 8 A c c e p t : a p p l i c a t i o n / soap+xml, a p p l i c a t i o n /dime, m u l t i p a r t / r e l a t e d, t e x t / User Agent: Axis / beta3 H o s t : 1 0. 0. 0. 1 6 0 Cache C o n t r o l : no cache Pragma: no cache Action: Content L e n g t h : 472 <? xml v e r s i o n= 1.0 encoding= UTF 8?> <s o a p e n v : E n v e l o p e x m l n s : s o a p e n v= h t t p : // schemas. xmlsoap. org / soap / e n v e l o p e / x m l n s : x s d= h t t p : //www. w3. org /2001/XMLSchema x m l n s : x s i= h t t p : //www. w3. org /2001/XMLSchema i n s t a n c e > <soapenv:body> <n s 1 : a d d s o a p e n v : e n c o d i n g S t y l e= h t t p : // schemas. xmlsoap. org / soap / e n c o d i n g / x m l n s : n s 1= urn:numberadder > <number1 x s i : t y p e= x s d : i n t >1</ number1> <number2 x s i : t y p e= x s d : i n t >2</ number2> </ n s 1 :add> </ soapenv:body> </ s o a p e n v : E n v e l o p e>
Vor- und Nachteile HTTP/ 1. 1 200 OK Date: Sun, 22 Sep 2002 11 : 16: 42 GMT S e r v e r : MyHTTPServer Content Type: text / xml ; charset=utf 8 C o n n e c t i o n : c l o s e <? xml v e r s i o n= 1.0 encoding= UTF 8?> <s o a p e n v : E n v e l o p e x m l n s : s o a p e n v= h t t p : // schemas. xmlsoap. org / soap / e n v e l o p e / x m l n s : x s d= h t t p : //www. w3. org /2001/XMLSchema x m l n s : x s i= h t t p : //www. w3. org /2001/XMLSchema i n s t a n c e > <soapenv:body> <ns1:addresponse soapenv: encodingstyle= h t t p : // schemas. xmlsoap. org / soap / encoding / x m l n s : n s 1= urn:numberadder > <addreturn x s i : t y p e= x s d : i n t >3</ addreturn> </ n s 1 :addresponse> </ soapenv:body> </ s o a p e n v : E n v e l o p e>