Vous êtes sur la page 1sur 39

WCF

Windows Communication Fondation Cliquez pour modifier le style des sous-titres du masque

3/10/13

Les applications distribue


dont

Une application distribue est une application


Tous les lments qui la composent (classes,

persistance, logique mtier) sont distants gographiquement et communiquent entre eux via des rseaux locaux dentreprise ou par Internet en utilisant le protocole IP.
Tous les composants sont rutilisables et

servent souvent plus dune application simultanment.


3/10/13

Lutilisateur final na pas conscience de la

nature distribue de lapplication car il utilise

COM: (Component Object Model) :

Technologies pour applications distribues


technologie de communication inter application propre lenvironnement Windows. Cette technologie ne permet pas de construire proprement parler des applications distribues mais sert dinterface pour faire communiquer des applications sur une mme machine. (les diffrents logiciels de la suite bureautique Microsoft Office par exemple).

DCOM (Distributed Component Object Model) 3/10/13

Problmatique
Limites des middlewares "traditionnels"
Mono-langage : Java RMI,.Net Remoting Mono-plateforme : DCOM sous Windows, Complexe mettre en uvre : CORBA.

Avantage des WebServices


Multi-langage, Multi-plateforme, Spcification garantie par un organisme indpendant, Simple mettre en uvre.

Cest cette interoprabilit associe une relative facilit de mise en uvre, qui fait que les services web sont aujourdhui une des 3/10/13 technologies les plus utilises, pour construire

=>

Les technologies de bases

3/10/13

SOAP
Simple Object Access Protocol
SOAP permet une normalisation des changes

de donnes. Les donnes sont encodes en XML et changes par des appels de procdures distance (RPC) en utilisant HTTP/SMPT/POP comme protocole de communication.

Standard W3C Simple, extensible et permet le diagnostic des

erreurs

Fonctionne 3/10/13

de manire synchrone et

SOAPfonctionnement

3/10/13

Structure dun message Envelope


Contenant dun message, lment racine XML, Schma XML

SOAP ENVELOPE SOAP HEADER


HEADER ENTRY

Header (optionnel) Body (obligatoire)

http://www.w3.org/2002/06/soap-envelope/

Entres non applicatives, Ex : Numros de session. Entres applicatives, Ex : nom des procdures,

SOAP BODY
BODY ENTRY

nom des paramtres, valeurs de paramtres, Retour derreurs.


3/10/13

Exemple: Requte
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soa penvelope">
<env:Header> <n:alertcontrol xmlns:n="http://example.org/alertcontrol"> <n:priority>1</n:priority> <n:expires>2005-01-26T10:30:00-11:00</n:expires> </n:alertcontrol>
3/10/13

</env:Header>

Exemple: Rponse
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soapenvelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body> <m:GetPriceResponse xmlns:m="http://www.w3schools.com/prices"> <m:Price>1.90</m:Price> </m:GetPriceResponse> </soap:Body> </soap:Envelope> 3/10/13

Exemple: Retourner une erreur


<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/env elope/" soap:encodingStyle="http://schemas.xmlsoap.org/s oap/encoding/"> <soap:Body>

<soap:Fault> <faultcode>soap:MustUnderstand</fau 3/10/13 ltcode>

WSDL
Web Services Description Language

Une description en XML des services web. Il dcrit de manire abstraite et indpendante du langage de programmation, lensemble des fonctionnalits offertes par un service. - Il permet de connatre les protocoles, les serveurs, les ports, le format des messages, les entres, les sorties, les exceptions possibles et les oprations ralises par un service web.
3/10/13

Document WSDL
Structur comme un ensemble
WSDL
<definitions> <types> </types> <message> </message> <porttype> </porttype> </definitions>

de dfinitions

lment racine <definitions>

Modulaire Fragmentation des dfinitions en plusieurs fichiers

Sparation des descriptions abstraites et concrtes import dautres documents WSDL et XSD

Rutilisation de dfinitions de services

WSDL
<import>

WSDL

3/10/13

3/10/13

Exemple

Voir TP

3/10/13

UDDI
Universal Description, Discovery and Integration
Standard de l Organisation for the

Advancement oF Structured Information Standard (avril 2003)


UDDI permet aux fournisseurs de services de

sinscrire et de rpertorier les services quils proposent.


UDDI ne contient que des rfrences

associes des services, et non les services 3/10/13 eux-mmes.

UDDI
Dcouverte et publication dun Web Service
Annuaire UDDI De Web Services
Descripti on

WSDL Dcouver te

Descripti on Descripti WSDL on

Descripti on

WSDL Publicati on

WSDL

Client du Web Service 3/10/13

Fournisseur de Web Services

Le but de WCF est dexposer une ou plusieurs

WCF

mthodes dun objet travers un rseau local dentreprise ou travers lInternet afin que des applications puissent les utiliser.

WCF est sorti en Novembre 2007. Noyaux de communication dans Windows

Vista.

Composant du .Net Framework. 3/10/13

Espaces de nom
La mise en uvre de WCF repose principalement sur 2 espaces de nom du Framework .NET :
System.ServiceModel System.Runtime.Serialization

3/10/13

Les tapes de mise en uvre

Premire tape : dfinition du contrat. On

dfinit les signatures des mthodes composant notre service WCF, et du format des donnes changer. On implmente les services.

Seconde tape : implmentation du contrat. Troisime tape : configuration du service.

On dfinit les endPoints, autrement dit les points daccs au service. dans une application .NET.

Quatrime tape : hbergement des


3/10/13 services

Dfinition du contrat de service

ServiceContract : Cette mtadonne est attache la dfinition dune classe ou, dune une interface. Il sert indiquer que la classe ou linterface est un contrat de service. OperationContract :Cette mtadonne est attache aux mthodes que lon souhaite exposer au travers du service WCF. Ainsi, il est techniquement possible de lexposer au client que certaines mthodes dune classe.
3/10/13

Exemple: Donnes changes [DataContract]


public class MaVideo { [DataMember] public string Chemin { get; set; } [DataMember] public string Titre { get; set; } [DataMember] public 3/10/13 string Description { get; set; }

Exemple: Interface
[ServiceContract]
public interface IServiceVideos {

[OperationContract]
public List<MaVideo> RetourneLesVideosDisponibles(); }

3/10/13

Exemple: Implmentation
[ServiceContract] { [OperationContract]
public List<MaVideo> RetourneLesVideosDisponibles() { MesVideos lesVideos = new MesVideos(); return lesVideos.ListeVideos; }

public class ServiceVideos

} 3/10/13

endpoint : Les
Un endpoint est une combinaison de 3 lments:
Une Adresse : O se trouve le service sur le rseau ?

lments A B C

Un Binding : Comment communiquer avec le service ?

Quelle langue faut-il parler ?

Un Contract : Comme expos plus haut cest la liste des

oprations que le service expose au client.

3/10/13

3/10/13

Hbergement dun service WCF hberg dans Un service WCF peut tre
diverses applications :
Dans une application cliente (Winform,

service Windows)

Dans une application ASP .NET, elle-mme

hberge sur un serveur IIS Chaque type dapplication possde ses avantages et ses inconvnients : par exemple, si un service est hberg sous IIS 6.0, on ne pourra utiliser que les protocoles HTTP / HTTPS. 3/10/13

Fichier de configuration
La configuration dun service WCF est

stocke dans un fichier XML dextension .config (App.config ou Web.config selon le type dapplication). La configuration spcifique WCF se trouve entre les balises <system.serviceModel> et </system.serviceModel>.
Endpoint : Un endpoint est un point de

connexion auquel un client va pouvoir se connecter pour utiliser le service. Un service peut 3/10/13 tre expos travers un ou plusieurs

Exemple d lments de configuration


<host> <baseAddresses> <add baseAddress="http://localhost:8731/ExempleService" /> </baseAddresses> </host>

Il sagit de ladresse de base du service. Les adresses indiques dans les endpoints sont relatifs cette adresse de base.

<endpoint address="" binding="wsHttpBinding" contract="WcfService1.IService1 /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

un champ address vide signifie que le service est disponible la racine de ladresse de base.
wsHttpBinding : Reprsente une liaison interoprable (WS-* specifications) qui prend en charge les

3/10/13

Exemple d lments de configuration


<serviceBehaviors> <behavior name="WcfService1.Service1Behavior"> <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> <serviceMetadata httpGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors>

includeExceptionDetailInFaults pour dire au service quil ne doit pas renvoyer au client des dtails si une exception est leve.

3/10/13 <serviceMetadata httpGetEnabled="true"/>: Permet dexposer ou non la WSDL aux requtes HTTP Get

Exposition de mtadonnes

Par dfaut WCF nexpose pas les

mtadonnes du service.

Pour le faire il faut le configurer explicitement

via le behavior : <serviceDebug

includeExceptionDetailInFaults="false "/> oubien via un endpoint de type mex <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
3/10/13

Consommer un service WCF La combinaison de toutes les informations


contenues dans le fichier WSDL va permettre de gnrer ce que lon appelle une classe proxy .
Le rle de cette classe proxy va tre de

masquer la complexit des mcanismes de communication entre le service web WCF et le client afin que le programmeur nai en ralit quun seul objet utiliser.

3/10/13

Crer une classe proxy


Il existe 3 mthodes pour crer une classe proxy :
Automatique via VisualStudio: En ajoutant une

rfrence de service dans le projet consommant le service WCF.

En utilisant lutilitaire svcutil.exe. Programmatiquement.

3/10/13

Protocole de transport
Protocole http https Sockets TCP/IP Canaux nomms Utilisation Protocole par dfaut Mme principe que http avec une scurit SSL/TLS en plus Mthode adapte au transfert de donnes volumineuses telles que le son ou la vido Protocole gnralement utilis lorsque les clients du service se trouvent sur la mme machine que le service lui mme A utiliser pour le transfert de messages

File dattente de message MSMQ 3/10/13

Adresse
Le rle de ladresse est de localiser le service

sur le rseau tout comme on localise un ordinateur ou un site internet.

Ladresse indique aussi le protocole de

transport Protocole
http https Tcp

suivante :

employ selon la nomenclature Prfixe de ladresse


http:// https:// Net.tcp//

Canaux nomms MSMQ 3/10/13

net.pipe:// net.msmq://

Modes dhbergement
Auto hbergement: lintrieur dune

application Windows (Winform, WPF, Service Windows ou mme application console) grce la classe ServiceHost.

IIS: serveur web de Microsoft. WAS: Windows Activation Service, une

nouvelle fonctionnalit apporte dans IIS 7.0, la version du serveur web de Microsoft fournie 3/10/13 avec Windows Vista et Windows Server 2008.

bindings WCF: Comment choisir prconfigurs. ? 9 bindings


Les facteurs de choix:
Scurit Introprabilit Performance Transactions

3/10/13

3/10/13

Plus de dtails
Pour plus de dtails concernant le choix dun

binding veuillez consultez larticle officiel sur msdn:

http://msdn.microsoft.com/en-us/library/ms730879.aspx

3/10/13