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

And*_*nea 11 wcf named-pipes netnamedpipebinding service-discovery

介绍:

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

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

问题:

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

<endpoint address="net.pipe://localhost/OfficeService"
          binding="netNamedPipeBinding"
          contract="netBridge.Development.OfficeService.IWordService"
          bindingConfiguration="localBinding" />
Run Code Online (Sandbox Code Playgroud)

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

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

Jam*_*der 13

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

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

祝好运!


小智 6

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