Sdílet prostřednictvím


Exportování a importování 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.

Exportování metadata

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. Můžete použít instanci System.ServiceModel.Description.WsdlExporter k iterativnímu exportu metadat pro objekty ContractDescription a ServiceEndpoint. 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 WsdlExporter pouze k exportu metadat z ContractDescription instancí, které obsahují informace o typu CLR (běhové prostředí pro jazyk C#), například pokud je instance ContractDescription vytvořena pomocí metody ContractDescription.GetContract nebo jako součást ServiceDescription pro instanci ServiceHost. Nelze použít k exportu WsdlExporter metadat z instancí importovaných z ContractDescription metadat služby nebo vytvořené bez informací o typu.

Importování 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 ve vlastnosti WsdlImporter se používají místo importu kontraktu se stejným kvalifikovaným názvem z metadat ve vlastnosti KnownContracts.

Importování 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 zásad na výrazy zásad ve stejném dokumentu WSDL a je identifikována jako atribut wsu:Id nebo xml: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 prohlášení zásady nebo podřízený element wsp:ExactlyOne.

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 bez problémů, první kombinace se použije k vytvoření částečně uzpůsobené vazby.

Zpracování chyb

Oba typy MetadataExporter i MetadataImporter zpřístupňují vlastnost Errors, která může obsahovat kolekci chybových a varovných zpráv zjištěných během procesů exportu a importu a kterou 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. Nicméně metody ImportAllContracts, ImportAllBindings, ImportAllEndpoints a ImportEndpoints nevyvolají tyto výjimky, takže musíte zkontrolovat vlastnost Errors ke zjištění, zda došlo k nějakému problému při volání těchto metod.

Typ WsdlExporter znovu vyvolává 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. WsdlExporter přidává upozornění do vlastnosti Errors když operaci nelze exportovat, protože používá akce se zástupným znakem a když jsou detekovány duplicitní názvy vazeb.

V této sekci

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.

Referenční informace k ServiceDescription a WSDL Popisuje mapování mezi objekty popisu a WSDL.

Postupy: Použití 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.

Referenční dokumentace schématu kontraktu dat Popisuje podmnožinu schématu XML (XSD) používaného DataContractSerializer k popisu typů CLR (Common Language Runtime) pro serializaci XML.

Odkazy

WsdlExporter

WsdlImporter

Viz také