Exportando metadados personalizados para uma extensão WCF

No Windows Communication Foundation (WCF), a exportação de 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. Os metadados personalizados consistem em elementos XML que os exportadores de metadados fornecidos pelo sistema não podem exportar. Normalmente, isso inclui elementos WSDL personalizados para comportamentos definidos pelo usuário e elementos de vinculação e afirmações de política sobre os recursos e requisitos de associações e contratos.

Esta seção descreve a exportação de WSDL personalizado ou asserções de política e não se concentra no processo de exportação em si. Para obter mais informações sobre como usar os tipos que exportam e importam metadados, independentemente de os metadados serem personalizados ou construídos pelo sistema, consulte Exportando e importando metadados.

Descrição geral

Quando os metadados são publicados usando o , o é examinado System.ServiceModel.Description.ServiceMetadataBehaviore XSD e WSDL - incluindo asserções de política - são gerados para todos os contratos e associações que o System.ServiceModel.Description.ServiceDescription WCF pode suportar usando atributos e associações fornecidos pelo sistema. No entanto, atributos de comportamento personalizados ou elementos de vinculação exigem suporte antes de poderem ser exportados corretamente.

Esta secção descreve:

  1. Como implementar e usar a System.ServiceModel.Description.IWsdlExportExtension interface, que expõe os dados de geração WSDL para você antes de publicar o WSDL.

  2. Como implementar e usar a System.ServiceModel.Description.IPolicyExportExtension interface, que expõe os dados da política para você antes de exportar as asserções de política nos dados WSDL.

Para obter mais informações sobre como importar WSDL personalizado e asserções de política, consulte Importando metadados personalizados para uma extensão WCF.

Exportando elementos WSDL personalizados

Implemente o IWsdlExportExtension comportamento em uma operação, comportamento de contrato, comportamento de ponto de extremidade ou elemento de vinculação (IOperationBehavior, IContractBehavior, IEndpointBehavior, ou System.ServiceModel.Channels.BindingElement respectivamente) e insira os comportamentos ou elementos de ligação na descrição do serviço que você está tentando exportar. (Para obter mais informações sobre como inserir comportamentos, consulte Configurando e estendendo o tempo de execução com comportamentos). O IWsdlExportExtension é chamado para cada ponto de extremidade e cada ponto de extremidade exporta o contrato primeiro se ele ainda não tiver sido exportado. Você pode participar de qualquer processo de exportação, dependendo de suas necessidades:

O ExportContract método é chamado em todas as IWsdlExportExtension implementações dentro da System.ServiceModel.Description.ContractDescription instância que está sendo exportada. O ExportEndpoint método é chamado em todas as IWsdlExportExtension implementações com a System.ServiceModel.Description.ServiceEndpoint instância que está sendo exportada.

Para obter mais informações, consulte Como exportar WSDL personalizado e o exemplo de publicação WSDL personalizada.

Exportando asserções de política personalizada

Implemente o IPolicyExportExtension on a BindingElement e adicione o elemento binding à binding para escrever afirmações de política personalizadas sobre suporte de vinculação e recursos de contrato no WSDL. O IPolicyExportExtension é chamado uma vez ao exportar o elemento de ligação implementado em uma associação e passa o PolicyConversionContext para o ExportPolicy método. Você pode usar os métodos na PolicyConversionContext instância para adicionar às asserções de política anexadas à associação WSDL na mensagem, operação ou assuntos do ponto de extremidade.

Para obter mais informações, consulte Como exportar asserções de política personalizadas.

Consulte também