0

最終的にクライアントがホストするスタンドアロン サービス (コントラクト 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 を教えてください。

4

1 に答える 1