Exportando e importando metadados

No Windows Communication Foundation (WCF), exportar metadados é o processo de descrever pontos de extremidade de serviço e projetá-los em uma representação paralela e padronizada que os clientes podem usar para entender como usar o serviço. A importação de metadados de serviço é o processo de geração ServiceEndpoint de instâncias ou partes a partir de metadados de serviço.

Exportando metadados

Para exportar metadados de System.ServiceModel.Description.ServiceEndpoint instâncias, use uma implementação da MetadataExporter classe abstrata. O WsdlExporter tipo é a implementação da MetadataExporter classe abstrata incluída no WCF.

O System.ServiceModel.Description.WsdlExporter tipo gera metadados WSDL (Web Services Description Language) com expressões de política anexadas encapsuladas em uma MetadataSet instância. Você pode usar uma System.ServiceModel.Description.WsdlExporter instância para exportar iterativamente metadados para ContractDescription objetos e ServiceEndpoint objetos. Você também pode exportar uma coleção de objetos e associá-los a um nome de ServiceEndpoint serviço específico.

Nota

Você só pode usar o WsdlExporter para exportar metadados de instâncias que contêm informações de ContractDescription tipo CLR (Common Language Runtime), como uma ContractDescription instância criada usando o ContractDescription.GetContract método ou criada como parte do ServiceDescription para uma ServiceHost instância. Não é possível usar o WsdlExporter para exportar metadados de instâncias importadas de metadados de serviço ou construídas sem informações de ContractDescription tipo.

Importando metadados

Importando documentos WSDL

Para importar metadados de serviço no WCF, use uma implementação da MetadataImporter classe abstrata. O System.ServiceModel.Description.WsdlImporter tipo é a implementação da MetadataImporter classe abstrata incluída no WCF. O WsdlImporter tipo importa metadados WSDL com políticas anexadas agrupadas em um MetadataSet objeto.

O WsdlImporter tipo oferece controle sobre como importar os metadados. Você pode importar todos os pontos de extremidade, todas as associações ou todos os contratos. Você pode importar todos os pontos de extremidade associados a um serviço, associação ou tipo de porta WSDL específico. Você também pode importar o ponto de extremidade para uma porta WSDL específica, a associação para uma associação WSDL específica ou o contrato para um tipo de porta WSDL específico.

O WsdlImporter também expõe uma KnownContracts propriedade que permite especificar um conjunto de contratos que não precisam ser importados. O WsdlImporter usa os contratos na KnownContracts propriedade em vez de importar um contrato com o mesmo nome qualificado dos metadados.

Políticas de importação

O WsdlImporter tipo coleta as expressões de política anexadas aos assuntos de política de mensagem, operação e ponto de extremidade e, em seguida, usa as IPolicyImportExtension implementações na PolicyImportExtensions coleção para importar as expressões de política.

A lógica de importação de política lida automaticamente com referências de política a expressões de política no mesmo documento WSDL e é identificada com um wsu:Id ou xml:id atributo. A lógica de importação de política protege os aplicativos contra referências de política circulares, limitando o tamanho de uma expressão de política a 4096 nós, onde um nó é um dos seguintes elementos: wsp:Policy, wsp:All, wsp:ExactlyOne, wsp:policyReference.

A lógica de importação de política também normaliza automaticamente as expressões de política. As expressões de política aninhadas e o wsp:Optional atributo não são normalizados. A quantidade de processamento de normalização feito é limitada a 4096 etapas, onde cada etapa produz uma declaração de política ou um elemento filho de um wsp:ExactlyOne elemento.

O WsdlImporter tipo tenta até 32 combinações de alternativas de política anexadas aos diferentes assuntos de política WSDL. Se nenhuma combinação importar de forma limpa, a primeira combinação será usada para construir uma ligação personalizada parcial.

Processamento de Erros

Os tipos e expõem MetadataExporterMetadataImporter uma Errors propriedade que pode conter uma coleção de mensagens de erro e aviso encontradas durante os processos de exportação e importação, respectivamente, que podem ser usadas ao implementar ferramentas.

O WsdlImporter tipo geralmente lança uma exceção para uma exceção detetada durante o processo de importação e adiciona um erro correspondente à sua Errors propriedade. Os ImportAllContractsmétodos , ImportAllBindings, ImportAllEndpoints, e , no ImportEndpoints entanto, não lançam essas exceções, portanto, você deve verificar a Errors propriedade para determinar se algum problema ocorreu ao chamar esses métodos.

O WsdlExporter tipo relança quaisquer exceções detetadas durante o processo de exportação. Essas exceções não são capturadas como erros na Errors propriedade. Uma vez que o WsdlExporter lance uma exceção, ele está em um estado defeituoso e não pode ser reutilizado. O WsdlExporter adiciona avisos à sua Errors propriedade quando uma operação não pode ser exportada porque usa ações curinga e quando nomes de associação duplicados são encontrados.

Nesta Secção

Como: Importar metadados para pontos de extremidade de serviço
Descreve como importar metadados baixados para objetos de descrição.

Como: Exportar metadados de pontos de extremidade de serviço
Descreve como exportar objetos de descrição para metadados.

ServiceDescription e referência WSDL
Descreve o mapeamento entre os objetos de descrição e WSDL.

Como: Usar Svcutil.exe para exportar metadados do código de serviço compilado
Descreve o uso de Svcutil.exe para exportar metadados para serviços, contratos e tipos de dados em assemblies compilados.

Referência de esquema de contrato de dados
Descreve o subconjunto do esquema XML (XSD) usado para DataContractSerializer descrever tipos de tempo de execução de linguagem comum (CLR) para serialização XML.

Referência

WsdlExporter

WsdlImporter

Consulte também