WS*



 Introduction



En 2002, vous avez fait des services web; en 2003, vous ferez du "Grid Computing" ! Si jamais ce n'était pas le cas, ce tutorial est pour vous. Il permet, à travers un exemple simple et concret, de mieux comprendre ce que sont les services web et comment vous pouvez les utiliser.







Avec J2EE 1.4, l'implémentation en java des services web promet de se standardiser. D'ici là, tous les acteurs de ce marchés proposent leur solution, qu'ils soient des éditeurs reconnus comme Microsoft, IBM, BEA, Oracle, ou des acteurs de l'open source comme Apache... Ce tutorial prend le point de vue d'Oracle, pour diverses bonnes et mauvaises raisons :
  • l'approche est simple, complète et représentative
  • les composants facilement accessibles via OTN, sans limite de temps
  • je la connais mieux que les autres !

Qu'est-ce qu'un service web ?

Première question et premières difficultés; les services web ne sont pas un standard, mais plutôt un ensemble de standards issus d'organismes divers comme le W3C, OASIS, WS-I. Ces standards sont complémentaires mais aussi et très souvent contradictoires; aujourd'hui, les standards les plus aboutis et les plus communément admis comme formant la base des services web sont SOAP, WSDL et UDDI. Cependant, la messe n'est pas encore dite puisque des standards comme ebXML Registry ou WS-Inspection complètent et contre-disent UDDI.

SOAP, WSDL et UDDI

  • SOAP (Simple Object Access Protocol) est un protocol basé sur XML qui offre la possibilité d'exécuter une fonction à distance. L'intérêt d'un tel protocol est qu'il est indépendant du protocol sous-jacent (HTTP, Queue JMS, SMTP...) et indépendant du langage qui implémente la fonction (C#, Java, PL/SQL, Cobol...)
  • WSDL (Web Service Description Language) est un langage XML de description des fonctions implémentées en SOAP. Son intérêt et qu'il contient tous les éléments (Nom des fonctions, description des paramètres, comment y accéder) des services Web. Ce langage est indépendant du langage d'implémentation de la fonction.
  • UDDI (Universal Description, Discovery and Integration) est un standard qui permet de constituer un référentiel de tous les services Web de l'entreprise. Ce standard définit aussi bien l'accès que le classement des services web en son sein

Bénéfices et Limites

Vous l'aurez compris, bien malin, celui qui peut dire, ce que sont les services web et quand les utiliser. En revanche, il est assez simple de trouver des applications concrètes dès aujourd'hui, ainsi que d'apercevoir rapidement les limites du modèle associé. Les services web ont le bon goût :
  • d'être indépendant et de permettre l'inter-opérabilité des langages de programmation : Java, C#, PL/SQL, Cobol...
  • d'être indépendant des protocoles de dialogue (HTTP, Queue JMS, SMTP...)
  • de fournir un langage d'auto-description (WSDL), qui permet de manière très simple de créer des composants utilisateur
  • de permettre de mettre en place un référentiel commun à l'échelle de l'entreprise, ou plus vaste. Cela permet de créer des composants réutilisables
En revanche de nombreuses questions restent pour l'instant en suspend. Ces questions sont généralement liées au fait que le modèle des services web est distribué, que le nombre de standard sur le sujet est exponentiel et en court de maturation et qu'ils utilisent des technologies différentes en fonction de leur implémentation : un web service HTTP, ne permet pas de faire la même chose qu'un web service qui utiliserait IBM MQSeries. Par exemple :
  • Comment sécuriser une infrastructure basée sur des services web ? Dans ce tutorial, nous répondrons en parti à cette question en s'appuyant sur les mécanismes du protocol HTTP (SSL, Basic Authentification), mais comment feriez-vous sur avec un protocol de Queuing ou un mixte de protocols ?
  • Comment garantir les performances, la robustesse, le failover des services ?
  • Comment administrer les web services ?
  • Comment permettre à plusieurs acteurs utilisant pour communiquer des web services de garantir qu'ils respecteront des règles globales (Workflow, Orchestration...)
  • Est-ce qu'un "Client" pour un web service développé sur SAP et la même chose qu'un client pour un web service Oracle ou Siebel ?
Il n'existe pas de réponse universelle pour l'instant à ces questions ! Cela n'enlève rien à l'intérêt des services web : si vous développez une application .Net par exemple qui doit accéder à des composants métiers J2EE.