2012-01-15 2 views
4

Visual Studio의 클라이언트 프로젝트가 mex 바인딩이없는 WCF 서비스를 어떻게 참조 할 수 있는지 궁금합니다. 모든 샘플 WCF 서비스에서 기본 mex 바인딩을 제거 할 때마다 클라이언트 응용 프로그램에서 서비스를 찾을 수없고 자동 생성 된 주석에서 프로덕션 환경에서 mex 바인딩을 제거해야합니다. 그런 다음 클라이언트 응용 프로그램에서 서비스를 찾고이를 참조해야합니다?mex 바인딩이없는 WCF 서비스 참조

답변

0

mex 끝점은 WCF SOAP 서비스의 필수 부분입니다. 이는 클라이언트 툴킷이 WSDL을 끌어 내려 프록시 클래스를 자동 생성 할 수있게합니다. 고객이 없이는 고객이 정보를 사용하여 서비스를 사용할 수있는 방법이 없습니다. 고객이 서비스를 사용하고 찾을 수있게하려면 서비스가 생산 중일 때 서비스를 그대로 사용해야합니다.

+0

감사합니다. Joe. 당신은 WCF SOAP 서비스에 대해 언급했고 그것은 내 마음 속에 또 다른 질문을 제기했습니다. WCF는 SOAP 이외의 유형의 서비스를 제공합니까? SOAP 서비스를 말할 때 정확히 무엇을 의미합니까? – user1137993

+0

Wcf는 SOAP 및 RESTful 서비스를 지원합니다. 비누 서비스는 ws- * 프로토콜을 기반으로 엄청난 양의 기능 (트랜잭션, 보안 등)을 제공합니다. 그러나 그들은 더 복잡해지며 일반적으로 클라이언트 툴킷이 필요합니다. 안정적인 서비스는 기본 제공되는 기능이 적지 만 더 가볍고 소비하기 쉽습니다. 실제로 사용할 애플리케이션에 대한 선택은 애플리케이션에 따라 다릅니다. –

+2

이것은 완전한 이야기는 아니며 클라이언트 프록시를 자동 생성하지 않고 WCF 클라이언트를 가질 수 있습니다. 대신 서비스 계약 어셈블리를 참조하고 ChannelFactory를 사용하여 프록시를 제공합니다. 프록시를 호출하면 호출은 클라이언트 구성 파일에서 전송 및 바인딩 등을 사용합니다. @ hugh의 대답을 참조하십시오. – saille

10

서비스 계약, 작업 및 데이터 계약을 정의하는 유형을 포함하는 어셈블리에 액세스 할 수있는 경우 ChannelFactory을 사용하여 즉시 프록시를 만들 수 있습니다. 이 인스턴스에서는 서비스를 호출하는 데 필요한 모든 정보에 대한 액세스 권한이 있으므로 서비스 메타 데이터를 검색 할 필요가 없습니다. 예를

은 클라이언트 설정에 거기에서 엔드 포인트 정보를 복사 할 수 있도록 서비스 측 설정 파일에 액세스 할 수있는 경우 또한 도움이
// Create service proxy on the fly 
var factory = new ChannelFactory<IMyServiceContract>("NameOfMyClientEndpointInConfigFile"); 
var proxy = factory.CreateChannel(); 

// Create data contract 
var requestDataContract = new MyDataContract(); 

// Call service operation. 
var responseDataContract = proxy.MyServiceOperation(requestDataContract); 

를 들어

.