메타데이터 내보내기 및 가져오기
WCF(Windows Communication Foundation)에서 메타데이터 내보내기는 서비스 끝점을 설명하여 클라이언트에서 서비스 사용 방법을 이해할 수 있도록 병렬의 표준화된 표현으로 나타내는 프로세스입니다. 서비스 메타데이터 가져오기는 서비스 메타데이터에서 ServiceEndpoint 인스턴스 또는 부분을 생성하는 프로세스입니다.
메타데이터 내보내기
System.ServiceModel.Description.ServiceEndpoint 인스턴스에서 메타데이터를 내보내려면 MetadataExporter 추상 클래스 구현을 사용합니다. WsdlExporter 형식은 WCF에 포함된 MetadataExporter 추상 클래스의 구현입니다.
System.ServiceModel.Description.WsdlExporter 형식은 MetadataSet 인스턴스에서 캡슐화된 연결된 정책 식을 사용하여 WSDL(웹 서비스 기술 언어) 메타데이터를 생성합니다. System.ServiceModel.Description.WsdlExporter 인스턴스를 사용하여 ContractDescription 개체 및 ServiceEndpoint 개체에 대한 메타데이터를 반복적으로 내보낼 수 있습니다. ServiceEndpoint 개체의 컬렉션을 내보내고, 해당 컬렉션을 특정 서비스 이름과 연결할 수도 있습니다.
참고
WsdlExporter는 CLR(공용 언어 런타임) 형식 정보를 포함하는 ContractDescription 인스턴스(예: ContractDescription.GetContract 메서드를 사용하여 만들어지거나 ServiceHost 인스턴스에 대한 ServiceDescription의 일부로 만들어진 ContractDescription 인스턴스)에서 메타데이터를 내보내는 경우에만 사용할 수 있습니다. 서비스 메타데이터에서 가져왔거나 형식 정보 없이 생성된 ContractDescription 인스턴스에서 메타데이터를 내보낼 경우에는 WsdlExporter를 사용할 수 없습니다.
메타데이터 가져오기
WSDL 문서 가져오기
WCF에서 서비스 메타데이터를 가져오려면 MetadataImporter 추상 클래스의 구현을 사용합니다. System.ServiceModel.Description.WsdlImporter 형식은 WCF에 포함된 MetadataImporter 추상 클래스의 구현입니다. WsdlImporter 형식은 MetadataSet 개체에 번들로 제공되는 연결된 정책과 함께 WSDL 메타데이터를 가져옵니다.
WsdlImporter 형식을 사용하여 메타데이터를 가져오는 방식을 제어할 수 있습니다. 끝점, 바인딩 또는 계약을 모두 가져올 수 있습니다. 특정 WSDL 서비스, 바인딩 또는 포트 종류와 관련된 모든 끝점을 가져올 수 있습니다. 특정 WSDL 포트에 대한 끝점, 특정 WSDL 바인딩에 대한 바인딩 또는 특정 WSDL 포트 종류에 대한 계약을 가져올 수도 있습니다.
WsdlImporter는 가져올 필요가 없는 계약 집합을 지정할 수 있는 KnownContracts 속성도 노출합니다. WsdlImporter는 메타데이터로부터 정규화된 동일한 이름이 있는 계약을 가져오지 않고 KnownContracts 속성의 계약을 사용합니다.
정책 가져오기
WsdlImporter 형식은 메시지, 작업 및 끝점 정책 주체에 연결된 정책 식을 수집하고 PolicyImportExtensions 컬렉션에서 IPolicyImportExtension 구현을 사용하여 정책 식을 가져옵니다.
정책 가져오기 논리는 동일한 WSDL 문서에 있는 정책 식에 대한 정책 참조를 처리하며, wsu:Id 또는 xml:id 특성으로 식별됩니다. 정책 가져오기 논리는 정책 식의 크기를 4096개의 노드로 제한하여 순환 정책 참조로부터 응용 프로그램을 보호합니다. 여기서 노드는 wsp:Policy, wsp:All, wsp:ExactlyOne, wsp:policyReference 요소 중 하나입니다.
이 정책 가져오기 논리는 정책 식을 자동으로 정규화합니다. 중첩된 정책 식과 wsp:Optional 특성은 정규화되지 않습니다. 수행되는 정규화 처리 양은 4096 단계로 제한됩니다. 여기서 각 단계는 정책 어설션 또는 wsp:ExactlyOne 요소의 하위 요소를 생성합니다.
WsdlImporter 형식은 여러 WSDL 정책 주체에 연결된 정책 대안의 조합을 최대 32개까지 시도합니다. 완전히 가져오는 조합이 없는 경우, 첫 번째 조합을 사용하여 부분 사용자 지정 바인딩을 생성합니다.
오류 처리
MetadataExporter 및 MetadataImporter 형식은 각각 도구를 구현할 때 사용할 수 있는 내보내기 및 가져오기 프로세스 중에 발생한 오류 및 경고 메시지의 컬렉션이 포함될 수 있는 Errors 속성을 노출합니다.
일반적으로 WsdlImporter 형식은 가져오기 프로세스 중에 catch된 예외에 대해 예외를 throw하고, 해당 오류를 해당 Errors 속성에 추가합니다. 그러나 ImportAllContracts, ImportAllBindings, ImportAllEndpoints ImportEndpoints 메서드는 이러한 예외를 throw하지 않으므로 Errors 속성을 확인하여 이러한 메서드를 호출할 때 문제가 발생하는지 확인합니다.
WsdlExporter 형식은 내보내기 프로세스 중에 catch된 예외를 다시 throw합니다. 이러한 예외는 Errors 속성에서 오류로 캡처되지 않습니다. WsdlExporter가 예외를 throw하면 오류 상태에 있게 되므로 다시 사용할 수 없습니다. 작업에서 와일드카드 동작을 사용해서 작업을 내보낼 수 없는 경우와 중복 바인딩 이름이 발생하는 경우, WsdlExporter가 경고를 해당 Errors 속성에 추가합니다.
단원 내용
- 방법: 서비스 끝점으로 메타데이터 가져오기
다운로드한 메타데이터를 설명 개체로 가져오는 방법에 대해 설명합니다.
- 방법: 서비스 끝점에서 메타데이터 내보내기
설명 개체를 메타데이터로 내보내는 방법에 대해 설명합니다.
- ServiceDescription 및 WSDL 참조
설명 개체와 WSDL 간 매핑에 대해 설명합니다.
- 방법: Svcutil.exe를 사용하여 컴파일된 서비스 코드에서 메타데이터 내보내기
Svcutil.exe를 사용하여 컴파일된 어셈블리에 있는 서비스, 계약 및 데이터 형식에 대한 메타데이터를 내보내는 방법에 대해 설명합니다.
- 데이터 계약 스키마 참조
XML serialization에 대한 CLR(공용 언어 런타임) 형식을 설명하기 위해 DataContractSerializer에서 사용하는 XSD(XML 스키마) 하위 집합에 대해 설명합니다.
참조
WsdlExporter
WsdlImporter