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.GetContract
ContractDescription
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.