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


Metaadatok exportálása és importálása

A Windows Communication Foundationben (WCF) a metaadatok exportálása a szolgáltatásvégpontok leírásának és párhuzamos, szabványosított ábrázolásának az a folyamata, amellyel az ügyfelek megérthetik a szolgáltatás használatát. A szolgáltatás metaadatainak importálása a példányok vagy alkatrészek szolgáltatás metaadatokból történő generálásának ServiceEndpoint folyamata.

Metaadatok exportálása

A metaadatok példányokból System.ServiceModel.Description.ServiceEndpoint való exportálásához használja az MetadataExporter absztrakt osztály implementációját. A WsdlExporter típus a WCF-hez tartozó absztrakt osztály implementálása MetadataExporter .

A System.ServiceModel.Description.WsdlExporter típus webszolgáltatások leírási nyelvének (WSDL) metaadatait hozza létre egy MetadataSet példányba ágyazott csatolt szabályzatkifejezésekkel. Egy példány használatával System.ServiceModel.Description.WsdlExporter iteratív módon exportálhatja az ContractDescription objektumok és ServiceEndpoint objektumok metaadatait. Objektumgyűjteményeket ServiceEndpoint is exportálhat, és hozzárendelheti őket egy adott szolgáltatásnévhez.

Feljegyzés

A metaadatok ContractDescription csak olyan WsdlExporter példányokból exportálhatók, amelyek közös nyelvi futtatókörnyezeti (CLR) típusú adatokat tartalmaznak, például a ContractDescription.GetContractContractDescription metódussal létrehozott vagy a ServiceDescription példány részeként ServiceHost létrehozott példányokból. A szolgáltatás metaadataiból ContractDescription importált vagy típusadatok nélkül létrehozott példányokból nem exportálhat WsdlExporter metaadatokat.

Metaadatok importálása

WSDL-dokumentumok importálása

A szolgáltatás metaadatainak WCF-ben való importálásához használja az MetadataImporter absztrakt osztály implementációját. A System.ServiceModel.Description.WsdlImporter típus a WCF-hez tartozó absztrakt osztály implementálása MetadataImporter . A WsdlImporter típus egy objektumba MetadataSet csomagolt csatolt szabályzatokkal importálja a WSDL-metaadatokat.

Ezzel a WsdlImporter típussal szabályozhatja a metaadatok importálását. Importálhatja az összes végpontot, az összes kötést vagy az összes szerződést. Importálhatja egy adott WSDL-szolgáltatáshoz, kötéshez vagy porttípushoz társított összes végpontot. Importálhatja egy adott WSDL-port végpontjait, egy adott WSDL-kötés kötését vagy egy adott WSDL-porttípus szerződését is.

Ez WsdlImporter egy KnownContracts olyan tulajdonságot is elérhetővé tesz, amely lehetővé teszi olyan szerződések megadását, amelyeket nem kell importálni. A WsdlImporter rendszer a tulajdonságban lévő szerződéseket használja ahelyett KnownContracts , hogy egy azonos minősített nevű szerződést importál a metaadatokból.

Házirendek importálása

A WsdlImporter típus összegyűjti az üzenethez, művelethez és végpontházirend-témákhoz csatolt szabályzatkifejezéseket, majd a IPolicyImportExtension gyűjtemény implementációit PolicyImportExtensions használja a szabályzatkifejezések importálásához.

A szabályzatimportálási logika automatikusan kezeli az ugyanabban a WSDL-dokumentumban lévő szabályzatkifejezésekre mutató házirend-hivatkozásokat, és egy vagy xml:id attribútummal wsu:Id azonosítja. A szabályzatimportálási logika úgy védi az alkalmazásokat a körkörös szabályzathivatkozásokkal szemben, hogy egy szabályzatkifejezés méretét 4096 csomópontra korlátozza, ahol a csomópont az alábbi elemek egyike: wsp:Policy, wsp:All, wsp:ExactlyOne, wsp:policyReference.

A szabályzatimportálási logika automatikusan normalizálja a szabályzatkifejezéseket is. A beágyazott szabályzatkifejezések és az wsp:Optional attribútum nem normalizálódik. Az elvégzett normalizálási feldolgozás mennyisége 4096 lépésre korlátozódik, ahol minden lépés szabályzat-állítást vagy egy wsp:ExactlyOne elem gyermekelemét eredményez.

A WsdlImporter típus legfeljebb 32 kombinációt próbál meg a különböző WSDL-szabályzatok témaköreihez csatolt házirend-alternatívákból. Ha a kombinációk nem importálnak tisztán, a rendszer az első kombinációt használja egy részleges egyéni kötés létrehozásához.

Hibakezelés

Mind a MetadataExporterMetadataImporter típusok olyan tulajdonságot Errors fednek fel, amely tartalmazhat az exportálási és importálási folyamatok során észlelt hiba- és figyelmeztető üzenetek gyűjteményét, amelyek az eszközök implementálásakor használhatók.

A WsdlImporter típus általában kivételt okoz az importálási folyamat során észlelt kivétel esetében, és a tulajdonságához Errors megfelelő hibát ad hozzá. A ImportAllContracts, ImportAllBindings, ImportAllEndpointsés ImportEndpoints metódusok azonban nem vetik ki ezeket a kivételeket, ezért ellenőriznie kell a Errors tulajdonságot, hogy történt-e probléma a metódusok meghívásakor.

A WsdlExporter típus újra megszenvedi az exportálási folyamat során észlelt kivételeket. Ezeket a kivételeket a rendszer nem rögzíti hibaként a Errors tulajdonságban. Ha a WsdlExporter kivétel kivételt eredményez, az hibás állapotban van, és nem használható újra. A WsdlExporter művelet akkor ad hozzá figyelmeztetéseket a tulajdonságához Errors , ha egy művelet nem exportálható, mert helyettesítő műveleteket használ, és ismétlődő kötésnevek jelennek meg.

A szakasz tartalma

Útmutató: Metaadatok importálása szolgáltatásvégpontokba
A letöltött metaadatok leírásobjektumokba való importálását ismerteti.

Útmutató: Metaadatok exportálása szolgáltatásvégpontokból
Leírja, hogyan exportálhat leírásobjektumokat metaadatokba.

ServiceDescription és WSDL-referencia
A leírásobjektumok és a WSDL közötti leképezést ismerteti.

Útmutató: Metaadatok exportálása a Svcutil.exe használatával a lefordított szolgáltatáskódból
A Svcutil.exe használatát ismerteti a szolgáltatások, szerződések és adattípusok metaadatainak exportálásához a lefordított szerelvényekben.

Adatszerződés sémareferenciája
Az XML-séma (XSD) azon részhalmazát ismerteti, amelyet DataContractSerializer az XML-szerializálás általános nyelvi futásidejű (CLR) típusainak leírására használnak.

Referencia

WsdlExporter

WsdlImporter

Lásd még