1 Introduction. 2 Les contrats. 3 Les bindings. 4 Hébergement. 5 Consommation. 6 WCF et remoting. 7 Sessions, instantiations et concurrence



Documents pareils
Hébergement et configuration de services WCF. Version 1.0

Introduction aux. services web 2 / 2

Index. Nombres. 2PC (two-phase commit protocol) 374. AAnonymous, valeur, TokenImpersonationLevel

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

.NET remoting. Plan. Principes de.net Remoting

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Architectures n-tiers Intergiciels à objets et services web

4. SERVICES WEB REST 46

25 septembre Migration des accès au Registre national en protocole X.25 vers le protocole TCP/IP, pour les utilisateurs du Registre national

Mobile OGSI.NET: Grid Computing on Mobile Devices

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Introduction aux «Services Web»

Infrastructure RDS 2012

Java - RMI Remote Method Invocation. Java - RMI

Intergiciel - concepts de base

Shibboleth. David Verdin - JOSY "Authentification centralisée pour les applications web" - Paris - 4 février mai

SOA Open Source Intégration des services et business process dans une architecture SOA Open Source. Bruno Georges JBoss, a Division of Red Hat

Consommer des services distants dans les pages ASP.NET Ajax

Programmation Web Avancée Introduction aux services Web

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Manuel des logiciels de transferts de fichiers File Delivery Services

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

Le serveur web Windows Home Server 2011

Application web de gestion de comptes en banques

LES ACCES ODBC AVEC LE SYSTEME SAS

Approche Contract First

Couche application. La couche application est la plus élevée du modèle de référence.

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Internet Information Services (versions 7 et 7.5) Installation, configuration et maintenance du serveur Web de Microsoft

L annuaire et le Service DNS

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Remote Method Invocation (RMI)

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

RMI le langage Java XII-1 JMF

GPI Gestion pédagogique intégrée

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Architectures Web Services RESTful

Création d un service web avec NetBeans 5.5 et SJAS 9

Plateforme PAYZEN. Définition de Web-services

NON URGENTE TEMPORAIRE DEFINITIVE. OBJET : FONCTIONNEMENT OmniVista 4760 SUR UN RÉSEAU VPN / NAT


SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Urbanisation des SI Conduite du changement IT 20/03/09. Patrick CHAMBET

Configuration Et Résolution Des Problèmes Des Services De Domaine Active Directory Windows Server Référence Cours : 6238B

Table des Matières. Qu'est ce qu'un service Web

Open Source Job Scheduler

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Polux Développement d'une maquette pour implémenter des tests de sécurité


Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Ce document décrit une solution de single sign-on (SSO) sécurisée permettant d accéder à Microsoft Exchange avec des tablettes ou smartphones.

Manuel d intégration API SOAP SMS ALLMYSMS.COM

Intégration de systèmes

CAMERA DOME AMELIORÉE DE SURVEILLANCE EN RÉSEAU GUIDE D INSTALLATION

Java et les bases de données

Définition des Webservices Ordre de paiement par . Version 1.0

Responsable du cours : Héla Hachicha. Année Universitaire :

Déployer une application Web avec WebMatrix et Ma Plateforme Web

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux

Mobyt Intégration par Webservice TABLE DES MATIERES

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Architectures en couches pour applications web Rappel : Architecture en couches

Packet Tracer : configuration des listes de contrôle d'accès étendues, scénario 1

Introduction...3. Objectif...3. Manipulations...3. Gestion des utilisateurs et des groupes...4. Introduction...4. Les fichiers de base...

Manipulation 4 : Application de «Change».

Host Integration Server 2000

Date de découverte 16 Octobre 2014 Révision du bulletin 1.0

Sophos Endpoint Security and Control Guide de mise à niveau

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Installation de SharePoint Foundation 2013 sur Windows 2012

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

MEGA Web Front-End Installation Guide MEGA HOPEX V1R1 FR. Révisé le : 5 novembre 2013 Créé le : 31 octobre Auteur : Noé LAVALLEE

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Les messages d erreur d'applidis Client

1 Résolution de nom Introduction à la résolution de noms Le système DNS Les types de requêtes DNS...

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

GENERALITES. COURS TCP/IP Niveau 1

Lancement de la simulation SIMBA

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Configuration Matérielle et Logicielle AGORA V2

Configuration requise Across v6 (Date de mise à jour : 3 novembre 2014)

Recherche dans un tableau

Le rôle Serveur NPS et Protection d accès réseau

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Skype (v2.5) Protocol Data Structures (French) Author : Ouanilo MEDEGAN

Qu est ce que Visual Guard. Authentification Vérifier l identité d un utilisateur

Les Réseaux Privés Virtuels (VPN) Définition d'un VPN

CONVERTISSEUR RS 232/485 NOTICE

Sécurité. Objectifs Gestion de PKI Signature Cryptage Web Service Security

Transcription:

Windows Communication Foundation Intergiciels à objets et services web Université de Montpellier 2 Faculté des sciences Mars 2012 GMIN204 (UM2 FdS) WCF Mars 2012 1 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 2 / 55 WCF Runtime + outils + ensemble d'apis pour créer des systèmes qui envoient des messages entre des services et des clients Pour la distribution, l'interopérabilité, et le support direct de l'orienté service Unication de pratiques.net existantes (MSMQ, COM+, services web asp.net, WSE, remoting, enterprise services (ou serviced components),...) GMIN204 (UM2 FdS) WCF Mars 2012 2 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 3 / 55 Principes : A, B, C Ou plutôt C, B, A C : contrats de service. Déni via des classes et des interfaces + des attributs (annotations) B : bindings. Association au protocole. A : Adresse. Adresse à laquelle le service est disponible. Architecture Contracts & Descriptions. Contrats : permet de décrire ce qui sera échangé. Policies & bindings : modalités de communication Service Runtime. Comportements du service à l'exé. Throttling : contrôle le nb de messages traités. Error behavior : ce qui se passe qd erreur interne du service. Metadata : quelles métadonnées sont dispos de l'extérieur. Instances : combien d'instances peuvent être utilisées. Transaction : permet le rollback. Dispatch : comment le message est traité par l'infrastructure WCF. Messaging. Channel : traite un message de la manière souhaitée. Transport (RW messages sur le réseau, http, tcp, MSMQ) ou Protocole (protocoles de traitement des messages, comme WSS). Hosting and Activation. Le service est un programme et peut dc être lancé dans un exe (self-hosted service). Peut aussi être hébergé par un agent externe comme IIS ou WAS. GMIN204 (UM2 FdS) WCF Mars 2012 4 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 5 / 55

Développer avec WCF 1 Dénir le contrat de service. Dénit la signature des services, les données échangées. 2 Implémenter le contrat. 3 Congurer le service : spécication des endpoints. 4 Héberger les services dans une application. 5 Construire une application cliente. GMIN204 (UM2 FdS) WCF Mars 2012 6 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 7 / 55 Contrats de service Contrats, WSDL et XSD Un contrat est une promesse sur : Le groupements d'opérations dans un service La signature des opérations en terme de messages échangés Les types de données de ces messages La localisation de ces opérations Les protocoles et formats de sérialisation utilisés pour communiquer avec le service Cela devrait vous rappeler quelque chose... WSDL et XSD sont bien adaptés pour décrire des services mais sont diciles à écrire directement et ne sont que des descriptions, pas des contrats à implémenter WCF utilise les structures habituelles OO (classes, interfaces, attributs) pour dénir la structure d'un service et l'implémenter Les contrats WCF peuvent être exportés vers WSDL et XSD GMIN204 (UM2 FdS) WCF Mars 2012 8 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 9 / 55 Contrats en WCF Classes ou interfaces? Contrat = opérations + regroupement des opérations Opération = méthode (C#, VB.NET,...) avec attribut OperationContractAttribute [OperationContract] Contrat de service = Classe ou interface (avec opérations) avec attribut ServiceContractAttribute [ServiceContract] Plus logique d'utiliser des interfaces Les interfaces de contrats peuvent étendre autant d'autres interfaces de contrats que souhaité Une même classe peut implémenter autant de contrats de services que souhaité On peut modier l'implémentation d'un contrat de service sans toucher au contrat lui-même Gestion de version : possibilité d'implémenter à la fois le vieux contrat et le nouveau GMIN204 (UM2 FdS) WCF Mars 2012 10 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 11 / 55

Paramètres et types de retour Les contrats de données (Data Contract) Attention : pas de passage de référence, que des copies Tout type manipulé doit donc être sérialisable Dénition des types de données échangées Contrat de données = Classe avec attribut DataContractAttribute [DataContract] Membre du contrat de données = membre ou propriété avec attribut DataMemberAttribute [DataMember] Attention, pas de prise en compte de l'accessibilité lors de la sérialisation. Un membre privé sera sérialisé. On peut aussi simplement rendre les données sérialisables. GMIN204 (UM2 FdS) WCF Mars 2012 12 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 13 / 55 Paramètres et valeurs de retour vers MEP MEP Message Exchange Pattern Request/Reply. Par défaut. Un message de requête qui arrive au service, un message de réponse qui est émis vers le client. Y compris si le type de retour est void (alors le message de retour est vide ou permet de transmettre une erreur). One-way. Pas de message de réponse. Possible uniquement si le type de retour est void (sinon : InvalideOperationException). Pas de faute transmise en retour si pb sur le serveur. [OperationContractAttribute(IsOneWay=true)] void Hello(string greeting); Duplex. Le service peut invoquer en retour un service du client. Nécessite l'introduction d'une interface contenant la déclaration des méthodes appelées sur le client. Paramètres out et ref Rappel out. Permet de déclarer un paramètre de sortie. public void Foo(out int x) x=1900; Rappel ref. Permet de passer par référence un paramètre de type simple. public void Echanger(ref int a,ref int b) int temp=a; a=b; b=temp; Leur présence implique un Request/Reply même si type de retour void GMIN204 (UM2 FdS) WCF Mars 2012 14 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 15 / 55 Spécication du niveau de protection des messages Aparté : activation / désactivation de la sécurité au niveau du binding System.ServiceModel.SecurityMode Nécessaire si le binding associé a le mode sécurité des messages activé Niveaux de protection d'un message : signé, signé&crypté, ni signature ni encryption Peut être spécié au niveau du service, d'une opération, d'un message de l'opération, d'une partie (part) d'un message. Les protections spéciées à un niveau (scope) deviennent les valeurs par défauts pour tous les éléments de la portée. Si rien n'est précisé c'est la conguration du binding qui contrôle la sécurité. Membre de Security- Mode Message None Transport TransportWith- MessageCredential Description Security fournie en utilisant SOAP message security Sécurité désactivée Sécurité fournie en utilisant un transport sécurisé (ex HTTPS) Transport sécurisé + SOAP message security GMIN204 (UM2 FdS) WCF Mars 2012 16 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 17 / 55

Exemple Enumération System.Net.Security.ProtectionLevel [ServiceContract] public interface IExplicitProtectionLevelSampleService [OperationContractAttribute] public string GetString(); [OperationContractAttribute(ProtectionLevel=ProtectionLevel.None)] public int GetInt(); [OperationContractAttribute(ProtectionLevel=ProtectionLevel.EncryptAndSign)] public int GetGuid(); Si cet exemple est implémenté par un service dont le binding est WShttpBinding (SecurityMode par défaut : Message) : Messages de GetString encryptés et signés Messages de GetInt ni encrytés ni signés Messages de GetGuid encryptés et signés Membre EncryptAndSign Sign None Description Encrypte et signe les données ; assure condentialité et intérité des données transmises Signe les données ; assure l'intégrité des données transmises Seulement Authentication GMIN204 (UM2 FdS) WCF Mars 2012 18 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 19 / 55 Binding Un binding dénit : des protocoles : par exemple les mécanismes de sécurité à utiliser un encodage : par exemple Texte ou binaire le transport : par exemple TCP ou HTTP Au minimum : le transport. GMIN204 (UM2 FdS) WCF Mars 2012 20 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 21 / 55 Des bindings pré-dénis Les bindings prédénis (v3) Par exemple : BasicHttpBinding : http, peut être utilisé pour connexion à WS suivant WS-I (ex : asmx WS) WSHttpBinding : WS-* protocols NetMsmqBinding : utilise des les de messages.net v4 : http ://msdn.microsoft.com/en-us/library/ms730879.aspx GMIN204 (UM2 FdS) WCF Mars 2012 22 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 23 / 55

Les bindings prédénis : caractéristiques (v3) Dénition des bindings Via du code Via un chier de conguration (XML) GMIN204 (UM2 FdS) WCF Mars 2012 24 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 25 / 55 Conguration des bindings Exemple de binding <configuration> <system.servicemodel> <bindings> </bindings> <services> </services> <behaviors> </behaviors> </system.servicemodel> </configuration> Un assistant de création de tels chiers existe (intégré à VS) <configuration> <system.servicemodel> <services> <service name="service.calculatorservice" behaviorconfiguration="metadatasupport"> <host> <baseaddresses> <add baseaddress="http://localhost:5000/monservice" /> </baseaddresses> </host> <endpoint address="" binding="basichttpbinding" contract="service.icalculator"/> <endpoint address="mex" binding="mexhttpbinding" contract="imetadataexchange"/> </service> </services> <behaviors> <servicebehaviors> <behavior name="metadatasupport"> <servicemetadata httpgetenabled="true" httpgeturl=""/> </behavior> </servicebehaviors> </behaviors> </system.servicemodel> </configuration> GMIN204 (UM2 FdS) WCF Mars 2012 26 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 27 / 55 Hébergement Internet Information Services (IIS) http uniquement Windows Process Activation Service (WAS) (+IIS) tout protocole Windows Service (service autonome géré par le système) managed application (au sein d'une appli.net classique) GMIN204 (UM2 FdS) WCF Mars 2012 28 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 29 / 55

Self-hosting (dans une appli gérée) using (ServiceHost servicehost = new ServiceHost(typeof(CalculatorService))) try // Open the ServiceHost to start listening for messages. servicehost.open(); // The service can now be accessed. Console.WriteLine("The service is ready."); Console.WriteLine("Press <ENTER> to terminate service."); Console.ReadLine(); // Close the ServiceHost. servicehost.close(); catch (TimeoutException timeproblem) Console.WriteLine(timeProblem.Message); Console.ReadLine(); catch (CommunicationException commproblem) Console.WriteLine(commProblem.Message); Console.ReadLine(); GMIN204 (UM2 FdS) WCF Mars 2012 30 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 31 / 55 Un Client Récupérer un proxy sur le service WCF 1 Obtenir des informations sur le contrat de service, les liaisons (bindings), et l'adresse pour un point de terminaison (endpoint) de service. 2 Créer un client WCF à partir de ces informations 3 Appeler les operations souhaitées. 4 (Détruire l'objet du client WCF). Deux solutions : Le service est en marche et publie son WSDL (publication de métadonnées) le proxy est créé à partir du WSDL par l'outil svcutil.exe (mode statique) Vous ne voulez pas passer par le WDSL mais par une dll partagée contenant les (interfaces de) contrats utilisation de ChannelFactory (mode dynamique) Dans tous les cas, on récupère un objet local au client qui transmettra les appels au service WCF. GMIN204 (UM2 FdS) WCF Mars 2012 32 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 33 / 55 Client utilisant la génération de proxy à partir des métadonnées Le contrat du service, qui publie des métadonnées Client utilisant la génération de proxy à partir des métadonnées Le client généré par svcutil.exe // D e f i n e a s e r v i c e c o n t r a c t. [ S e r v i c e C o n t r a c t ( Namespace="h t t p : / / M i c r o s o f t. S e r v i c e M o d e l. Samples " ) ] p u b l i c i n t e r f a c e I C a l c u l a t o r [ OperationContract ] d o u b l e Add ( d o u b l e n1, d o u b l e n2 ) ; // Other methods are not shown here. p u b l i c p a r t i a l c l a s s C a l c u l a t o r C l i e n t : System. S e r v i c e M o d e l. C l i e n t B a s e <I C a l c u l a t o r >, I C a l c u l a t o r p u b l i c C a l c u l a t o r C l i e n t ( ) p u b l i c C a l c u l a t o r C l i e n t ( s t r i n g c o n f i g u r a t i o n N a m e ) : b a s e ( c o n f i g u r a t i o n N a m e ) p u b l i c C a l c u l a t o r C l i e n t ( System. S e r v i c e M o d e l. B i n d i n g b i n d i n g ) : b a s e ( b i n d i n g ) p u b l i c C a l c u l a t o r C l i e n t ( System. S e r v i c e M o d e l. E n d p o i n t A d d r e s s a d d r e s s, System. S e r v i c e M o d e l. B i n d i n g b i n d i n g ) : b a s e ( a d d r e s s, b i n d i n g ) p u b l i c double Add ( double n1, double n2 ) r e t u r n b a s e. I n n e r C h a n n e l. Add ( n1, n2 ) ; GMIN204 (UM2 FdS) WCF Mars 2012 34 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 35 / 55

Client utilisant la génération de proxy à partir des métadonnées Le code d'appel du service chez le client Client utilisant un ChannelFactory // Create a c l i e n t object with the given c l i e n t endpoint c o n f i g u r a t i o n. C a l c u l a t o r C l i e n t c a l c C l i e n t = new C a l c u l a t o r C l i e n t (" C a l c u l a t o r E n d p o i n t " ) ) ; // C a l l the Add s e r v i c e operation. d o u b l e v a l u e 1 = 1 0 0. 0 0D; d o u b l e v a l u e 2 = 1 5. 9 9D; double r e s u l t = c a l c C l i e n t. Add ( value1, value2 ) ; C o n s o l e. W r i t e L i n e ("Add ( 0, 1) = 2", v a l u e 1, v a l u e 2, r e s u l t ) ; I C a l c u l a t o r s e r v i c e P r o x y =new C h a n n e l F a c t o r y <I C a l c u l a t o r > (" S e r v i c e C o n f i g u r a t i o n " ). CreateChannel ( ) ; // C a l l the Add s e r v i c e operation. d o u b l e v a l u e 1 = 1 0 0. 0 0D; d o u b l e v a l u e 2 = 1 5. 9 9D; double r e s u l t = s ervi cepr oxy. Add ( value1, value2 ) ; C o n s o l e. W r i t e L i n e ("Add ( 0, 1) = 2", v a l u e 1, v a l u e 2, r e s u l t ) ; GMIN204 (UM2 FdS) WCF Mars 2012 36 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 37 / 55 Intégrer ou migrer?.net remoting et WCF peuvent cohabiter WCF est basé service, pas basé objets distribués... GMIN204 (UM2 FdS) WCF Mars 2012 38 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 39 / 55 Migration : cas simple (1) Une classe publiée, avec méthodes qui retournent des types simples ou sérialisables Migration : cas simple (2) Une classe publiée, avec méthodes qui retournent des types simples ou sérialisables Rendre les contrats explicites : rajouter des attributs [ServiceContract] et [OperationContract] Créer un chier de cong (avec par exemple, binding=nettcpbinding) Modier la classe en charge de la publication : la transformer en appli hôte Côté client : Un chier de cong avec <system.servicemodel> <client> <endpoint name=... address=... binding=... contract=.../> </client> <system.servicemodel> plus d'activator.getobject ni de new : passer par un ChannelFactory ChannelFactory<IMonContrat> factory= new ChannelFactory<IMonContrat>("leNomDuService"); IMonContrat proxy=factory.createchannel(); proxy.mamethode(); GMIN204 (UM2 FdS) WCF Mars 2012 40 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 41 / 55

Gestion des fautes Optionnel : Créer des contrats de données Rajout de [ServiceBehavior(ReturnUnknownExceptionsAsFaults=true)] à la classe d'implémentation du service Cela permet de transmettre les CommunicationException en FaultException Pour les classes transmises par sérialisation Rajout de [DataContract], [DataMember] Suppression ou pas de [Serializable] GMIN204 (UM2 FdS) WCF Mars 2012 42 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 43 / 55 Plus compliqué Pas de passage facile de référence distante Orientation service plus qu'orientation objets http ://msdn2.microsoft.com/en-us/library/aa730857(vs.80).aspx GMIN204 (UM2 FdS) WCF Mars 2012 44 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 45 / 55 Sessions, instantiations et concurrence Sessions Session = corrélation entre tous les messages entre 2 endpoints Une session donne un général des garanties de délivrance de messages Instantiation : contrôle de la ligne de vie des contextes d'instances (System.ServiceModel.InstanceContext) et des objets de service qui implémentent les opérations. Concurrence : contrôle du nombre de threads qui exécutent un InstanceContext à un instant t. Dans un contrat de service, on peut positionner l'attribut System.ServiceModel.ServiceContractAttribute.SessionMode à System.ServiceModel.SessionMode.Required. Dans ce cas, tous les messages sous-jacents aux appels au service doivent faire partie de la même conversation. Sessions WCF : Explicitement initiées et terminées par l'appelant Les messages délivrés dans une même session sont traités dans l'ordre dans lequel ils sont reçus Les sessions sont abstraites ; un binding qui implémente une session peut garantir diverses caractéristiques Pas de dépot de données général associé à une session WCF GMIN204 (UM2 FdS) WCF Mars 2012 46 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 47 / 55

Instantiation Les modes d'instantiation Le comportement d'instantiation est déni par la propriété System.ServiceModel.ServiceBehaviorAttribute.InstanceContextMode Il contrôle comment les InstanceContext sont créés en réponse aux messages qui arrivent. Par défaut chaque InstanceContext est associé à un objet de service (déni par l'utilisateur) Donc par défaut, la propriété InstanceContextMode contrôle aussi l'instantiation des objets de service. PerCall : un nouvel InstanceContext (et donc un nouvel objet de service) est créé à chaque requête du client. PerSession : un nouvel InstanceContext (et donc un nouvel objet de service) est créé à chaque nouvelle session du client et est maintenu au long de la session (seulement si binding avec session bien sûr). Single : un seul InstanceContext (et donc un seul objet de service) gère toutes les requêtes des clients pendant la durée de l'application Si ça ne vous rappelle rien, il y a un problème... [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)] public class CalculatorService : ICalculatorInstance... GMIN204 (UM2 FdS) WCF Mars 2012 48 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 49 / 55 Single Concurrence Il est possible de créer un objet de service et de le désigner à l'hébergeur comme l'objet à utiliser Dans l'hébergeur : construction du ServiceHost par le constructeur : public ServiceHost ( Object singletoninstance, params Uri[] baseaddresses ) CalculatorService service = new CalculatorService(); ServiceHost servicehost = new ServiceHost(service, baseaddress); Contrôlé par System.ServiceModel.ServiceBehaviorAttribute.ConcurrencyMode 3 modes : Single : chaque instance de contexte est autorisée à avoir au maximum un thread à la fois qui traite les messages. Les autres threads qui veulent utiliser le même contexte d'instance sont bloqués en attendant que le thread courant termine Multiple : Chaque instance de service peut avoir plusieurs threads qui traitent les messages concurremment. Reentrant : Un seul message à la fois mais accepte les opérations ré-entrantes. GMIN204 (UM2 FdS) WCF Mars 2012 50 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 51 / 55 Sécurité Similaire à WSE Authentication par Username / Password Certicats X.509, Tickets Kerberos ` GMIN204 (UM2 FdS) WCF Mars 2012 52 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 53 / 55

Conlusion Explicitation des services via des constructions OO ( = WSDL) Portage facile des services vers diérents protocoles de transport Orientation service GMIN204 (UM2 FdS) WCF Mars 2012 54 / 55 GMIN204 (UM2 FdS) WCF Mars 2012 55 / 55