Publication de métadonnées
Les services Windows Communication Foundation (WCF) publient les métadonnées à l'aide d'un ou de plusieurs points de terminaison. La publication de métadonnées de service permet d'accéder à celles-ci à l'aide de protocoles standardisés, tels que WS-MetadataExchange (MEX) et les requêtes HTTP/GET. Les points de terminaison de métadonnées sont semblables aux autres points de terminaison de service dans le sens où ils ont une adresse, une liaison et un contrat, et qu'ils peuvent être ajoutés à un hôte de service via la configuration ou du code impératif.
Publication de points de terminaison de métadonnées
Pour publier des points de terminaison de métadonnées pour un service WCF, vous devez dans un premier temps ajouter le comportement de service ServiceMetadataBehavior au service. L'ajout d'une instance System.ServiceModel.Description.ServiceMetadataBehavior permet à votre service d'exposer des points de terminaison de métadonnées. Après avoir ajouté le comportement de service System.ServiceModel.Description.ServiceMetadataBehavior, vous pouvez ensuite exposer les points de terminaison de métadonnées qui prennent en charge le protocole MEX ou qui répondent aux requêtes HTTP/GET.
System.ServiceModel.Description.ServiceMetadataBehavior utilise un exportateur WsdlExporter pour exporter les métadonnées de tous les points de terminaison de service de votre service. Pour plus d'informations sur l'exportation de métadonnées à partir d'un service, consultez Exportation et importation de métadonnées.
System.ServiceModel.Description.ServiceMetadataBehavior ajoute une instance ServiceMetadataExtension comme extension à votre hôte de service. System.ServiceModel.Description.ServiceMetadataExtension fournit l'implémentation pour les protocoles de publication de métadonnées. Vous pouvez également utiliser System.ServiceModel.Description.ServiceMetadataExtension pour obtenir les métadonnées de service au moment de l'exécution en accédant à la propriété System.ServiceModel.Description.ServiceMetadataExtension.Metadata.
Points de terminaison de métadonnées MEX
Pour ajouter des points de terminaison de métadonnées qui utilisent le protocole MEX, ajoutez des points de terminaison de service à votre hôte de service qui utilisent le contrat de service IMetadataExchange. WCF inclut une interface IMetadataExchange avec ce nom de contrat de service que vous pouvez utiliser dans le cadre du modèle de programmation WCF. Les points de terminaison WS-MetadataExchange (ou points de terminaison MEX) peuvent utiliser l'une des quatre liaisons par défaut que les méthodes de fabrique statiques exposent sur la classe MetadataExchangeBindings afin d'établir une correspondance avec les liaisons par défaut utilisées par les outils WCF tels que Svcutil.exe. Vous pouvez également configurer des points de terminaison de métadonnées MEX à l'aide de votre propre liaison personnalisée.
Points de terminaison de métadonnées HTTP GET
Pour ajouter un point de terminaison de métadonnées à votre service qui répond aux requêtes HTTP/GET, affectez true à la propriété HttpGetEnabled sur System.ServiceModel.Description.ServiceMetadataBehavior. Vous pouvez également configurer un point de terminaison de métadonnées qui utilise HTTPS en affectant true à la propriété HttpsGetEnabled sur System.ServiceModel.Description.ServiceMetadataBehavior.
Dans cette section
- Comment : publier les métadonnées d'un service à l'aide d'un fichier de configuration
Indique comment configurer un service WCF afin de publier les métadonnées et permettre ainsi aux clients de les récupérer à l'aide d'un échange WS-MetadataExchange ou d'une requête HTTP/GET en utilisant la chaîne de requête ?wsdl.
- Comment : publier les métadonnées d'un service à l'aide de code
Indique comment activer la publication de métadonnées pour un service WCF dans le code afin que les clients puissent les récupérer à l'aide d'un échange WS-MetadataExchange ou d'une requête HTTP/GET en utilisant la chaîne de requête ?wsdl.
Référence
ServiceMetadataBehavior
IMetadataExchange
ServiceMetadataExtension
MetadataExchangeBindings