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:All
wsp: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.