Partager via


Modèle objet de programmation Web WCF

Le Modèle objet de programmation Web HTTP permet aux développeurs d'exposer des services Web Windows Communication Foundation (WCF) par le biais de demandes HTTP de base sans avoir recours à SOAP. Le Modèle de programmation Web HTML tire parti du modèle d'extensibilité WCF existant. Il définit les classes suivantes :

Modèle de programmation :

Infrastructure de canaux et de répartiteur :

Points d'extensibilité et classes d'utilitaire :

WebGetAttribute

L'attribut WebGetAttribute est utilisé pour marquer une opération de service en tant qu'opération répondant aux demandes HTTP GET. Il s'agit d'un comportement d'opération passif (les méthodes IOperationBehavior n'ont aucune action) qui ajoute des métadonnées à la description de l'opération. L'attribut WebGetAttribute n'a aucun effet à moins qu'un comportement recherchant ces métadonnées dans la description de l'opération (en particulier WebHttpBehavior) soit ajouté à la collection de comportements du service. L'attribut WebGetAttribute accepte les paramètres optionnels dans le tableau suivant :

Paramètre Description

BodyStyle

Contrôle si les demandes envoyées à l'opération de service à laquelle l'attribut est appliqué et les réponses reçues en retour doivent être encapsulées.

RequestFormat

Contrôle la mise en forme des messages de demande.

ResponseFormat

Contrôle la mise en forme des messages de réponse.

UriTemplate

Spécifie le modèle URI qui contrôle quelles demandes GET sont mappées à l'opération de service à laquelle l'attribut est appliqué.

WebHttpBinding

Le WebHttpBinding intègre une prise en charge des données XML, JSON et des données binaires brutes à l'aide de WebMessageEncodingBindingElement. Il se compose d'un HttpsTransportBindingElement, d'un HttpTransportBindingElement et d'un objet WebHttpSecurity. WebHttpBinding est conçu pour être utilisé en conjonction avec WebHttpBehavior.

WebInvokeAttribute

L'attribut WebInvokeAttribute est semblable au WebGetAttribute, mais il est utilisé pour marquer une opération de service en tant qu'opération qui répond aux demandes HTTP autres que GET. Il s'agit d'un comportement d'opération passif (les méthodes IOperationBehavior n'ont aucune action) qui ajoute des métadonnées à la description de l'opération. L'attribut WebInvokeAttribute n'a aucun effet à moins qu'un comportement recherchant ces métadonnées dans la description de l'opération (en particulier WebHttpBehavior) soit ajouté à la collection de comportements du service.

L'attribut WebGetAttribute accepte les paramètres optionnels dans le tableau suivant.

Paramètre Description

BodyStyle

Contrôle si les demandes envoyées à l'opération de service à laquelle l'attribut est appliqué et les réponses reçues en retour doivent être encapsulées.

Method

Spécifie la méthode HTTP à laquelle l'opération de service est mappée.

RequestFormat

Contrôle la mise en forme des messages de demande.

ResponseFormat

Contrôle la mise en forme des messages de réponse.

UriTemplate

Spécifie le modèle URI qui contrôle quelles demandes GET sont mappées à l'opération de service à laquelle l'attribut est appliqué.

UriTemplate

La classe UriTemplate vous permet de définir un jeu d'URI de structure similaire. Les modèles sont composés de deux parties : un chemin d'accès et une requête. Un chemin d'accès est constitué d'une série de segments délimités par une barre oblique (/). Chaque segment peut avoir une valeur littérale, une valeur variable (écrite entre accolades [{}], avec obligation de correspondre au contenu exact d'un segment) ou un caractère générique (un astérisque [*] qui correspond au reste du chemin d'accès). L'expression de requête peut être entièrement omise. Si elle est présente, elle spécifie une série non triée de paires nom/valeur. Les éléments de l'expression de requête peuvent être des paires littérales (? x=2) ou des paires variables (? x = {valeur}). Les valeurs non couplées ne sont pas autorisées. UriTemplate est utilisé en interne par le modèle de programmation Web WCF pour mapper des URI spécifiques ou des groupes d'URI pour effectuer les opérations.

UriTemplateTable

La classe UriTemplateTable représente un jeu associatif d'objets UriTemplate liés à un objet choisi par le développeur. Elle vous permet de faire correspondre les URI (Uniform Resource Identifiers) des candidats aux modèles du jeu et de récupérer les données associées aux modèles correspondants. UriTemplateTable est utilisé en interne par le Modèle de programmation Web WCF pour mapper des URI ou des groupes d'URI spécifiques à des opérations de service.

WebServiceHost

WebServiceHost étend le ServiceHost de manière à faciliter l'hébergement d'un service de style Web non-SOAP. Si WebServiceHost ne trouve aucun point de terminaison dans la description du service, il crée automatiquement un point de terminaison par défaut au niveau de l'adresse de base du service. Lors de la création d'un point de terminaison HTTP par défaut, le WebServiceHost désactive également la page d'aide HTTP et la fonctionnalité WSDL (Web Services Description Language) GET de sorte que le point de terminaison des métadonnées n'interfère pas avec le point de terminaison HTTP par défaut. WebServiceHost garantit également que le WebHttpBehavior requis soit attaché à tous les points de terminaison qui utilisent WebHttpBinding. Enfin, WebServiceHost configure automatiquement la liaison du point de terminaison afin qu'il puisse profiter des paramètres de sécurité IIS (Internet Information Services) en cas d'utilisation dans un répertoire virtuel sécurisé.

WebServiceHostFactory

La classe WebServiceHostFactory est utilisée pour créer dynamiquement un WebServiceHost lorsqu'un service est hébergé dans les services IIS (Internet Information Services) ou WAS (Windows Process Activation). À la différence d'un service auto-hébergé où l'application d'hébergement instancie le WebServiceHost, les services hébergés dans les services IIS ou WAS utilisent cette classe pour créer le WebServiceHost pour ces services. La méthode CreateServiceHost est appelée lorsqu'une demande entrante pour le service est reçue.

WebHttpBehavior

Le WebHttpBehavior fournit les formateurs, sélecteurs d'opération, etc. requis pour la prise en charge de service de style Web au niveau de la couche de modèle de service. Il est implémenté en tant que comportement de point de terminaison (utilisé en conjonction avec WebHttpBinding) et autorise la spécification de formateurs et de sélecteurs d'opération pour chaque point de terminaison, ce qui permet à une même implémentation de service d'exposer à la fois des points de terminaison SOAP et POX.

Extension de WebHttpBehavior

WebHttpBehavior peut être étendu à l'aide de différentes méthodes virtuelles : GetOperationSelector, GetReplyClientFormatter, GetRequestClientFormatter, GetReplyDispatchFormatter et GetRequestDispatchFormatter. Les développeurs peuvent dériver une classe de WebHttpBehavior et substituer ces méthodes de manière à personnaliser le comportement par défaut.

WebScriptEnablingBehavior est un exemple d'extension de WebHttpBehavior. WebScriptEnablingBehavior permet aux points de terminaison Windows Communication Foundation (WCF) de recevoir des demandes HTTP provenant d'un client AJAX ASP.NET basé sur un navigateur. Le HTML Form Handler Sample est un exemple de l'utilisation de ce point d'extensibilité.

WebHttpDispatchOperationSelector

Le WebHttpDispatchOperationSelector utilise les classes UriTemplate et UriTemplateTable pour distribuer les appels aux opérations de service.

Compatibilité

Le Modèle de programmation Web WCF n'utilise pas de messages SOAP et par conséquent ne prend pas en charge les protocoles WS-*. Vous pouvez toutefois exposer le même contrat par deux points de terminaison différents, l'un utilisant SOAP et l'autre pas. Pour obtenir un exemple, consultez Comment : exposer un contrat à des clients SOAP et Web.

Voir aussi

Référence

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector

Concepts

Vue d'ensemble du modèle de programmation Web WCF