在WCF服务器/客户端情况下,必须同步服务器和客户端上的WCF配置。例如。在我的客户端具有以下配置的情况下,服务器必须具有相同的绑定名称,合同和配置,否则它将无法正确连接。
<bindings>
<basicHttpBinding>
<binding name="ServerContract" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost/.../ServerContractImpl.svc/Mtom"
binding="basicHttpBinding" bindingConfiguration="ServerContract"
contract="ServerReference.ServerContract" name="ServerContract" />
</client>
我正在为我无法控制的配置的服务器编写WCF客户端代码,这个要求让我非常紧张。我使用VS2010的服务参考生成了我的初始客户端配置,但是如果服务器的管理员在任何时候更改了他们的绑定名称,我的WCF客户端将如何响应?
所以我的问题:
答案 0 :(得分:0)
答案:
以下MSDN文章应解决您的问题,因为它明确指出客户在发现之前必须事先了解服务地址。
答案包含一篇指向本文的链接,该链接非常有用,可能会解决您的需求:http://msdn.microsoft.com/en-us/magazine/ee335779.aspx
来自文章:
如果服务可以使用任何可用的地址,那将是很好的。反过来,客户端需要在运行时发现该地址。事实上,有一个基于行业标准的解决方案,规定了发现的方式。该解决方案,简称发现(及其支持机制),是本专栏的主题。
答案 1 :(得分:0)
在我看来,这更像是一种最佳实践。如果您没有关于要连接的服务器的先验知识,最好的办法是防止最坏的情况发生。
您可以开发一种异常机制,将一个端点故障转移到另一个端点。您希望捕获的异常包括CommunicationException和FaultException,它们都在Service.ServiceModel命名空间下。
其次,正如其他用户所说,更好地了解WCF服务器端,看看他们是否启用了WCF发现。 WCF发现允许您将WCF客户端及其连接的地址分离。如果服务失败/迁移,您的客户端(您自己)可以自动连接到正确的地址而不会失败。