Infrastructure SOA Microsoft WCF – Windows Communication Foundation 3/26/2017 3:55 PM Infrastructure SOA Microsoft WCF – Windows Communication Foundation François MERAND Responsable groupe architectes DPE – Division Plate-forme & Ecosystème Microsoft FRANCE fmerand@microsoft.com - +33 6 64 40 44 66 © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
David Chappel & SOA Décrypté « Catching the long trail » Agenda David Chappel & SOA Décrypté Web Application Plate-forme Mashup, Cardspace, IIS7 11h15 12h45 13h45 15h30 15h45 17h30 Session Partenaires Commerciaux Infrastructure SOA Présentation WCF Monitoring WCF Gouvernance SOA Real World Building an ESB Software as a Service « Catching the long trail » BizTalk Server R2 & vNext BizTalk in action Archit’eXpresso
La SOA Microsoft Identité & Sécurité Informatique étendue Web Office Windows Gestion des opérations Référentiel Données Legacy Applications Progiciels Partenaires
L’infrastructure SOA Microsoft Communication & messages Identité & Sécurité Workflow Référentiel Gestion des opérations WS-*, REST SOAP, RSS TCP/IP WCF Adaptateurs Biztalk SSB MSMQ BPEL BPMN WF Biztalk Sharepoint WS-Security LDAP, X509 Kerberos AD MIIS Cardspace UDDI MDM DSI/SML UDDI Services Systinet WSMan WBEM WinRM WMI System Center Amberpoint SQL Server, Biztalk Server, Sharepoint Server Windows, Windows Server, WPAS, IIS, .Net, ASP.Net,
AGENDA WCF en détail Démonstration WCF Stratégie de monitoring applicatif Monitoring en environnement WCF Service Software Factory Gouvernance
Orientation composant Vous n’êtes pas fatigué d’être régulièrement orienté ? Tous les 10 ans ! N’en perdons pas le nord ! 3/26/2017 Orienté objet Polymorphisme Encapsulation Classes & héritage 1980 Orientation composant Basée sur les interfaces Chargement dynamique Notion de métadonnées 1990 Orientation Service Basée sur les message Schema & Contrat Liaisons via des règles 2000 © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Vous avez dit S.O.A. ? S : La notion de service Un point d’accès qui réagit à un message O : On prend un peu de recul avec l’orientation service Un paradigme d’architecture qui s’appuis sur des piliers A : On capitalise sur une architecture orientée service Toute architecture qui adhère aux piliers de l’orientation service En plus il nous faut un socle technologique robuste et évolutif pour la mise en œuvre
Les piliers d’une architecture SOA SOA, rappels Les piliers d’une architecture SOA Les services sont autonomes Les frontières sont explicites Les services partagent des schémas et contrats La compatibilité des services repose sur des règles (politiques) Communication par messages
1 : Les services sont autonomes 3/26/2017 1 : Les services sont autonomes Autonomie ≠ Indépendence La topologie d’un système évolue dans le temps A la différence de l’orientation objet, les services ne partagent pas de comportement Les services savent gérer les “pannes” © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
2 : Les frontières sont explicites 3/26/2017 2 : Les frontières sont explicites Les services interagissent en échangeant des messages Tout message échangé doit traverser des “frontières” et cela a un coût L’orientation service formalise des interactions explicites et intentionnelles © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
3 : Les services partagent des schémas et contrats 3/26/2017 3 : Les services partagent des schémas et contrats Les services exposent des schémas définissant les structures de données et des contrats exposant les opérations disponibles Contrats et schéma peuvent évoluer (versions) indépendamment dans le temps © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
4 : La compatibilité des services repose sur des règles (politiques) 3/26/2017 4 : La compatibilité des services repose sur des règles (politiques) Une règle contient les prérequis de communication nécessaires aux interactions entre les services Les “capacités” et les “besoins” des services sont exposés de façons explicites et normalisées (à la différence des objets/classes) Une règle peut contenir plusieurs assertions © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Concretement, j’en fais quoi ? Quelle(s) implémentation(s) ? 3/26/2017 Ces piliers… Concretement, j’en fais quoi ? Quelle(s) implémentation(s) ? © 2005 Microsoft Corporation © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Une approche pragmatique 3/26/2017 3:55 PM Interview de Didier GIRARD, www.application-servers.com Disponible sur : SOA : "je ne veux plus entendre parler de WS-*" Au-delà du message de l’interopérabilité la complexité de mise en œuvre des standards WS-* risque de pénaliser les implémentations SOA des éditeurs si on ne simplifie (masque) pas l’utilisation des ces protocoles complexes dans le processus de développement… C’est là que le socle Framework 3.0 et surtout WCF (Windows Communication Foundation) interviennent ! © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Windows Communication Foundation Composante de .NET 3.0 3/26/2017 3:55 PM WPF WCF WF ATLAS … © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
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
Unification du modèle de développement .NET Remoting ASMX Interopérabilité avec d’autres plateformes Extensibilité Mode binaire Transaction Performance Programmation orientée Message Protocoles WS-* Enterprise Services System.Messaging WSE
WCF : indépendance de la topologie ! 3/26/2017 Centralisée Décentralisée Distribuée © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
WS-* : vous ne les voyez pas, mais ils sont là ! On comprend la remarque de Didier GIRARD… Evolve and Extend Secure, Reliable, Transacted Fundamentals WS-I formed WS-I BP 1.0 Interopérabilité Security Roadmap SRT Web Services Whitepaper Reliable Messaging Roadmap Whitepapers WS-Coordination WS-Transaction WS-AtomicTransaction WS-BusinessActivity Transactions WS-ReliableMessaging Reliability WS-Security WS-Federation WS-Federation Active Requestor Profile WS-Trust Security WS-Security Addendum WS-Security Profile for Tokens WS-Security SOAP Message Security WS-Security Username Token Profile WS-Security X.509 Certificate Token Profile WS-Security Kerberos Binding UDDI 1.0 UDDI 2.0 UDDI 3.0 WS-Policy 1.1 WS-PolicyAttachments 1.1 WS-PolicyAssertions 1.1 WSDL WS-Inspection Metadata WS-Policy WS-PolicyAttachments WS-PolicyAssertions WS-SecurityPolicy WS-Discovery WS-MetadataExchange SOAP 1.1 SOAP 1.2 WS-Referral WS-Routing WS-Addressing Messaging WS-Eventing SOAP Messages with Attachments DIME WS-Attachments MTOM 2003 2000 2001 2002 2004 2005
Architecture générale Nous en avons aussi une, particulièrement robuste, structurée et modulaire! 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 Instance Comportement Throttling Comportement Activation Comportement Transaction Communication des messages Canal SOAP Sécurité Canal SOAP Fiabilité Canal HTTP Canal TCP Canal UDP Canal X-Proc Canal MSMQ Encodeur Text/XML Environnements d’hébergement WAS Console .Exe NT Service ASP.NET
Cette architecture est composable CLR Type Integration Transaction Behavior Security Channel TCP Transport Code du Service CLR Type Integration Transaction Behavior Instancing Behavior Security Channel TCP Transport Communication des messages Modèle de service Influence et étend le modèle de programmation fondé sur les messages entrants Echange les messages et permet l’extension des canaux qui assurent le transfert des messages
Client & Service Client Service
EndPoints & Channel Client Service Endpoint Endpoint Endpoint Endpoint
L’ABC de l’EndPoint WCF Client Service C B A A B C C B A C B A Adresse Où? « Binding » Comment? Contrat Quoi? Endpoint
Ajout de comportements Client Service C B A A B C C B A C B A Bv Bv Adresse Où? « Binding » Comment? Contrat Quoi? Endpoint
Implémentation d’un service
…et de son client.
Oui, mais il faut bien héberger nos services Pilier N°1 : Autonomie Oui, mais il faut bien héberger nos services Héberger le runtime WCF (service, windows forms, console, …) class HelloHost { static void Main(string[] args) ServiceHost host = new ServiceHost(typeof(HelloService)); host.Open(); // Wait until done accepting connections Console.ReadLine(); host.Close(); } WAS/WPAS http://localhost/HelloService/HelloService.svc <%@ ServiceHost Language=“C#” Service=“HelloService” %>
Pilier N°2 : les frontières sont explicites Spécification manuelle de chaque élément de la pile de communication 3/26/2017 3:55 PM © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Pilier N°2 : les frontières sont explicites
Pilier N°2 : les frontières sont explicites
Pilier N°2 : les frontières sont explicites La méthode “code” [ServiceContract] public class Math { [OperationContract] public int Add(int j, int k) { return j + k; } } public static void Main(string[] args) ServiceHost<Math> host = new ServiceHost<Math>( “http://localhost/MathService/”); BasicProfileBinding binding = new BasicProfileBinding(); binding.SecurityMode = BasicProfileSecurityMode.Https; host.AddEndpoint(typeof(Math), binding, “BpEndpoint”); host.Open(); }
Pilier N°2 : les frontières sont explicites La méthode “fichier de configuration” <configuration> <system.serviceModel> <bindings> <basicProfileBinding> <binding configurationName=“Secure“ securityMode=“Https“ /> </basicProfileBinding> </bindings> <services> <service serviceType=“Math”> <endpoint address=“BpEndpoint” bindingSectionName=“basicProfileBinding” bindingConfiguration=“Secure” contractType=“Math”/> </service> </services> </system.serviceModel> </configuration>
Pilier N°3 : les contrats (quoi?) Adresse Ou? « Binding » Comment? Contrat 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, … [DataContract] public class Person1 { [DataMember] public string name; private int age; } [ServiceContract(Name="MyContract", Namespace=“http://MyNamespace")] interface IOrderEntry { [OperationContract(IsOneWay=true)] void PlaceOrder(PurchaseOrder Order); }
Principe N°3 : les contrats (quoi?) MetaData Exchange Service Client GetMetadata WSDL C B A C B A Proxy.cs app/web.config A B C A B C
Les politiques de fonctionnement Piliers N°4 : Les politiques de fonctionnement Service C B A 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 returnUnknownExceptionAsFaults=“true” Sécurité
Communication par messages Unification des protocoles de transport TCP, HTTP, Named Pipes, P2P, MSMQ, Custom Unification des topologies Point à point, bout en bout via intermédiaires, peer-to-peer Encoding Text, Binaire, MTOM, Custom 3 patterns d’échange de messages : Datagramme (IInputChannel/IOutputChannel) Request-Response (IRequestChannel/IReplyChannel) Duplex (IDuplexChannel)
Communication par messages Peer-To-Peer (P2P) One-to-one, one-to-many, many-to-many Peer Name Resolution Protocol Address="net.p2p://Indster/Peer“ Binding="netPeerTcpBinding" One-to-One One-to-Many Many-to-Many Find peer Send invitation Create session Learn mesh name Join mesh Téléphonie et vidéo Chat Jeux Accès aux données et réplication Co-édition
Mais aussi : Sécurité des messages : 3/26/2017 3:55 PM Sécurité des messages : Authentification, Intégrité, Confidentialité, Non-répudiation, Disponibilité, Routage Fiabilité des échanges de message : Les messages peuvent être véhiculés par MSMQ via un canal WCF 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 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 Transactions : Le contexte transactionnel se propage entre client ou service et service Utilisation de System.Transaction pour contrôler la transaction (start, commit, rollback) © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Extensibilité ! Add(…) Proxy Operation Proxy Behavior Channel Sub(…) Inspection des paramètres Format des messages Inspection des messages Add(…) Proxy Operation Proxy Behavior Channel Sub(…) Proxy Operation public interface IProxyMessageInspector { object BeforeSendRequest(ref Message request, IClientChannel channel); void AfterReceiveReply(ref Message reply, object state); } public interface IProxyFormatter { Message SerializeRequest(MessageVersion messageVersion, object[] parameters); object DeserializeReply(Message message, object[] parameters); } public interface IParameterInspector { object BeforeCall(string operationName, object[] inputs); void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState); }
WCF, synthèse… WCF fournit une plateforme complète pour la construction d’applications connectées (SOA) WCF propose une suite complète de protocoles interopérables (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
Démo 3/26/2017 3:55 PM © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Mais quelle était la question ? 3/26/2017 3:55 PM La réponse est oui. Mais quelle était la question ? © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
3/26/2017 3:55 PM © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.