Académique Documents
Professionnel Documents
Culture Documents
P
Janvier 2001
Motivations
n
Mais il ne prend pas en compte : les systmes embarqus, le temps rel, la tolrance aux pannes, etc.
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
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
Serveur
requtes HTTP
Client HTTP Donnes
(html / autres formats)
Application
partie cliente (GET, POST)
Serveur HTTP
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
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
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
Rponses et requtes en XML RPC, HTTP ou autre MOM ATTENTION : on perd le contrle daccs faible granularit
W3C
La philosophie S.O.A.P
n
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
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
requtes SOAP
(XML) Rponses SOAP
(XML)
Application
partie -cliente
Serveur HTTP
Application
partie-serveur
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
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
Les lignes suivantes contiennent un nombre arbitraire dentte Le contenu suit une ligne dentte vide
n
Fonctionnement dHTTP
HTTP Request HTTP Request
GET /bar/foo.txt HTTP/1.1
ou
or
12
6
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001
S.O.A.P
Janvier 2001
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)
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
7
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001
S.O.A.P
Janvier 2001
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
18
9
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001
S.O.A.P
Janvier 2001
Modle de 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
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
Contient des entres applicatives Encodage des entres Namespace pour lencodage
n
SOAP-ENC http://schemas.xmlsoap.org/soap/encoding/
21
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
26
13
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001
S.O.A.P
Janvier 2001
27
14
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001
S.O.A.P
Janvier 2001
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
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
30
15
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001
S.O.A.P
Janvier 2001
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
31
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
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
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
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
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>
40
20
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001
S.O.A.P
Janvier 2001
Scurit
n
Les Firewalls peuvent filtrer les messages facilement Pas de transfert de code applicatif
n
Chaque dveloppeur, choisi de rendre visible telle ou telle mthode Les paramtres sont typs lors du transport
41
42
21
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001
S.O.A.P
Janvier 2001
Porte de SOAP
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
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
Encodage
n
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
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
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,
InIn-house systems
File
DB
Demain
Un site Web est un composants fournissant des services en XML - structure / smantique - fusion possible
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
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
Brique de base
n n n
25
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001
S.O.A.P
Janvier 2001
WinInet Channel
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
Servlet/JSP
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
SOAP W3C Multi Multi XML RPC,HTTP SNMP HTTP IP+Port, URL
Extension applicative dans le header
ODL IP/IPX
GIOP, IIOP,
RMI, JNDI,JINI
IP+Port Non
IP+Nom MTS
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
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
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 requtes contiennent les paramtres IN et INOUT Les rponses contiennent les paramtres INOUT et OUT
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:Envelope> <soap:Body> <doit xmlns=itfuri> <arg0>val</arg0> <arg1>val</arg1> <arg2>val</arg2> </doit> </soap:Body> </soap:Envelope>
<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
En terme de fonctionnalit
n
Using event-driven marshaler scheme helps now Using binary encoding (e.g., WBXML) helps later
63
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
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
65
XML
Client
Rponse : 10
Serveur
XML
66
33
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001
S.O.A.P
Janvier 2001
XML
Client
XML
Requte
Serveur
XML
Rponse
67
Application serveur
68
34
Copyright Michel RIVEILL, Universit de Nice, Janvier 2001