Qu'est-ce que Windows Communication Foundation ?
L'acceptation globale des services Web, qui inclut les protocoles standard de communication d'application à application, a modifié le développement du logiciel. Les fonctions que les services Web fournissent désormais incluent par exemple la sécurité, la coordination de transaction distribuée et une communication fiable. Les avantages des modifications des services Web doivent se répercuter sur les outils et technologies que les développeurs utilisent. Windows Communication Foundation (WCF) est conçu pour permettre la gestion du traitement distribué, de l'interopérabilité globale et du support direct pour l'orientation de service.
WCF simplifie le développement d'applications connectées grâce à un nouveau modèle de programmation de services. WCF prend en charge de nombreux styles de développement d'applications distribuées en fournissant une architecture en couches. À sa base, l'architecture de canal de WCF fournit des primitives qui passent des messages asynchrones non typés. Sur cette base sont construits des protocole pour un échange de données traitées fiable et sécurisé, et un vaste choix d'options de transport et de codage.
Le modèle de programmation typé (appelé modèle de service) est conçu pour faciliter le développement d'applications distribuées et fournir aux développeurs les compétences requises pour les services Web d'ASP.NET, l'accès distant au .NET Framework et pour les Enterprise Services, et qui se mettent à utiliser WCF en ayant déjà une bonne expérience du développement. Le modèle de service comprend un mappage simple des concepts des services Web à ceux du CLR de .NET Framework, y compris le mappage flexible et extensible des messages aux implémentations de services dans des langages tels que Visual C# ou Visual Basic. Il inclut des fonctionnalités de sérialisation qui permettent le couplage faible et le suivi des versions, et il assure l'intégration et l'interopérabilité des technologies des systèmes distribués de .NET Framework existantes telles que Message Queuing (MSMQ), COM+, les services Web d'ASP.NET, les améliorations apportées aux services Web (WSE), ainsi que d'autres fonctions.
Exemple de problème
L'exemple suivant illustre quelques-uns des problèmes que WCF peut résoudre. Une société de location de voiture décide de créer une application pour la réservation de voiture. Les créateurs de cette application de réservation de voiture de location savent que la logique métier qu'elle implémente doit être accessible à d'autres logiciels qui s'exécutent à la fois à l'intérieur et à l'extérieur de leur société. En conséquence, ils décident de la construire dans un style orienté services, avec la logique de l'application exposée à d'autres logiciels à travers un ensemble précis de services. Pour implémenter ces services, et donc communiquer avec d'autres logiciels, la nouvelle application utilisera WCF.
Pendant sa durée de vie, l'application de réservation de voiture de location sera vraisemblablement consultée par bien d'autres applications. Toutefois, au moment de sa conception, les architectes de l'application de réservation de voiture de location savent que sa logique métier sera consultée, comme le montre la figure précédente, par trois autres types de logiciels :
- Une application cliente de type centre d'appels qui s'exécute sur les bureaux de Windows utilisés par les employés du centre d'appels de l'organisation. Créée spécifiquement pour le nouveau système de réservations, cette application sera également générée à l'aide de Microsoft .NET Framework et WCF. Cette application n'est pas réellement distincte de la nouvelle application de réservation de voiture de location, parce que son seul but est d'agir comme un client du nouveau système. Du point de vue des services, il s'agit juste d'un autre client pour la logique métier du système de réservation.
- Application de réservation existante créée sur un serveur J2EE qui s'exécute sur un système non Windows. En raison d'une fusion récente avec une autre entreprise de location de voiture, ce système existant doit être en mesure d'accéder à la logique de la nouvelle application pour fournir une expérience unifiée aux clients des entreprises fusionnées.
- Applications partenaires qui s'exécutent sur diverses plateformes, chacune située au sein d'une société qui a conclu en arrangement avec l'entreprise de location de voiture. Les partenaires peuvent inclure des agences de voyage, des compagnies aériennes, et d'autres entreprises qui ont besoin d'effectuer des réservations de voiture de location.
Les spécifications de communication diverses pour la nouvelle application de réservation de voiture de location ne sont pas simples. Pour les interactions avec l'application cliente de type centre d'appels, par exemple, la performance est importante et l'interopérabilité va de soi, car les deux reposent sur le .NET Framework. Pour la communication avec l'application de réservation reposant sur J2EE existante et avec les applications partenaires diverses, toutefois, l'interopérabilité devient le principal objectif. Les spécifications de sécurité sont également assez différentes, entre les applications Windows locales, une application reposant sur J2EE qui s'exécute sur un autre système d'exploitation, et diverses applications partenaires qui proviennent d'Internet. Même les spécifications transactionnelles peuvent varier, avec uniquement les applications internes autorisées à faire des requêtes transactionnelles. Comment ces spécifications techniques et d'entreprise peuvent-elles être satisfaites sans exposer les créateurs de la nouvelle application à une complexité ingérable ?
WCF est conçu pour ce scénario particulier mais réaliste et est la technologie par défaut pour les applications Windows qui exposent les services et y accèdent. Cette rubrique propose une introduction à WCF et aborde son contenu et son utilisation. Le scénario que nous venons de décrire servira d'un exemple tout au long de cette introduction. L'objectif est d'expliquer clairement ce qu'est WCF, de montrer quels problèmes il résout et de montrer comment il résout ces problèmes.
Résolution du problème
Le .NET Framework sert de fondation à toutes les nouvelles applications Windows. En conséquence, WCF est implémenté à l'origine comme un ensemble de classes au-dessus du CLR de .NET Framework. Parce qu'il étend leur environnement familier, WCF permet aux développeurs qui créent aujourd'hui des applications orientées objet à l'aide de .NET Framework à générer également des applications orientées service d'une manière qui leur est familière.
L'illustration montre une vue d'un client et d'un service WCF. Les deux interagissent à l'aide du protocole SOAP, la représentation de message natif WCF, donc bien que l'illustration les montre reposant sur WCF, cela n'est pas obligatoire. WCF est construit sur .NET Framework 2.0.
Comme le scénario décrit précédemment le suggère, WCF résout de nombreux problèmes de communication entre des applications. Toutefois, trois aspects ressortent comme les plus importants de WCF :
- Unification des technologies de communication existantes de .NET Framework.
- Prise en charge de l'interopérabilité entre fournisseurs, y compris la fiabilité, la sécurité et les transactions.
- Orientation de service explicite.
Unification des technologies de traitement distribué Microsoft
En l'absence de WCF, l'équipe de développement qui implémente l'application de location de voiture devrait choisir la technologie distribuée appropriée parmi les choix multiples offerts par le .NET Framework. Cependant, étant donné les spécifications diverses de cette application, aucune technologie unique ne conviendrait aux spécifications. À la place, l'application devrait probablement utiliser plusieurs technologies .NET Framework existantes, telles que les éléments suivants :
- Services Web d'ASP.NET (ASMX). Option de communication avec l'application de réservation existante reposant sur J2EE et avec les applications partenaires sur Internet. Étant donné que ces services Web basiques sont aujourd'hui pris en charge par la plupart des plateformes, c'était la méthode la plus directe pour parvenir à l'interopérabilité entre fournisseurs avant la diffusion de WCF.
- Accès à distance à .NET Framework. Option de communication avec l'application de type centre d'appels, car les deux reposent sur le .NET Framework. L'accès distant est conçu expressément pour la communication couplée .NET à .NET, donc il offre une expérience de développement continue et simple pour les applications du réseau local.
- Enterprise Services. Utilisés par l'application de réservation de voiture de location pour gérer des durées de vie d'objet et définir des transactions distribuées. Ces fonctions pourraient être utiles pour communiquer avec chacune des autres applications dans ce scénario et les intégrer, mais Enterprise Services prend uniquement en charge un ensemble limité d'options de communication.
- WSE. Pourrait être utilisés avec ASMX pour communiquer avec l'application de réservation reposant sur J2EE et avec les applications partenaires. Parce qu'il implémente des contrats de services Web définis les plus récents, connus collectivement comme les spécifications WS-*, WSE permet une sécurité plus flexible des services Web, tant que toutes les applications impliquées prennent en charge les versions compatibles de ces nouvelles spécifications.
- Microsoft Message Queuing (MSMQ). Utilisé pour communiquer avec les applications partenaires Windows qui requièrent la remise garantie des données ainsi que le découplage des charges de travail et des durées de vie des applications. La messagerie durable fournie par Message Queuing est en général la meilleure solution pour les applications connectées par intermittence.
Construite sur .NET Framework, l'application de réservation de voiture de location doit utiliser plusieurs de ces technologies de communication pour satisfaire ses spécifications. Bien que ce soit techniquement possible, l'application résultante serait complexe à implémenter et difficile à tenir à jour.
Avec WCF, la solution est beaucoup plus facile à implémenter. Comme le montre la figure, WCF peut être utilisé pour toutes les situations décrites précédemment. En conséquence, l'application de réservation de voiture de location peut utiliser cette technologie unique pour toutes ses communications d'application à application. Vous verrez ci-dessous comment WCF traite chacune de ces spécifications :
- Vu que WCF peut communiquer à l'aide des services Web, l'interopérabilité avec les autres plateformes qui prennent également en charge le protocole SOAP, telles que les principaux serveurs d'applications reposant sur J2EE, est simple.
- Vous pouvez également configurer et étendre WCF pour communiquer avec les services Web à l'aide de messages ne reposant pas sur le protocole SOAP, aux formats XML simples comme RSS par exemple.
- La performance est essentielle pour la plupart des entreprises. WCF a été développé dans le but d'être l'une des plates-formes d'applications distribuées les plus rapides conçues par Microsoft. Pour une comparaison des performances de haut niveau entre WCF et les autres technologies de communication distribuée Microsoft .NET, consultez https://go.microsoft.com/fwlink/?LinkId=94274.
- Pour permettre des performances optimales lorsque les deux correspondants dans une communication reposent sur WCF, le codage de câble utilisé dans ce cas est une version binaire optimisée d'un jeu d'informations XML. Les messages se conforment toujours à la structure de données d'un message SOAP, mais leur codage utilise une représentation binaire de cette structure de données plutôt que le format standard (texte entre les signes « inférieur à » et « supérieur à ») du codage de texte XML 1.0. L'utilisation de cette option a un sens pour la communication avec l'application cliente de type centre d'appels, parce qu'elle repose également sur WCF, et la performance est essentielle.
- La gestion des durées de vie d'objet, la définition des transactions distribuées et d'autres aspects de Enterprise Services sont désormais assurés par WCF. Ils sont disponibles à toute application reposant sur WCF, ce qui signifie que l'application de réservation de voiture de location peut les utiliser avec chacune des autres applications avec lesquelles elle communique.
- Parce qu'il prend en charge un grand jeu de spécifications WS-*, WCF participe à la fiabilité, à la sécurité et aux transactions lorsqu'il communique avec une plate-forme qui prend également en charge ces spécifications.
- L'option WCF pour mettre la messagerie en file d'attente, reposant sur Message Queuing, permet aux applications d'utiliser la mise en file d'attente persistante sans utiliser un autre jeu d'interfaces de programmation d'applications.
Le résultat de cette unification se traduit par des fonctionnalités supérieures et une complexité considérablement réduite.
Interopérabilité avec les applications reposant sur d'autres technologies
Bien que WCF introduise un nouvel environnement de développement pour les applications distribuées, il est conçu pour interagir correctement les applications non WCF. Il existe deux aspects importants de l'interopérabilité WCF : l'interopérabilité avec d'autres plateformes, et l'interopérabilité avec les technologies Microsoft qui ont précédé WCF. La section suivante décrit les deux.
Interopérabilité avec d'autres plates-formes de services Web
Aujourd'hui, les entreprises ont en général des systèmes et des applications qu'elles ont achetées chez divers fournisseurs. Dans l'application de location de voiture, par exemple, la communication est requise avec diverses applications logicielles écrites dans divers langages et s'exécutant sur divers systèmes d'exploitation.
Parce que le mécanisme de communication fondamental de WCF consiste en des services Web reposant sur le protocole SOAP, les applications reposant sur WCF peuvent communiquer avec d'autres logiciels qui s'exécutent dans divers contextes. Une application reposant sur WCF peut interagir avec tout ce qui suit :
- Les applications reposant sur WCF qui s'exécutent dans un processus différent sur le même ordinateur fonctionnant avec Windows.
- Les applications reposant sur WCF qui s'exécutent sur un autre ordinateur fonctionnant avec Windows.
- Les applications reposant sur d'autres technologies, telles que les serveurs d'application J2EE, qui prennent en charge les services Web standard. Ces applications peuvent s'exécuter sur des ordinateurs fonctionnant avec Windows ou sur des ordinateurs fonctionnant avec d'autres systèmes d'exploitation.
Pour permettre plus qu'une communication basique, WCF implémente les technologies de services Web définies par les spécifications WS-*. Toutes ces spécifications ont été définies à l'origine par Microsoft, IBM et d'autres fournisseurs qui travaillent ensemble. Quand les caractéristiques deviennent stables, la propriété est souvent transmise à des organismes de normalisation, tels que le W3C (World Wide Web Consortium) ou l'OASIS (Organization for the Advancement of Structured Information Standards). Ces spécifications couvrent plusieurs domaines, y compris la messagerie de base, la sécurité, la fiabilité, les transactions et l'utilisation des métadonnées d'un service. Pour plus d'informations, consultez Interopérabilité et intégration. Pour plus d'informations sur les spécifications avancées des services Web, consultez https://go.microsoft.com/fwlink/?LinkId=86603.
Groupées par fonction, ces spécifications couvrent :
- La messagerie : le protocole SOAP est la fondation des services Web et définit une enveloppe de base qui contient des sections en-tête et corps. WS-Addressing définit des additions à l'en-tête SOAP pour l'adressage des messages SOAP, ce qui évite à SOAP de devoir compter sur le protocole de transport sous-jacent, tel que le HTTP, pour transporter des données d'adressage. Le codage MTOM (Message Transmission Optimization Mechanism) définit un format de transmission optimisé pour les messages SOAP avec d'importants contenus de données binaires reposant sur la spécification XOP (XML-binary Optimized Packaging).
- Les métadonnées : WSDL (Web Services Description Language) définit un langage standard pour spécifier des services et divers aspects de l'utilisation de ces services. WS-Policy autorise la spécification d'aspects plus dynamiques du comportement d'un service qui ne peuvent pas être exprimés en WSDL, tels qu'une option de sécurité préférée. WS-MetadataExchange permet à un client de demander directement des informations descriptives à propos d'un service, telles que son WSDL et ses stratégies, à l'aide du protocole SOAP.
- La sécurité : WS-Security, WS-SecureConversation, WS-Trust et WS-Federation définissent toutes des additions aux messages SOAP pour assurer l'authentification, l'intégrité des données, la confidentialité des données et d'autres fonctionnalités de sécurité.
- Fiabilité : WS-Reliable Messaging définit des additions à l'en-tête SOAP qui autorisent une communication de bout en bout fiable, même lorsqu'un ou plusieurs intermédiaires de services Web doivent être traversés.
- Les transactions : reposant sur WS-Coordination, WS-Atomic Transaction permet la coordination des transactions de validation en deux phases dans le contexte des conversations des services Web.
L'application de réservation de voiture de location utiliserait vraisemblablement plusieurs de ces technologies d'avant-garde. Par exemple, WS-Addressing est essentiel lorsque le protocole SOAP est utilisé sur un mécanisme de transport autre que le HTTP, ce qui pourrait être le cas pour la communication avec l'application cliente de type centre d'appels reposant sur .NET Framework. WCF compte sur WS-Policy et WS-Metadata Exchange pour découvrir si le système avec lequel il communique utilise également WCF et pour d'autres choses. Une communication fiable est essentielle dans la plupart des situations, c'est pourquoi il est probable que WS-Reliable Messaging serait utilisée pour interagir avec de nombreuses autres applications dans ce scénario. De la même façon, vous pourriez également utiliser WS-Security et les spécifications connexes pour sécuriser la communication avec une ou plusieurs applications, parce toutes exigeraient un certain type de protection contre l'accès non autorisé ou l'interception et la modification des messages. Pour les applications qui requièrent l'intégration des transactions au système de réservation de voiture de location, WS-Atomic Transaction serait essentiel. Enfin, MTOM pourrait être utilisé toutes les fois qu'un format de câble optimisé pour les données binaires est nécessaire (par exemple pour les images illustrant les flottes), si les deux correspondants de la communication prennent en charge cette option.
Le point à retenir est que WCF implémente des services Web pouvant interagir entre eux, avec la sécurité, la fiabilité, des transactions et d'autres services multiplateformes. Pour fournir le débit maximal, la communication WCF-à-WCF peut être optimisée considérablement, mais toutes les autres communications utilisent des protocoles de services Web standard. En fait, il est possible pour une application unique d'exposer ses services aux deux types de clients.
Interopérabilité avec les technologies Microsoft
De nombreux clients Microsoft ont fait des investissements significatifs dans les technologies .NET Framework que WCF inclut. La protection de ces investissements était l'un des objectifs fondamentaux des concepteurs de WCF. L'installation de WCF n'endommage pas les technologies existantes, donc il n'est pas nécessaire que les organisations modifient des applications existantes pour l'utiliser. Un chemin de mise à niveau clair est fourni, toutefois, et dès que possible, WCF interagit avec ces technologies antérieures.
Par exemple, WCF et ASMX utilisent tous deux le protocole SOAP, donc les applications reposant sur WCF peuvent interagir directement avec celles reposant sur ASMX. Les applications Enterprise Services existantes peuvent également être encapsulées dans les interfaces WCF, ce qui leur permet d'interagir avec des applications reposant sur WCF. Et parce que la mise en file d'attente persistante dans WCF compte sur MSMQ, les applications reposant sur WCF peuvent interagir directement avec les applications non WCF construites à l'aide d'interfaces MSMQ natives. Dans l'application de réservation de voiture de location, le logiciel construit à l'aide de l'une de ces technologies antérieures pourrait se connecter directement aux services WCF du nouveau système et les utiliser.
Cependant, l'interopérabilité n'est pas toujours possible. Par exemple, bien que WSE 1.0 et WSE 2.0 implémentent certaines des mêmes spécifications WS-* que WCF, ces technologies antérieures implémentent des versions antérieures de ces spécifications. La version 3.0 de WSE autorise l'interopérabilité avec WCF, mais pas les versions antérieures. Pour plus d'informations sur l'interopérabilité, consultez Migration des services Web WSE 3.0 vers WCF.
Interopérabilité avec d'autres protocoles XML
Le futur de l'Internet n'est pas prévisible et les technologies utilisées aujourd'hui peuvent évoluer ou être remplacées. De nos jours, la mode est d'utiliser pour la génération d'applications centrées sur le Web (appelées par de nombreuses personnes « Web 2.0 ») un modèle d'application reposant sur des communications qui utilise uniquement des formats XML simples qui ne sont pas basés sur le protocole SOAP et qui s'appuient exclusivement sur le HTTP comme transport et comme protocole d'application. Par exemple, le style architectural REST (Representational State Transfer) n'a aucune notion des opérations définies par l'utilisateur pour le traitement des données. À la place, l'état d'application est associé aux URL HTTP et aux méthodes HTTP (telles que PUT, POST, DELETE et GET). Cette approche est différente de la création des procédures ou fonctions définies par l'utilisateur que la plupart des développeurs ont l'habitude d'utiliser dans un environnement d'entreprise. Toutefois, l'approche REST est valable dans les scénarios où les services doivent fonctionner en tant qu'applications principales de Web 2.0.
REST n'est qu'un exemple d'une technologie évoluant vers le Web 2.0. Dans cet environnement de modèles de programmation expérimentaux, de réinterprétation continue et d'affinage des normes, avec des modifications imprévisibles, la flexibilité est de mise. WCF vous l'apporte. Par exemple, bien que WCF utilise le protocole SOAP comme structure sous-jacente, il n'est pas lié à l'utilisation du protocole SOAP pour la communication câblée. En fait, WCF peut être configuré pour traiter des données XML « ordinaires » qui ne sont pas encapsulées dans une enveloppe SOAP. WCF peut également être étendu pour prendre en charge des formats XML spécifiques, tels que l'ATOM (une norme RSS populaire), et même des formats non XML, tels que JSON (JavaScript Object Notation). Cette souplesse garantit que le code écrit aujourd'hui sera valide dans le futur, même si les protocoles changent ou sont remplacés. Par conséquent, WCF a été conçu pour le présent et le futur.
Voir aussi
Référence
Concepts
Concepts fondamentaux concernant Windows Communication Foundation
Architecture Windows Communication Foundation
Guide de la documentation
Autres ressources
Indications et meilleures pratiques
Didacticiel de mise en route
Programmation WCF de base
Windows Communication Foundation Samples