WCF服务侦听多个端口

时间:2015-02-18 21:07:26

标签: c# web-services wcf

我需要在单个服务器上安装WCF服务,但我需要监听多个端口(由于运行客户端的计算机存在各种问题)。我不清楚是否可以使用一个ServiceHost和一个"类来自"(CDF)ServiceBase并且有endpoints,或者如果我需要两个CDF ServiceBase,每个都有一个endpoint。以下是相关文件中的相关代码:

Program.cs的

static class Program
{
    static void Main()
    {
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[]
        {
            new Service1()
        };
        ServiceBase.Run(ServicesToRun);
    }
}

Service1.cs

public partial class Service1 : ServiceBase
{
    private wcfServer _server;
    ServiceHost serviceHost;

    public Service1()
    {
        InitializeComponent();
    }

    protected override void OnStart(String[] args)
    {
        _server = new wcfServer();
        serviceHost = new ServiceHost(_server);
        serviceHost.Open();
    }

    protected override void OnStop()
    {
        if (serviceHost != null)
            serviceHost.Close();
    }
}

wcfServer.cs

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
    ConcurrencyMode=ConcurrencyMode.Multiple)]
public class wcfServer : IwcfServer { /* ... */ }

的app.config

<services>
    <service name="MyService.wcfServer">
        <endpoint address=""
            bindingConfiguration="BigDataBinding"
            binding="basicHttpBinding"
            contract="DataBackups.IwcfServer">
            <identity>
                <dns value="localhost" />
            </identity>
        </endpoint>

        <endpoint address="mex"
            binding="mexHttpBinding"
            contract="IMetadataExchange" />

        <host>
            <baseAddresses>
                <add baseAddress="http://localhost/DataBackups/wcfServer/" />
            </baseAddresses>
        </host>
    </service>
</services>
</system.serviceModel>

我应该注意到

  1. 当前&#34;解决方案&#34;这个问题是改变安装程序以允许我们在服务器上安装服务两次
  2. 该服务的目的是处理多个并发请求,这些请求部分地流式传输大数据(如果这是相关的)。
  3. 有人可以举例说明如何实现这一目标吗?

    另外,我不明白<service>中的app.config配置与以编程方式创建的CDF ServiceBase实例的关系。在当前设置中,Service1中只有一个app.config实例和一个配置,所以我想他们会排队等候。&#34;但是,如果我有多个Service1实例(我可能需要),该怎么办?我如何选择&#34;我正在配置哪些服务?

1 个答案:

答案 0 :(得分:0)

您的WCF服务在多个端口上应该没有问题。您只需要展开{​​{1}}文件的baseAddress部分,如下所示:

app.config