Megosztás a következőn keresztül:


Egyéni metaadatok importálása WCF-bővítményhez

A Windows Communication Foundationben (WCF) a metaadatok importálása egy szolgáltatás vagy annak összetevőinek absztrakt ábrázolásának a metaadataiból történő generálásának folyamata. A WCF például importálhat ServiceEndpoint példányokat, Binding példányokat vagy ContractDescription példányokat egy szolgáltatás WSDL-dokumentumából. A szolgáltatás metaadatainak WCF-ben való importálásához használja az System.ServiceModel.Description.MetadataImporter absztrakt osztály implementációját. Az osztályból MetadataImporter származó típusok támogatják a metaadat-formátumok importálását, amelyek kihasználják a WS-Policy importálási logikáját a WCF-ben.

Az egyéni metaadatok OLYAN XML-elemekből állnak, amelyeket a rendszer által biztosított metaadatok importálni nem tudnak. Ez általában egyéni WSDL-bővítményeket és egyéni szabályzat-állításokat is magában foglal.

Ez a szakasz bemutatja, hogyan importálhat egyéni WSDL-bővítményeket és házirend-állításokat. Nem az importálási folyamatra összpontosít. A metaadatok exportálásával és importálásával kapcsolatos további információkért, függetlenül attól, hogy a metaadatok egyéniek vagy rendszer által támogatottak-e, tekintse meg a metaadatok exportálását és importálását ismertető témakört.

Áttekintés

A System.ServiceModel.Description.WsdlImporter típus a WCF-hez tartozó absztrakt osztály implementálása MetadataImporter . A WsdlImporter típus egy objektumba csomagolt System.ServiceModel.Description.MetadataSet csatolt szabályzatokkal importálja a WSDL-metaadatokat. Az alapértelmezett importőrök által nem felismert házirend-állításokat és WSDL-bővítményeket a rendszer minden regisztrált egyéni szabályzatnak és WSDL-importálónak átadja az importáláshoz. Az importőrök általában a felhasználó által meghatározott kötéselemek támogatására vagy az importált szerződés módosítására vannak implementálva.

Ez a szakasz a következőket ismerteti:

  1. Hogyan implementálhatja és használhatja a System.ServiceModel.Description.IWsdlImportExtension WSDL-adatokat az egyéni importőrök számára a leírások létrehozása és a kód generálása előtt. Ezen a felületen megvizsgálhatja vagy módosíthatja a leírástípusokat és a kódfordítást egy adott metaadatkészlet használatával.

  2. Az interfész implementálása és használata System.ServiceModel.Description.IPolicyImportExtension , amely a leírási objektumok létrehozása előtt teszi elérhetővé a szabályzatok helyességeit az importőrök számára. Ezen a felületen megvizsgálhatja vagy módosíthatja a kötést vagy a szerződést a letöltött szabályzatok alapján.

Az egyéni WSDL- és szabályzat-állítások exportálásáról további információt a WCF-bővítmény egyéni metaadatainak exportálása című témakörben talál.

Egyéni WSDL-bővítmények importálása

A WSDL-bővítmények importálásának támogatásához implementálja a IWsdlImportExtension felületet, majd adja hozzá a megvalósítást a WsdlImportExtensions tulajdonsághoz. Az WsdlImporter alkalmazáskonfigurációs fájlban regisztrált felület implementációit IWsdlImportExtension is betöltheti. Vegye figyelembe, hogy alapértelmezés szerint számos WSDL-importőr van regisztrálva, és a regisztrált WSDL-importőrök sorrendje jelentős.

Amikor az egyéni WSDL-importálót betölti és használja a WsdlImporterrendszer, a rendszer először meghívja a BeforeImport metódust, hogy engedélyezze a metaadatok módosítását az importálási folyamat előtt. Ezután a rendszer importálja a szerződéseket, majd meghívja a ImportContract metódust a metaadatokból importált szerződések módosításának engedélyezéséhez. Végül a ImportEndpoint metódus az importált végpontok módosításának engedélyezésére van meghívva.

További információ : Egyéni WSDL importálása.

Egyéni házirend-állítások importálása

A WsdlImporter típus és a ServiceModel metadata segédprogram (Svcutil.exe) automatikusan kezeli a WSDL-dokumentumokhoz csatolt szabályzatkifejezések különböző szabályzatkifejezéseinek feldolgozását. Ezek az eszközök összegyűjtik, normalizálják és egyesítik a WSDL-kötésekhez és WSDL-portokhoz csatolt szabályzatkifejezéseket.

Ha támogatást szeretne adni az egyéni házirend-állítások importálásához, implementálja az IPolicyImportExtension interfészt, majd adja hozzá az implementációt a PolicyImportExtensions tulajdonsághoz. Az MetadataImporter alkalmazáskonfigurációs fájlban regisztrált felület implementációit IPolicyImportExtension is betöltheti. Vegye figyelembe, hogy alapértelmezés szerint számos szabályzatimportőr van regisztrálva, és a regisztrált szabályzatimportőrök sorrendje jelentős.

A metaadat-rendszer ismételten meghívja a metódust az IPolicyImportExtension.ImportPolicy üzenethez, művelethez és végpontszabályzat-témákhoz csatolt házirend-alternatívák minden regisztrált házirend-importálási bővítményén. WSDL-port importálásakor a rendszer egyesíti a porthoz és a megfelelő WSDL-kötéshez csatolt házirendeket, mielőtt meghívja őket a szabályzatimportálási bővítményekbe. A szabályzat alternatívái objektumként PolicyAssertionCollection érhetők elPolicyConversionContext. Mindegyik PolicyAssertionCollection objektum által XmlElement képviselt szabályzat-állítások gyűjteménye.

Az Contract objektum és BindingElements a PolicyConversionContext tulajdonságok elérhetővé teszik a ContractDescription WSDL-ből importált és BindingElement importált objektumokat. A szabályzatimportálási bővítmények úgy dolgozzák fel a szabályzatok helyességeit, hogy megkeresik egy adott házirend-állítási típus példányait, módosítják azokat ContractDescription vagy BindingElement objektumokat, majd eltávolítják a szabályzat-állításokat a megfelelő PolicyAssertionCollection példányból.

Az wsp:Optional attribútum és a beágyazott szabályzatkifejezések nincsenek normalizálva, ezért a szabályzatimportálási bővítményeknek kezelniük kell ezeket a házirend-szerkezeteket. Emellett a szabályzatimportálási bővítmények többször is meghívhatók ugyanazokkal ContractDescription és BindingElement objektumokkal, így a szabályzatimportálási bővítményeknek robusztusnak kell lenniük ehhez a viselkedéshez.

Fontos

Érvénytelen vagy nem megfelelő metaadatok továbbíthatók az importálónak. Győződjön meg arról, hogy az egyéni importőrök robusztusak az XML minden formájára.

Lásd még