Architecture soa (architecture orientée services)( Télécharger le fichier original )par Virginie ELIAS CNAM Nantes - Pays de la Loire - Ingénieur en Informatique 2009 |
2.6.4.3 Le WsdlLes WSDL constituent les interfaces des services. Ils découlent naturellement des diagrammes d'Activités. Les activités peuvent être stéréotypées « Service » ou « Interface » dans le cadre d'une architecture SOA. Une interface fait appel à un service, mais un service n'est pas forcément exposé et donc objet d'une interface (exemple : service interne tels qu'un service de transport). Cibler les WSDL revient donc à identifier les besoins d'interface. Illustration 121 : Exposition d'un service pour le consommateur Ici, le consommateur dispose d'une interface d'accès au service d'extraction de données qui constitue un CRUD. Cette interface propose toutes les opérations disponibles pour cet accès. Le fournisseur quant à lui, détecte l'appel et exécute le CRUD correspondant à l'opération choisie (extraction de tiers par exemple). Illustration 122 : Interface entre le composant de détection de fichier et le composant de transformation Ici, l'ESB doit combiner l'action de deux composants : le premier composant détecte la présence d'un message, et le second le transforme. Ce couple est plus complexe puisqu'il renferme une transformation et donc une structure source et une structure cible différente. Mais il renferme aussi une interface car : « composant A » assemblé « composant B » => une interface. Pour modéliser une interface de service, il faut donc d'abord s'intéresser aux services eux-mêmes. Modélisation d'un WSDL pour un service CRUDLes CRUD, ou services de données, détiennent les règles de gestion propres à un ou plusieurs objets métier (Tiers, Adresse, Solde ...) pour lequel ils détiennent la responsabilité d'accès. Ils renferment les opérations qui vont permettre de lire, de supprimer, de modifier ou de créer des données, mais également d'effectuer d'autres opérations plus complexe (recherches, mise en forme, agrégations etc ...). A ce stade il faut s'assurer que les CRUD soient les plus standardisés possible par rapport au Système d'information, afin de ne pas reproduire les travers connus au niveau des silos de données (la multiplicité des objets plus ou moins redondants est un frein à l'agilité). Illustration 123 : Exemple de modelisation d'un service de données ou CRUD Il a été décidé que les opérations de préparation (PreparerAdresse, preparerInfo_Generales, PreparerRIB) soient réunies dans un seul service d'extraction qui, enrichi de paramètres d'entrée, pourra tantôt préparer les adresses, tantôt les RIB ou les Information générales d'un tiers. Ce service fait l'objet d'une fiche comme tout autre service afin de constituer le catalogue des services disponibles.
Magicdraw propose dans sa version entreprise un diagramme WSDL qui, à condition d'être familiarisé avec cette famille de diagramme, permet de constituer l'ossature des WSDL. Ainsi, comme les autres diagrammes du même outil, il est possible générer le code correspondant. Illustration 124 : Diagramme WSDL du CRUD d'extraction réalisé sous MagicDraw <?xml version="1.0" encoding="UTF-8"?> <definitions name="EXTRACTION" targetNamespace="http://extraction-table/EXTRACTION.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://extraction-table/EXTRACTION.wsdl" .../... <message name="extractionTableInput"> <part name="param0" type="xsd:string"/> <part name="param1" type="xsd:string"/> <part name="param2" type="xsd:string"/> <part name="param3" type="xsd:string"/> <part name="param4" type="xsd:string"/> <part name="param5" type="xsd:string"/> <part name="param6" type="xsd:string"/> <part name="param7" type="xsd:string"/> .../... <operation name="extractionTable"> <soap:operation soapAction="urn:extraction_table-EXTRACTION/extractionTable"/> <input> <soap:body use="encoded" encodingStyle= http://schemas.xmlsoap.org/soap/encoding/ namespace="urn:extraction_table-EXTRACTION"/> </input> <output> <soap:body use="encoded" encodingStyle="http://s hemas.xmlsoap.org/soap/encoding/" namespae="urn:extraction_table-EXTRACTION"/> </output> </operation> </binding> .../... </definitions> Illustration 125 : Code WSDL du CRUD d'extraction Cette modélisation de CRUD a été testée jusqu'à la phase de déploiement. Pour ce faire, un package Oracle « EXTRACTION » en Version 9i a été réalisé et exposé comme service grâce au module OC4J (Oracle Componant for J2ee) qui construit un WSDL à partir du package et le déploie. Il est intéressant de comparer le WSDL constitué à partir de la modélisation UML avec le WSDL généré par le module OC4J. Des différences existent. Elles se situent par exemple au niveau de :
|
|