[Users] Bonnes pratiques de l'integration des services dans Petals

Vincent Zurczak [via Petals ESB] ml-node+3147457-1411286648-385891 at n3.nabble.com
Thu Jul 7 10:01:16 CEST 2011



Bonjour.

Commençons par ce qui fâche. 
Il n'y a pas d'intégration mâture de REST avec Petals. La principale raison
est que Petals s'appuie sur le paradigme Web Service, que ce soit en interne
comme sur la description des services avec WSDL. A la limite, on a déjà
évoqué dans le cadre de réflexion des évolutions de la plateforme pour
fonctionner sur un mode REST. Mais cela ne change pas le problème de fond :
REST et SOAP ne travaillent pas facilement ensemble. Donc, si la plateforme
devait fonctionner sur un mode REST, on aurait le problème à l'envers pour
SOAP.

Autrement dit, le seul moyen d'intégrer des services REST dans Petals est de
développer un composant (Petals) qui va gérer les interactions entre des
services REST et l'ESB. Le composant SOAP actuel possède un mode REST, mais
à ma connaissance, il n'est pas mâture. Je vous conseillerais donc de
développer votre propre composant. Le composant en question sera un binding
component (lien entre le bus et le monde extérieur). La difficulté à
développer un BC, ce n'est pas simplement supporter un protocole de
communication (contrairement par exemple à un binding SCA). C'est aussi et
surtout gérer les accès à des ressources externes et internes <u>sur un mode
(Web) service</u>.

Cela signifie que...
+ Pour invoquer un service REST depuis le bus, un consommateur lui enverra
un message XML, conforme au WSDL du composant / de la SU pour REST. Ce
message sera transformé en une requête à passer dans l'URL d'invocation
REST. Cela correspond à un mode *provider*. On va créer / fournir un service
dans Petals qui servira de point de sortie vers le service REST.

+ Pour qu'un service REST puisse invoquer un service Petals, il faut que
l'invocation se fasse sur le BC REST, parser la requête et construire un
message XML à envoyer au service à consommer. Attention, il faudra que le
XML envoyé soit conforme au WSDL du service à invoquer, ce qui est loin
d'être facile. Il y a plusieurs solutions possibles pour résoudre ce
problème, aucune n'étant idéale. Ici, on fonctionnera donc en mode
*consumes*, on va invoquer un service du bus. Et pour écouter les requêtes
HTTP, il faudra embarquer un serveur Web (genre Jetty) dans le composant.


Après...
Doit-on créer des SU ou utiliser un service natif au composant (dés
l'installation, on a un service dans la registry) ? C'est au choix du
développeur, les 2 sont possibles dans Petals. La bonne pratique, c'est
plutôt les SU, mais plutôt parce qu'au niveau du composant, on veut
mutualiser certains objets. Dans le cas de REST toutefois, je ne sais pas si
vaut la peine. Mettre l'URL du service dans le message ne serait pas plus
coûteux. En revanche, sur le mode consumes, je pense qu'il vaut mieux créer
des SU pour préciser les services à invoquer. 


Enfin, la seule contrainte pour pouvoir orchestrer du REST avec BPEL, c'est
de décrire le service Petals (qui masque le service REST) avec un WSDL.
Après, il faut que ce WSDL ait une structure "potable". Celle-ci peut soit
être générique (la même pour tout service REST), soit dépendre du service en
question (il va falloir retoucher le WSDL à la main). Là-encore, plusieurs
solutions sont possibles. EIP aura le même problème, puisqu'il manipule du
XML. La solution la plus légère (et la plus brute) aussi serait peut-être
d'avoir un BC simpliste pour REST et de le coupler à du POJO. Mais niveau
réutilisabilité du service REST, cela laissera à désirer. A chaque
réutilisation du service REST, il est probable qu'il faudra refaire un POJO.
Ce sera donc plus de l'intégration que de la SOA.



-----
&laquo; Petals M.D. &raquo;
_______________________________________________
If you reply to this email, your message will be added to the discussion below:
http://forum.petalslink.com/Bonnes-pratiques-de-l-integration-des-services-dans-Petals-tp3144256p3147457.html
To start a new topic under Users (get help, provide help), email ml-node+2681628-1333396262-385891 at n3.nabble.com
To unsubscribe from Users (get help, provide help), visit http://forum.petalslink.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=2681628&code=dXNlcnNAZm9ydW0ucGV0YWxzbGluay5vcmd8MjY4MTYyOHwtOTE3MDU0NjU4
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://forum-list.petalslink.org/pipermail/users/attachments/20110707/566a9a61/attachment.htm>


More information about the Users mailing list