Beruflich Dokumente
Kultur Dokumente
Philippe.Bedu@edf.fr
Composants
Time to market
Amliorer la productivit
Rduire la complexit
Rutiliser si possible
Assemblage plutt que programmation
Rduire les besoins en comptences
spcialises
Recentrage sur lexpertise du domaine
Amliorer la qualit du logiciel
Service Web
Service invocable travers le rseau
Non bas sur le contenu (pages web)
Dlivre des donnes structures une
application
Dans un portail
Applications d'entreprise
Internet
B2B
Intranet
Service
mto
Portail
mto
Normalisation
d'adresse
traducteur
commande
traduction
vente
B Processus
Achat
Orchestration de Flux
Serveur d'applications
Adaptateur progiciels
Services techniques
Services mtier
Processus, workflow
BPEL
ebXML
WS-coordination
RosettaNet
WS-Transaction
Annuaire
UDDI, WSIL
Description
WSDL
Scurit
WS-Security
XML-based message
SOAP : messaging
Transport
http,httpr,smtp,ftp,mq,iiop
TCP/IP
Plan
SOAP
Protocole de transmission de
messages XML
WSDL
Web Services Description Language
UDDI
Universal Description Discovery and
Integration
Web Services
Intgration avec l'existant
SOAP
SOAP 1.1
Un moyen de faire communiquer des
applications par RPC en utilisant HTTP
Propos W3C en 2000 par UserLand, Ariba,
Commerce One, Compaq, Developmentor,
HP, IBM, IONA, Lotus, Microsoft
etSAP
SOAP 1.2
travaux W3C
Protocole de transmission de messages en
XML
SOAP ?
SOAP protocole XML permettant la communication entre
composants logiciels et applications en sappuyant sur des
protocoles standards de type http, smtp,
SOAP Simple Object Access Protocol
SOAP Service Oriented Architecture Protocol
SOAP est un protocole de transmission de messages
SOAP est adapt la communication entre applications
SOAP est un format dchange de messages
SOAP est conu pour fonctionner sur lInternet
SOAP est indpendant des plates-formes et des langages
SOAP est bas sur XML
SOAP est simple et extensible
SOAP en voie de standardisation par W3C
Niveau SOAP
Nud SOAP
metteur
initial
Nud SOAP
ultime
rcepteur
Appli SOAP
Appli SOAP
processeur
SOAP
processeur
SOAP
Niveau
protocole de
transport
Hte 1
Hte 2
Nud SOAP
metteur
initial
Appli SOAP
A
Id
message
Niveau SOAP
processeur
SOAP
Corrlation de
messages
Nud SOAP
ultime
rcepteur
Nud SOAP
metteur
initial
Appli SOAP
B
Id
message
Appli SOAP
B
Id
message
processeur
SOAP
processeur
SOAP
Nud SOAP
ultime
rcepteur
Appli SOAP
A
Id
message
processeur
SOAP
Niveau protocole de
transport
Hte 1
Hte 2
Hte 2
Hte 1
Nud SOAP
metteur
initial
Appli SOAP
A
routage
Niveau SOAP
processeur
SOAP
Nud SOAP
intermdiaire
Appli SOAP
B
routage
processeur
SOAP
Nud SOAP
ultime
rcepteur
Appli SOAP
A
routage
processeur
SOAP
Niveau protocole de
transport
Hte 1
Hte 2
Hte 3
Changement de
protocole possible
SOAP message
Un message SOAP valide est un document XML
au bon format. Le message doit avoir la forme
suivante:
Une dclaration XML (optionnelle)
Une Enveloppe SOAP (l'lment racine) qui
est compose de:
Une En-tte SOAP (optionnel : infos ncessaires
l'interprtation du message)
Un Corps SOAP (donnes du message)
Une section derreur SOAP
SOAP message
Rgles de syntaxe:
un message SOAP
un message SOAP
un message SOAP
un message SOAP
un message SOAP
l'enveloppe SOAP
un message SOAP
SOAP
un message SOAP
un message SOAP
Processing
SOAP Exemple
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding
/">
<soap:Header>
... Header information...
</soap:Header>
<soap:Body>
... Body information...
<soap:Fault>
...Fault information...
</soap:Fault>
</soap:Body>
</soap:Envelope>
SOAP Enveloppe
<SOAP-ENV:Envelope ... >le style d'encodage
de ce message SOAP suit le schma dfini dans
http://schemas.xmlsoap.org/soap/encoding
Contient les dfinitions de namespaces.
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/ 2001 /XMLSchema">
</SOAP-ENV:Envelope>
Soap Body
Mcanisme simple pour changer les
informations avec lultime receveur du
message.
Typiquement appels marshalling RPC calls et
des rapports derreur
Une entre du body est identifie par un
namesapce et un nom local
<SOAP-ENV:Body>
<ns1:doubleAnIntegerResponse
xmlns:ns1="urn:MesSoapServices"
SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<return xsi:type="xsd:int">30</return>
</ns1:doubleAnIntegerResponse>
</SOAP-ENV:Body>
faultcode
Identifier lerreur
faultstring
Explication de lerreur
<env:Body>
<env:Fault>
<faultcode><value>env:VersionMismatch</value>
</faultcode>
<faultstring>Version Mismatch</faultstring>
</env:Fault>
</env:Body>
<age>45</age>
<height>5.9</height>
<displacement>-450</displacement>
<color>Blue</color>
<SOAP-ENC:int id="int1">45</SOAP-ENC:int>
<e:Livre>
<author>jean Bonneau</author>
<preface>Preface Soap INT</preface>
<intro>Introduction SOAP</intro>
</e:Livre>
SOAP Array
Construction
de l'appel de
mthode
Retourne la
valeur
Srialise en
requte
SOAP-XML
Enveloppe la
requte
SOAP-XML
En requte
http
Dsrialise la
rponse
SOAP-XML
Extrait la
rponse
SOAP-XML
En rponse
de mthode
de la rponse
http
Serializer/des
erializer
Encoding/de
coding http
Requte
http
envoye au
serveur
SOAP
Rponse
http reue
du serveur
SOAP
envoie
requte
dcodeur
Invoque la
mthode
Retourne la
rponse http
au client
SOAP
envoie
rponse
dcodeur
Canal de
rponse du
servlet
Envoie la
rponse
Servlet
SOAP
Dcode la
requte http et
d-srialise la
requte SOAPXML
Opration
du Service
srialise la
rponse SOAPXML et encode
de la rponse
http
Encoding/de
coding http
et soap
Service NormalisationAdresse
Application
SOAP
XML
getNorme
wsdl
Interface
Public et
standard
Implantation
opration
Priv et
propritaire
Mthode
le_local.setloc_no_voie(" 9 BIS");
le_local.setloc_l_voie1("Chemin de la
le_local.setloc_l_voie2("BP 12");
le_local.setloc_c_postal(" 91430");
le_local.setloc_l_bd(" Igny");
Sablire
");
On aurait pu
directement
construire le XML
dans un
SOAPBodyElement[]
et le passer au call
Exploiter le rsultat
//
if (resp instanceof java.rmi.RemoteException)
{
throw(java.rmi.RemoteException) resp;
}
else
try {
NormAdresse value = (NormAdresse)resp;
if ( value != null )
{
System.out.println("retour :");
System.out.println("code"+value.getAdr_c_postal());
}
} catch(java.lang.Exception e) { }
WSDL
Web Services Description Language
Vocabulaire XML, similaire dans le principe IDL
WSDL
<definitions> : Dfinition du service. Racine de tout WSDL. Elle peut
contenir les attributs prcisant le nom du service, et les espaces de
nommage. Il contient trois types dlments :
<message> et <portType> : Dfinissent les oprations offertes par
Le service. Un <message> correspond un paramtre dentre ou de sortie
dune <operation>. Un <portType> dfinit un ensemble doprations. Une
<operation> possde un nom et des paramtres d'E/S.
<binding> : Associe les <portType> un protocole particulier. Par exemple
SOAP.
<service> : Prcise les informations ncessaires l'invocation d'un service, en
particulier lURI du destinataire. Un <service> est une collection de <port> ;ie
dassociations de <binding> et d'URI.
Les types de donnes complexes peuvent tre prciss dans une balise
<types> place juste avant la balise <message>.
Chaque lment WSDL peut tre document grce une balise
<documentation>.
La premire
partie du
fichier
dfinit les
espaces de
nommage
WSDL : exemple(2)
<wsdl:types>
<schematargetNamespace="urn:NormAdresse"
xmlns="http://www.w3.org/2001/XMLSchema">
<complexTypename="Local">
<sequence>
<element name="loc_no"nillable="true"type="xsd:string"/>
<element name="cli_ic_orig"nillable="true"type="xsd:string"/>
</sequence>
</complexType>
<element name="Local"nillable="true"type="tns1:Local"/>
</schema>
</wsdl:types>
On trouve ensuite les
types particuliers
utiliss
Puis les
paramtres
dentre et de
sortie des
oprations du
service
<wsdl:message name="getNormeResponse">
<wsdl:part name="return"type="tns1:NormAdresse" />
</wsdl:message>
<wsdl:message name="getNormeRequest">
<wsdl:part name="adresse_local"type="tns1:Local"/>
</wsdl:message>
<wsdl:portTypename="DoNorme">
<wsdl:operationname="getNorme"parameterOrder="adresse_local">
<wsdl:input
message="intf:getNormeRequest"name="getNormeRequest" />
<wsdl:output
message="intf:getNormeResponse"name="getNormeResponse" />
</wsdl:operation>
La dfinition abstraite du service Web
</wsdl:portType>
</
est faite par dfinition du
portType, indpendante de tout
protocole de communication. Cest
linterface du service dfinissant les
mthodes exportes, et leurs
paramtres dentre et de sortie.
WSDL
WSDL cr automatiquement partir de Java
avec Java2WSDL
Utilisation
Construire un proxy pour une utilisation
directe partir du client ou d'un autre Service
avec WSDL2J
DoNorme binding = new
DoNormeServiceLocator().getNormAdresseService();
NormAdresse value = binding.getNorme(le_local);
UDDI
Universal Description, Discovery and Integration
Une spcification pour la description et la dcouverte de WebServices
White
Pages
Yellow
Pages
Green
Pages
UDDI
Pages blanches : noms, adresses, contacts, identifiants, des entreprises
enregistres. Ces informations sont dcrites dans des entits de type Business
Entity. Cette description inclut des informations de catgorisation permettant de
faire des recherches spcifiques dpendant du mtier de lentreprise ;
Pages jaunes : dtails sur le mtier de lentreprise, les services quelle propose. Ces
informations sont dcrites dans des entits de type Business Service ;
Pages vertes : informations techniques sur les services proposs. Les pages vertes
incluent des rfrences vers les spcifications des services Web, et les dtails
ncessaires lutilisation de ces services. Ces informations sont dcrites dans deux
documents : un Binding Template, et un Technology Model (tModel).
UDDI
Document XML
Contact
Contact
Phone
Phone
Address
Address
Email
Email
businessEntity
businessKey
name
URL
description
contacts
businessServices
identifierBag
categoryBag
businessService
businessService
serviceKey
Key
tModelKey
Name
Name
Description
Description
BindingTemplates
BindingTemplates
keyedReference
keyedReference
tModelKey
keyName
keyValue
keyedReference
keyedReference
tModelKey
tModelKey
keyName
keyName
keyValue
keyValue
UDDI
businessEntity
RD991
EDF-RETD
www.edf-retd.fr
Architecture Services."
contacts
businessServices
identifierBag
categoryBag
businessService
businessService
34257GHF12
Key
Services support Archi
Name
Website where you can
Description
BindingTemplates
BindingTemplates
BindingTemplate
110293-32009
http://www.edf-retd.fr/sinetics
tModelInstanceDetails
tModelInstanceInfo
keyedReference
keyedReference
EE123
NAICS
007..
DFE-2B
DUNS
45231
1112C-2244-3AXA
http://www.edf-retd.fr/catalogArchi
tModelKeys
UDDI
Enregistrer et retrouver un Service avec
UDDI4J
2 parties dans WSDL : interface + implantation
Interface
<Definition>
<Types>
<Import>
<Message>
<Portype>
<binding>
</Definition>
Implantation
<Definition>
<Import>
<Service>
<Port>
</Service>
</Definition>
UDDI
Implantation
<import>
<service>
<port>
<port>
Interface
<types>
<messages>
<portType>
<Binding>
UDDI
BusinessEntity
BusinessService
BusinessTemplate
BusinessTemplate
tModel
Implantation
UDDI
<wsdl:definitions name="NormAdresseService"
targetNamespace="http://">
<import namespace="http://"
location="http://" />
<wsdl:service name="DoNormeService">
<wsdl:port name="NormAdresseService "
binding="intf:NormAdresseServiceSoapBinding"
>
</wsdl:service>
</wsdl:definitions>
Interface
<wsdl:definitions
name="NormAdresseService.interface"
targetNamespace="http://">
<wsdl:message name="getNormeResponse">
</wsdl:message>
<wsdl:portType name="DoNorme">
</wsdl:portType>
<wsdl:binding
name="NormAdresseServiceSoapBinding"
type="intf:DoNorme">
</wsdl:binding>
</wsdl:definitions>
UDDI
<BusinessEntity
businessKey=""
<name> Normalisation d'adresse </name>
<businessService serviceKey="">
<name> DoNormeService </name>
<BindingTemplates bindingKey="">
<TmodelInstanceInfo tModelKey="">
<overviewDoc>
<overviewdocURL>http://#
NormAdresseService
</overviewdocURL>
</BindingTemplates>
</businessService>
</BusinessEntity>
<tModel tModelKey=""
<name> http:// </name>
<overviewDoc>
<overviewdocURL>http://
#NormAdresseServiceSoapBinding
targetNamespace="http://">
</overviewdocURL>
<categoryBag>
<KeyedReference tModemKey="" keyname="uddiorg:types keyvalue="wsdlSpec"/>
</ categoryBag >
</tModel>
UDDI
Enregistrer sparment les descriptions des
Compagnies et les descriptions des services
Dveloppeurs, diteurs de logiciels, organismes
de standardisation enregistrent des types de
services
Les Compagnies enregistrent les services
qu'elles supportent
UDDI
UDDI4J simplifie l'interaction avec un
annuaire UDDI
Pour l'enregistrement et la dcouverte
Utilisation de l'objet UDDIProxy
UDDIProxy p = new UDDIProxy();
p. setInquiryURL( http:// );
p. setPublishURL( https:// );
UDDI
Inquiry API
Trouver
find_business
find_service
find_binding
find_tModel
Plus de dtails
get_businessDetail
get_serviceDetail
get_bindingDetail
get_tModelDetail
Publishers API
Enregistrer
save_business
save_service
save_binding
save_tModel
Dtruire
delete_business
delete_service
delete_binding
delete_tModel
Scurit
get_authToken
discard_authToken
UDDI
Enregistrement UDDI
Nud
annuaire
UDDI
Client
Requte
UDDI SOAP
Rponse
UDDI SOAP
UDDI4J
Serveur
HTTP
Serveur
SOAP
Annuaire
UDDI
WSDL4J
Nud WS
WSDL
WebService
Enregistrement
partir d'un fichier
wsdl
UDDI
Utilisation UDDI
Nud
annuaire
UDDI
Client
Requte
UDDI SOAP
Rponse
UDDI SOAP
UDDI4J
Serveur
HTTP
Serveur
SOAP
URI="http://"
Annuaire
UDDI
Communication
avec le WS
Nud WS
WSDL
WebService
Dans la pratique on
rechercherait plutt par
catgorie
businessService = (BusinessService)businessServices.elementAt(i);
if (serviceName.equals(businessService.getDefaultNameString())) {}
UDDI
En pratique les cls de classification et d'identification
devraient tre gres et fournies par des agences
mondiales
Les informations du niveau "yellow pages" de UDDI sont
typiquement fondes sur deux standards :
NAICS (the North American Industry Classification System)
projet des gouvernements du Canada, du Mexique et des US.
http:// www.naics.com
UNSPSC (the Universal Standard Products and Services
Classification).
Efforts conjoints de Dun & Bradstreet et du programme de
dveloppement des nations unies pour une unification des
classifications
http://www.unspsc.org
UDDI
Application directe
La recherche du document WSDL associ au
service est facilite par une rfrence spcifique
de nom "uddi-org:types" et de valeur "wsdlSpec"
Lors de l'enregistrement cette cl est dfinie de la
manire suivante :
KeyedReference kr = new KeyedReference("uddi-org:types","wsdlSpec","");
UDDI
Type d'annuaire utile pour la dcouverte de
BusinessEntity ou de BusinessService
Identification et catgorisation
Encore peu implant
Ncessit d'un modrateur
Mise en uvre relativement complexe
On lui prfre une approche plus pragmatique
WSIL
Fournit une liste simple des services
disponibles
WSIL
WSIL
WSDL
UDDI
XML
HTML
WSIL : exemple
<?xml version="1.0" encoding="UTF-8"?>
<inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/">
<abstract>The EDF-RetD W Service Search API</abstract>
<service>
<abstract>NormAdresse Search</abstract>
<description
referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://www.edf-RetD.fr/NormAdresse.wsdl"/>
<description
referencedNamespace ="http://www.w3c.org/html/"
location ="http://www. edf-RetD.fr /
1999/NormAdresse_Deployment.html" />
<description
referencedNamespace ="http://www.uddi.org/"
location ="http://www. edf-RetD.fr /soapuddi/" />
</service>
</inspection>
Spcification CORBA
Langage de description des interfaces (OMG IDL)
+ rgles de projection vers des langages de
programmation
Langage de description des implantations : OMG
CIDL + rgles de gnration de guides
dimplantation.
Structure des messages changs dduite de la
description des interfaces (explicite en WSDL).
Choix du protocole dchange et de lencodage des
messages li lORB (explicite en WSDL).
Localisation des services dtermine au dploiement
(explicite en WSDL).
Description : Coexistence
Wsdl:portadress
Service endpoint
interface
Wsdl :portType
Wsdl :service
Usine stubs
Service interface
Service instance
Localisation
Spcification CORBA
Rfrence CORBA chane de caractre ou URL
Annuaire de services (Naming Service)
Registre d'interfaces et d'implantation(Interface and
Implementation Repository)
Courtier (Trading Service)
client
J2EE : JNDI
serveur
courtier
2 - export
1 - import
ORB
3 - interaction
Localisation : WebService
UDDI
Universal Description, Discovery and Integration
Le rfrentiel UDDI vu comme un annuaire
pages blanches (informations de contact)
pages jaunes (classification par catgories)
pages vertes (informations techniques sur le service)
WSIL
WebService Inspection Language
Une mthode de dcouverte de services dcentralise
Dcouverte de service
Localisation
Annuaire et dcouverte de service commun aux
WebServices et aux architectures CORBA, J2EE
Qualit de service pas dans UDDI mais peut
tre associe ebXML
Communication
Corba
Webservices
IDL
WSDL
Corba Services
UDDI - WSIL
Corba Stubs/Skeleton
Soap messages
GIOP/IIOP , ESIOP
HTTP,FTP,SMTP
TCP/IP
TCP/IP
Communication
CORBA - IIOP
Invocation d'opration ou One-way
Relocalisation,
Multiplexage client-serveur
Abandon de requte
SOAP
one way
Reconstruction de protocole
Multiples intermdiaires
Attachements SOAP permettent de vhiculer
des contenus MIME avec un message SOAP
Coexistence : CORBA - WS
Exposer des composants CORBA sous forme de Web Services
Web Services vus comme des composants CORBA
Adaptation des environnements CORBA.
Rfrentiel
UDDI
Client
SOAP
/HTTP
P
A
O
S
Description
WSDL
Serveur
SOAP
Client
CORBA
Systmes CORBA
Coexistence : J2EE - WS
J2EE 1.4
API pour SOAP, WSDL, UDDI
SOAP Messaging
JAXM, SAAJ, JAX-RPC, JMS
WSDL
Java API for WSDL
JAX-RPC
UDDI
JAXR
Coexistence : J2EE - WS
SOAP/HTTP et
autres bindings
Conteneur de
servlet
Conteneur Ejb
Port
servlet
Port
jsp
Noyau J2EE
HTTP/SSL
RMI/IIOP
RMI/IIOP
ejb
Noyau J2EE
Coexistence : J2EE - WS
Paquetage pour dploiement
Pour Web Component : fichier WAR
Pour stateless session bean : fichier EJB JAR
Descripteur de dploiement : webservices.xml
Diffrents de celui associ l'implantation du
service : web.xml ou ejb-jar.xml
Dploiement
Gnration des classes d'aide : servlet, stub,
proxy, pour le client (placement du service
implementation accessible par JNDI)
Gnration, mise jour et publication du WSDL
Coexistence : J2EE - WS
Dveloppement sur J2EE
WSDL de/vers Web service Endpoint Interface
(java)
Endpoint Interface spcifie dans JAX-RPC
Utile pour servlet-based et EJB-based
endpoint
Pour le cas EJB dclaration dans le
descripteur de dploiement du endpoint
Implantation en classe Java (servlet) ou
Stateless session bean
Cration de descripteur de dploiement
webservices.xml
Conclusion
Rinventer la roue ?
Principales diffrences
Positionnement ?
WS : middleware de middleware
fonctionnement en mode dconnect (connexions
transitoires et temporaires)
pas de connaissance a-priori des parties qui entrent en
communication (accs aux informations sur le service)
Atouts
Gagner en abstraction
Produits
HP WS de HP
eSpeak, HP-AS, HP-WS
E2A de IONA
E2A WS Interoperation, Application Server
Cape de CapeClear
CapeConnect, CapeStudio
.Net de Microsoft
.Net environment, .Net framework, .Net Visual Studio
WebSphere de IBM
WebSphere, WebSphere Studio
WebLogic de BEA
WebLogic Server, Integration, Portal, Studio
Oracle 9i de Oracle
Oracle 9iAS
Perspectives
Perspectives
Maturit WS : encore du travail
Gestion de la scurit (Microsoft, IBM, Verisign : WSSecurity) et des transactions (Microsoft, IBM, BEA :
WS-Transaction).
Dfinition de modles dinteraction (chorgraphie) et
de collaboration (processus mtiers, recherche de
partenaires).
Primtre WS : des interrogations
Persistance, gestion de l'tat,
Maturit et primtre
Quelques URLs
Standards
http://xml.apache.org/axis. Apache-Axis
http://www.w3.org/2000/xp SOAP
http://www.w3.org/XML/Schema XML-schema
http://www.w3.org/TR/wsdl WSDL
http://www.uddi.org/UDDI
Ressources
http://www-106.ibm.com/developerworks/webservices/
http://www-106.ibm.com/developerworks/webservices/wsdk/
http://www.webservices.org/
http://www.javaworld.com/javaworld/jw-05-2002/jw-0517-webservices.html
http://www.themindelectric.com/
Sites de WS
http://www.xmethods.net/
http://hosting.msugs.ch/
http://java.sun.com/webservices/
Alors ?
WebServices ?
Philippe.Bedu@edf.fr