通过命名管道绑定公开WCF服务

时间:2008-10-08 20:58:44

标签: wcf named-pipes service-discovery netnamedpipebinding

说明:

我几天前成功实现了Windows服务中托管的WCF服务。 StackOverflow的社区帮助我the WSDL exposure here。我再次感谢你。但是最近我发现这次服务还有另一个潜在的客户端,它位于与服务相同的机器上,这使我认为我应该使用namedPipesBinding添加另一个端点。

就我而言,命名管道似乎是机内通信的最佳解决方案。 如果错误,请纠正我。

问题:

我需要为同一服务/合同公开另一个端点,但这次使用netNamedPipeBinding。但是我真的不明白如何从客户端添加服务引用。添加后愚蠢地

<endpoint address="net.pipe://localhost/OfficeService"
          binding="netNamedPipeBinding"
          contract="netBridge.Development.OfficeService.IWordService"
          bindingConfiguration="localBinding" />

我尝试在位于同一台机器上的Windows窗体应用程序中添加服务引用,键入net.pipe:// .... url。它没用。我必须提到我之前删除了mex(MetaData Exchange)端点,因为我认为没有必要。

  1. 命名管道端点绑定发现是否需要此mex端点?
  2. 如何在客户端应用中将服务引用添加到命名管道端点?

2 个答案:

答案 0 :(得分:13)

你的端点看起来很好,虽然我很好奇localBinding中有什么......

听起来最简单的选择就是更改命名管道客户端上的端点配置以匹配您的服务端点。只要客户端配置文件中的唯一端点,客户端就不应该关心它。否则,您必须为端点添加名称,并让客户端在您新建代理对象时选择一个特定的名称。

祝你好运!

答案 1 :(得分:6)

mex端点在开发期间是必需的,因为它提供了构建wsdl的http位置。 wsdl向客户端描述了如何通过命名管道,TCP / IP或其他任何方式与服务器通信。一旦客户端应用程序将代理构建到命名管道绑定并设置配置,就不再需要mex端点。因此,如果需要,可以在部署之前通过环境移除mex端点。