Sdílet prostřednictvím


Export a import metadat

V systému Windows Communication Foundation (WCF) je export metadat procesem popisu koncových bodů služby a jejich promítání do paralelního standardizovaného znázornění, které můžou klienti použít k pochopení toho, jak službu používat. Import metadat služby je proces generování ServiceEndpoint instancí nebo částí z metadat služby.

Export metadat

K exportu metadat z System.ServiceModel.Description.ServiceEndpoint instancí použijte implementaci MetadataExporter abstraktní třídy. Typ WsdlExporter je implementace MetadataExporter abstraktní třídy, která je součástí WCF.

Typ System.ServiceModel.Description.WsdlExporter generuje metadata jazyka WSDL (Web Services Description Language) s připojenými výrazy zásad zapouzdřenými v MetadataSet instanci. Instanci můžete použít System.ServiceModel.Description.WsdlExporter k iterativnímu exportu metadat pro ContractDescription objekty a ServiceEndpoint objekty. Můžete také exportovat kolekci ServiceEndpoint objektů a přidružit je ke konkrétnímu názvu služby.

Poznámka:

Můžete použít pouze k exportu WsdlExporter metadat z ContractDescription instancí, které obsahují informace o typu CLR (Common Language Runtime), jako ContractDescription je instance vytvořená pomocí ContractDescription.GetContract metody nebo vytvořená jako součást ServiceDescriptionServiceHost instance. Nelze použít k exportu WsdlExporter metadat z instancí importovaných z ContractDescription metadat služby nebo vytvořené bez informací o typu.

Import metadat

Import dokumentů WSDL

Chcete-li importovat metadata služby ve WCF, použijte implementaci MetadataImporter abstraktní třídy. Typ System.ServiceModel.Description.WsdlImporter je implementace MetadataImporter abstraktní třídy, která je součástí WCF. Typ WsdlImporter importuje metadata WSDL s připojenými zásadami, které jsou součástí objektu MetadataSet .

Typ WsdlImporter vám dává kontrolu nad tím, jak importovat metadata. Můžete importovat všechny koncové body, všechny vazby nebo všechny kontrakty. Můžete importovat všechny koncové body přidružené ke konkrétní službě WSDL, vazbě nebo typu portu. Můžete také importovat koncový bod pro konkrétní port WSDL, vazbu pro konkrétní vazbu WSDL nebo kontrakt pro konkrétní typ portu WSDL.

Také WsdlImporter zveřejňuje KnownContracts vlastnost, která umožňuje zadat sadu kontraktů, které není nutné importovat. Kontrakty WsdlImporter ve KnownContracts vlastnosti se používají místo importu kontraktu se stejným kvalifikovaným názvem z metadat.

Import zásad

Typ WsdlImporter shromažďuje výrazy zásad připojené ke zprávě, operaci a předmětu zásad koncového bodu a pak používá IPolicyImportExtension implementace v PolicyImportExtensions kolekci k importu výrazů zásad.

Logika importu zásad automaticky zpracovává odkazy na zásady na výrazy zásad ve stejném dokumentu WSDL a je identifikována atributem nebo xml:id atributemwsu:Id. Logika importu zásad chrání aplikace před odkazy na cyklickou zásadu omezením velikosti výrazu zásad na 4096 uzlů, kde uzel je jedním z následujících prvků: wsp:Policy, wsp:Allwsp:ExactlyOne, , wsp:policyReference. .

Logika importu zásad také automaticky normalizuje výrazy zásad. Vnořené výrazy zásad a wsp:Optional atribut nejsou normalizovány. Množství zpracování normalizace je omezeno na 4096 kroků, kde každý krok poskytuje kontrolní výraz zásady nebo podřízený prvek wsp:ExactlyOne prvku.

Typ WsdlImporter se pokusí o až 32 kombinací alternativ zásad připojených k různým tématům zásad WSDL. Pokud žádná kombinace neimportuje čistě, první kombinace se použije k vytvoření částečné vlastní vazby.

Zpracování chyb

Oba MetadataExporter typy MetadataImporter zpřístupňují Errors vlastnost, která může obsahovat kolekci chybových a upozorňujících zpráv zjištěných během procesů exportu a importu, které lze použít při implementaci nástrojů.

Typ WsdlImporter obvykle vyvolá výjimku pro výjimku zachycenou během procesu importu a přidá odpovídající chybu do jeho Errors vlastnosti. Však ImportAllContracts, , ImportAllEndpointsImportAllBindingsa ImportEndpoints metody, však, nevyvolají tyto výjimky, takže musíte zkontrolovat Errors vlastnost určit, zda došlo k nějaké problémy při volání těchto metod.

Typ WsdlExporter znovu zvětšuje všechny výjimky zachycené během procesu exportu. Tyto výjimky nejsou zachyceny jako chyby ve Errors vlastnosti. Jakmile vyvolá WsdlExporter výjimku, je v chybném stavu a nelze ji znovu použít. Přidá WsdlExporter do vlastnosti Errors upozornění, když operaci nelze exportovat, protože používá akce se zástupným znakem a při zobrazení duplicitních názvů vazeb.

V tomto oddílu

Postupy: Import metadat do koncových bodů služby
Popisuje, jak importovat stažená metadata do objektů popisu.

Postupy: Export metadat z koncových bodů služby
Popisuje, jak exportovat objekty popisu do metadat.

ServiceDescription a referenční informace pro WSDL
Popisuje mapování mezi objekty popisu a WSDL.

Postupy: Použití nástroje Svcutil.exe k exportu metadat z kompilovaného kódu služby
Popisuje použití Svcutil.exe k exportu metadat pro služby, kontrakty a datové typy v kompilovaných sestaveních.

Schéma kontraktů dat – referenční informace
Popisuje podmnožinu schématu XML (XSD) používaného DataContractSerializer k popisu typů CLR (Common Language Run-Time) pro serializaci XML.

Reference

WsdlExporter

WsdlImporter

Viz také