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 />
WCF et SCA, les nouveaux frameworks<br />
<strong>de</strong> communication<br />
Les applications informatiques mo<strong>de</strong>rnes sont <strong>de</strong> plus en plus appelées à communiquer avec<br />
<strong>de</strong>s composants extérieurs (ERP,EAI,autres applications).Les échanges s’effectuent le plus souvent<br />
dans les <strong>de</strong>ux sens : consommation <strong>de</strong> services à l’extérieur et mise à disposition <strong>de</strong> services<br />
pour <strong>de</strong>s tiers. Cette situation a conduit à l’émergence d’architectures dites <strong>de</strong> services,<br />
appelées SOA (Service Oriented Architectures),qui sont au cœur <strong>de</strong>s préoccupations <strong>de</strong>s architectes<br />
et <strong>de</strong>s éditeurs <strong>de</strong>puis plusieurs années.<br />
Sur le plan technique, les protocoles <strong>de</strong><br />
communication disponibles ont atteint<br />
un bon niveau <strong>de</strong> maturité (et généralement<br />
d’interopérabilité). Ils peuvent être classés<br />
en différentes catégories : synchrones (DCOM,<br />
RMI, IIOP…), asynchrones (JMS, MSMQ, Tibco…),<br />
transactionnels ou non, sécurisés ou pas.<br />
L’émergence du protocole SOAP et <strong>de</strong>s normes<br />
WS-XXX a permis la normalisation du contenu<br />
<strong>de</strong>s messages échangés et réglé définitivement<br />
les problèmes <strong>de</strong> marshalling qui compliquaient<br />
les échanges entre plates-formes hétérogènes.<br />
Il subsiste néanmoins un problème <strong>de</strong> taille :<br />
l’absence <strong>de</strong> modèle <strong>de</strong> programmation unifié.<br />
En effet, la mise à disposition et la consommation<br />
<strong>de</strong> services sont jalonnées <strong>de</strong> difficultés<br />
techniques liées aux technologies et aux<br />
toolkits utilisés. L’objectif <strong>de</strong>s nouveaux frameworks<br />
<strong>de</strong> communication est précisément d’encapsuler<br />
l’accès à « la plomberie » (les<br />
couches <strong>de</strong> transport) et d’offrir <strong>de</strong>s interfaces<br />
<strong>de</strong> programmation unifiées disposant d’un<br />
meilleur niveau d’abstraction.<br />
La notion <strong>de</strong> service<br />
Avant d’explorer les <strong>de</strong>ux principaux frameworks<br />
<strong>de</strong> communication, rappelons brièvement<br />
quelques définitions et propriétés.<br />
Le service se différencie <strong>de</strong>s objets (Java, C++,<br />
C#…) sur plusieurs points :<br />
- le service est autonome, il ne dépend pas<br />
d’autres services,<br />
- la <strong>de</strong>scription d’un service est indépendante<br />
<strong>de</strong> son implémentation,<br />
- il est possible d’avoir plusieurs implémentations<br />
d’un même service (par exemple <strong>de</strong>s versions<br />
différentes),<br />
- la définition d’un service s’appuie davantage<br />
sur la structure <strong>de</strong>s messages échangés que<br />
sur la signature <strong>de</strong> métho<strong>de</strong>s,<br />
- le service sert à mettre à disposition d’autres<br />
applications <strong>de</strong>s primitives <strong>de</strong> haut niveau,<br />
avec une granularité plus importante que celle<br />
<strong>de</strong>s objets classiques.<br />
Au-<strong>de</strong>là <strong>de</strong>s difficultés techniques rencontrées<br />
pour la mise en œuvre <strong>de</strong> services, il ne faut<br />
pas perdre <strong>de</strong> vue que le premier challenge<br />
concerne avant tout l’architecture fonctionnelle,<br />
car c’est elle qui doit déci<strong>de</strong>r du découpage<br />
<strong>de</strong>s fonctionnalités métiers en service.<br />
WCF<br />
Parmi les nouveaux frameworks en cours d’élaboration,<br />
celui <strong>de</strong> Microsoft est incontestablement<br />
le projet le plus avancé (bien que toujours<br />
en version bêta à ce jour). Connu <strong>de</strong>puis<br />
trois ans sous le nom <strong>de</strong> co<strong>de</strong> Indigo, il a<br />
récemment intégré le super framework WinFX<br />
sous le nom Windows Communication<br />
Foundation (WCF) et sera livré avec Windows<br />
Vista. Sans surprises, il est totalement dédié<br />
aux applications utilisant la technologie .NET.<br />
Bien évi<strong>de</strong>mment, les services construits avec<br />
WCF sont consommables à partir d’autres<br />
plates-formes techniques (Java, PHP), lorsque<br />
les protocoles <strong>de</strong> communication sont compatibles<br />
(SOAP sur http par exemple).<br />
L’objectif principal <strong>de</strong> WCF est d’unifier l’ensemble<br />
<strong>de</strong>s protocoles <strong>de</strong> communication utilisés<br />
sous Windows et <strong>de</strong> fournir une implémentation<br />
<strong>de</strong>s principaux standards WS, tels<br />
que WS-Transaction, WS-Coordination, WS-<br />
Security et WS-Reliability.<br />
Programmez n°85 49 avril 2006<br />
Comment fonctionne WCF en<br />
pratique ?<br />
WCF supporte <strong>de</strong>ux approches <strong>de</strong> programmation<br />
sensiblement différentes. La première<br />
appelée « co<strong>de</strong> first » consiste à développer le<br />
co<strong>de</strong> du service sous la forme d’une classe et<br />
ensuite à lier l’implémentation à WCF en utilisant<br />
<strong>de</strong>s annotations. La secon<strong>de</strong> appelée<br />
« contract first » débute par l’écriture <strong>de</strong> l’interface<br />
du service (l’équivalent <strong>de</strong> l’IDL <strong>de</strong><br />
DCOM ou CORBA), suivi <strong>de</strong> la génération du<br />
squelette <strong>de</strong>s classes. A noter que dans la<br />
lignée <strong>de</strong>s approches <strong>de</strong> types POJO, le co<strong>de</strong><br />
est indépendant du framework, il n’y a donc ni<br />
héritage <strong>de</strong> classes, ni implémentation d’interfaces<br />
<strong>de</strong> WCF dans le co<strong>de</strong>. WCF propose à la<br />
place, <strong>de</strong>s attributs tels que [ServiceContract]<br />
qui précise qu’une classe ou une interface doit<br />
être accessible sous forme <strong>de</strong> service, ou bien<br />
encore [OperationContract] qui définit le<br />
contrat qui régit un échange <strong>de</strong> messages.<br />
A noter que WCF gère les formats standard<br />
WDSL et MEX (WS MetadataExchange) pour<br />
l’importation et l’exportation <strong>de</strong>s contrats <strong>de</strong><br />
service.<br />
Exemple d’une classe implémentant un service<br />
avec WCF :