最終的にクライアントがホストするスタンドアロン サービス (コントラクト B) を呼び出す WCF サービス (コントラクト A) を実装しています。クライアントがプロキシを構築するためにサービスの WSDL を照会する設計時に、クライアントがそのサービスを構築できるように、コントラクト B の WSDL を含めたいと思います。残念ながら、サービスによって発行された WSDL にコントラクト B を挿入する方法がわかりません。コントラクトはインターフェイスであり、[DataContract] 属性を持たないため、既知の型として追加できません。発行された 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 を教えてください。