Partager via


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 déclaration sur un ensemble de messages spécifiques organisés en modèles d’échange de messages de base (MEPS), tels que la demande/réponse, l’unidirectionnel et le duplex. Si un contrat de service est un ensemble logique d’échanges de messages, une opération de service est un seul échange de messages. Par exemple, une Hello opération doit évidemment accepter un message (de sorte que l’appelant peut annoncer le message d’accueil) et peut ou non retourner un message (selon la courtoisie de l’opération).

Pour plus d’informations sur les contrats et d’autres concepts WCF de base, consultez Concepts fondamentaux de Windows Communication Foundation. Cette rubrique se concentre sur la compréhension des contrats de service. Pour plus d’informations sur la création de clients qui utilisent des contrats de service pour se connecter aux services, consultez Vue d’ensemble du client WCF. Pour plus d’informations sur les canaux clients, l’architecture du client et d’autres problèmes clients, consultez Clients.

Aperçu

Cette rubrique fournit une orientation conceptuelle de haut niveau pour concevoir et implémenter des services WCF. Les sous-rubriques fournissent des informations plus détaillées sur les spécificités de la conception et de l’implémentation. Avant de concevoir et d’implémenter votre application WCF, il est recommandé de :

  • Comprenez ce qu’est un contrat de service, comment il fonctionne et comment en créer un.

  • Comprenez que les contrats précisent les exigences minimales que la configuration runtime 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 :

  • Regroupement d’opérations dans un service.

  • Signature des opérations en termes de messages échangés.

  • Types de données de ces messages.

  • Emplacement des opérations.

  • Protocoles et formats de sérialisation spécifiques utilisés pour prendre en charge la communication réussie avec le service.

Par exemple, un contrat de bon de commande peut avoir une CreateOrder opération qui accepte une entrée de types d’informations de commande et retourne des informations de réussite ou d’échec, y compris un identificateur de commande. Il peut également avoir une GetOrderStatus opération qui accepte un identificateur de commande et retourne des informations d’état de commande. Un contrat de service de ce type spécifie :

  • que le contrat de commande fournisseur serait composé d'opérations CreateOrder et GetOrderStatus ;

  • Que les opérations ont spécifié les messages d’entrée et les messages de sortie.

  • Données que ces messages peuvent contenir.

  • Instructions catégorielles sur l’infrastructure de communication nécessaire pour traiter correctement les messages. Par exemple, ces détails incluent si et quelles formes de sécurité sont requises pour établir une communication réussie.

Pour transmettre ce type d’informations aux 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 le langage WSDL (Web Services Description Language) et le schéma XML (XSD), entre autres. Les développeurs pour de nombreuses plateformes peuvent utiliser ces informations de contrat public pour créer des applications qui peuvent communiquer avec le service, à la fois parce qu’elles comprennent le langage de la spécification et parce que ces langues sont conçues pour permettre l’interopérabilité en décrivant les formulaires publics, les formats et les protocoles pris en charge par le service. Pour plus d’informations sur la façon dont WCF gère ce type d’informations, consultez Métadonnées.

Toutefois, les contrats peuvent être exprimés de nombreuses façons, et bien que WSDL et XSD soient d’excellents langages pour décrire les services d’une manière accessible, ils sont difficiles à utiliser directement , dans tous les cas, ils sont simplement des descriptions d’un service, et non des implémentations de contrat de service. Par conséquent, les applications WCF utilisent des attributs managés, des interfaces et des classes pour définir la structure et implémenter un service.

Le contrat obtenu défini dans les types managés peut être converti (également appelé exporté) en tant que métadonnées ( WSDL et XSD) lorsque nécessaire par des 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 pour n’importe quelle application cliente. Les détails des messages SOAP sous-jacents, tels que les informations relatives au transport et à la sécurité, peuvent être laissés à WCF, ce qui effectue automatiquement les conversions nécessaires vers et depuis le système de type de contrat de service vers 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, consultez Implémentation de contrats de service.

De plus, WCF offre également la possibilité de développer des contrats de service entièrement au niveau du message. Pour plus d’informations sur le développement de contrats de service au niveau du message, consultez Utilisation des contrats de message. Pour plus d’informations sur le développement de services dans xml non SOAP, consultez Interopérabilité avec les applications POX.

Présentation de la hiérarchie des exigences

Un contrat de service regroupe les opérations ; spécifie le meP, les types de messages et les types de données que ces messages portent ; et indique les catégories de comportement d’exécution qu’une implémentation doit avoir à prendre en charge le contrat (par exemple, il peut nécessiter que les messages soient chiffrés et signés). Toutefois, le contrat de service lui-même ne spécifie pas précisément la façon dont ces exigences sont remplies, seulement qu’elles doivent être. Quel type de chiffrement ou comment un message est inscrit est à l’implémentation et à la configuration d’un service conforme.

Notez comment le contrat impose certaines exigences à l'implémentation du contrat de service et à la configuration à l'exécution pour ajouter un comportement. L'ensemble des exigences qui doivent être remplies pour exposer un service à utiliser s’appuie sur l'ensemble précédent d'exigences. Si un contrat établit des exigences de l’implémentation, une implémentation peut nécessiter davantage de configuration et de liaisons qui permettent au service d’exécuter. Enfin, l’application hôte doit également prendre en charge les exigences que la configuration et les liaisons de service ajoutent.

Ce processus d’exigence additif est important de garder à l’esprit tout en concevant, implémentant, configurant et hébergeant votre application de service Windows Communication Foundation (WCF). Par exemple, le contrat peut spécifier qu’il doit prendre en charge une session. Si c’est le cas, vous devez configurer la liaison pour prendre en charge cette exigence contractuelle, ou l’implémentation du service ne fonctionnera pas. Ou si votre service nécessite l’authentification Windows intégrée et est hébergé dans Internet Information Services (IIS), l’application web dans laquelle réside le service doit avoir l’authentification Windows intégrée activée et la prise en charge anonyme désactivée. 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