WsdlImporter 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
WS-Policy 첨부 파일과 함께 WSDL(웹 서비스 기술 언어) 1.1 메타데이터를 가져옵니다.
public ref class WsdlImporter : System::ServiceModel::Description::MetadataImporter
public class WsdlImporter : System.ServiceModel.Description.MetadataImporter
type WsdlImporter = class
inherit MetadataImporter
Public Class WsdlImporter
Inherits MetadataImporter
- 상속
예제
다음 코드 예제에서는 WsdlImporter를 사용하여 사용자 지정 System.Runtime.Serialization.IDataContractSurrogate를 추가하고 모든 계약을 가져온 후, 해당 계약을 컴파일하여 파일로 저장하는 방법을 보여 줍니다.
static void GenerateCSCodeForService(EndpointAddress metadataAddress, string outputFile)
{
MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress);
mexClient.ResolveMetadataReferences = true;
MetadataSet metaDocs = mexClient.GetMetadata();
WsdlImporter importer = new WsdlImporter(metaDocs);
ServiceContractGenerator generator = new ServiceContractGenerator();
// Add our custom DCAnnotationSurrogate
// to write XSD annotations into the comments.
object dataContractImporter;
XsdDataContractImporter xsdDCImporter;
if (!importer.State.TryGetValue(typeof(XsdDataContractImporter), out dataContractImporter))
{
Console.WriteLine("Couldn't find the XsdDataContractImporter! Adding custom importer.");
xsdDCImporter = new XsdDataContractImporter();
xsdDCImporter.Options = new ImportOptions();
importer.State.Add(typeof(XsdDataContractImporter), xsdDCImporter);
}
else
{
xsdDCImporter = (XsdDataContractImporter)dataContractImporter;
if (xsdDCImporter.Options == null)
{
Console.WriteLine("There were no ImportOptions on the importer.");
xsdDCImporter.Options = new ImportOptions();
}
}
xsdDCImporter.Options.DataContractSurrogate = new DCAnnotationSurrogate();
// Uncomment the following code if you are going to do your work programmatically rather than add
// the WsdlDocumentationImporters through a configuration file.
/*
// The following code inserts a custom WsdlImporter without removing the other
// importers already in the collection.
System.Collections.Generic.IEnumerable<IWsdlImportExtension> exts = importer.WsdlImportExtensions;
System.Collections.Generic.List<IWsdlImportExtension> newExts
= new System.Collections.Generic.List<IWsdlImportExtension>();
foreach (IWsdlImportExtension ext in exts)
{
Console.WriteLine("Default WSDL import extensions: {0}", ext.GetType().Name);
newExts.Add(ext);
}
newExts.Add(new WsdlDocumentationImporter());
System.Collections.Generic.IEnumerable<IPolicyImportExtension> polExts = importer.PolicyImportExtensions;
importer = new WsdlImporter(metaDocs, polExts, newExts);
*/
System.Collections.ObjectModel.Collection<ContractDescription> contracts
= importer.ImportAllContracts();
importer.ImportAllEndpoints();
foreach (ContractDescription contract in contracts)
{
generator.GenerateServiceContractType(contract);
}
if (generator.Errors.Count != 0)
throw new Exception("There were errors during code compilation.");
// Write the code dom
System.CodeDom.Compiler.CodeGeneratorOptions options
= new System.CodeDom.Compiler.CodeGeneratorOptions();
options.BracingStyle = "C";
System.CodeDom.Compiler.CodeDomProvider codeDomProvider
= System.CodeDom.Compiler.CodeDomProvider.CreateProvider("C#");
System.CodeDom.Compiler.IndentedTextWriter textWriter
= new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
codeDomProvider.GenerateCodeFromCompileUnit(
generator.TargetCompileUnit, textWriter, options
);
textWriter.Close();
}
설명
메타데이터를 가져와서 그 정보를 계약 및 엔드포인트 정보를 나타내는 다양한 클래스로 변환하려면 WsdlImporter 클래스를 사용합니다.
WsdlImporter의 기본 클래스인 MetadataImporter 클래스는 계약 및 엔드포인트 정보와, 가져오기 오류를 표시하고 가져오기 및 변환 프로세스와 관련된 형식 정보를 수락하는 속성을 선택적으로 가져오는 메서드를 정의합니다. WsdlImporter 형식은 부모 형식의 사용자 지정 정책 가져오기(IPolicyImportExtension 구현)를 사용하여 사용자 지정 정책 문을 처리하고, 사용자 지정 WSDL 가져오기(IWsdlImportExtension 구현)를 사용하여 사용자 지정 WSDL 요소를 처리합니다. 자세한 내용은 참조 하세요 메타 데이터 시스템 확장합니다.
WSDL 문서에서 정책을 가져올 때 WsdlImporter 형식은 서로 다른 WSDL 정책 주제에 연결된 정책 대안의 조합을 최대 32개까지 시도합니다. 완전히 가져오는 조합이 없는 경우, 첫 번째 조합을 사용하여 부분 사용자 지정 바인딩을 생성합니다.
또한 WsdlImporter는 이러한 메서드와 속성 외에도, 정책 문서, WSDL 문서, WSDL 확장명 및 XML 스키마 문서에 대한 액세스를 제공하는 바인딩 정보와 속성의 가져오기를 지원하는 메서드를 구현합니다. 사용자 지정 WSDL 문서 지원을 위한 WsdlImporter 확장에 대한 자세한 내용은 IWsdlImportExtension을 참조하십시오.
일반적으로 WsdlImporter 클래스는 3단계 프로세스로 사용됩니다.
WsdlImporter 개체를 만들고 MetadataSet 개체를 생성자에 전달합니다.
해당
Import
메서드를 호출하여 결과를 검색합니다.Errors 속성을 검사하여 가져오기 오류가 있는지 여부를 확인합니다.
참고
WSDL 포트 형식을 가져올 때 포트 형식의 QName이 KnownContracts 사전의 항목과 일치하면 포트 형식을 가져오지 않고 알려진 계약이 대신 사용됩니다.
import 메서드 중 하나가 호출되기 전에는 WsdlImporter 속성으로부터 값이 반환되지 않습니다. 사용자 지정 System.ServiceModel.Description.IWsdlImportExtension 개체를 WsdlImporter 프로그래밍 방식으로 로드하거나 클라이언트 구성 <wsdlImporters> 요소를 사용할 수 있습니다.
가져온 엔드포인트에 관리되는 형식 정보가 없기 때문에 서비스 엔드포인트로 가져온 메타데이터는 런타임 또는 내보내기 메타데이터를 만드는 데 사용될 수 없습니다. 메타데이터를 사용하여 클라이언트 또는 서비스 런타임을 만들거나 메타데이터를 생성하려면 먼저 메타데이터에서 코드를 생성하여 컴파일한 후 System.ServiceModel.Description.ContractDescription를 사용하여 해당 형식 정보로 새로운 GetContract 개체를 만들어야 합니다.
생성자
WsdlImporter(MetadataSet) |
WsdlImporter 클래스의 새 인스턴스를 초기화합니다. |
WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>) |
지정된 메타데이터, 사용자 지정 정책 가져오기 및 사용자 지정 WSDL 가져오기를 사용하여 WsdlImporter 개체를 만듭니다. |
WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas) |
지정된 메타데이터, 사용자 지정 정책 가져오기 및 사용자 지정 WSDL 가져오기를 사용하여 WsdlImporter 개체를 만듭니다. |
속성
Errors |
메타데이터를 가져오는 과정에서 오류가 발생했는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 MetadataImporter) |
KnownContracts |
가져오기에 알려진 이름을 기준으로 계약 사전을 가져옵니다. (다음에서 상속됨 MetadataImporter) |
PolicyImportExtensions |
가져오기에서 정책 어설션을 처리하기 위해 호출하는 정책 가져오기 컬렉션을 가져옵니다. (다음에서 상속됨 MetadataImporter) |
State |
메타데이터 가져오기에 사용되는 개체 컬렉션을 가져오거나 설정합니다. (다음에서 상속됨 MetadataImporter) |
WsdlDocuments |
메타데이터 문서에서 계약 정보를 설명하는 ServiceDescription 개체 집합을 가져옵니다. |
WsdlImportExtensions |
사용자 지정 WSDL 정보를 가져올 때 사용되는 IWsdlImportExtension 개체 집합을 가져옵니다. |
XmlSchemas |
메타데이터에서 형식을 설명하는 XmlSchema 개체 집합을 가져옵니다. |
메서드
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
ImportAllBindings() |
메타데이터 문서에서 가져온 Binding 개체 집합을 반환합니다. |
ImportAllContracts() |
메타데이터 문서에서 포트 형식 정보를 나타내는 ContractDescription 개체 집합을 반환합니다. |
ImportAllEndpoints() |
WSDL 문서에서 엔드포인트를 나타내는 ServiceEndpointCollection을 반환합니다. |
ImportBinding(Binding) |
메타데이터 문서 집합에서 바인딩 정보를 나타내는 Binding 개체를 반환합니다. |
ImportContract(PortType) |
지정된 포트 형식 정보에서 찾은 메타데이터를 나타내는 ContractDescription 개체를 반환합니다. |
ImportEndpoint(Port) |
메타데이터 문서 집합에서 지정된 ServiceEndpoint 개체의 정보를 사용하는 Port를 반환합니다. |
ImportEndpoints(Binding) |
지정된 ServiceEndpointCollection을 사용하는 모든 WSDL 포트 형식을 나타내는 Binding을 반환합니다. |
ImportEndpoints(PortType) |
지정된 ServiceEndpointCollection과 연결된 모든 WSDL 포트 형식을 나타내는 PortType을 반환합니다. |
ImportEndpoints(Service) |
지정된 ServiceEndpointCollection 내에 있는 모든 WSDL 포트 형식을 나타내는 Service을 반환합니다. |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |