Vous êtes sur la page 1sur 34

S.O.A.

P
Janvier 2001

S.O.A.P Simple Object Access Protocol


Michel RIVEILL Universit de Nice ESSI Email : riveill@unice.fr

(avec laide amicale de Didier DONSEZ qui a fourni quelques transparents)

Motivations
n

L'Internet est un environnement souhait pour lexcution d'applications rparties


n n

Commerce lectronique le Web : un middleware grande chelle


n

Mais il ne prend pas en compte : les systmes embarqus, le temps rel, la tolrance aux pannes, etc.

Mais est-ce que les protocoles existants sont satisfaisants ?


n

Faisons le tour de lexistant

Passage l'chelle
nb. d'utilisateurs et de sites htrognit des rseaux et des stations htrognit des systmes Htrognit des langages

1
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

WWW : un support pour laccs linformation


n n n n

un protocole client-serveur (mis en uvre sur TCP/IP) : HTTP un systme de dsignation universelle : URL une reprsentation de documents hypertextes : HTML des navigateurs (browser) volus Serveur requte HTTP
Serveur HTTP

Station
Client Clien browser browser t HTTP Http
page HTML URL (id. documents)

pages HTML
environnement de dveloppement de documents HTML

documents HTML

WWW : un support dapplications client serveur


n

Utilisation du protocole HTTP pour le dialogue client-serveur


Station
Browser client universel

Serveur

requtes HTTP
Client HTTP Donnes
(html / autres formats)

Application
partie cliente (GET, POST)

Serveur HTTP

CGI Servlets / ASP

Application
partie-serveur

+ avantages :
support universel de communication (http) simplicit de la mise en uvre mise en uvre aise depuis nimporte quelle station cliente

- inconvnients :
primitives lmentaires (GET, POST, . . .) serveur HTTP non adapt difficult de grer des sessions
4

2
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Le Web et le client serveur


n n

Proposition Web actuelle insuffisante Autres plates-formes client / serveur


n

Java RMI n mono-langage : Java, multi-plateforme (JVM), SUN


n

Pas raliste pour une application industrielle (performance, scurit, )

CORBA / IIOP n Multilangage, multi-plateforme, Multi-vendeurs, OMG


n

Installation coteuse si on doit acheter un ORB


n

Mais les open-sources sont gratuits et souvent plus complet n www.objectweb.org

DCOM n multi-langages, plateforme Win32, Propritaire Microsoft


n

protocole orient connexion


n

change de nombreux paquets pour crer/maintenir une session Pas disponible sur MacOS, NT3.51, Win95, WinCE2 Coteux sur UNIX, MVS, VMS ou NT 5

Faible diffusion
n n

Le bilan
n

Approche insatisfaisante :
n

Protocoles sophistiqus
n

Cot dinstallation (faite par un administrateur, consomme des ressources : machines, personnels, ) Difficile porter sur dautres plates-formes

Rgles de fonctionnement strictes en environnement ouvert (le Net)


n n

Environnement scuris (intrieur dun intranet) Incapacit fonctionner en prsence de pare-feu (utilisation impossible sur Internet)
n

Les nouvelles version de CoRBA peuvent ouvrir un port sur un parefeu comme le port 80 dHTTP
6

3
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

et ses consquences
n

Le Web a besoin dun nouveau protocole


n n

Multi-langages, multi-plateformes Respectant les formats dchanges du Web


n

Rponses et requtes en XML RPC, HTTP ou autre MOM ATTENTION : on perd le contrle daccs faible granularit

Facile implmenter sur diffrents protocoles de transport


n

Permettant de franchir les firewalls


n

Avec une spcification non propritaire garantie par un organisme indpendant


n

W3C

La rponse : SOAP (Simple Object Access Protocol)


7

La philosophie S.O.A.P
n

SOAP codifie simplement une pratique existante


n

Utilisation conjointe de XML et HTTP

SOAP est un protocole minimal pour appeler des mthodes sur des serveurs, services, composants, objets
n n

Ne pas imposer une API ou un runtime Ne pas imposer lutilisation dun ORB (CORBA, DCOM, ) ou dun serveur web particulier (Apache, IIS, ) Ne pas imposer un modle de programmation
n

Plusieurs modles peuvent tre utiliss conjointement

Et ne pas rinventer une nouvelle technologie

SOAP a t construit pour pouvoir tre aisment port sur toutes les plates-formes et les technologies
n n

Vous pouvez crire votre 1er appel SOAP en moins dune heure !! Il vous a fallu combien de temps en CORBA, RMI, DCOM ?
8

4
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

En rsum
n

SOAP = HTTP + XML


Station Serveur
ASP Client HTTP

Browser client universel

requtes SOAP
(XML) Rponses SOAP
(XML)

Application
partie -cliente

Serveur HTTP

ISAPI CGI Servlets

Application
partie-serveur

Pourquoi utiliser HTTP ?


n n

HTTP (HyperText Transfer Protocol) est devenu de facto le protocole de communication de lInternet HTTP est disponible sur toutes les plates-formes trs rapidement HTTP est un protocole simple, qui ne require que peu de support pour fonctionner correctement HTTP est un protocole sans connection
n

Peu de paquets sont ncessaires pour changer des informations

n n

HTTP offre un niveau de scurit simple et effectif HTTP est le seul protocole utilisable travers des pare-feu

10

5
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Fonctionnement dHTTP
n n

HTTP utilise un protocole requte/rponse bas sur du texte La premire ligne de la requte contient 3 lments
n n n

Verbe : POST/GET/HEAD URI : /default.htm Protocole : HTTP/1.0 - HTTP/1.1 tat : 200, 402 Phrase : OK, Unauthorized

La premire ligne de la rponse contient 2 lments


n n

Les lignes suivantes contiennent un nombre arbitraire dentte Le contenu suit une ligne dentte vide
n

Utilis essentiellement pour les rponses et pour les requtes POST


11

Fonctionnement dHTTP
HTTP Request HTTP Request
GET /bar/foo.txt HTTP/1.1

HTTP Response HTTP Response


200 OK Content-Type: text/plain Content-Length: 12 Hello, World

ou

or

POST /bar/foo.cgi HTTP/1.1 Content-Type: text/plain Content-Length: 13 Goodbye, World

12

6
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Pourquoi utiliser XML ?


n

Utilise du texte (peut tre lue et crit directement)


n

ATTENTION : le texte est globalement peut lisible et vite complexe pour un humain Pas dlments qui se recouvrent (uniquement des imbrications) Les attributs sont clairement identifis (dir=in) Les caractres <, >, & doivent tre prcd dun caractre dchappement (ou il faut utiliser CDATA)

Construire correctement du texte XML est simple


n n n

XML est aujourdhui adopt par tous les acteurs de linternet : plates-formes, diteurs, XML permet une extensibilit aise par lutilisation despaces de nommages (namespaces et URIs) XML permet dajouter du typage et de la structure des informations
n n

n n

Linformation peut tre sauvegarde nimporte o sur le Net Les donnes fournies par de multiples sources peuvent tre agrgees en une seule unit Chaque partie sa propre structure XML Chaque partie peut dfinir des types spcifiques Dautres sont utiliss : SAX, strcat
13

W3C nimpose pas un API mais en recommande un (DOM)


n

Exemple de requte utilisant HTTP


n

Demande de cotation un serveur


POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" <SOAP-ENV:Envelope xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
14

7
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Exemple de rponse utilisant HTTP


HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <m:GetLastTradePriceResponse xmlns:m="Some-URI"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
15

L oignon SOAP
Couplage de SOAP sur HTTP Appel de mthode srialis Lenveloppe SOAP Rgles dencodage (section 5) XML Schema Definition Language (opt) XML 1.0 + Namespaces

16

8
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Elments de SOAP
n

Lenveloppe (enveloppe)
n

Dfinit la structure du message Dfinit le mcanisme de srialisation permettant de construire le message pour chacun des types de donnes pouvant tre changs

Les rgles dencodage (encoding rules)


n

Fonctionnement en modle client / serveur (RPC representation)


n

Dfinit comment sont reprsentes les appels de procdure et les rponses

Proposer une mise en uvre sur HTTP (HTTP Extension Framework)


n n

RFC 2774 Dfinir lchange de message SOAP sur HTTP


17

SOAP Message Structure


SOAP Message HTTP Headers SOAP Envelope SOAP Header Headers SOAP Body Method Call & Data Le message SOAP Complet Entte standard HTTP et entte SOAP HTTP Enveloppe Entte Entte individuelle Corps qui contient les appels de mthodes SOAP Appel de mthode et description en XML de donnes

18

9
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Modle de message
n

SOAP permet une communication par message


n

dun expditeur vers un rcepteur Enveloppe / Envelope


n n

Structure dun message


n

lment racine Namespace : SOAP-ENV http://schemas.xmlsoap.org/soap/envelope/ lment optionnel Contient des entres non applicatives
n

Entte / Header
n n

Transactions, sessions,

Corps / Body
n

Contient les entres du message


n

Nom dune procdure, valeurs des paramtres, valeur de retour


19

Peut contenir les lments fault (erreurs)

Entte dun Message


n

Contient des entres non applicatives


n

Transactions, sessions, Si absent ou = 0


n

Lattribut mustUnderstand
n

llment est optionnel pour lapplication rceptrice llment doit tre compris de lapplication rceptrice Si ce nest pas le cas, le traitement du message par le rcepteur doit chouer

Si =1
n n

Exemple
<SOAP-ENV:Header> <t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1"> 5 </t:Transaction> </SOAP-ENV:Header>

20

10
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Corps dun Message


n

Contient des entres applicatives Encodage des entres Namespace pour lencodage
n

SOAP-ENC http://schemas.xmlsoap.org/soap/encoding/

xsd : XML Schema

21

Principes des rgles dencodage


n

Dcrit dans la section 5 pour les types de base


n n

Rgles par dfaut Lencodage est de type : element-normal-form


n

Un lment par champ, le nom de llment est celui du champ

Les rgles dencodage dfinissent un systme de type


n n n

Il est compatible avec le langage SDL de XML (XML Schema Definition language) Les types SOAP peuvent tre dcrit en utilisant XSD SOAP utilise les conventions XSD pour associer les instances aux types
<foo xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:type="timeInstant"> 1999-11-12T09:43 </foo>

Les tableaux et les rfrences sont typs de manire spcifique en utilisant XSD
22

11
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Rgles dencodage
Types primitifs
<element name="price" type="float "/> <element name="greeting " type="xsd :string"/> <price>15.57</ price > <greeting id="id1">Hello</ greeting>

Structures
<element name="Book "><complexType > <element name="author " type= "xsd:string"/> <element name="title" type="xsd :string "/> </complexType></ element > <e:Book> <author >J.R.R Tolkien</ author> <title>A hobbit story</ title > </e:Book>

Enumration
<element name="color"> <simpleType base="xsd :string"> <enumeration value="Green"/> <enumeration value="Blue"/> </simpleType > </element > <color>Blue</color> 23

Rgles dencodage
Rfrences
<element name="salutation" type="xsd:string "/> <salutation href="#id1"/> <e:Book> <title >My Life and Work </title > <firstauthor href="#Person-1"/> <secondauthor href="#Person-2"/> </e:Book> <e:Person id="Person-1"> <name>Henry Ford</ name> <address xsi:type="m:Electronic-address"> <email> mailto:henryford@hotmail.com</email> <web >http:// www.henryford.com</web> </address> </e:Person> <e:Person id="Person-2"> <name>Samuel Crowther</name> <address xsi:type="n:Street-address "> <street >Martin Luther King Rd</street> <city>Raleigh</city> <state> North Carolina </state> </address> </e:Person>

24

12
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Rgles dencodage
Tableaux
<SOAP-ENC:Array id="id3" SOAP-ENC:arrayType=xsd:string[2,2]> <item>r1c1</item> <item>r1c2</item> <item>r2c1</item> <item>r2c2</item> </SOAP-ENC:Array>

Tableaux doctet
<picture xsi:type="SOAP-ENC:base64"> aG93IG5vDyBicm73biBjb3cNCg== </picture>

Tableaux creux
<SOAP-ENC:Array id="array-1" SOAP-ENC:arrayType="xsd:string[10,10]"> <item SOAP-ENC:position="[2,2]">Third row, third col</item> <item SOAP-ENC:position="[7,2]">Eighth row, third col</item> </SOAP-ENC:Array>
25

Exemple dencodage (1/3)


<element name="Person" base="tns:Person"/> <complexType name="Person"> <sequence minOccurs="0" maxOccurs="1"> <element name="name" type="xsd:string"/> <element name="address" type="tns:Address"/> </sequence> <attribute name="href" type="uriReference"/> <attribute name="id" type="ID"/> <anyAttribute namespace="##other"/> </complexType>

26

13
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Exemple dencodage (2/3)


<element name="Address" base="tns:Address"/> <complexType name="Address"> <sequence minOccurs="0" maxOccurs="1"> <element name="street" type="xsd:string"/> <element name="city" type="xsd:string"/> <element name="state" type="xsd:string"/> </sequence> <attribute name="href" type="uriReference"/> <attribute name="id" type="ID"/> <anyAttribute namespace="##other"/> </complexType>

27

Exemple dencodage (3/3)


<element name="Book" type="tns:Book"/> <complexType name="Book"> <sequence minOccurs="0" maxOccurs="1"> <element name="title" type="xsd:string"/> <element name="firstauthor" type="tns:Person"/> <element name="secondauthor" type="tns:Person"/> </sequence> <attribute name="href" type="uriReference"/> <attribute name="id" type="ID"/> <anyAttribute namespace="##other"/> </complexType>
28

14
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Valeurs empaquetes et valeurs indpendantes


n

SOAP permet dencoder les donnes de diffrentes manires


n n

Par exemple dans foo.doit(obj1, obj1) On peut vouloir prciser que les deux paramtres effectifs sont identiques
n n

Passage par rfrence dans les langages de programmation Utilisation de valeurs indpendantes

Dfinition dune valeur indpendante


n

n n

Elle apparat dans lentte (soap:Header) ou dans le corps (soap:Body) Elle a un attribut unique (soap:id) Elle est gnralement encode comme un lment typ Utilise lattribut prcdemment dfini (soap:href)
29

Utilisation dune valeur indpendante


n

Valeurs empaquetes et valeurs indpendantes


<soap:Envelope xmlns:soap=uri for soap> <soap:Body> <calculateArea xmlns=interfaceURI> <origin><x>23</x><y>34</y></origin> <corner><x>23</x><y>34</y></corner> </calculateArea> </soap:Body> </soap:Envelope> <soap:Envelope xmlns:soap=uri for soap> <soap:Body> <calculateArea xmlns=interfaceURI> <origin soap:href=#id1 /> <corner soap:href=#id1 /> </calculateArea> <Point soap:id=id1 xmlns=someURI> <x>23</x><y>34</y> </Point> </soap:Body> </soap:Envelope>

30

15
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Le retour derreurs (faults)


n

4 lments
n

Faultcode (obligatoire)
n

Code derreur utilis par le logiciel (switch(faultcode) { case Explication lisible dun humain Erreur en cours de cheminement du message (firewall, proxy, MOM) Dtail de lerreur non li au Body du message Dautres lments qualifis par un namespace peuvent tre ajouts

Faultstring (obligatoire)
n

faultactor (optionel)
n

Detail
n

Autres
n

Faultcode
n

4 groupes de code derreur


n n

Client, Server, MustUnderstand, VersionMismatch Ex: Client.Authentication

31

Le retour derreurs (faults)


n

MustUnderstand
HTTP/1.1 500 Internal Server Error Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:MustUnderstand</faultcode> <faultstring>SOAP Must Understand Error</faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

32

16
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Le retour derreurs (faults)


n

Erreur sur le corps


HTTP/1.1 500 Internal Server Error Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Server Error</faultstring> <detail> <e:myfaultdetails xmlns:e="Some-URI"> <message> My application didn't work </message> <errorcode>1001</errorcode> </e:myfaultdetails> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
33

SOAP sur HTTP


n n

Utilise le modle POST Requte/Rponse Requte


n n

Type MIME : text/xml Champs dentte supplmentaire de la requte


n

SOAPAction : URI SOAPAction: "http://electrocommerce.org/abc#MyMessage" SOAPAction: "myapp.sdl" SOAPAction: "" SOAPAction:

Envelope SOAP Status


n n

Rponse
n

2xx : le recepteur a correctement reu, compris et accept le message inclus 500 (Internal Server Error): le recepteur naccepte pas le message La rponse Le dtail des erreurs
34

Envelope SOAP
n n

17
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Un exemple dchange
POST /path/foo.pl HTTP/1.1 Content-Type: text/xml SOAPActor: interfaceURI#Add Content-Length: nnnn <soap:Envelope xmlns:soap=uri for soap> <soap:Body> 200 OK <Add xmlns=interfaceURI> Content-Type: text/xml <arg1>24</arg1> Content-Length: nnnn <arg2>53.2</arg2> </Add> <soap:Envelope </soap:Body> xmlns:soap=uri for soap> </soap:Envelope> <soap:Body> <AddResponse xmlns=interfaceURI > <sum>77.2</sum> </AddResponse> </soap:Body> </soap:Envelope>

35

Types de message SOAP


n

SOAP dfinit trois types de message


n n n

Appel (Call) - obligatoire Rponse (Response) - optionnel Erreur (Fault) - optionnel

36

18
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Appel simple
POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml Content-Length: nnnn SOAPMethodName: Some-Namespace-URI#GetLastTradePrice <SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1> <SOAP:Body> <m:GetLastTradePrice xmlns:m="Some-Namespace-URI> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP:Body> </SOAP:Envelope>

37

Rponse
HTTP/1.1 200 OK Content-Type: text/xml Content-Length: nnnn <SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1> <SOAP:Body> <m:GetLastTradePriceResponse xmlns:m="Some-Namespace-URI> <return>34.5</return> </m:GetLastTradePriceResponse> </SOAP:Body> </SOAP:Envelope>

38

19
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Erreur
<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1> <SOAP:Body> <SOAP:Fault> <faultcode>200</faultcode> <faultstring> SOAP Must Understand Error </faultstring> <runcode>1</runcode> </SOAP:Fault> <SOAP:Body> </SOAP:Envelope>

39

Autres lments de SOAP sur HTTP


n n

Le type MIME dune requte SOAP est text/xml Toutes les requtes SOAP doivent pouvoir tre reconnues comme telles par un serveur HTTP
n n

Utilisation dun entte HTTP spcifique SOAPActor: interfaceURI#methodname

n n

Les erreurs HTTP utilisent linfrastructure HTTP Les erreurs SOAP/app utilisent les lments SOAP PDU
n n

Modle standard pour toutes les erreurs Extensible pour prendre en compte les exceptions
<foo soap:encodingStyle=myuri > Here is some random XML!! </foo>

Il est possible dutiliser des rgles dencodage spcifiques

40

20
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Scurit
n

Bas sur la scurit dans http


n n

HTTPS Certificats X.509

Les Firewalls peuvent filtrer les messages facilement Pas de transfert de code applicatif
n

Uniquement des donnes

Chaque dveloppeur, choisi de rendre visible telle ou telle mthode Les paramtres sont typs lors du transport
41

SOAP sur RPC

42

21
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Porte de SOAP
n

SOAP est simple et extensible


n n n n n

Il permet de raliser des appels de mthode sur le Web Indpendant des OS, des modles objets, des langages Transport des messages par HTTP + XML on the wire Fonctionne avec linfrastructure Internet existante Permet linteroprabilit entre OS, langages et modles objets

Ce nest pas un systme rparti objets Il ne couvre donc pas les fonctions suivantes :
n n n n

Pas Pas Pas Pas


n

de de de de

ramassage des miettes contrle de types, pas de gestion de version dialogue entre deux serveurs HTTP passage dobjets par rfrence

Ncessite ramassage des miettes en rparti et HTTP bi-directionnel Ncessite passage dobjets par rfrence
43

Pas dactivation
n

Autres Extensions
n

Transport
n

SOAP sur SMTP/POP3/IMAP4


n

Voir implmentation IBM/Apache

SOAP sur MOM (JMS) XMI (UML)


n

Encodage
n

Voir implmentation IBM/Apache DOM org.w3c.dom.Element srialis Voir implmentation IBM/Apache

Litteral XML
n n

44

22
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Utilisation (1)
Calendar
SOAP Authentication Billing
45

Mapping SOAP (Location)

SOAP SOAP

White Pages

SOAP

Traffic

SOAP

Alerting

Utilisation (2)
Hanson Brothers Sample
interaction entre 2 services web (rsidant sur Windows 2000 et Solaris )
Windows 2k Server Sun Solaris Server

Session Utilisateur Commande Produit


SOAP / XML HTTP
E-commerce Gestion produits et stocks
46

SQL Server

Oracle

Gestion Stocks

23
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Utilisation (3)
Xmethods
rendre accessibles des services existants,

crer des services bass sur SOAP

Exemples BabelFish (http://babelfish.altavista.com)


Service de traduction de AltaVista

Barnes & Noble Price Quote (http://www.bn.com)


Retourne le prix dun ouvrage partir de son identifiant ISBN

California Traffic Condition (http://www.caltrans.ca.org)


Indique lencombrement de portions de lautoroute spcifi
47

Le Web 3me gnration


Aujourdhui
Un site Web fournie des pages HTML - pas de structure - impossible fusionner avec dautres pages

InIn-house systems

Web Web service site Web Web service site


The Firewall

File

DB

Demain
Un site Web est un composants fournissant des services en XML - structure / smantique - fusion possible

Web Web service site

Web Server

Browser

Dynamic Pages 48

24
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Un peu dhistorique
Septembre 1999 : SOAP 0.9
Spcifications par Microsoft et DevelopMentor

Dcembre 1999 : SOAP 1.0


Soumission des spcifications lIETF Association de UserLand

Mai 2000 : SOAP 1.1 Soumission au W3C Nombreuses associations : IBM, HP, Lotus, Compaq, Intel
XIDL : rapprochement de Corba

Septembre 2000 Groupe de travail W3C pour la standardisation de SOAP Corba/Soap Interworking RFP => SCOAP
49

Implmentation de SOAP
n

On peut installer SOAP dans un ORB


n

Nouveau, Orbix 2000, Voyager, COM Apache, ASP/ISAPI, JSP/Servlets/WebSphere

On peut installer SOAP dans un serveur Web


n

On peut construire des composants acceptant des requtes SOAP


n

Brique de base
n n n

Canal de communication (channel) srialisation / d-srialisation (serializer) Aiguilleur (dispatcher)


50

25
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

soap implementation techniques


UrlConnection

Channel libwww Channel

Java [De]serializer Perl [De]serializer C++/COM [De]serializer

Servlet Dispatcher ASP Dispatcher ISAPI Dispatcher CGI Dispatcher

WinInet Channel

Legend C++ Java Perl C++/Perl Apache Dispatcher

51

Mise en oeuvre
IBM - Soap for Java
encoding styles : spcification + XMI, protocoles utiliss : HTTP, SMTP et POP3, transmission Apache => Apache Soap Project

MicroSoft - Soap Toolkit pour Visual Studio 6.0 UserLand - Soap for Frontier limitations : pas de headers, un seul retour possible, gestion
incomplte des tableaux et des structures

Conclusion
Encore quelques limitations dans ces implantations, Compatibilit depuis les dernires versions (Aout), Non scuris !
52

26
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

API XML-SOAP dApache/IBM


n

Servlet/JSP
n

Administration (liste, dploiement, suppression) des services


n n

Servlets Commande en ligne

Invocation des mthodes (routeur.jsp)

Exemple de fichier de dploiement


<isd:service xmlns:isd="http://xml.apache.org/xmlsoap/deployment" id="urn:nyse-delayed-quotes"> <isd:provider type="java" scope="Application" methods="getQuote"> <isd:java class="samples.stockquote.StockQuoteService"/> </isd:provider> </isd:service>
53

API XML-SOAP dApache/IBM


n

Exemple de client
public class GetQuote { static XMLParserLiaison xpl = new XercesParserLiaison (); public static void main (String[] args) throws Exception { if (args.length != 2 && (args.length != 3 || !args[0].startsWith ("-"))) { System.err.println ("Usage: java " + GetQuote.class.getName () + " [-encodingStyleURI ] SOAP -router-URL symbol "); System.exit (1); } int offset = 3 - args.length; String encodingStyleURI = args.length == 3 ? args[0].substring(1) : Constants.NS_URI_SOAP_ENC; URL url = new URL (args[1 - offset]); String symbol = args[2 - offset]; Call call = new Call (); call.setTargetObjectURI ("urn:i3solutions-delayed-quotes"); call.setMethodName ("getQuote"); call.setEncodingStyleURI (encodingStyleURI); Vector params = new Vector (); params.addElement (new Parameter("symbol", String.class, symbol, null)); call.setParams (params); Response resp = call.invoke (/* router URL */ url, /* actionURI */ "" ); if (resp.generatedFault ()) { Fault fault = resp.getFault (); System.out.println(" Fault: " + fault.getFaultCode ()+ "=" + fault.getFaultString ()); } else { Parameter result = resp.getReturnValue (); System.out.println (result.getValue ());} } }

54

27
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Comparaison
RMI Qui Plate-formes
Langages de Programmation
Langages de Dfinition de Service

RPC SUN/OSF Multi C, C++, RPCGEN

DCOM MicroSoft Win32


C++, VB, VJ, OPascal,

CORBA OMG Multi Multi IDL


PluggableTransport Layer HTTP Tunneling CORBA Firewall

SOAP W3C Multi Multi XML RPC,HTTP SNMP HTTP IP+Port, URL
Extension applicative dans le header

SUN Multi Java Java

ODL IP/IPX

Rseau Firewall Nommage Transaction Extra

TCP, HTTP, IIOP TCP, UDP customisable


Tunneling HTTP

GIOP, IIOP,

RMI, JNDI,JINI

IP+Port Non

IP+Nom MTS

COS Naming COS Trader

Non
Chargement dynamique des classes

OTS, XA
Services Communs Services Sectoriels

55

SOAP et CORBA

56

28
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

SOAP et CORBA
Client SOAP
S O A P
encodage SOAP

Serveur SOAP
S O A P

CORBA client

CORBA serveur

Bus CORBA
encodage CDR

Corba services

Corba services

57

Le prdcesseur : XML-RPC (http://www.xml-rpc.com)


n

Objectif
n

construire des requtes RPC en XML et invoquer via HTTP XmlRpcServer, XmlRpcClient,

Classes
n

Voir
n

Brett McLaughlin "Java and XML", 1st Edition June 2000, ISBN 0-596-00016-2, 498 pages, Edition OREILLY &ASSOCIATES
n

Voir Chapitre 10
58

29
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Bibliographie
n

Spcification 1.1 (05/2000)


n

http://www.w3c.org/TR/SOAP http://xml.apache.org http://www.develop.com/soap

Implmentation IBM-Apache
n

Implmentation microsoft
n

59

inclure

60

30
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Les 3 aspects dun appel SOAP


n

SOAP peut tre vu comme un autre RPC Objets


n n

Les requtes contiennent les paramtres IN et INOUT Les rponses contiennent les paramtres INOUT et OUT

SOAP peut tre vu comme un protocole dchange de message


n

La requte contient un seul message (appel srialis dune mthode sur un objet) La rponse contient un seul message (retour srialis dun appel de mthode sur un objet)

SOAP peut tre vu comme un format dchange de documents


n n

La requte contient un document XML Le serveur retourne une version transforme


61

Ces vues ne sont pas imposes par le protocole

Les 3 aspects dun appel SOAP


return addr obj arg2 arg1 arg0 return addr this arg0 arg1 arg2

class doit { T arg0; T arg1; T arg2; }

<soap:Envelope> <soap:Body> <doit xmlns=itfuri> <arg0>val</arg0> <arg1>val</arg1> <arg2>val</arg2> </doit> </soap:Body> </soap:Envelope>

obj.doit(arg0, arg1, arg2);

<type name=doit> <element name=arg0 type=T /> <element name=arg1 type=T /> <element name=arg2 type=T /> </type>

62

31
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

SOAP vs. DCOM vs. CORBA


n

En terme de fonctionnalit
n

SOAP est un sur-ensemble de GIOP/IIOP


n

SOAP == GIOP + IDL interfaces multiples SOAP == DCOM pinging/ramasse miettes

SOAP est un sous-ensemble de DCOM


n

SOAP takes a per-method performance hit for XML encoding scheme


n n

Using event-driven marshaler scheme helps now Using binary encoding (e.g., WBXML) helps later

SOAP will dominate across organization boundaries first!

63

Requte SOAP et DCOM


POST /objectURI HTTP/1.1 SOAPMethodName version+flags+msgtype Object Endpoint ID Interface Identifier Method Identifier Extension Headers Parameter Data SOAP:Body CallElement ORPCTHIS (protocol extensions) object uuid (COM Interface Pointer ID) ndr_datarep frag_length/auth_length call_id SOAP:Header Header1 Header1 alloc_hint p_cont_id op_num SOAP:Envelope

Payload [in] and [in, out] params

Note: DCE/DCOM Interface ID represented using a negotiated index (p_cont_id). Method ID represented using zero -based offset (op_num).

64

32
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Rfrences dobjets SOAP et DCOM


signature (MEOW)

Interface URI passed explicitly with every call

Interface Type IP Host Address TCP Port No Object Endpoint ID

flags (0x1) iid (type of interface) std.flags std.cPublicRefs std.oxid (Logical Port Number) std.oid (Object ID) std.ipid (Interface Pointer ID)

http://

209.110.197.2

:80

/endpointURI/MoreInfo

std.saResAddr (host names for OXID resolver + security)

65

XML

Requte : Add (1, 9)

Client
Rponse : 10

Serveur
XML

66

33
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

S.O.A.P
Janvier 2001

Quel service me propose-tu ? Voici mes services (WSDL)

XML

Client

XML

Requte

Serveur
XML

Rponse

67

Mise en uvre SOAP / Apache


Application cliente
Bibliothque SOAP Apache Parseur XML Annuaire des services SOAP Bibliothque SOAP Apache Parseur XML

Message SOAP Serveur HTTP Servlet RPCRouter

Application serveur
68

34
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001

Vous aimerez peut-être aussi