Clever Age a publié dans sa newsletter une excellente et didactique synthèse sur l’interopérabilité J2EE, .NET et PHP. J’en retiens les leçons suivantes :
- Pour l’intéropérabilité, le couplage lâche c’est LE principe qu’il faut adopter
- Les services web basés sur la pile de technologies liées à SOAP, c’est pas mal pour faire du couplage lâche
- Mais les services web basés sur la technologie XML-RPC ou les services Web de style REST (quelle que soit la techno utilisée), c’est encore mieux car
- plus simple
- une pratique plus répandue
- ça apporte moins de contraintes techniques inutiles (infrastructure, compétences, …)
J’ajouterais que les services Web de style REST offrent un couplage non seulement encore plus lâche (modularité du S.I.) mais également encore plus tardif : inutile, au moment de la conception de vos services Web, de faire des hypothèses sur l’usage qui en sera fait dans le futur, le style REST vous garantit leur intégrabilité future.
La différence essentielle entre le style REST et le style RPC (XML-RPC ou pile SOAP), c’est que le style REST permet l’intégration spontanée (non planifiée centralement) de services alors que la pile SOAP suppose une planification plus centralisée des projets d’intégrations de services à travers la négociation et la spécification de contrats entre fournisseurs et consommateurs de services (et qui dit contrat dit “une certe forme de codification” et donc une certaine perte de flexibilité pour le futur).
Ma conclusion : l’approche REST est plus adaptée aux organisations qui sont elles-mêmes faiblement couplées. Autrement dit : pour faire du SOA sur SOAP, il faut réunir toutes les parties prenantes et établir des contrats de services spécifiques et peu évolutifs ; conséquence : faites du SOAP dans une organisation non centralisée et vous vous retrouverez dans une situation similaire à celle dont se lamentait Reinout Van Rees, une situation qui conduit à l’échec ou au moins au gaspillage d’efforts. Posez-vous plutôt la question :
- Vous vivez dans une cathédrale ? Alors vous pouvez vous contenter du couplage relativement faible offert par SOAP mais vous vous encombrez toute de même de contraintes inutiles
- Vous vivez dans un bazar (“bordel organisé” disait Fred ?) ? Alors il vous faut du couplage extrêmement lâche et tardif. Et l’interopérabilité des composants du bazar passe alors par la simplicité et le caractère “future-proof” de REST.
Au bout d’un moment, j’ai l’impression de me répéter à force de ressasser les mêmes choses sur REST. Mais j’espère que d’un billet à l’autre, mes idées sur le sujet gagnent en clarté (au moins dans ma tête). Et les vôtres ?