Communication Foundation au quotidien Tout ce que vous

  • Slides: 80
Download presentation
Communication Foundation au quotidien Tout ce que vous avez toujours voulu savoir sur WCF

Communication Foundation au quotidien Tout ce que vous avez toujours voulu savoir sur WCF sans jamais oser le demander… Stéphane Goudeau, Pierre Couzy Architectes en Système d’information Division Plateformes et Ecosystèmes Microsoft France C'est aveuglant de clarté. 1

Trop de technos ? ASMX . NET Remoting Interopérabilité avec d’autres plateformes Extensibilité Mode

Trop de technos ? ASMX . NET Remoting Interopérabilité avec d’autres plateformes Extensibilité Mode binaire Transaction Performance Programmation orientée Message Protocoles WS-* Enterprise Services System. Messaging WSE 2

Trop de protocoles ? Evolve and Extend Secure, Reliable, Transacted As of 2/2004 WS-I

Trop de protocoles ? Evolve and Extend Secure, Reliable, Transacted As of 2/2004 WS-I BP 1. 0 Security Roadmap SRT Web Services Whitepaper Reliable Messaging Roadmap WS-Coordination WS-Transaction WS-Atomic. Transaction WS-Business. Activity WS-Reliable. Messaging WS-Federation WS-Trust WS-Security Addendum WS-Security Profile for Tokens WS-Federation Active Requestor Profile WS-Security SOAP Message Security WS-Security Username Token Profile WS-Security X. 509 Certificate Token Profile Security WS-Security Interopérabilité Transactions Reliability Whitepapers WS-I formed Fundamentals WS-Security Kerberos Binding UDDI 2. 0 WSDL UDDI 3. 0 WS-Policy 1. 1 WS-Policy. Attachments 1. 1 WS-Policy. Assertions 1. 1 WS-Inspection WS-Policy. Attachments WS-Policy. Assertions WS-Security. Policy SOAP 1. 2 SOAP Messages with Attachments WS-Referral WS-Routing DIME WS-Addressing WS-Attachments MTOM WS-Eventing Messaging SOAP 1. 1 WS-Discovery WS-Metadata. Exchange Metadata UDDI 1. 0 3

Windows Communication Foundation “Framework unifié pour créer des applications orientées services sur la plate-forme

Windows Communication Foundation “Framework unifié pour créer des applications orientées services sur la plate-forme Windows” Unification des technologies middleware Architecture modulaire et composable Interopérabilité avec les autres plateformes Interopérabilité avec les technologies courantes Support natif des protocoles WS-* Modèle de programmation orienté service Service exposé par un contrat Service imposant des règles de fonctionnement 4

Service rapide J'ai pris un cours de lecture rapide et j'ai pu lire «

Service rapide J'ai pris un cours de lecture rapide et j'ai pu lire « Guerre et Paix » en vingt minutes. Ca parle de la Russie.

WCF communique par des endpoints Client Service Endpoint 6

WCF communique par des endpoints Client Service Endpoint 6

Composition d’un endpoint Client Service C B A A B C Adresse « Binding

Composition d’un endpoint Client Service C B A A B C Adresse « Binding » Contrat Où? Comment? Quoi? 7

Un service minimaliste (dans IIS) 8

Un service minimaliste (dans IIS) 8

Quelle démarche adopter ? Définition du contrat Contrat de service Description des opérations et

Quelle démarche adopter ? Définition du contrat Contrat de service Description des opérations et sémantique des échanges ( « oneway » , « duplex » , session, …) Contrat de données Définition du contenu des messages Contrat d’utilisation Caractéristiques de la communication : fiabilité, sécurité, encodage, transport, … Implémentation du Service Développement Déploiement Publication du WSDL

Endpoints multiples - performance Il ne fait aucun doute qu'il existe un monde invisible.

Endpoints multiples - performance Il ne fait aucun doute qu'il existe un monde invisible. Cependant, il est permis de se demander à quelle distance il se trouve du centre-ville et jusqu'à quelle heure il est ouvert.

WCF : Architecture composable CLR Type Integration Transaction Behavior Security Channel TCP Transport Code

WCF : Architecture composable CLR Type Integration Transaction Behavior Security Channel TCP Transport Code du Service Instancing Behavior Modèle de service Influence et étend le modèle de programmation fondé sur les messages entrants Communication des messages Echange les messages et permet l’extension des canaux qui assurent le transfert des messages 12

Asynchrone Je ne veux pas atteindre l'immortalité grâce à mon oeuvre. Je veux atteindre

Asynchrone Je ne veux pas atteindre l'immortalité grâce à mon oeuvre. Je veux atteindre l'immortalité en ne mourant pas.

Patterns de communication Requête-Réponse [Service. Contract] public interface IMessagerie. Telephonique { [Operation. Contract] bool

Patterns de communication Requête-Réponse [Service. Contract] public interface IMessagerie. Telephonique { [Operation. Contract] bool Envoie. SMS(string numero, string message); // Le client reçoit un acquittement synchrone } Fire and forget [Service. Contract] public interface IMessagerie. Telephonique { [Operation. Contract(Is. One. Way=true)] void Envoie. SMS(string numero, string message); // Il faudra un autre mécanisme de retour vers le client } 14

Duplex & Callback Non seulement Dieu n'existe pas. Mais essayez donc d'avoir un plombier

Duplex & Callback Non seulement Dieu n'existe pas. Mais essayez donc d'avoir un plombier le week-end.

Contrat de Service : Duplex Adresse « Binding » Contrat Ou? Comment? Quoi? Contrat

Contrat de Service : Duplex Adresse « Binding » Contrat Ou? Comment? Quoi? Contrat bidirectionnel entre le client et le service Le service définit dans le contrat l’interface de Callback que doit implémenter le client [[Service. Contract(Callback. Contract=typeof(ISubscriber))] public interface IPublisher { [Operation. Contract] bool Start. Task(List<string> task. Names); } [[Service. Contract] public interface ISubscriber { [Operation. Contract(Is. One. Way=true)] void Notify(string name, int status); } 16

Sécurité Un conducteur dangereux, c'est celui qui vous dépasse malgré tous vos efforts pour

Sécurité Un conducteur dangereux, c'est celui qui vous dépasse malgré tous vos efforts pour l'en empêcher.

WCF : Sécurité des échanges de messages Sécurité d’accès aux ressources Mise en œuvre

WCF : Sécurité des échanges de messages Sécurité d’accès aux ressources Mise en œuvre grâce aux bindings et behaviors Paramétrage par code ou par configuration Binding Code Client factory. Credentials. Service. Certificate. Set. Default. Certificate( Store. Location. Local. Machine, Store. Name. My, X 509 Find. Type. Find. By. Thumbprint, config. Service. Certificate. Thumbprint); Behavior <endpoint. Behaviors> <behavior name=“presto. Sign. Config”> <client. Credentials> <client. Certificate store. Location=“Local. Machine” store. Name=“My” x 509 Find. Type=“Find. By. Thumbprint” find. Value=“F 31416 E 1 D 645367 AC 2 DB 89 E 31 B 8 EF 89 A 4 E 77 CF 21”/> </client. Credentials> </behavior> <endpoint. Behaviors>

Reliable Messaging J’aimerais terminer sur un message d’espoir. Je n’en ai pas. En échange,

Reliable Messaging J’aimerais terminer sur un message d’espoir. Je n’en ai pas. En échange, est-ce que deux messages de désespoir vous iraient ?

WCF : Reliable Messaging « Reliable. Session Binding. Element » Premier élément de la

WCF : Reliable Messaging « Reliable. Session Binding. Element » Premier élément de la collection de bindings Paramétrage par code ou par configuration Reliable. Session. Binding. Element reliable. Session. Binding. Element = null; reliable. Session. Binding. Element = new Reliable. Session. Binding. Element(); … reliable. Session. Binding. Element. Flow. Control. Enabled = true; reliable. Session. Binding. Element. Ordered = true; elements. Add(reliable. Session. Binding. Element); <binding name="presto. Reliable. Binding"> <reliable. Session acknowledgement. Interval="00: 00. 2000000“ … flow. Control. Enabled=“true“ ordered="false" /> Transport par code RM par configuration

Où trouver de l’information Deux points d’entrée : net. Fx 3 http: //wcf. netfx

Où trouver de l’information Deux points d’entrée : net. Fx 3 http: //wcf. netfx 3. com http: //www. netfxfactory. org/ MSDN Sécurité WCF http: //msdn 2. microsoft. com/enus/library/7 ea 87 fcb-dcfb-4 a 4 a-8 b 03 -6 b 954575 d 45 b. aspx Des blogs Nicholas Allen http: //blogs. msdn. com/drnick Vittorio Bertocci http: //blogs. msdn. com/vbertocci Tomasz Janczuk http: //pluralsight. com/blogs/tjanczuk http: //www. netfxfactory. org/blogs/articles/archiv e/2007/05/14/mise-en-perspective-des-patternsde-s-curit-offerts-par-wcf. aspx

La réponse est oui. Mais quelle était la question ?

La réponse est oui. Mais quelle était la question ?

Questions ?

Questions ?

© 2006 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only.

© 2006 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.

WCF : Interopérabilité WS-Security WS-Trust WS-Federation Reliability WS-Reliable Messaging Workflow Transactions WS-Coordination WS-Atomic. Transcation

WCF : Interopérabilité WS-Security WS-Trust WS-Federation Reliability WS-Reliable Messaging Workflow Transactions WS-Coordination WS-Atomic. Transcation WSDL, WS-Policy, WS-Discovery Security Management Metadata Web Service Architecture (WSA) Messaging SOAP, WS-Addressing, MTOM XML XML, XSD, XPath Transports HTTP, SMTP, … 29

30

30

31

31

WCF : Architecture générale Application Contrats Contrat de Données Contrat de Message Contrat de

WCF : Architecture générale Application Contrats Contrat de Données Contrat de Message Contrat de Service Policy et Binding Modèle de Service Comportement En Erreur Comportement Métadonnées Comportement Throttling Comportement Activation Comportement Transaction Communication des messages Canal SOAP Sécurité Canal HTTP Comportement Instance Canal TCP Canal X-Proc Canal UDP Canal SOAP Fiabilité Canal MSMQ Encodeur Text/XML Environnements d’hébergement WAS WPF . Exe NT Service COM+ 32

Client et Service Client Service 33

Client et Service Client Service 33

Comportement Client Service C B A Bv A B C Bv Adresse « Binding

Comportement Client Service C B A Bv A B C Bv Adresse « Binding » Contrat Où? Comment? Quoi? Endpoint 34

Environnement d’hébergement Héberger le runtime WCF (service, windows forms, console, …) class Serveur. WCF

Environnement d’hébergement Héberger le runtime WCF (service, windows forms, console, …) class Serveur. WCF { static void Main(string[] args) { Service. Host host = new Service. Host(typeof(Mon. Service. WCF)); host. Open(); // L’application accepte maintenant les appels WCF Console. Read. Line(); host. Close(); } } WAS/IIS-host http: //localhost/Hello. Service. svc <%@ Service. Host Language=“C#” Service=“Hello. Service” %> 35

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 36

Les contrats Adresse « Binding » Contrat Ou? Comment? Quoi? Contrat de service Définit

Les contrats Adresse « Binding » Contrat Ou? Comment? Quoi? Contrat de service Définit les messages et la sémantique des communications (Fault, Oneway, Duplex / Callback, Session, …) Contrat de données Définit le contenu des messages Version, Type connu, … [Service. Contract(Name="My. Contract", Namespace=“http: //My. Namespace")] interface IOrder. Entry { [Operation. Contract(Is. One. Way=true)] void Place. Order(Purchase. Order); } [Data. Contract] public class Person 1 { [Data. Member] public string name; [Data. Member] private int age; } 37

Contrat de service : Fault Permet de déclarer dans le contrat les fautes (exceptions)

Contrat de service : Fault Permet de déclarer dans le contrat les fautes (exceptions) On déclare le type T représentant la faute Le service propage une Fault<T> [Service. Contract] interface IOrder. Entry { [Operation. Contract] [Fault. Contract(typeof(string))] Purchase. Order Get. Order(String Order. Id); } 38

Contrat de service : Session : échange de messages liés entre eux Un contrat

Contrat de service : Session : échange de messages liés entre eux Un contrat peut spécifier qu’il a besoin d’une session La disponibilité de la session dépend du « binding » [Service. Contract(Session=true)] interface IOrder. Entry { [Operation. Contract] Purchase. Order Get. Order(String Order. Id); } 39

Contrat de données : Type connu [Data. Contract] public class Book {} [Data. Contract]

Contrat de données : Type connu [Data. Contract] public class Book {} [Data. Contract] public class Magazine {} [Data. Contract] [Known. Type(typeof(Book))] [Known. Type(typeof(Magazine))] public class Library. Catalog { [Data. Member] System. Collections. Hashtable the. Catalog; } 40

Contrat de données : Gestion des versions [Data. Contract] public class Car { [Data.

Contrat de données : Gestion des versions [Data. Contract] public class Car { [Data. Member] public string Model; [Data. Member(Is. Optional=true, Version. Added=2)] public int Horse. Power; } [Data. Contract] public class Employee { [Data. Member] public string Full. Name; [Data. Member(Must. Understand=true)] public bool Still. Works. Here; } 41

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 42

 « Binding » Adresse « Binding » Contrat Ou? Comment? Quoi? Spécification manuelle

« Binding » Adresse « Binding » Contrat Ou? Comment? Quoi? Spécification manuelle de chaque élément de la pile de communication Encoding, Transport, Sécurité, Fiabilité, … Utilisation des bindings standards basic. Http. Binding ws. Dual. Http. Binding net. Tcp. Binding net. Msmq. Binding … HTTP + SOAP HTTP + WS-*. . . + Contrat Duplex TCP + WS-* +. NET Applications MSMQ 43

 « Binding » Adresse « Binding » Contrat Ou? Comment? Quoi? « Binding

« Binding » Adresse « Binding » Contrat Ou? Comment? Quoi? « Binding » HTTP Transport Text Security RM TX Protocole Encodeur TCP HTTP Text Security RM MSMQ IPC Binary TX . NET Custom 44

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 47

Comportement du service A B C Service Bv Paramétrage de l’environnement d’exécution du service

Comportement du service A B C Service Bv Paramétrage de l’environnement d’exécution du service Par attribut ou par fichier de configuration Comportement du service Instance du service : par appel, singleton, par session Accès concurrent : simple, multiple, réentrant Transaction Impersonnation Déploiement Throttling : configure la manière d’absorber la charge Error Handling : propagation des exceptions return. Unknown. Exception. As. Faults=“true” Sécurité 48

Instanciation A B C Service Bv [Service. Contract] [Service. Behavior(Instance. Mode=Instance. Mode. Private. Session)]

Instanciation A B C Service Bv [Service. Contract] [Service. Behavior(Instance. Mode=Instance. Mode. Private. Session)] public class Math { private int sum; [Operation. Contract] public int Add (int i, int j) { sum = sum + i + j; return i + j; } } 49

 « Throttling » <? xml version=“ 1. 0” encoding=“UTF-8” ? > <configuration> <system.

« Throttling » <? xml version=“ 1. 0” encoding=“UTF-8” ? > <configuration> <system. service. Model> <behaviors> <behavior configuration. Name=“Normal. Load” <throttling max. Concurrent. Calls="10" max. Connections="3" max. Instances=“ 3" max. Pending. Operations=“ 100" /> </behaviors> </system. service. Model> </configuration 50

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 51

Communication des messages Unification des protocoles de transport TCP, HTTP, Named Pipes, P 2

Communication des messages Unification des protocoles de transport TCP, HTTP, Named Pipes, P 2 P, MSMQ, Custom Unification des topologies Point à point, bout en bout via intermédiaires, peer-topeer Encoding Text, Binaire, MTOM, Custom 3 patterns d’échange de messages : Datagramme (IInput. Channel/IOutput. Channel) Request-Response (IRequest. Channel/IReply. Channel) Duplex (IDuplex. Channel) 52

Peer-To-Peer (P 2 P) One-to-one, one-to-many, many-to-many Peer Name Resolution Protocol Address="net. p 2

Peer-To-Peer (P 2 P) One-to-one, one-to-many, many-to-many Peer Name Resolution Protocol Address="net. p 2 p: //Indster/Peer“ Binding="net. Peer. Tcp. Binding" One-to-One Téléphonie et vidéo Chat One-to-Many-to-Many Find peer Send invitation Learn mesh name Create session Join mesh Co-édition Jeux Accès aux données et réplication 53

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 54

La sécurité des échanges de message Authentification L’émetteur est identifié sans ambiguïté Intégrité Les

La sécurité des échanges de message Authentification L’émetteur est identifié sans ambiguïté Intégrité Les messages n’ont pas été modifiés Confidentialité Les messages n’ont pas été interceptés Non-répudiation L’émetteur ne peut pas renier ses messages Disponibilité Les messages sont traités Routage Périmètre de confiance 55

Sécurité de niveau transport et plateforme Client XML La Platforme et le transport fournissent

Sécurité de niveau transport et plateforme Client XML La Platforme et le transport fournissent la sécurité Identification de l’appelant Intégrité du message Confidentialité du Message Service XML Transport Sécurisé Transport 57

Sécurité de niveau message Les messages XML véhiculent les informations de sécurité Client Service

Sécurité de niveau message Les messages XML véhiculent les informations de sécurité Client Service Paramètres d’identification Signatures digitales Les messages peuvent être chiffrés XML XML Transport Any transport Transport La sécurité est indépendante du protocole de transport 59

Mode de sécurité par défaut Binding Mode de sécurité par défaut basic. Http. Binding

Mode de sécurité par défaut Binding Mode de sécurité par défaut basic. Http. Binding None ws. Http. Binding Message ws. Dual. Http. Binding Message ws. Federation. Binding Message net. Tcp. Binding Transport net. Named. Pipe. Binding Transport net. Msmq. Binding Message net. Peer. Tcp. Binding Transport msmq. Integration. Binding Transport 60

Paramétrage du mode de sécurité Par code : Basic. Http. Binding b = new

Paramétrage du mode de sécurité Par code : Basic. Http. Binding b = new Basic. Http. Binding(); b. Security. Mode = Basic. Http. Security. Mode. Transport; b. Security. Transport. Client. Credential. Type = Http. Client. Credential. Type. Basic; host. Add. Service. Endpoint(typeof(IEcho. Service), b, "svc"); Par configuration : <basic. Http. Binding> <binding name="Transport. Security"> <security mode="Transport" /> </binding> </basic. Http. Binding> 61

Niveau de protection des messages 3 niveaux de protection : None Sign Encrypt. And.

Niveau de protection des messages 3 niveaux de protection : None Sign Encrypt. And. Sign Configuration du niveau de protection : <bindings> <net. Tcp. Binding> <binding name="protection. Security" <security mode="Transport" > <transport client. Credential. Type="Windows" protection. Level="Encrypt. And. Sign"/> </security> </binding> </net. Tcp. Binding> </bindings> 65

Modes d’authentification WCF supporte plusieurs modes d’authentification : Anonyme Windows : Scénarios Intranet Jetons

Modes d’authentification WCF supporte plusieurs modes d’authentification : Anonyme Windows : Scénarios Intranet Jetons Utilisateur (avec/sans fournisseur ASP. NET) : Scénarios B 2 C d’hier Info. Card : Scénarios B 2 C de demain Certificats : Scénarios B 2 B Jetons délivrés par un Security Token Service : Scénarios B 2 B de demain Encapsulation dans la couche transport ou au sein de messages Configuration du mode d’authentification : <bindings> <ws. Http. Binding> <binding name = "authentification. Mode. Security" security. Mode = "Message"> <ws. Security authentication. Mode="certificate"/> </binding> </ws. Http. Binding> </bindings> 69

Spécification des paramètres d’identité Spécification du mode d’authentification par code « Set. User. Name.

Spécification des paramètres d’identité Spécification du mode d’authentification par code « Set. User. Name. Password » Spécification du mode d’authentification par configuration : Client : <behavior name="credential. Config"> <client. Credentials> <client. Certificate store. Location="Current. User" store. Name="My" x 509 Find. Type="Find. By. Subject. Name" find. Value="client. com"/> </client. Credentials> </behavior> Service : <behavior name="credential. Config" return. Unknown. Exceptions. As. Faults="true" > <service. Security. Credentials x 509 Authentication. Map. To. Windows="false"> <service. X 509 Certificate find. Value="localhost" store. Location="Local. Machine" store. Name="My" x 509 Find. Type="Find. By. Subject. Name" /> </service. Security. Credentials> </behavior> 70

Gestion des autorisations Attributs dans le code pour identifier les Rôles [Principal. Permission(Security. Action.

Gestion des autorisations Attributs dans le code pour identifier les Rôles [Principal. Permission(Security. Action. Demand, Role = Administrator")] string IResource. Access. Contract. Access. Diamond() Fournisseur de rôles Spécifié dans le fichier de Configuration Relier les rôles dans le code aux rôles de l’outil d’administration Mécanisme extensible Assignation d’utilisateurs à des rôles avec l’outil d’administration (Authorization Manager) 71

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 72

 « Reliable Messaging » : MSMQ Les messages peuvent être véhiculés par MSMQ

« Reliable Messaging » : MSMQ Les messages peuvent être véhiculés par MSMQ via un Service canal WCF Les opérations one-way sont possibles même lorsque le MSMQ service est indisponible Client MSMQ [Service. Contract()] interface IMy. Service { [Service. Operation(Is. One. Way = true)] void Echo(string text); } <endpoint address = "net. msmq: //My. Server/private/My. Queue/" binding = "net. Msmq. Binding" contract = "Queued. Messaging. IMessage. Displayer, Queued. Messaging" /> 73

 « Reliable Messaging » “TCP” pour les messages SOAP Fiabilité de bout en

« Reliable Messaging » “TCP” pour les messages SOAP Fiabilité de bout en bout via des intermédiaires Support de multiples transports : TCP/IP, HTTP, SMTP, FTP, … Récupère les échecs du protocole de transport Caractéristiques Garantie de l’unicité de livraison et de la livraison dans l’ordre Réémission et détection des doublons Contrôle de la session Aucun contrôle, session ordonnée, sans ordre Contrôle de flux, vérification de la connexion … 74

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 75

Transaction A B C Service Bv Définit le comportement transactionnel du service Transaction. Isolation.

Transaction A B C Service Bv Définit le comportement transactionnel du service Transaction. Isolation. Level : niveau d’isolation (Read. Committed, Serializable, …) pour les nouvelles transactions Transaction. Scope. Required : nécessite une transaction pour s’exécuter Transaction. Auto. Complete : valide automatiquement la transaction si le service ne lève pas d’exception Allowed, Not. Allowed, et Required 76

Transaction A B C Service Bv Le contexte transactionnel se propage entre client ou

Transaction A B C Service Bv Le contexte transactionnel se propage entre client ou service et service Utilisation de System. Transaction pour contrôler la transaction (start, commit, rollback) Nécessite un binding particulier 77

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 78

Métadonnées : « Meta. Data Exchange » Client Service Get. Metadata WSDL Proxy. cs

Métadonnées : « Meta. Data Exchange » Client Service Get. Metadata WSDL Proxy. cs C B A A B C app/web. config 79

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 80

Extensibilité du proxy Comportement Inspection des Format des paramètres messages Inspection des messages Add(…)

Extensibilité du proxy Comportement Inspection des Format des paramètres messages Inspection des messages Add(…) Proxy Operation Proxy Behavior Sub(…) Channel Proxy Operation public interface IProxy. Message. Inspector IParameter. Inspector IProxy. Formatter { object Message. Before. Send. Request(ref Before. Call(string Serialize. Request(Message. Version operation. Name, Message request, object[] inputs); message. Version, void. IClient. Channel object[] After. Call(string parameters); channel); operation. Name, object[] outputs, void object After. Receive. Reply(ref Deserialize. Reply(Message return. Value, object Message correlation. State); message, reply, object[] object state); parameters); } 81

Extensibilité du proxy Comportement . Description. Behaviors. Add(new My. Behavior()); [My. Behavior] <my. Behavior

Extensibilité du proxy Comportement . Description. Behaviors. Add(new My. Behavior()); [My. Behavior] <my. Behavior /> Operation Behaviors Inspection des paramètres Add(…) Format des messages Proxy Operation Channel Behaviors Inspection des messages Proxy Behavior Channel 82

Extensibilité C'est aveuglant de clarté.

Extensibilité C'est aveuglant de clarté.

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 84

Service Configuration Editor 85

Service Configuration Editor 85

Service Trace Viewer 86

Service Trace Viewer 86

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging

Tout ce que vous avez voulu savoir sur WCF… Sécurité Supervision « Reliable Messaging » Workflow Transactions Communication des messages Contrats « Binding » Métadonnées Extensibilité « Behavior » Environnement d’hébergement 87

Workflow et Services Coordination entre de multiples services L’interaction entre services est modélisée en

Workflow et Services Coordination entre de multiples services L’interaction entre services est modélisée en utilisant les activités d’un workflow Les interactions entre services peuvent être visualisées Les données ou évènements transitent d’une activité ou d’un service à un autre Simplification d’appels asynchrones et de patterns d’échange de messages complexes Exécution parallèle, délais, temporisations, . . Les interactions entre services peuvent facilement être modifiées et changées dynamiquement Coordination de Services par un workflow 88

Services et Workflow Services Non explicitement liés dans un processus métier Services « façades

Services et Workflow Services Non explicitement liés dans un processus métier Services « façades » des processus de longue durée Les Workflows implémentent la logique métier qu’interfacent les services Gestion de l’état à travers les interactions entre services Services associés à un modèle de workflow L’implémentation de services peut être transparente Permet de rendre visible l’état d’un service Comportement configurable durant l’exécution Suivi, persistance, transactions, threading, etc. Workflows exposés par des services 89

Un modèle fractal Les solutions combinent fréquemment les deux approches Workflow 90

Un modèle fractal Les solutions combinent fréquemment les deux approches Workflow 90

Workflow L'univers n'est jamais qu'une idée fugitive dans l'esprit de Dieu - pensée joliment

Workflow L'univers n'est jamais qu'une idée fugitive dans l'esprit de Dieu - pensée joliment inquiétante, pour peu que vous veniez d'acheter une maison à crédit

WCF : Synthèse WCF fournit une plateforme complète pour la construction d’applications connectées WCF

WCF : Synthèse WCF fournit une plateforme complète pour la construction d’applications connectées WCF propose une suite complète de protocoles Web Services et de blocs d’infrastructure Les services peuvent être auto-hébergés ou hébergés par le système (infrastructure partagée ASP. NET et IIS) WCF fournit un modèle de programmation unifié (unification des ensembles de fonctions de ASMX/ES/. NET Remoting) WCF utilise les transactions pour accroître la fiabilité des services WCF fournit une transmission fiable et durable des messages entre services WCF supporte un large éventail de protocoles de sécurité WCF associé à WF permet de bâtir des solutions alliant Workflows et Services 92

WCF : Synthèse Address Binding http: //. . . HTTP Transport net. p 2

WCF : Synthèse Address Binding http: //. . . HTTP Transport net. p 2 p: //. . . Peer Transport net. tcp: //. . . net. pipe: //. . . net. msmq: //. . . xxx: //. . . WS-Security Protocol WS-RM Protocol Named. Pipe Transport WS-Coord Protocol Custom Transport Request/ Response Behavior Instancing Behavior Concurrency Behavior Throttling Behavior TCP Transport MSMQ Transport Contract Metadata Behavior One-Way Error Behavior Transaction Behavior Custom Behavior Security Behavior Duplex Channel Duplex Custom Protocol Visible pour chaque endpoint Masqué pour chaque opération 93

Roadmap Plateforme 2007 “Longhorn” Server 2006 2005 Win. FX Beta 2 (Janvier 2006) Biztalk

Roadmap Plateforme 2007 “Longhorn” Server 2006 2005 Win. FX Beta 2 (Janvier 2006) Biztalk 2006 (mars 2006) Vista (fin 2006) Win. FX (fin 2006) Office “ 12” septembre 2006 Visual Studio 2005 (depuis le 8 Novembre) SQL Server 2005 (depuis le 8 Novembre) Windows Server 2003 R 2 (ADFS) Biztalk 2006 Beta 2 Office “ 12” Beta 1 94

© 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only.

© 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY. 95