article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
T echnologie<br />
Dans l’exemple précé<strong>de</strong>nt, la métho<strong>de</strong><br />
AnnulerComman<strong>de</strong> n’a qu’un seul paramètre et<br />
celui-ci est d’un type simple. Dans la réalité,<br />
les informations échangées sont souvent plus<br />
nombreuses et plus complexes. Pour répondre<br />
à ce besoin, WCF fournit les attributs<br />
[<strong>Data</strong>Contract] et [<strong>Data</strong>Member] qui permettent<br />
<strong>de</strong> construire <strong>de</strong>s messages avec une structure<br />
plus complexe. Là encore, il n’y a pas d’adhérences<br />
entre la classe et le framework WCF<br />
(à l’exception <strong>de</strong>s attributs).<br />
Exemple d’utilisation d’un <strong>Data</strong>Contract<br />
simple :<br />
Dans les exemples ci-<strong>de</strong>ssus, il n’est fait mention<br />
à aucun moment du protocole <strong>de</strong> transport<br />
utilisé pour appeler le service. L’opération<br />
qui consiste à « accrocher » l’implémentation<br />
d’un service à un protocole <strong>de</strong> transport s’appelle<br />
le « binding ». Cette opération peut-être<br />
réalisée <strong>de</strong> <strong>de</strong>ux façons :<br />
- par l’intermédiaire d’un fichier <strong>de</strong> configuration,<br />
- <strong>de</strong> façon programmatique dans le co<strong>de</strong> <strong>de</strong><br />
l’application.<br />
La première solution est <strong>de</strong> loin la plus recommandable.<br />
Les protocoles supportés à ce jour<br />
par WCF sont : HTTP, Named pipes, TCP et<br />
MSMQ.<br />
Une fois que le contrat <strong>de</strong> service est écrit, que<br />
l’implémentation est terminée et que l’on a<br />
décrit dans un fichier <strong>de</strong> configuration les<br />
règles <strong>de</strong> binding, il faut exécuter le service.<br />
Rappelons qu’un service est un processus serveur<br />
à l’écoute <strong>de</strong>s requêtes <strong>de</strong>s clients. Pour<br />
ce faire, WCF supporte <strong>de</strong>ux mo<strong>de</strong>s d’exécution<br />
différents :<br />
- le « self-hosting » permet <strong>de</strong> lancer son<br />
propre serveur WCF à l’intérieur d’un processus<br />
Windows. Les services doivent être démarrés<br />
manuellement par <strong>de</strong>s appels à la classe<br />
ServiceHost. Ce mo<strong>de</strong> est idéal lorsque les<br />
services ne sont pas consommés par <strong>de</strong>s tiers<br />
extérieurs au programme<br />
- le « web-hosting<br />
» repose sur<br />
l’utilisation du<br />
serveur Web IIS<br />
pour héberger les<br />
services WCF. Il<br />
offre le démarrage<br />
automatique<br />
<strong>de</strong>s services.<br />
Un troisième<br />
mo<strong>de</strong> d’exécution<br />
est en cours <strong>de</strong> préparation, il concerne Biztalk<br />
Server (le moteur EAI <strong>de</strong> Microsoft) pour lequel<br />
un connecteur WCF est prévu.<br />
WCF offre également un support pour faire participer<br />
les services à <strong>de</strong>s transactions. Là aussi,<br />
la mise en œuvre passe par l’utilisation d’annotations.<br />
SCA<br />
SCA (Service Component Architecture) est une<br />
initiative conjointe d’IBM, BEA, Oracle et Iona<br />
pour mettre au point un framework <strong>de</strong> communication<br />
unifié concurrent <strong>de</strong> WCF. Ce projet<br />
est beaucoup plus récent puisqu’il n’a été<br />
dévoilé que fin 2005. Contrairement à WCF qui<br />
est totalement dédié à la plate-forme .NET,<br />
SCA se veut plus ouvert et adresse à la fois les<br />
plates-formes J2EE, C++, voire PHP.<br />
Même si la terminologie utilisée dans SCA est<br />
différente, il repose sur les mêmes principes<br />
que WCF, en particulier :<br />
- l’utilisation d’annotations Java (l’équivalent<br />
<strong>de</strong>s attributs <strong>de</strong> .NET),<br />
- le co<strong>de</strong> reste indépendant du framework<br />
(hors utilisation <strong>de</strong> SDO),<br />
- le binding se fait <strong>de</strong> façon déclarative à l’ai<strong>de</strong><br />
<strong>de</strong> fichiers XML,<br />
- la compatibilité avec SOAP et les protocoles<br />
WS-XXX,<br />
- le support <strong>de</strong>s échanges synchrones et asynchrones.<br />
Il existe néanmoins quelques différences<br />
importantes :<br />
- SCA va plus loin que WCF et propose <strong>de</strong>s<br />
solutions pour assembler <strong>de</strong>s composants<br />
- il n’y a pas d’équivalent <strong>de</strong> l’attribut<br />
[<strong>Data</strong>Contract] dans SCA. A la place, c’est SDO<br />
qui est proposé pour échanger <strong>de</strong>s structures<br />
<strong>de</strong> données complexes. Ce choix est difficilement<br />
justifiable car il induit un couplage fort<br />
Programmez n°85 50 avril 2006<br />
avec le framework et entraînera sans doute<br />
<strong>de</strong>s problèmes <strong>de</strong> compatibilité avec <strong>de</strong>s<br />
clients non-SCA.<br />
- SCA est prévu pour s’adapter sur différentes<br />
technologies existantes (classes Java, EJB …)<br />
alors que WCF est cantonné au mon<strong>de</strong> .NET.<br />
La date <strong>de</strong> disponibilité <strong>de</strong>s premières implémentations<br />
<strong>de</strong> SCA n’est pas encore connue.<br />
Enfin, on remarquera l’absence notable <strong>de</strong> Sun<br />
qui travaille sur son propre framework avec JBI<br />
(Java Business Integration).<br />
Conclusion<br />
Les nouveaux frameworks <strong>de</strong> communication<br />
vont profondément changer les pratiques <strong>de</strong><br />
programmation en simplifiant le travail <strong>de</strong>s<br />
développeurs. En effet, le co<strong>de</strong> <strong>de</strong>s services<br />
développés va <strong>de</strong>venir indépendant <strong>de</strong> la<br />
façon dont le service est consommé (http, JMS,<br />
MSMQ …). C’est une véritable révolution dans<br />
le développement d’applications distribuées.<br />
Les <strong>de</strong>ux technologies sont multi langages<br />
(WCF supporte l’ensemble <strong>de</strong>s langages <strong>de</strong> la<br />
plate-forme .NET), et SCA est en plus multiplate-forme<br />
(J2EE, C++ …). Ce <strong>de</strong>rnier point,<br />
combiné au fait que SCA est conçu par un<br />
consortium d’éditeurs laisse présager <strong>de</strong>s<br />
temps <strong>de</strong> mise au point assez longs.<br />
Pour l’instant, Microsoft dispose d’une longueur<br />
d’avance, en attendant les premières<br />
implémentations <strong>de</strong> SCA ….<br />
Aller plus loin<br />
Pour en savoir plus sur SCA, consulter le document<br />
« SCA : Building your first Application –<br />
Simplified BigBanking », disponible sur le site<br />
<strong>de</strong> BEA.<br />
http://<strong>de</strong>v2<strong>de</strong>v.bea.com/2005/11/SCA_BuildingY<br />
ourFirstApplication_V09.pdf<br />
■ Médéric Morel mail@me<strong>de</strong>ric.net