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.