Partager via


Comment : exposer un contrat à des clients SOAP et Web

Par défaut, Windows Communication Foundation (WCF) met à disposition les points de terminaison uniquement aux clients SOAP. Dans Comment : créer un service de style Web de base, un point de terminaison est rendu disponible aux clients non-SOAP. Dans certains cas, vous pouvez souhaiter rendre le même contrat disponible pour les deux, comme point de terminaison Web et comme point de terminaison SOAP. Cette rubrique explique comment procéder.

Pour définir le contrat de service

  1. Définissez un contrat de service à l'aide d'une interface marquée avec les attributs ServiceContractAttribute, WebInvokeAttribute et WebGetAttribute.

    Bb412196.note(fr-fr,VS.90).gifRemarque :
    Par défaut, WebInvokeAttribute mappe des appels POST à l'opération. Toutefois, vous pouvez spécifier la méthode pour mapper à l'opération un paramètre pour "method=". WebGetAttribute n'a pas de paramètre pour "method=" et mappe uniquement les appels GET à l'opération de service.

  2. Implémentez le contrat de service.

Pour héberger le service

  1. Créez un objet ServiceHost.

  2. Ajoutez un ServiceEndpoint avec BasicHttpBinding pour le point de terminaison SOAP.

  3. Ajoutez un ServiceEndpoint avec WebHttpBinding pour le point de terminaison non-SOAP et ajoutez le WebHttpBehavior au point de terminaison.

  4. Faites un appel Open() à une instance ServiceHost pour ouvrir l'hôte de service.

Pour appeler des opérations de service mappées à GET dans Internet Explorer

  1. Ouvrez Internet Explorer, entrez "https://localhost:8000/EchoWithGet?s=Hello, world!" et appuyez sur ENTRÉE. L'URL contient l'adresse de base du service ("https://localhost:8000/"), l'adresse relative du point de terminaison (""), l'opération de service à appeler ("EchoWithGet") et un point d'interrogation suivi par une liste de paramètres nommés séparés par un point-virgule (&).

Pour appeler des opérations de service sur le point de terminaison Web dans le code

  1. Créez une instance de WebChannelFactory dans un bloc using.
Bb412196.note(fr-fr,VS.90).gifRemarque :
Close() est automatiquement appelé sur le canal à la fin du blocusing.

  1. Créez le canal et appelez le service.

Pour appeler des opérations de service sur le point de terminaison SOAP

  1. Créez une instance de ChannelFactory dans un bloc using.

  2. Créez le canal et appelez le service.

Pour fermer l'hôte de service

  1. Fermez l'hôte de service.

Exemple

Les éléments suivants représentent l'intégralité du code pour cette rubrique.

Compilation du code

Lors de la compilation de Service.cs, référencez System.ServiceModel.dll et System.ServiceModel.Web.dll.

Voir aussi

Référence

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebServiceHost
ChannelFactory
WebHttpBehavior