02.07.2013 Views

article de presse - Cap Data Consulting

article de presse - Cap Data Consulting

article de presse - Cap Data Consulting

SHOW MORE
SHOW LESS

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 :

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!