从单个服务承载多个 WCF 服务协定实现

本文关键字:服务 WCF 实现 单个 | 更新日期: 2023-09-27 18:30:23

我有一个接口,对于同一个接口,我有多个实现。所以我想问你,我如何使用一个主机公开端点?

服务代码

[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" />

从单个服务承载多个 WCF 服务协定实现

虽然你没有这么说,但我假设你希望能够在一个应用程序中同时托管虚假和真实的服务。如果是这样,则可以在单个应用程序中承载多个 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" />