WCF(Windows Communication Foundation)에서 메타데이터 가져오기는 메타데이터에서 서비스 또는 해당 구성 요소 부분의 추상 표현을 생성하는 프로세스입니다. 예를 들어 WCF는 서비스에 대한 WSDL 문서에서 ServiceEndpoint 인스턴스, Binding 인스턴스 또는 ContractDescription 인스턴스를 가져올 수 있습니다. WCF에서 서비스 메타데이터를 가져오려면 추상 클래스의 구현을 System.ServiceModel.Description.MetadataImporter 사용합니다. 클래스에서 파생되는 형식은 WCF에서 MetadataImporter WS-Policy 가져오기 논리를 활용하는 메타데이터 형식 가져오기 지원을 구현합니다.
사용자 지정 메타데이터는 시스템 제공 메타데이터 가져오기에서 가져올 수 없는 XML 요소로 구성됩니다. 일반적으로 여기에는 사용자 지정 WSDL 확장 및 사용자 지정 정책 어설션이 포함됩니다.
이 섹션에서는 사용자 지정 WSDL 확장 및 정책 어설션을 가져오는 방법을 설명합니다. 가져오기 프로세스 자체에 초점을 맞추지 않습니다. 메타데이터가 사용자 지정 또는 시스템 지원인지 여부에 관계없이 메타데이터를 내보내고 가져오는 형식을 사용하는 방법에 대한 자세한 내용은 메타데이터 내보내기 및 가져오기를 참조하세요.
개요
이 System.ServiceModel.Description.WsdlImporter 형식은 WCF에 MetadataImporter 포함된 추상 클래스의 구현입니다. WsdlImporter 유형은 System.ServiceModel.Description.MetadataSet 개체에 번들로 제공된 정책과 함께 WSDL 메타데이터를 가져옵니다. 기본 가져오기 기능이 인식하지 못하는 정책 어설션 및 WSDL 확장은 등록된 사용자 지정 정책 및 WSDL 가져오기 기능으로 가져오기에 전달됩니다. 일반적으로 가져오기는 사용자 정의 바인딩 요소를 지원하거나 가져온 계약을 수정하기 위해 구현됩니다.
이 섹션에서는 다음을 설명합니다.
설명을 생성하고 코드를 생성하기 전에 WSDL 데이터를 사용자 지정 가져오기에 노출하는 인터페이스를 구현하고 사용하는 System.ServiceModel.Description.IWsdlImportExtension 방법입니다. 이 인터페이스를 사용하여 지정된 메타데이터 집합을 사용하여 수행되는 설명 형식 및 코드 컴파일을 검사하거나 수정할 수 있습니다.
설명 개체를 System.ServiceModel.Description.IPolicyImportExtension 생성하기 전에 가져오기에 정책 어설션을 노출하는 인터페이스를 구현하고 사용하는 방법입니다. 이 인터페이스를 사용하여 다운로드한 정책에 따라 바인딩 또는 계약을 검사하거나 수정할 수 있습니다.
사용자 지정 WSDL 및 정책 어설션을 내보내는 방법에 대한 자세한 내용은 WCF 확장에 대한 사용자 지정 메타데이터 내보내기를 참조하세요.
사용자 지정 WSDL 확장 가져오기
WSDL 확장 가져오기에 대한 지원을 추가하려면 인터페이스를 IWsdlImportExtension 구현한 다음, 구현을 속성에 WsdlImportExtensions 추가합니다. WsdlImporter 애플리케이션 구성 파일에 등록된 인터페이스의 IWsdlImportExtension 구현도 로드할 수 있습니다. 많은 WSDL 가져오기는 기본적으로 등록되며 등록된 WSDL 가져오기의 순서는 중요합니다.
사용자 지정 WSDL 가져오기 도구가 로드되고 WsdlImporter에서 사용되는 경우, 먼저 가져오기 프로세스 전에 메타데이터를 수정하기 위해 BeforeImport 메서드가 호출됩니다. 다음으로, 계약을 가져온 후 ImportContract 메타데이터에서 가져온 계약을 수정할 수 있도록 메서드를 호출합니다. 마지막으로 가져온 ImportEndpoint 엔드포인트를 수정할 수 있도록 메서드가 호출됩니다.
자세한 내용은 방법: 사용자 지정 WSDL 가져오기를 참조하세요.
사용자 지정 정책 어설션 가져오기
WsdlImporter 형식 및 ServiceModel 메타데이터 유틸리티 도구(Svcutil.exe)는 WSDL 문서에 연결된 정책 식에서 다양한 정책 어설션 형식 처리를 자동으로 처리합니다. 이러한 도구는 WSDL 바인딩 및 WSDL 포트에 연결된 정책 식을 수집, 정규화 및 병합합니다.
사용자 지정 정책 어설션 가져오기에 대한 지원을 추가하려면 인터페이스를 IPolicyImportExtension 구현한 다음, 구현을 속성에 PolicyImportExtensions 추가합니다. MetadataImporter 애플리케이션 구성 파일에 등록된 인터페이스의 IPolicyImportExtension 구현도 로드할 수 있습니다. 많은 정책 가져오기는 기본적으로 등록되며 등록된 정책 가져오기의 순서는 중요합니다.
메타데이터 시스템은 메시지, 작업 및 엔드포인트 정책 주체에 연결된 각 정책 대안 조합에 대해 등록된 모든 정책 가져오기 확장에서 메서드를 반복적으로 호출 IPolicyImportExtension.ImportPolicy 합니다. WSDL 포트를 가져올 때 정책 가져오기 확장을 호출하기 전에 포트 및 해당 WSDL 바인딩에 연결된 정책이 병합됩니다. 정책 대안은 PolicyConversionContext를 통해 PolicyAssertionCollection 개체로 제공됩니다. 각각의 PolicyAssertionCollection는 XmlElement 개체에 의해 나타내는 정책 어설션의 모음입니다.
Contract 및 BindingElements 속성은 PolicyConversionContext 개체에 있으며, WSDL에서 가져온 ContractDescription 및 BindingElement 개체를 노출합니다. 정책 가져오기 확장은 특정 정책 어설션 유형의 인스턴스를 찾아 ContractDescription 또는 BindingElement 개체에 해당 변경을 적용한 후, 해당 PolicyAssertionCollection 인스턴스에서 정책 어설션을 제거하여 처리합니다.
wsp:Optional
특성 및 중첩된 정책 식은 정규화되지 않으므로 정책 가져오기 확장은 이러한 정책 구문을 처리해야 합니다. 또한 정책 가져오기 확장은 동일한 ContractDescription 개체와 BindingElement 개체를 사용하여 여러 번 호출될 수 있으므로 정책 가져오기 확장은 이 동작에 대해 견고해야 합니다.
중요합니다
잘못되었거나 부적절한 메타데이터가 가져오기 기능으로 전달될 수 있습니다. 사용자 지정 가져오기가 모든 형태의 XML에 대해 강력한지 확인합니다.