1

インターフェイスがあり、同じインターフェイスに対して複数の実装があります。1 つのホストを使用してエンドポイントを公開するにはどうすればよいですか?

サービスコード

[ServiceContract]
public interface ICalculator
{
    [OperationContract]
    int Add(int num1, int num2);
}
public class Calculator : ICalculator
{
    public int Add(int num1, int num2)
    {
        return num1 + num2;
    }
}
public class Calculator_Fake : ICalculator
{
    public int Add(int num1, int num2)
    {
        return num1 + num1;
    }
}

ホストコード

class Program
{
    static void Main(string[] args)
    {

        ServiceHost host = new ServiceHost(typeof(WCF_Service.CalService));
        host.Open();
        Console.ReadLine();
    }
}

ホスト構成

<endpoint address="http://localhost:8000/CalService"
          binding="basicHttpBinding"
          contract="WCF_Service.ICalculator" />
4

1 に答える 1

3

あなたはそれを言いませんが、偽のサービスと本物のサービスの両方を単一のアプリケーションでホストできるようにしたいと思っていると思います。その場合、1 つのアプリケーションで複数の WCF サービスをホストできます。そのためには、複数のホストを作成するようにコードを変更する必要があります。

コードの変更

class Program
{
    static void Main(string[] args)
    {
        ServiceHost host1 = new ServiceHost(typeof(Calculator));
        host1.Open();

        ServiceHost host2 = new ServiceHost(typeof(Calculator_Fake));
        host2.Open();

        Console.ReadLine();
    }
}

設定変更

<endpoint address="http://localhost:8000/CalService"
          binding="basicHttpBinding"
          contract="WCF_Service.ICalculator" />

<endpoint address="http://localhost:8000/FakeCalService"
          binding="basicHttpBinding"
          contract="WCF_Service.ICalculator" />
于 2013-09-06T13:42:23.757 に答える