La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Web Services Xavier Blanc Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion.

Présentations similaires


Présentation au sujet: "Web Services Xavier Blanc Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion."— Transcription de la présentation:

1 Web Services Xavier Blanc

2 Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion

3 Définition Les Web Services sont des services offerts via le web. Par exemple, un client demande le prix dun article en envoyant un message sur le web. Ce message contient la référence de larticle. Le Web Service va recevoir la référence, effectuer le traitement du service et renvoyer le prix au client via un autre message.

4 Principes Pourquoi un nouveau middleware

5 Limitations des middleware Passage à large échelle : Web Protocoles hétérogènes IIOP, RMI, DCOM Firewall Pas douverture des services Notion de moteur de recherche inexistante Trop de contraintes sur le client ! Doit posséder les souches Difficulté de construire dynamiquement

6 Limitations des middleware Inconvénients Intrinsèques Complexité CORBA : IDL, Mapping, … EJB : Container, JNDI, … Pérennité : remise en question CORBA, EJB,.Net, … Prix Plates-formes Compétences

7 Solutions existantes Modification du Protocole RMI / IIOP Passerelles CORBA vers DCOM Portage dapplications existantes difficile Solutions non standards

8 Approche Envisagée Un nouveau Protocole : SOAP Basé sur XML Portabilité, Hétérogénéité Porté sur des protocoles large échelle existants HTTP, SMTP, … Paradigme orienté service : WSDL Définition de services offerts (en XML) Découverte automatique des services (dynamicité) : UDDI Référentiel de Web Service (Pages Jaunes, Vertes, Blanches)

9 Ex : ModFact SOAP / HTTP IIOP SOAP / SMTP Les clients doivent savoir envoyer des messages SOAP (sur HTTP ou SMTP) Le serveur doit savoir recevoir des messages SOAP (sur HTTP ou SMTP). Il effectue les traitements correspondant (ici délégation vers CORBA). Application existante classique (ici CORBA) UDDI Exportation du Web Service dans le référentiel UDDI Utilisation de UDDI pour construire dynamiquement des client

10 SOAP Protocole déchange de messages (client / serveur) Basé entièrement sur XML Standard W3C (Initiative IBM et Microsoft) Actuellement SOAP 1.1 Concepts Message = Enveloppe ( Header + Body ) Extensibilité Porté sur HTTP, SMTP, …

11 WSDL Langage de définition de Web Services Basé entièrement sur XML Standard W3C (Initiative IBM et Microsoft) Actuellement WSDL 1.1 Définition de linterface, de lURL et du port du Web Service. Utilise le système de typage de XML Schéma

12 UDDI Référentiel de définitions Web Service Permet de construire dynamiquement des clients Recommandation OASIS Référentiel défini lui-même en WSDL Référentiel Public / Privé

13 XML Notions nécessaires pour les Web Services

14 Exemple de document XML le super livre 1 titre du chapitre 1 blabla blabla …

15 Principes Ensemble non fini de balises Lutilisateur peut créer de nouvelles balises Définition de grammaires : XML est un Meta-Langage MathML, NewsML, XMI, Doc, Slides, … Séparation de la forme et du fond Un document XML peut être constitué de deux entités (le fond et la forme)

16 Grammaire Deux façons de définir une grammaire XML : DTD Langage de définition de grammaire XML Largement utilisé Expression faible (type, structure) XML Schéma Langage XML de définition de grammaire XML De + en + utilisé Expression puissante (type, structure, héritage) Un document XML est dit valide lorsquil est conforme à une grammaire

17 Espaces de noms Mécanismes permettant de partitionner les balises XML (permet davoir deux fois le même nom de balise) Un espace de nom est défini dans nimporte quelle balise par lattribut xmlns et par une URI. Dans un document XML, un espace de noms est identifié par un nom logique, les balises appartenant à cet espace doivent alors être préfixée par ce nom logique. Ex :

18 XML est un succès ! Standard W3C La syntaxe XML ne contient que peu de mot clef: Simplicité XML est indépendant des plates-formes: Portabilité XML est un méta-langage, il est possible de créer ses propres balises: Extensibilité Outils disponibles (et gratuits) Largement utilisé pour les échanges inter-applications

19 A vous de jouer ! Pouvez-vous définir un document XML qui représente un message Client/Serveur ? Quelles sont les informations que ce message doit contenir ? Comment échanger ce message ? Quels sont les problèmes soulevés ?

20 SOAP Simple Object Access Protocol Version 1.1

21 Abstract SOAP is a lightweight protocol for exchange of information in a decentralized, distributed environment. It is an XML based protocol that consists of three parts: an envelope that defines a framework for describing what is in a message and how to process it, a set of encoding rules for expressing instances of application-defined datatypes, and a convention for representing remote procedure calls and responses. SOAP can potentially be used in combination with a variety of other protocols; however, the only bindings defined in this document describe how to use SOAP in combination with HTTP and HTTP Extension Framework.

22 Exemple de message StockQuote est un ensemble de services qui permet dobtenir des informations sur des actions boursières. GetLastTradePrice est le service qui permet de connaître la dernière valeur dune action. Cet exemple présente un échange de messages entre un client qui veut savoir la valeur de laction « DIS ».

23 Exemple de message POST /StockQuote HTTP/1.1 Host: Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" DIS Propre au portage sur HTTP

24 Exemple de message HTTP/ OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn 34.5 Propre au portage sur HTTP

25 Analyse de lexemple Des Balises Utilisateur GetLastTradePriceResponse Symbol Price Un Namespace Utilisateur xmlns:m="Some-URI" Des Balises SOAP Enveloppe Body Un Namespace SOAP xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" Des informations dans la partie HTTP

26 Namespace SOAP Le namespace des balises SOAP Le namespace de lencodage SOAP

27 Structure dun message SOAP Un message SOAP est contenu dans une balise Envelope Une Envelope peut contenir une balise Header Une Header peut contenir nimporte quel ensemble de balises. Ces balises doivent appartenir à des namespaces. Une Envelope doit contenir une balise Body Un Body peut contenir nimporte quelle ensemble de balises. Ces balises peuvent appartenir à des namespaces. Un Body peut contenir des balises Fault qui permettent didentifier des erreurs. Framework

28 SOAP Header Mécanisme dextension du protocol SOAP La balise Header est optionnelle Si la balise Header est présente, elle doit être le premier fils de la balise Envelope La balise Header contient des entrées Une entrée est nimporte quelle balise incluse dans un namespace Framework

29 SOAP Header Example 5 Framework

30 SOAP Body Le Body contient le message à échanger La balise Body est obligatoire La balise Body doit être le premier fils de la balise Envelope (ou le deuxième si il existe une balise Header) La balise Body contient des entrées Une entrée est nimporte quelle balise incluse optionnellement dans un namespace Une entrée peut être une Fault. Framework

31 SOAP Fault Balise permettant de signaler des cas derreur. La balise Fault contient les balises suivantes faultcode : un code permettant didentifier le type derreur Client, Server, VersionMismatch, MustUnderstand faultstring : une explication en langage naturel faultactor : une information identifier linitiateur de lerreur detail : Définition précise de lerreur. Framework

32 Encodage Un message SOAP contient des données typées. Il faut donc définir un moyen dencoder ces données. Vocabulaire SOAP : Value (valeur dune donnée) Simple value (string, integers,etc) Compound value (array, struct, …) Type (dune value) Simple Type Compound Type Encoding

33 Encodage Lencodage cest la représentation de valeurs sous forme XML. Le décodage cest la construction de valeurs à partir dXML LXML qui représente les valeurs a une structure qui dépend du type des valeurs Il faut donc définir le type Soit mécanisme définit par lutilisateur Soit utilisation dXML Schéma (préconisé) Encoding

34 Simple Types Type (XML Schema) Valeurs 45 Blue Type XML Schema Construction de Type XML Schema Encoding

35 Simple Types La définition dun XML Schéma pour tout type peut être fastidieux SOAP a défini deux façons de préciser le type dune valeur sans définir le Schéma XML: Encoding

36 Compound Types Une structure est un type composé dans lequel les membres sont accessibles uniquement grâce à des noms différents. Un tableau est un type composé dans lequel les membres sont accessibles uniquement grâce à leur position. Encoding

37 Struct Type (XML Schéma) Valeur Xavier 30 Encoding

38 Array Le type est directement précisé grâce aux balises SOAP: 3 4 Encoding

39 SOAP avec HTTP SOAP peut être facilement porté sur Http. Convient au mode Request/Response de Http Le message SOAP est mis dans une requête POST avec un content-type text/xml Définition dun header http : SOAPAction Utilisation des codes http (2xx, 4xx, 5xx) Convention

40 SOAP avec HTTP POST /StockQuote HTTP/1.1 Host: Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" DIS Convention

41 SOAP avec HTTP HTTP/ Internal Server Error Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAP-ENV:Server Server Error Convention

42 SOAP & RPC Pour faire un RPC SOAP, il faut: LURI de lobjet cible Le nom de la méthode Les paramètres de la méthode SOAP sappuie sur le protocole den dessous (http) pour lURI de lobjet. Le nom de la méthode et les paramètres sont encodés dans le message SOAP sous forme de structure. Convention

43 SOAP & Document Lapproche RPC est de moins en moins préconisée On préfère maintenant utiliser lapproche Document qui consiste à envoyer des document XML dans les messages SOAP sans convention particulière. Convention

44 A vous de jouer ! Comparer SOAP par rapport à CORBA ? IDL ? IIOP ? SOAP est-il dédié uniquement au RPC ? Si non, à quoi dautre ? Quel est lintérêt de porter SOAP sur dautres protocoles ?

45 WSDL Web Services Description Language Version 1.1

46 Présentation Une description WSDL : 1. Décrit le type dun service web (méthodes, types des paramètres) Cette description peut être comparée à la description IDL CORBA, elle peut servir à générer automatiquement des amorces. 2. Décrit les aspects techniques dimplantation dun service web (quel est le protocole utilisé, quel est le ladresse du service) Cette description sert à se connecter concrètement à un service web.

47 Balises Une description WSDL est un document XML qui commence par la balise definition et contient les balises suivantes : types: cette balise décrit les types utilisés message: cette balise décrit la structure dun message échangé portType: cette balise décrit un ensemble dopérations (interface dun service web) operation: cette balise décrit une opération réalisée par le service web. Une opération reçoit des messages et envois des messages. binding: cette balise décrit le lien entre un protocole (http) et un portType. service: cette balise décrit un service comme un ensemble de ports. port: cette balise décrit un port au travers duquel il est possible daccéder à un ensemble dopérations. Un port référence un Binding

48 Balises (avec XML Spy) Utilisé pour sectionner des descriptions WSDL

49 types Description en utilisant XML Schema.

50 message Les messages sont envoyés entre deux interlocuteurs (ex: une opération reçoit des message et envoie des messages. Un message est composé de plusieurs part Deux façons de définir des part Soit une part est un élément de type simple Soit une part est un élément XML dont le type est défini dans un XML Schema

51 message Part de type simple Part qui utilise un XML Schema Défini dans un XML Schema

52 portType Un portType permet didentifier (nommer) de manière abstraite un ensemble dopérations. … …

53 operation WSDL définit 4 types dopération : One-Way : lorsque les opérations reçoivent des messages mais nen nenvoient pas Request-response : lorsque les opérations reçoivent des messages puis renvoient des messages Solicit-response : lorsque les opérations envoient des messages puis en reçoivent Notification : lorsque les opérations envoient des messages mais nen reçoivent pas

54 operation Quelque soit le type dopération la définition est sensiblement la même : Une opération : Reçoit des messages : Envoie des messages : ou La présence et lordre des input/outputs/fault dépendent du type de lopération.

55 operation * *

56 binding WSDL permet de lier une description abstraite (portType) à un protocole. Chacune des opérations dun portType pourra être liée de manière différente. Le protocole SOAP est un des protocole qui peut être utilisé. Dautres binding sont standardisés par WSDL : HTTP et MIME.

57 binding Un Binding : peut être identifié par un nom : name identifie le portType : type

58 binding SOAP Pour préciser que le binding est de type SOAP, il faut inclure la balise suivante : Transport définit le type de transport pour utiliser SOAP/HTTP Style définit la façon dont sont créer les messages SOAP de toutes les opérations rpc : Encodage RPC défini par SOAP RPC document : Encodage sous forme délément XML

59 binding SOAP Pour chaque opération du portType : il faut préciser lURI de lopération : soapAction Il est aussi possible de repréciser la façon dont sont créés les messages SOAP : style Pour chaque message de chaque opération, il faut définir comment sera créé le message SOAP

60 Exemple

61 service Un service est un ensemble de ports Un port a un portType Dans le cadre de SOAP, un port à une adresse (qui correspond à ladresse http)

62 A vous de jouer Comparer WSDL à IDL ? Expliquer les dépendances entre SOAP et WSDL ? Quel est le point le plus délicat lors dun passage à une implémentation ?

63 UDDI Universal Description Discovery and Integration Version 3.0

64 Introduction Web services are meaningful only if potential users may find information sufficient to permit their execution. The focus of Universal Description Discovery & Integration (UDDI) is the definition of a set of services supporting the description and discovery of (1) businesses, organizations, and other Web services providers, (2) the Web services they make available, and (3) the technical interfaces which may be used to access those services. Based on a common set of industry standards, including HTTP, XML, XML Schema, and SOAP, UDDI provides an interoperable, foundational infrastructure for a Web services-based software environment for both publicly available services and services only exposed internally within an organization.

65 Rôles Un référentiel UDDI joue 3 rôles : Pages blanches : le référentiel comporte des informations sur les fournisseurs de services. Pages Jaunes : le référentiel comporte des critères de catégorisation de services. Pages vertes : le référentiel comporte des informations techniques (WSDL). Les services dun référentiel UDDI sont des Web Services !

66 Exemple Le référentiel UDDI de microsoft est accessible à Il est possible de parcourir ce référentiel à laide dun navigateur pour : Rechercher un service. Ajouter un service au référentiel.

67 Exemple : search Façons de rechercher un service. Nous allons rechercher les Web Services de la société Amazon.

68 Exemple : search AmazonBusiness propose un Web Service Ce Web Service sappelle GetBookPrice

69 Référentiels Type Public : Microsoft : uddi.microsoft.com IBM : HP : uddi.hp.com SAP : udditest.sap.com Privé ou dentreprise Accès Défini en WSDL JAXR définit une API pour naviguer dans un référentiel UDDI

70 A vous de jouer Quel est la place dUDDI dans les Web Services ? Comparer les référentiels UDDI avec les moteurs de recherche style Yahoo et Google ? Quel est lintérêt des référentiels UDDI dentreprise ?

71 Axis Version 1.3

72 Introduction Implantation OpenSource de SOAP1.1 Java Communauté Apache Apache, Tomcat, Xerces, Struts, Cocoon Support Server Servlet qui reçoit et envoie des messages SOAP HTTP (pont SMTP) Support Client API pour envoyer des messages SOAP sur HTTP et SMTP

73 Servlet (Notion) Une Servlet est un objet Java qui fonctionne en mode requête/reponse Une Servlet http est une serlvet qui est capable de traiter des requête http et qui est capable de renvoyer des réponses http. Un moteur (container) de Servlet est une application qui reçoit des requêtes http et qui les transmet aux Servlet Tomcat (couplage avec Apache), Websphere (couplage avec IBM http Server), Weblogic …

74 Architecture (Serveur) Axis fournit une Servlet (AxisServlet) qui reçoit des message SOAP sur http et qui transforme lappel en un appel de méthode classique Java Développer un Web Service revient alors à développer un objet Java et à enregistrer ses méthodes auprès de la Servlet AxisServlet. Les clients envoient alors leurs messages SOAP sur http à AxisServlet. Pour SMTP les clients envoient leurs messages par mail à un démon. Le démon reçoit ces messages et les renvoie sur http à AxisServlet.

75 Architecture (Serveur) JVM Moteur de Servlet AxisServlet La Servlet AxisServlet reçoit et renvoie les messages SOAP et transmet aux objets Java correspondant Les Objets Java effectuent les services. Ils sont des objets Java classiques. Objets Java et Servlet sont dans la même JVM (pas de répartition). SOAP/HTTP Le client envoie des messages SOAP/HTTP

76 Développement dun Web Service Développer une classe Java public class MyFirstWebService { public final String BOOK1 = "La méthode"; public final String BOOK2 = "Le Macroscope"; public int getPrice(String bookTitle) { if (bookTitle.compareTo(BOOK1)==0) { return 15; } else if (bookTitle.compareTo(BOOK2)==0) { return 20; } else return 300; }

77 Déploiement un Web Service Elaborer un descripteur SOAP de votre classe Exporter le descripteur java org.apache.axis.client.AdminClient deploy.wsdd

78 Déploiement un Web Service Le fichier jws sont les équivalents des jsp pour les Web Service. Construction dun fichier jws à partir dune classe java: Copy MyFirstWebService.java /…/MyFirstWebService.jws

79 Le Client à partir du WSDL Génération dun ensemble de classes facilitant lenvoi de message SOAP: java org.apache.axis.wsdl.WSDL2Java file.wsdl Classes générées: Pour les Type Pour les PortType Pour les Binding Pour les Port Pour les Service

80 Le Client à partir du WSDL Construction du client : Instancier un Service Obtenir un Port à partir du Service Utiliser les méthodes du Port Construire les paramètres en fonction des Types

81 Obtention du WSDL de lexemple Sous axis, dans un navigateur, mettre ladresse du Web Service suivie de ?WSDL tWebService.jws?WSDL

82 Les classes générées à partir de lexemple MyFirstWebService.java MyFirstWebServiceService.java MyFirstWebServiceLocator.java MyFirstWebServiceBindingStub.java

83 Un exemple de Client public class Client { public static void main(String[] args) { try { MyFirstWebServiceService service = new MyFirstWebServiceServiceLocator(); MyFirstWebService port = service.getMyFirstWebService(); String st = ""; int price = port.getPrice(st); System.out.println("Le prix est : "+price); } catch (Exception ex) { ex.printStackTrace(); }

84 A vous de jouer Comparer cette approche avec CORBA ? A quoi sert le WSDL ? Comment se fait le mapping avec un langage de programmation ?

85 Conclusion Web Service : Un nouveau Buzz Word ?

86 Conclusion Avantages : Des standards simples (SOAP, WSDL, UDDI) Multi Protocole / Multi OS / Multi Langage Paradigme de Service Des outils (éditeurs et moteurs) Inconvénients : Typage (pas de consensus) Performance Jeunesse (Sécurité, Transaction,…)

87 Références SOAP : WSDL : http://www.w3.org/TR/2001/NOTE-wsdl UDDI : Apache SOAP :


Télécharger ppt "Web Services Xavier Blanc Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion."

Présentations similaires


Annonces Google