Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ve Windows Communication Foundation (WCF) je proces importu metadat generující abstraktní reprezentaci služby nebo jejích součástí z jeho metadat. WCF může například importovat ServiceEndpoint instance, Binding instance nebo ContractDescription instance z dokumentu WSDL pro službu. Chcete-li importovat metadata služby ve WCF, použijte implementaci System.ServiceModel.Description.MetadataImporter abstraktní třídy. Typy odvozené z MetadataImporter třídy implementují podporu importu formátů metadat, které využívají WS-Policy logiku importu ve WCF.
Vlastní metadata se skládají z elementů XML, které nemohou importovat systémoví dodavatelé metadat. Obvykle to zahrnuje vlastní rozšíření WSDL a vlastní deklarace zásad.
Tato část popisuje, jak importovat vlastní rozšíření WSDL a výrazy zásad. Nezaměřuje se na samotný proces importu. Další informace o tom, jak používat typy, které exportují a importují metadata bez ohledu na to, jestli jsou metadata vlastní nebo systémová, najdete v tématu Export a import metadat.
Přehled
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 System.ServiceModel.Description.MetadataSet . Deklarace zásad a rozšíření WSDL, které výchozí importéři nerozpoznávají, se předávají všem registrovaným vlastním importérům zásad a WSDL k dalšímu importu. Obvykle se importéři implementují tak, aby podporovali uživatelem definované vazbové prvky nebo upravili importovanou smlouvu.
Tato část popisuje:
Jak implementovat a používat System.ServiceModel.Description.IWsdlImportExtension rozhraní, které zveřejňuje data WSDL vlastním dovozcům před generováním popisů a generování kódu. Toto rozhraní můžete použít k prozkoumání nebo úpravě typů popisu a kompilace kódu prováděné pomocí dané sady metadat.
Jak implementovat a používat System.ServiceModel.Description.IPolicyImportExtension rozhraní, které poskytuje deklarace zásad importérům před generováním objektů popisu. Toto rozhraní můžete použít k prozkoumání nebo úpravě vazby nebo kontraktu na základě stažených zásad.
Další informace o exportu vlastních kontrolních výrazů WSDL a zásad naleznete v tématu Export vlastních metadat pro rozšíření WCF.
Import vlastních rozšíření WSDL
Chcete-li přidat podporu pro import rozšíření WSDL, implementujte IWsdlImportExtension rozhraní a pak přidejte implementaci do WsdlImportExtensions vlastnosti. WsdlImporter může také načíst implementace rozhraní registrovaných v konfiguračním souboru vaší aplikace. Všimněte si, že ve výchozím nastavení je registrováno několik dovozců WSDL a pořadí registrovaných dovozců WSDL je významné.
Při načtení a použití vlastního importéru WSDL pomocí WsdlImporter je nejprve volána metoda BeforeImport k povolení úpravy metadat před zahájením procesu importu. Dále se smlouvy naimportují, poté je volána metoda ImportContract, aby umožnila úpravu smluv importovaných z metadat. Nakonec se volá metoda, ImportEndpoint která povolí úpravu importovaných koncových bodů.
Další informace naleznete v tématu Postupy: Import vlastního WSDL.
Import vlastních zásadních tvrzení
Typ WsdlImporter a nástroj ServiceModel Metadata Utility (Svcutil.exe) automaticky zpracovávají různé typy zásadních tvrzení ve výrazech politiky připojených k dokumentům WSDL. Tyto nástroje shromažďují, normalizují a slučují výrazy zásad připojené k vazbám WSDL a portům WSDL.
Chcete-li přidat podporu pro import vlastních kontrolních výrazů zásad, implementujte rozhraní IPolicyImportExtension a poté přidejte svou implementaci do vlastnosti PolicyImportExtensions. MetadataImporter může také načíst implementace rozhraní registrovaných v konfiguračním souboru vaší aplikace. Všimněte si, že ve výchozím nastavení je registrováno několik dovozců zásad a pořadí registrovaných dovozců zásad je významné.
Systém metadat opakovaně volá metodu IPolicyImportExtension.ImportPolicy pro všechna zaregistrovaná rozšíření importu zásad pro každou kombinaci alternativ zásad připojených ke zprávě, operaci a tématům zásad koncových bodů. Při importu portu WSDL se zásady, které jsou připojené k portu, a odpovídající vazby WSDL sloučí před voláním rozšíření pro importování zásad. Alternativy zásad jsou zpřístupněny prostřednictvím PolicyConversionContext jako PolicyAssertionCollection objekty. Každé PolicyAssertionCollection je kolekce výrazů zásad reprezentovaných XmlElement objekty.
Vlastnosti Contract a BindingElements na objektu PolicyConversionContext zpřístupňují objekty ContractDescription a BindingElement, které byly importovány z WSDL. Rozšíření zásad zpracovávají výroky zásad tím, že najdou instance konkrétního typu výroku zásady, provedou odpovídající změny na objektech ContractDescription nebo BindingElement a poté odstraní výroky zásad z odpovídající instance PolicyAssertionCollection.
Výrazy wsp:Optional
atributů a vnořených zásad nejsou normalizovány, takže rozšíření importu zásad musí zpracovávat tyto konstrukce zásad. Rozšíření importu zásad mohou být také volána vícekrát se stejnými objekty ContractDescription a BindingElement, proto by rozšíření importu zásad měla být vůči tomuto chování robustní.
Důležité
Dovozce může předat neplatná nebo nesprávná metadata. Ujistěte se, že vlastní importéři jsou robustní pro všechny formy XML.