WCF HTTP和NamedPipe服务

时间:2010-12-19 20:33:48

标签: c# .net wcf http named-pipes

我正在创建一个WCF服务,目前,该服务使用basicHttpBinding公开了许多合同。但是,我现在想在同一台机器上本地使用该服务,并且netNamedPipeBinding在性能方面似乎更合适。出于这个原因,我想使用命名管道和HTTP公开服务。

目前我正在使用以下配置执行此操作:

<service name="WCFService.MyService" behaviorConfiguration="serviceBehaviour">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8080/MyService" />
        <add baseAddress="net.pipe://localhost/MyService" />
      </baseAddresses>
    </host>

    <endpoint address="calculator" binding="basicHttpBinding" contract="WCFService.ICalculatorService" />
    <endpoint address="database" binding="basicHttpBinding" contract="WCFService.IDatabaseService" />
</service>

这似乎工作正常,但仔细观察后,端点仍在使用basicHttpBinding。这是有效的,但我得到的印象是它产生了不必要的开销。

我是否需要为每个合约和每种绑定类型(即basicHttpBinding和netNamedPipeBinding)创建一个端点,或者我是否完全错误?

(如果不清楚,我对WCF还不熟悉!)

1 个答案:

答案 0 :(得分:1)

是的,您需要指定多个端点(每个绑定1个端点):

<endpoint address="calculator" binding="basicHttpBinding" contract="WCFService.ICalculatorService" />
<endpoint address="database" binding="basicHttpBinding" contract="WCFService.IDatabaseService" />

<endpoint address="calculator" binding="netNamedPipeBinding" contract="WCFService.ICalculatorService" />
<endpoint address="database" binding="netNamedPipeBinding" contract="WCFService.IDatabaseService" />