我正在创建一个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还不熟悉!)
答案 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" />