Contrats
Cette section vous montre comment définir et implémenter des contrats Windows Communication Foundation (WCF). Un contrat de service spécifie ce qu'un point de terminaison communique au monde extérieur. À un niveau plus concret, il s'agit d'une instruction à propos d'un ensemble de messages spécifiques organisé en modèles d'échange de messages de base, tels que les messages demande/réponse, unidirectionnels et duplex. Si un contrat de service est un ensemble d'échanges de messages liés de manière logique, une opération de service est un échange de messages unique. Par exemple, une opération Hello doit évidemment accepter un message (de sorte que l'appelant puisse annoncer la salutation) et peut ou non retourner un message (en fonction du niveau de courtoisie de l'opération).
Pour plus d'informations sur les contrats et d'autres concepts clés de WCF, consultez Concepts fondamentaux concernant Windows Communication Foundation. Cette rubrique fournit une présentation des contrats de service. Pour plus d'informations sur la façon de créer des clients qui utilisent des contrats de service pour se connecter à des services, consultez Vue d'ensemble d'un client WCF. Pour plus d'informations sur sur les canaux clients, l'architecture des clients et autres aspects liés aux clients, consultez Clients.
Vue d'ensemble
Cette rubrique fournit une orientation conceptuelle de niveau supérieur de la conception et de l'implémentation de services WCF. Les sous-rubriques fournissent des informations plus détaillées sur les aspects spécifiques à la conception et à l'implémentation. Avant de concevoir et d'implémenter votre application WCF, vous devez :
- comprendre ce qu'est un contrat de service, comment il fonctionne et comment en créer un ;
- comprendre que les contrats définissent des impératifs minimaux que la configuration à l'exécution ou l'environnement d'hébergement peuvent ne pas prendre en charge.
Contrats de service
Un contrat de service est une instruction qui fournit des informations sur :
- le groupement 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 ;
- l'emplacement des opérations ;
- les protocoles et formats de sérialisation spécifiques utilisés pour prendre en charge la communication avec le service.
Par exemple, un contrat de commande fournisseur peut avoir une opération CreateOrder qui accepte une entrée de types d'informations de commande et retourne des information de succès ou d'échec, y compris un identificateur de commande. Il peut également avoir une opération GetOrderStatus qui accepte un identificateur de commande et retourne des informations d'état de commande. Un contrat de service de cette sorte spécifierait :
- que le contrat de commande fournisseur serait composé d'opérations CreateOrder et GetOrderStatus ;
- que les opérations auraient des messages d'entrée et des messages de sortie spécifiés ;
- les données que ces messages pourraient transporter ;
- des instructions catégoriques à propos de l'infrastructure de communication nécessaire pour traiter les messages avec succès. Par exemple, ces détails incluent les éventuelles formes de sécurité requises pour établir la communication.
Pour communiquer ce type d'informations à des applications sur d'autres plateformes (y compris les plateformes non-Microsoft), les contrats de service XML sont exprimés publiquement dans des formats XML standard, tels que Web Services Description Language (WSDL) et XML Schema (XSD), entre autres. Les développeurs pour de nombreuses plateformes peuvent utiliser ces informations de contrat publiques pour créer des applications qui peuvent communiquer avec le service, à la fois car elles comprennent le langage de la spécification et car ces langages sont conçus pour autoriser une interopérabilité en décrivant les formes, formats et protocoles publics que le service prend en charge. Pour plus d'informations sur la façon dont WCF gère ce type d'informations, consultez Métadonnées.
Les contrats peuvent toutefois être exprimés de nombreuses manières, et bien que WSDL et XSD constituent d'excellents langages pour décrire des services d'une manière accessible, ce sont des langages difficiles à utiliser directement ; en tous les cas, ils constituent simplement des descriptions d'un service, et non des implémentations de contrat de service. Par conséquent, les applications WCF utilisent des attributs, des interfaces et des classes managés à la fois pour définir la structure et pour implémenter un service.
Le contrat résultant défini dans les types managés peut être converti (on dit également exporté) en tant que métadonnées (WSDL et XSD) lorsque cela est requis par les clients ou d'autres implémenteurs de service, en particulier sur d'autres plateformes. Le résultat est un modèle de programmation simple qui peut être décrit à l'aide de métadonnées publiques à toute application cliente. Les détails des messages SOAP sous-jacents, tels que les informations de transport et relatives à la sécurité, peuvent être laissés à WCF, qui exécute automatiquement les conversions nécessaires entre le système de type de contrat de service et le système de type XML.
Pour plus d'informations sur la conception de contrats, consultez Conception de contrats de service. Pour plus d'informations sur l'implémentation de contrats, voir Implémentation de contrats de service.
De plus, WCF fournit également la capacité à développer des contrats de service entièrement au niveau message. Pour plus d'informations sur le développement de contrats de service au niveau message, consultez Utilisation de contrats de message.. Pour plus d'informations sur le développement de services en code XML non-SOAP, consultez Interopérabilité avec les applications POX
Présentation de la hiérarchie des impératifs
Un contrat de service groupe les opérations, spécifie les modèles d'échange de messages, les types de messages et les types de données que ces messages transportent, et indique les catégories de comportement à l'exécution qu'une implémentation doit avoir pour prendre en charge le contrat (par exemple, il peut exiger que les messages soient chiffrés et signés). Toutefois, le contrat de service lui-même ne spécifie pas précisément comment ces spécifications sont satisfaites, mais uniquement qu'elles doivent l'être. Le type de chiffrement utilisé ou la façon dont un message est signé incombe à l'implémentation et à la configuration d'un service conforme.
Remarquez la façon dont le contrat requiert certaines choses de l'implémentation de contrat de service et de la configuration à l'exécution pour ajouter un comportement. L'ensemble de spécifications qui doivent être satisfaites pour exposer un service pour une utilisation repose sur l'ensemble de spécifications précédent. Si un contrat spécifie des exigences concernant l'implémentation, une implémentation peut requérir une plus grande partie de la configuration et des liaisons qui autorisent l'exécution du service. Pour finir, l'application hôte doit également prendre en charge les spécifications ajoutées par la configuration du service et les liaisons.
Il convient de prendre en compte ce processus de spécification additif lors de la conception, de l'implémentation, de la configuration et de l'hébergement de votre application de service Windows Communication Foundation (WCF). Par exemple, le contrat peut spécifier qu'il doit prendre en charge une session. Dans ce cas, vous devez configurer la liaison de façon à prendre en charge cette spécification contractuelle, sinon l'implémentation de service ne fonctionnera pas. Ou si votre service requiert l'authentification Windows intégrée et qu'il est hébergé dans les services Internet (IIS), l'application Web dans laquelle le service réside doit avoir l'authentification Windows intégrée activée et la prise en charge de l'accès anonyme désactivé. Pour plus d'informations sur les fonctionnalités et l'impact des différents types d'applications hôtes de service, consultez Hébergement.
Voir aussi
Concepts
Points de terminaison : adresses, liaisons et contrats
Conception de contrats de service
Implémentation de contrats de service