Exportación e importación de metadatos
En Windows Communication Foundation (WCF), la exportación de metadatos es el proceso de describir extremos de servicio y proyectarlos en una representación paralela y estandarizada que pueden usar los clientes para entender cómo utilizar el servicio. Importar los metadatos de servicio es el proceso de generar instancias de ServiceEndpoint o partes de los metadatos de servicio.
Exportación de metadatos
Para exportar metadatos desde instancias de System.ServiceModel.Description.ServiceEndpoint, utilice una implementación de la clase abstracta MetadataExporter. El tipo WsdlExporter es la implementación de la clase abstracta MetadataExporter incluida en WCF.
El tipo System.ServiceModel.Description.WsdlExporter genera los metadatos del Lenguaje de descripción de servicios web (WSDL) con expresiones de directiva asociadas encapsuladas en una instancia de MetadataSet. Puede utilizar una instancia System.ServiceModel.Description.WsdlExporter para exportar de manera iterativa metadatos para los objetos ContractDescription y ServiceEndpoint. Puede exportar también una colección de objetos ServiceEndpoint y asociarlos a un nombre de servicios concreto.
Nota
WsdlExporter sólo puede utilizarse para exportar los metadatos desde las instancias ContractDescription que contienen el tipo de información Common Language Runtime (CLR), como, por ejemplo, una instancia de ContractDescription creada mediante el método ContractDescription.GetContract, o como parte de ServiceDescription de una instancia ServiceHost. No puede utilizar WsdlExporter para exportar metadatos a partir de las instancias ContractDescription importadas desde los metadatos del servicio o construidas sin información del tipo.
Importación de metadatos
Importación de documentos WSDL
Para importar metadatos del servicio en WCF, utilice una implementación de la clase abstracta MetadataImporter. El tipo System.ServiceModel.Description.WsdlImporter es la implementación de la clase abstracta MetadataImporter incluida en WCF. El tipo WsdlImporter importa metadatos de WSDL con directivas asociadas empaquetadas en un objeto MetadataSet.
El tipo WsdlImporter le da control sobre cómo importar los metadatos. Puede importar todos los extremos, todos los enlaces o todos los contratos. Puede importar todos los extremos asociados a un servicio específico de WSDL, enlace o tipo de puerto. También puede importar el extremo de un puerto WSDL concreto, el enlace para un enlace de WSDL concreto o el contrato para un tipo de puerto de WSDL concreto.
WsdlImporter también expone una propiedad KnownContracts que le permite especificar un conjunto de contratos que no necesita ser importado. WsdlImporter utiliza los contratos en la propiedad KnownContracts en lugar de importar un contrato con el mismo nombre completo de los metadatos.
Importación de directivas
El tipo WsdlImporter recoge las expresiones de directivas asociadas al mensaje, operación y los sujetos de directiva del extremo y, a continuación, utiliza las implementaciones IPolicyImportExtension en la colección PolicyImportExtensions para importar las expresiones de directiva.
La lógica de importación de directiva administra automáticamente las referencias de directivas a las expresiones de directivas en el mismo documento WSDL y se identifica con un atributo wsu:Id o xml:id. La lógica de importación de directiva protege las aplicaciones frente a las referencias de directivas circulares, limitando el tamaño de una expresión de directiva a 4.096 nodos, donde un nodo es uno de los elementos siguientes: wsp:Policy, wsp:All, wsp:ExactlyOne, wsp:policyReference.
La lógica de importación de directiva normaliza también automáticamente las expresiones de directivas. No se normalizan las expresiones de directiva anidadas ni el atributo wsp:Optional. La cantidad de procesamiento de normalización realizado se limita a 4.096 pasos, donde cada paso produce una aserción de directiva, o un elemento secundario de un elemento wsp:ExactlyOne.
El tipo WsdlImporter prueba hasta 32 combinaciones de alternativas de directivas asociadas a los distintos sujetos de directivas de WSDL. Si ninguna combinación se importa limpiamente, la primera combinación se utiliza para construir un enlace personalizado parcial.
Control de errores
Tanto el tipo MetadataExporter como MetadataImporter exponen una propiedad Errors que puede contener una colección de mensajes de error y advertencia encontrados durante los procesos de exportación e importación respectivamente, que se puede utilizar al implementar las herramientas.
El tipo WsdlImporter generalmente produce una excepción para una excepción detectada durante el proceso de importación y agrega un error correspondiente a su propiedad Errors. Los métodos ImportAllContracts, ImportAllBindings, ImportAllEndpointsy ImportEndpoints sin embargo, no producen estas excepciones, por lo que debe comprobar la propiedad Errors para determinar si se produjo algún problema al llamar a estos métodos.
El tipo vuelve a producir WsdlExporter cualquier excepción detectada durante el proceso de exportación. Estas excepciones no se capturan como errores en la propiedad Errors. Cuando WsdlExporter produce una excepción, está en un estado de error y no se puede reutilizar. WsdlExporter agrega advertencias a su propiedad Errors cuando no se puede exportar una operación porque utiliza acciones de carácter comodín y cuando se encuentran nombres de enlace duplicados.
En esta sección
- Cómo: Importar metadatos en extremos de servicio
Describe cómo importar los metadatos descargados en objetos de descripción.
- Cómo: Exportar metadatos desde extremos de servicio
Describe cómo exportar objetos de descripción en metadatos.
- ServiceDescription y referencias WSDL
Describe la asignación entre los objetos de descripción y WSDL.
- Cómo: Utilizar Svcutil.exe para exportar metadatos desde el código de servicio compilado
Describe el uso de Svcutil.exe para exportar metadatos para los servicios, contratos y tipos de datos en ensamblados compilados.
- Referencia de esquema de contrato de datos
Describe el subconjunto del esquema XML (XSD) utilizado por DataContractSerializer para describir los tipos de Common Language Runtime (CLR) para la serialización XML.
Referencia
WsdlExporter
WsdlImporter
Consulte también
Conceptos
Exportación de metadatos personalizados para una extensión WCF
Importación de metadatos personalizados para una extensión de WCF