결국 클라이언트가 호스팅하는 독립 실행 형 서비스 (계약 B)를 호출하는 WCF 서비스 (계약 A)를 구현 중입니다. 클라이언트가 프록시를 구축하기 위해 내 서비스의 WSDL을 쿼리하는 디자인 타임에 클라이언트가 그 서비스를 구축 할 수 있도록 계약 B 용 WSDL을 포함하고 싶습니다. 불행히도, 나는 서비스에 의해 방출 된 WSDL에 계약 B를 삽입하는 방법을 알 수 없다. 계약이 인터페이스이기 때문에 [DataContract] 특성이 없으므로이를 알려진 유형으로 추가 할 수 없습니다. 방출 된 WSDL에 계약을 삽입하는 다른 방법이 있습니까? 처음에는WCF의 MEX 공급자가 만든 WSDL에 관련없는 계약을 삽입
[ServiceContract]
public interface IServerService
{
[OperationContract]
void GiveTheServerMyServiceUri(string uri);
[OperationContract]
void TellAllClientsSomething(string message);
}
// THIS IS THE INTERFACE I WANT TO INCLUDE IN THE WSDL
[ServiceContract]
public interface IClientService
{
[OperationContract]
void ReceiveMessageFromServer(string message);
}
public class ServerService : IServerService
{
private List<string> knownClients;
public void GiveTheServerMyServiceUri(string uri)
{
knownClients.Add(uri);
}
public void TellAllClientsSomething(string message)
{
foreach (string clientUri in knownClients)
{
// 1. Create instance of ClientServiceProxy using client's uri
// 2. Call proxy.ReceiveMessageFromServer(message)
}
}
}
는이 이중 계약의 교과서 예제 것 같다 :
다음은 예입니다. 그러나이 특정 응용 프로그램의 경우 여러 가지 이유로 클라이언트와 서버를 좀 더 분리해야하므로 클라이언트에게 WSDL을 통해 구현할 인터페이스를 제공하고 자체 서비스를 호스트하게하고 그냥 서비스의 URL을 말해.