【发布时间】:2012-04-04 19:18:44
【问题描述】:
首先:对于我将要描述的问题,我们已经找到了可行的解决方案,但感觉不对。
我们有一个应用程序,其中包含一台应用程序服务器和大约 30 到 100 个客户端。扩展服务器不是问题。最重要的是从服务器到客户端的通知,当然也有从客户端调用到服务器的服务方法。
我们现在要做的是创建一个带有回调通道的服务合约,在服务中注册客户端(即服务包含活动回调通道列表)并通过这些回调通道发送通知。
我们需要解决的问题是:
- 连接超时 - 服务现在包含一些 KeepAlive 方法,客户端大约每分钟 ping 一次
-
服务器或网络故障后重新连接客户端 - 这是我关心的重点。目前我们有一个长时间运行的客户端对象(服务引用,继承自
DuplexClientBase)来调用服务和回调对象来处理收到的通知。在client.Faulted上,我们尝试用新创建的客户端替换客户端和回调对象,直到可以再次访问服务器。这种方法涉及到一些奇怪的异常处理......
问题: 在每个客户端上启动一个 WCF 服务并在服务器上注册每个客户端的端点会更好吗?对于上述两个问题,有没有更好的解决方案?
编辑:重点是:我错过了什么吗? - 我相信所描述的架构应该很常见,我正在寻找“默认”,最好的方法。这种设置没有一些示例吗?
【问题讨论】:
标签: wcf architecture client-server wcf-client