Eksportowanie i importowanie metadanych

W programie Windows Communication Foundation (WCF) eksportowanie metadanych to proces opisywania punktów końcowych usługi i projekcji ich w równoległą, ustandaryzowaną reprezentację, która umożliwia klientom zrozumienie sposobu korzystania z usługi. Importowanie metadanych usługi to proces generowania ServiceEndpoint wystąpień lub części z metadanych usługi.

Eksportowanie metadanych

Aby wyeksportować metadane z System.ServiceModel.Description.ServiceEndpoint wystąpień, użyj implementacji klasy abstrakcyjnej MetadataExporter . Typ WsdlExporter jest implementacją klasy abstrakcyjnej dołączonej MetadataExporter do programu WCF.

Typ System.ServiceModel.Description.WsdlExporter generuje metadane języka WSDL (Web Services Description Language) z dołączonymi wyrażeniami zasad hermetyzowanym w wystąpieniu MetadataSet . Możesz użyć System.ServiceModel.Description.WsdlExporter wystąpienia do iteracyjnego eksportowania metadanych dla ContractDescription obiektów i ServiceEndpoint obiektów. Możesz również wyeksportować kolekcję ServiceEndpoint obiektów i skojarzyć je z określoną nazwą usługi.

Uwaga

Można użyć WsdlExporter polecenia , aby wyeksportować metadane z ContractDescription wystąpień zawierających informacje o typie środowiska uruchomieniowego języka wspólnego (CLR), takie jak ContractDescription wystąpienie utworzone przy użyciu ContractDescription.GetContract metody lub utworzone jako część ServiceDescription wystąpienia ServiceHost . Nie można używać elementu WsdlExporter do eksportowania metadanych z wystąpień zaimportowanych z ContractDescription metadanych usługi lub konstruowania bez informacji o typie.

Importowanie metadanych

Importowanie dokumentów WSDL

Aby zaimportować metadane usługi w programie WCF, użyj implementacji klasy abstrakcyjnej MetadataImporter . Typ System.ServiceModel.Description.WsdlImporter jest implementacją klasy abstrakcyjnej dołączonej MetadataImporter do programu WCF. Typ WsdlImporter importuje metadane WSDL z dołączonymi zasadami dołączonymi w MetadataSet obiekcie.

Typ WsdlImporter zapewnia kontrolę nad sposobem importowania metadanych. Możesz zaimportować wszystkie punkty końcowe, wszystkie powiązania lub wszystkie kontrakty. Możesz zaimportować wszystkie punkty końcowe skojarzone z określoną usługą WSDL, powiązaniem lub typem portu. Możesz również zaimportować punkt końcowy dla określonego portu WSDL, powiązania dla określonego powiązania WSDL lub kontraktu dla określonego typu portu WSDL.

Obiekt WsdlImporter udostępnia KnownContracts również właściwość, która umożliwia określenie zestawu kontraktów, które nie muszą być importowane. Obiekt WsdlImporter używa kontraktów we KnownContracts właściwości zamiast importowania kontraktu o tej samej kwalifikowanej nazwie z metadanych.

Importowanie zasad

Typ WsdlImporter zbiera wyrażenia zasad dołączone do tematów komunikatów, operacji i zasad punktu końcowego, a następnie używa IPolicyImportExtension implementacji w PolicyImportExtensions kolekcji do importowania wyrażeń zasad.

Logika importu zasad automatycznie obsługuje odwołania zasad do wyrażeń zasad w tym samym dokumencie WSDL i jest identyfikowana z atrybutem wsu:Id lub xml:id . Logika importu zasad chroni aplikacje przed odwołaniami do zasad cyklicznych, ograniczając rozmiar wyrażenia zasad do 4096 węzłów, gdzie węzeł jest jednym z następujących elementów: wsp:Policy, , wsp:Allwsp:ExactlyOne, wsp:policyReference.

Logika importu zasad automatycznie normalizuje również wyrażenia zasad. Zagnieżdżone wyrażenia zasad i wsp:Optional atrybut nie są znormalizowane. Ilość wykonanego przetwarzania normalizacji jest ograniczona do 4096 kroków, gdzie każdy krok daje potwierdzenie zasad lub element podrzędny wsp:ExactlyOne elementu elementu.

Typ WsdlImporter próbuje uzyskać maksymalnie 32 kombinacje alternatywnych zasad dołączonych do różnych tematów zasad WSDL. Jeśli żadna kombinacja nie importuje czystej kombinacji, pierwsza kombinacja jest używana do konstruowania częściowego powiązania niestandardowego.

Obsługa błędów

MetadataExporter Zarówno typy, jak i MetadataImporter uwidaczniają Errors właściwość, która może zawierać kolekcję komunikatów o błędach i ostrzeżeniach napotkanych podczas procesów eksportu i importu, które mogą być używane podczas implementowania narzędzi.

Typ WsdlImporter zazwyczaj zgłasza wyjątek dla wyjątku przechwyconego podczas procesu importowania i dodaje odpowiedni błąd do jego Errors właściwości. Metody ImportAllContracts, ImportAllBindings, ImportAllEndpointsi ImportEndpoints nie zgłaszają jednak tych wyjątków, dlatego należy sprawdzić Errors właściwość , aby określić, czy wystąpiły jakiekolwiek problemy podczas wywoływania tych metod.

Typ WsdlExporter ponownie generuje wszelkie wyjątki przechwycone podczas procesu eksportowania. Te wyjątki nie są przechwytywane jako błędy we Errors właściwości . Po zgłaszaniu wyjątku WsdlExporter jest on w stanie błędu i nie można go ponownie użyć. Polecenie WsdlExporter powoduje dodanie ostrzeżeń do jej Errors właściwości, gdy nie można wyeksportować operacji, ponieważ używa akcji symboli wieloznacznych i po napotkaniu zduplikowanych nazw powiązań.

W tej sekcji

Instrukcje: importowanie metadanych do punktów końcowych usług
Opisuje sposób importowania pobranych metadanych do obiektów opisu.

Instrukcje: eksportowanie metadanych z punktów końcowych usług
Opisuje sposób eksportowania obiektów opisu do metadanych.

Odwołania do elementu ServiceDescription i kodu WSDL
Opisuje mapowanie między obiektami opisu i językiem WSDL.

Instrukcje: eksportowanie metadanych ze skompilowanego kodu usługi za pomocą programu Svcutil.exe
Opisuje użycie Svcutil.exe do eksportowania metadanych dla usług, kontraktów i typów danych w skompilowanych zestawach.

Odwołanie do schematu kontraktu danych
Opisuje podzestaw schematu XML (XSD) używanego przez DataContractSerializer program do opisywania typów środowiska uruchomieniowego języka wspólnego (CLR) na potrzeby serializacji XML.

Odwołanie

WsdlExporter

WsdlImporter

Zobacz też