Exportation et importation de métadonnées

Dans Windows Communication Foundation (WCF), l’exportation des métadonnées consiste à décrire les points de terminaison de service et à les projeter dans une représentation parallèle et standardisée que les clients peuvent utiliser pour comprendre comment utiliser le service. L'importation des métadonnées du service est le processus de génération d'instances ServiceEndpoint ou de parties de métadonnées de service.

Exportation de métadonnées

Pour exporter des métadonnées à partir des instances System.ServiceModel.Description.ServiceEndpoint, utilisez une implémentation de la classe abstraite MetadataExporter. Le type WsdlExporter est l’implémentation de la classe abstraite MetadataExporter incluse dans WCF.

Le type System.ServiceModel.Description.WsdlExporter génère les métadonnées WSDL (Web Services Description Language) avec les expressions de stratégie attachées encapsulées dans une instance MetadataSet. Vous pouvez utiliser une instance System.ServiceModel.Description.WsdlExporter pour exporter de manière itérative les métadonnées pour les objets ContractDescription et les objets ServiceEndpoint. Vous pouvez également exporter une collection d’objets ServiceEndpoint et les associer avec un nom de service spécifique.

Notes

WsdlExporter permet uniquement d'exporter des métadonnées à partir d'instances ContractDescription qui contiennent des informations de type CLR (Common Language Runtime), telles qu'une instance ContractDescription créée à l'aide de la méthode ContractDescription.GetContract ou créée en tant que partie de la ServiceDescription d'une instance ServiceHost. Vous ne pouvez pas utiliser WsdlExporter pour exporter des métadonnées à partir d'instances ContractDescription importées depuis les métadonnées du service ou construites sans information de type.

Exportation de métadonnées

Importation de documents WSDL

Pour importer des métadonnées de service dans WCF, utilisez une implémentation de la classe abstraite MetadataImporter. Le type System.ServiceModel.Description.WsdlImporter est l’implémentation de la classe abstraite MetadataImporter incluse dans WCF. Le type WsdlImporter importe des métadonnées WSDL avec les stratégies attachées fournies dans un objet MetadataSet.

Le type WsdlImporter vous permet de contrôler comment importer les métadonnées. Vous pouvez importer tous les points de terminaison, toutes les liaisons ou tous les contrats. Vous pouvez importer tous les points de terminaison associés à un service WSDL spécifique, une liaison ou un type de port. Vous pouvez également importer le point de terminaison d’un port WSDL spécifique, la liaison d’une liaison WSDL spécifique ou le contrat d’un type de port WSDL spécifique.

WsdlImporter expose également une propriété KnownContracts qui vous permet de spécifier un jeu de contrats ne devant pas être importés. WsdlImporter utilise les contrats dans la propriété KnownContracts au lieu d'importer un contrat avec le même nom qualifié à partir des métadonnées.

Importation de stratégies

Le type WsdlImporter recueille les expressions de stratégie jointes aux sujets du message, de l'opération et de la stratégie de point de terminaison, puis utilise les implémentations IPolicyImportExtension dans la collection PolicyImportExtensions pour importer les expressions de stratégie.

La logique d'importation de la stratégie gère automatiquement les références aux expressions de stratégie dans le même document WSDL et est identifiée avec un attribut wsu:Id ou xml:id. La logique d'importation de la stratégie protège les applications contre les références de stratégie circulaires en limitant la taille d'une expression de stratégie à 4096 nœuds, où un nœud est l'un des éléments suivants : wsp:Policy, wsp:All, wsp:ExactlyOne, wsp:policyReference.

La logique d'importation de stratégie normalise également automatiquement des expressions de stratégie. Les expressions de stratégie imbriquées et l'attribut wsp:Optional ne sont pas normalisés. Le traitement de normalisation effectué est limitée à 4096 étapes, où chaque étape cède une assertion de stratégie ou un élément enfant d'un élément wsp:ExactlyOne.

Le type WsdlImporter essaye jusqu'à 32 combinaisons d'alternatives de stratégie jointes aux différents sujets de stratégie WSDL. Si aucune combinaison n’est correctement importée, la première combinaison est utilisée pour construire une liaison personnalisée partielle.

Gestion des erreurs

Les types MetadataExporter et MetadataImporter exposent une propriété Errors qui peut contenir une collection de messages d’erreur et d’avertissement rencontrés pendant les processus d’exportation et d’importation, respectivement ; ces derniers peuvent être utilisés lors de l’implémentation d’outils.

Le type WsdlImporter lève généralement une exception pour une exception détectée pendant l'importation et ajoute une erreur correspondante à sa propriété Errors. Les méthodes ImportAllContracts, ImportAllBindings, ImportAllEndpointset ImportEndpoints, toutefois, ne lèvent pas ces exceptions, vous devez donc vérifier la propriété Errors pour déterminer si un problème s'est produit lors de l'appel de ces méthodes.

Le type WsdlExporter lève à nouveau toutes les exceptions détectées pendant le processus d'exportation. Ces exceptions ne sont pas capturées en tant qu'erreurs dans la propriété Errors. Une fois que WsdlExporter lève une exception, celle-ci se trouve dans un état de faute et ne peut pas être réutilisée. WsdlExporter ajoute des avertissements à sa propriété Errors lorsqu'une opération ne peut pas être exportée parce qu'elle utilise des actions génériques et lorsque des noms de liaison dupliqués sont rencontrés.

Dans cette section

Procédure : importer des métadonnées dans des points de terminaison de service
Décrit comment importer les métadonnées téléchargées dans des objets description.

Procédure : exporter des métadonnées à partir de points de terminaison de service
Décrit comment exporter des objets description dans des métadonnées.

Référence pour ServiceDescription et WSDL
Décrit le mappage entre les objets description et WSDL.

Procédure : utiliser Svcutil.exe pour exporter des métadonnées de code de service compilé
Décrit l'utilisation de Svcutil.exe pour exporter les métadonnées pour les services, les contrats et les types de données dans les assemblys compilés.

Référence des schémas de contrats de données
Décrit le sous-ensemble du schéma XML (XSD) utilisé par DataContractSerializer pour décrire les types CLR (Common Language Run-time) pour la sérialisation XML.

Informations de référence

WsdlExporter

WsdlImporter

Voir aussi