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:
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.
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:
Use o WsdlContractConversionContext para modificar os metadados exportados no ExportContract método.
Use o WsdlEndpointConversionContext para modificar os metadados exportados para o ponto de extremidade no ExportEndpoint método.
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.