Conception et implémentation de servicesDesigning and Implementing Services

Cette section vous montre comment définir et implémenter des contrats WCF.This section shows you how to define and implement WCF contracts. Un contrat de service spécifie ce qu'un point de terminaison communique au monde extérieur.A service contract specifies what an endpoint communicates to the outside world. À 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.At a more concrete level, it is a statement about a set of specific messages organized into basic message exchange patterns (MEPs), such as request/reply, one-way, and 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.If a service contract is a logically related set of message exchanges, a service operation is a single message exchange. 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).For example, a Hello operation must obviously accept one message (so the caller can announce the greeting) and may or may not return a message (depending upon the courtesy of the operation).

Pour plus d’informations sur les contrats et autres concepts de Windows Communication Foundation (WCF), consultez Concepts fondamentaux Windows Communication Foundation.For more information about contracts and other core Windows Communication Foundation (WCF) concepts, see Fundamental Windows Communication Foundation Concepts. Cette rubrique est consacrée au fonctionnement des contrats de service.This topic focuses on understanding service contracts. Pour plus d’informations sur la création de clients qui utilisent des contrats de service pour se connecter aux services, consultez WCF Client Overview.For more information about how to build clients that use service contracts to connect to services, see WCF Client Overview.

Vue d'ensembleOverview

Cette rubrique fournit une orientation conceptuelle de haut niveau à la conception et implémentation des services WCF.This topic provides a high level conceptual orientation to designing and implementing WCF services. Les sous-rubriques contiennent des informations détaillées sur les particularités de ce type de conception et d'implémentation.Subtopics provide more detailed information about the specifics of design and implementation. Avant de concevoir et implémenter votre application WCF, il est recommandé que vous avez :Before designing and implementing your WCF application, it is recommended that you:

  • comprendre ce qu'est un contrat de service, comment il fonctionne et comment en créer un ;Understand what a service contract is, how it works, and how to create one.

  • comprendre que les contrats définissent des exigences minimales susceptibles de ne pas être prises en charge par la configuration d’exécution et l’environnement d’hébergement.Understand that contracts state minimum requirements that runtime configuration or the hosting environment may not support.

Contrats de serviceService Contracts

Un contrat de service spécifie les éléments suivants :A service contract specifies the following:

  • les opérations qu'un contrat expose ;The operations a contract exposes.

  • la signature des opérations en termes de messages échangés ;The signature of the operations in terms of messages exchanged.

  • les types de données de ces messages ;The data types of these messages.

  • l'emplacement des opérations ;The location of the operations.

  • les protocoles et formats de sérialisation spécifiques utilisés pour prendre en charge la communication avec le service.The specific protocols and serialization formats that are used to support successful communication with the 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.For example, a purchase order contract might have a CreateOrder operation that accepts an input of order information types and returns success or failure information, including an order identifier. Il peut également avoir une opération GetOrderStatus qui accepte un identificateur de commande et retourne des informations d'état de commande.It might also have a GetOrderStatus operation that accepts an order identifier and returns order status information. Un tel contrat de service spécifie alors :A service contract of this sort would specify:

  1. que le contrat de commande fournisseur serait composé d'opérations CreateOrder et GetOrderStatus ;That the purchase order contract consisted of CreateOrder and GetOrderStatus operations.

  2. que les opérations auraient des messages d'entrée et des messages de sortie spécifiés ;That the operations have specified input messages and output messages.

  3. les données que ces messages pourraient transporter ;The data that these messages can carry.

  4. des instructions catégoriques à propos de l'infrastructure de communication nécessaire pour traiter les messages avec succès.Categorical statements about the communication infrastructure necessary to successfully process the messages. Par exemple, ces détails incluent les éventuelles formes de sécurité requises pour établir la communication.For example, these details include whether and what forms of security are required to establish successful communication.

Pour communiquer ce type d’informations à d’autres applications sur de nombreuses plateformes (y compris les plateformes non-Microsoft), les contrats de service XML sont exprimés publiquement dans des formats XML standards, tels que Web Services Description Language () WSDL) et schéma XML (XSD), entre autres.To convey this kind of information to other applications on many platforms (including non-Microsoft platforms), XML service contracts are publicly expressed in standard XML formats, such as Web Services Description Language (WSDL) and XML Schema (XSD), among others. Les développeurs qui travaillent avec un grand nombre de plateformes différentes peuvent utiliser ces informations de contrat publiques pour créer des applications capables de communiquer avec le service, ces applications comprenant le langage des spécifications, d'une part, et ce langage assurant l'interopérabilité grâce à sa description de formes, formats et protocoles publics pris en charge par ce service, d'autre part.Developers for many platforms can use this public contract information to create applications that can communicate with the service, both because they understand the language of the specification and because those languages are designed to enable interoperation by describing the public forms, formats, and protocols that the service supports. Pour plus d’informations sur la façon dont WCF gère ce type d’informations, consultez métadonnées.For more information about how WCF handles this kind of information, see Metadata.

Les contrats peuvent être exprimés dans un grand nombre de langages différents et bien que WSDL et XSD constituent d'excellents langages pour décrire des services de manière accessible, ce sont des langages difficiles à utiliser directement. En outre, ils contiennent uniquement des descriptions de service et ne correspondent pas à des implémentations de contrat de service.Contracts can be expressed many ways, and while WSDL and XSD are excellent languages to describe services in an accessible way, they are difficult languages to use directly and are merely descriptions of a service, not service contract implementations. Par conséquent, les applications WCF utilisent les attributs managés, des interfaces et des classes pour définir la structure d’un service et mettre en œuvre.Therefore, WCF applications use managed attributes, interfaces, and classes both to define the structure of a service and to implement it.

Le contrat résultant défini dans les types managés peut être exporté en tant que métadonnées : WSDL et XSD, si nécessaire, en les clients ou d’autres implémenteurs de service.The resulting contract defined in managed types can be exported as metadata—WSDL and XSD—when needed by clients or other service implementers. 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.The result is a straightforward programming model that can be described (using public metadata) to any client application. Les détails des messages SOAP sous-jacents, le transport et informations relatives à la sécurité et ainsi de suite, peuvent être conservés à WCF, qui effectue automatiquement les conversions nécessaires vers et depuis le système de type de contrat de service pour le système de type XML.The details of the underlying SOAP messages, the transportation and security-related information, and so on, can be left to WCF, which performs the necessary conversions to and from the service contract type system to the XML type system automatically.

Pour plus d’informations sur la conception de contrats, consultez Designing Service Contracts.For more information about designing contracts, see Designing Service Contracts. Pour plus d’informations sur l’implémentation de contrats, consultez Implementing Service Contracts.For more information about implementing contracts, see Implementing Service Contracts.

Messages avant et centreMessages Up Front and Center

L'utilisation d'interfaces, de classes et de méthodes managées pour modeler des opérations de service ne pose aucune difficulté dès lors que vous êtes familiarisé avec les signatures de méthode de style « appels de procédure distante » (remote call procedure, RPC), pour lesquelles le passage des paramètres dans les méthodes et la réception des valeurs retournées constituent le procédé standard de demande de fonctionnalités auprès d'un objet ou d'un autre type de code.Using managed interfaces, classes, and methods to model service operations is straightforward when you are used to remote procedure call (RPC)-style method signatures, in which passing parameters into a method and receiving return values is the normal form of requesting functionality from an object or other type of code. Par exemple, les programmeurs qui utilisent des langages managés tels que Visual Basic et C++ COM peuvent appliquer leur connaissance de l’approche de style RPC (qu’il soit à l’aide des objets ou des interfaces) pour la création de contrats de service WCF sans rencontre des problèmes inhérents à RPC-style distribué des systèmes de l’objet.For example, programmers using managed languages such as Visual Basic and C++ COM can apply their knowledge of the RPC-style approach (whether using objects or interfaces) to the creation of WCF service contracts without experiencing the problems inherent in RPC-style distributed object systems. La programmation orientée service présente les mêmes avantages que la programmation orientée message faiblement couplée tout en permettant aux développeurs de continuer à bénéficier de la convivialité de la programmation RPC.Service orientation provides the benefits of loosely coupled, message-oriented programming while retaining the ease and familiarity of the RPC programming experience.

De nombreux programmeurs préfèrent les interfaces de programmation d'application orientées message, telles que les files d'attente de messages comme Microsoft MSMQ, les espaces de noms System.Messaging dans le .NET Framework ou l'envoi sous forme de langage XML non structuré dans les requêtes HTTP, pour n'en nommer que quelques-unes.Many programmers are more comfortable with message-oriented application programming interfaces, such as message queues like Microsoft MSMQ, the System.Messaging namespaces in the .NET Framework, or sending unstructured XML in HTTP requests, to name a few. Pour plus d’informations sur la programmation au niveau du message, consultez Using Message Contracts, de programmation au niveau du canal de Service, et l’interopérabilité avec les Applications POX.For more information about programming at the message level, see Using Message Contracts, Service Channel-Level Programming, and Interoperability with POX Applications.

Présentation de la hiérarchie des exigencesUnderstanding the Hierarchy of Requirements

Un contrat de service regroupe les opérations, spécifie le modèle d'échange de messages, les types de messages et les types de données transportés par ces messages et indique les catégories de comportements que l'implémentation doit pouvoir adopter en cours d'exécution pour assurer la prise en charge du contrat (il peut, par exemple, s'agir des comportements en matière de chiffrement et de signature des messages).A service contract groups the operations; specifies the message exchange pattern, message types, and data types those messages carry; and indicates categories of run-time behavior an implementation must have to support the contract (for example, it may require that messages be encrypted and signed). Le contrat de service proprement dit ne spécifie pas précisément comment ces spécifications sont satisfaites, mais uniquement qu'elles doivent l'être.The service contract itself does not specify precisely how these requirements are met, only that they must be. Le type de chiffrement ou la manière dont un message doit être signé incombent à l'implémentation et à la configuration des services concernés.The type of encryption or the manner in which a message is signed is up to the implementation and configuration of a compliant service.

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.Notice the way that the contract requires certain things of the service contract implementation and the run-time configuration to add behavior. L’ensemble d’exigences qui doivent être satisfaites pour exposer un service pour une utilisation repose sur l’ensemble d’exigences précédent.The set of requirements that must be met to expose a service for use builds on the preceding set of requirements. 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.If a contract makes requirements of the implementation, an implementation can require yet more of the configuration and bindings that enable the service to run. Pour finir, l’application hôte doit également prendre en charge les exigences ajoutées par la configuration du service et les liaisons.Finally, the host application must also support any requirements that the service configuration and bindings add.

Ce processus d’exigence additif est important à prendre en compte lors de la conception, l’implémentation, configuration et hébergement d’une application de service Windows Communication Foundation (WCF).This additive requirement process is important to keep in mind while designing, implementing, configuring, and hosting a Windows Communication Foundation (WCF) service application. Par exemple, le contrat peut spécifier qu'il doit prendre en charge une session.For example, the contract can specify that it needs to support a 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.If so, then you must configure the binding to support that contractual requirement, or the service implementation will not work. Si votre service requiert l'authentification intégrée Windows (Windows Integrated Authentification, WIA) et qu'il est hébergé par les services IIS, l'option WIA de l'application Web dans laquelle se trouve le service doit être activée et l'option de prise en charge anonyme doit être désactivée.Or if your service requires Windows Integrated Authentication and is hosted in Internet Information Services (IIS), the Web application in which the service resides must have Windows Integrated Authentication turned on and anonymous support turned off. Pour plus d’informations sur les fonctionnalités et l’impact des types d’application hôte service différent, consultez Services d’hébergement.For more information about the features and impact of the different service host application types, see Hosting Services.

Voir aussiSee also