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

11

简介:

几天前,我成功地在Windows服务中实现了一个WCF服务。StackOverflow社区帮助我解决了这里的WSDL暴露问题。再次感谢大家。然而,最近我发现有另一个潜在的客户端需要使用这个服务,这次客户端位于与服务相同的机器上,这让我想到应该添加另一个使用namedPipesBinding的终结点。

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

问题:

我需要为同一服务/契约公开另一个使用netNamedPipeBinding的终结点。但是,我真的不明白如何从客户端添加服务引用。愚蠢地,在添加完之后,我并没有理解如何使用它。

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

我尝试在同一台机器上的Windows Forms应用程序中添加服务引用,输入net.pipe://.... url。但是它没有起作用。我必须提到,我之前删除了mex(元数据交换)端点,因为我认为它不必要。

  1. 命名管道终结点绑定发现是否需要此mex端点?
  2. 客户端应如何添加到命名管道终结点的服务引用?
2个回答

13

您的端点看起来不错,但我对localBinding中有什么内容很感兴趣...

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

祝你好运!


@James Bender:我会在明天看一下(这里是凌晨01:11),查看生产环境中的配置,并尝试使用mex端点进行发现/添加服务引用。我会发布有关配置文件和其他信息的进一步信息。感谢您的支持 ;) - Andrei Rînea
没问题。我仍然会使用SVCUTIL来生成您的部署代理。我曾经使用“添加服务引用…”遇到了一些“不可预测”的结果。如果您想看看,可以去我的博客(www.jamescbender.com)。 - James Bender

6

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接