Exportación de metadatos personalizados para una extensión WCF
En Windows Communication Foundation (WCF), la exportación de metadatos es el proceso de describir puntos de conexión de servicio y proyectarlos en una representación paralela y estandarizada que pueden usar los clientes para comprender cómo se utiliza el servicio. Los metadatos personalizados están compuestos de elementos XML que los exportadores de metadatos proporcionados por el sistema no pueden exportar. Normalmente, esto incluye elementos WSDL personalizados para los elementos de enlace y los comportamientos definidos por el usuario y las aserciones de directiva sobre las funciones y requisitos de los enlaces y contratos.
Esta sección describe la exportación de WSDL o aserciones de directivas personalizados y no se centra en el propio proceso de exportación. Para más información sobre cómo utilizar los tipos que exportan e importan metadatos sin tener en cuenta si los metadatos son personalizados o construidos por el sistema, consulte Exportación e importación de metadatos.
Información general
Cuando los metadatos se publican mediante System.ServiceModel.Description.ServiceMetadataBehavior, se examina el elemento System.ServiceModel.Description.ServiceDescription y se generan XSD y WSDL (incluyendo las aserciones de directivas) para todos los contratos y enlaces que puede admitir WCF mediante enlaces y atributos proporcionados por el sistema. Sin embargo, los atributos de comportamiento o los elementos de enlace personalizados requieren la compatibilidad antes de que se puedan exportar correctamente.
En esta sección se describe:
Cómo implementar y utilizar la interfaz System.ServiceModel.Description.IWsdlExportExtension, que expone los datos de generación de WSDL a usted antes de publicar el WSDL.
Cómo implementar y utilizar la interfaz System.ServiceModel.Description.IPolicyExportExtension, que le expone los datos de la directiva antes de exportar las aserciones de directiva a datos del WSDL.
Para más información sobre cómo importar aserciones de directivas y de WSDL personalizadas, consulte Importación de metadatos personalizados para una extensión de WCF.
Exportación de elementos WSDL personalizados
Implemente IWsdlExportExtension en un comportamiento de la operación, comportamiento del contrato, comportamiento del extremo o elemento de enlace (IOperationBehavior, IContractBehavior, IEndpointBehavioro System.ServiceModel.Channels.BindingElement respectivamente) e inserte los comportamientos o elementos de enlace en la descripción del servicio que está intentando exportar. (Para más información sobre cómo insertar comportamientos, consulte Configuración y extensión del entorno de ejecución con comportamientos). Se llama a IWsdlExportExtension para cada punto de conexión y cada punto de conexión exporta primero el contrato si aún no se ha exportado. Puede participar en cualquier proceso de exportación, dependiendo de sus necesidades:
Utilice el WsdlContractConversionContext para modificar los metadatos exportados en el método ExportContract.
Utilice WsdlEndpointConversionContext para modificar los metadatos exportados para el punto de conexión en el método ExportEndpoint.
Se llama al método ExportContract en todas las implementaciones de IWsdlExportExtension dentro de la instancia de System.ServiceModel.Description.ContractDescription que se está exportando. Se llama al método ExportEndpoint en todas las implementaciones IWsdlExportExtension con la instancia System.ServiceModel.Description.ServiceEndpoint que se está exportando.
Para más información, consulte Exportación de WSDL personalizado y el ejemplo Publicación de WSDL personalizado.
Exportación de aserciones de directivas personalizadas
Implemente IPolicyExportExtension en un BindingElement y agregue el elemento de enlace al enlace para escribir las aserciones de directivas personalizadas sobre compatibilidad de enlaces y funciones de contrato en WSDL. Se llama a IPolicyExportExtension una vez al exportar el elemento de enlace implementado en un enlace y pasa PolicyConversionContext al método ExportPolicy. Puede utilizar los métodos en la instancia PolicyConversionContext para agregar a las aserciones de directiva adjuntas al enlace WSDL en el mensaje, operación o sujetos del extremo.
Para más información, consulte Exportación de aserciones de directivas personalizadas.