Si vous vous intéressez à WCF, à .NET, à JAVA et à l’interopérabilité des services Web, alors vous avez très certainement entendu parler du projet TANGO (https://wsit.dev.java.net/)

d'interopérabilité des services de Web pour Java et de WCF, permettant d’adresser des problématiques telles que la transmission fiable de messages, les transactions atomiques, la sécurité et la confiance, grâce à l’implémentation des spécifications WS-*.

 

Les Workshops PRESTO nous ont d’ailleurs permis de valider le haut degré d’interopérabilité entre les services WCF et les services Web implémentés par Sun. L’un des points concernés par ces tests était la validation du bon fonctionnement des échanges avec différents types d’encodage de message (essentiellement texte/XML et MTOM).

 

Pour rappel, WCF se décompose d'une manière ordonnée en plusieurs couches de communication qui peuvent être adressées par l’API de binding. L’encodage des messages est assuré par l’une de ces couches. Celle-ci supporte par défaut plusieurs types de format :

·         Le format texte/XML permet d’offrir le maximum d’interopérabilité.

·         La spécification MTOM (Message Transmission Optimization Mechanism) est une recommandation de W3C qui dépend d'une autre recommandation de W3C, XOP (XML-binary Optimized Packaging), pour l'empaquetage des données binaires dans des messages SOAP sans encodage base64. MTOM permet ainsi une optimisation significative des échanges et de la gestion des pièces jointes des messages SOAP en ré-encodant à la volée certaines parties du message tout en conservant la structure XML. Aujourd’hui MTOM est implémenté par de nombreux éditeurs, dont Sun, ce qui nous a permis de conduire ces tests MTOM avec succès.

·         Enfin, un format propriétaire WCF, plus performant, optimisé pour les échanges de message en mémoire ou entres clients ou services liés à la plateforme Microsoft.

 

Cette troisième option n’est pas l’unique démarche du marché pour proposer une solution d’optimisation des échanges entre services Web plus performante que MTOM. Citons notamment l’initiative de Sun qui propose une spécification de format d’échange optimisé : FI (« Fast Infoset » - http://idealliance.org/proceedings/xtech05/papers/04-01-01/).

 

Conceptuellement, la spécification FI est assez semblable à MTOM en ce qui concerne la gestion des données binaires, mais vise avant tout à optimiser le parsing et la sérialisation. FI propose un encodage binaire spécifique d’infoset XML, spécifié sur la base d’un schéma ASN.1 tandis que MTOM et XOP permettent d'accéder à un infoset compatible base64 en utilisant une sérialisation Optimized MIME Multipart pour gérer les pièces jointes binaires. Au même titre que l’encodage WCF binaire, l’encodage FI devrait donc offrir de meilleurs temps d’exécution que le l’encodage MTOM.

 

WCF ne supporte pas nativement ce format proposé par Sun. Mais l’extensibilité de WCF permet aisément d’élargir son horizon…

 

Ainsi, Gerald Beuchelt (http://blog.beuchelt.com), architecte Web Services chez Sun, a effectué un portage .NET de l’implémentation opensource de la spécification FI pour un client WCF, baptisée FIFI (Fast Infoset For Indigo).

 

Avec cette solution, tout client WCF peut interopérer avec le serveur d’application Java de Sun (version 9.0 Glassfish), dans un mode d’échange optimisé. Pour se faire, il suffit de configurer le client WCF par un simple changement de ligne le CustomBinding associé au endpoint du service JAVA ciblé…

 

D’après Gerald Beuchelt, suivant l’intérêt suscité par cette implémentation, celle-ci pourrait également être mise à disposition en opensource.