Compartilhar via


Exportando metadados personalizados para uma extensão do WCF

No WCF (Windows Communication Foundation), 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. 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 associação e declarações de políticas sobre os recursos e requisitos de associações e contratos.

Esta seção descreve a exportação de declarações personalizadas de WSDL ou declaraçõ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 Exportar e importar metadados.

Visão geral

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

Esta seção descreve:

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

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

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

Exportando elementos WSDL personalizados

Implemente o IWsdlExportExtension em uma operação de comportamento, o comportamento do contrato, o comportamento do ponto de extremidade ou o elemento de associação (IOperationBehavior, IContractBehavior, IEndpointBehaviorou System.ServiceModel.Channels.BindingElement, respectivamente) e insira os comportamentos ou elementos de associação na descrição do serviço que está tentando exportar. (Para obter mais informações sobre como inserir comportamentos, consulte Configurar e estender o runtime 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 método ExportContract é chamado em todas as implementações de IWsdlExportExtension dentro da instância System.ServiceModel.Description.ContractDescription que está sendo exportada. O método ExportEndpoint é chamado em todas as implementações de IWsdlExportExtension com a instância System.ServiceModel.Description.ServiceEndpoint que está sendo exportada.

Para obter mais informações, consulte Como exportar o WSDL personalizado e a amostra de Publicação WSDL personalizada.

Exportar declarações de política personalizadas

Implemente o IPolicyExportExtension em um BindingElement e adicione o elemento de associação à associação para gravar declarações de política personalizadas sobre recursos de contrato e suporte de associação no WSDL. O IPolicyExportExtension é chamado uma vez ao exportar o elemento de associação implementado em uma associação e passa o PolicyConversionContext para o método ExportPolicy. Você pode usar os métodos na instância PolicyConversionContext para adicionar às declarações de política anexadas à associação WSDL nas entidades de mensagem, operação ou ponto de extremidade.

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

Confira também