1

我有一个双工 wcf 服务,它保存(在内存中)对其客户端的回调引用列表。wcf 服务有订阅和取消订阅两种方法。

一个 wcf 服务器和多个客户端都可以正常工作。当我使用 Wcf 路由器服务引入两个具有负载平衡的 wcf 服务器时,问题就开始了。

例如,我有两个 wcf 服务器(wcf1 和 wcf2)和一个路由器服务器(r1)。当客户端调用“订阅”到路由器端点时,它会将该请求广播到 wcf1 和 wcf2 服务器。这样他们两个都持有对客户端的回调引用。当其中一个 wcf 服务器关闭时,问题就开始了。如果 wcf1 服务器出现故障,则所有订阅都将丢失。因此,当它恢复活动时,就没有可用的订阅来进行回调,也没有办法通知客户端重新订阅。

我尝试在客户端收听故障事件。这不会被触发,因为它连接到路由器端点。只有当路由器服务器关闭时,该事件才会触发。

有没有人遇到过和我类似的问题?难道我做错了什么?

4

1 回答 1

0

处理此问题的唯一方法是将回调列表保存在某种可共享的资源中,例如数据库、缓存甚至共享驱动器上的文件。这可以在启动时由您的服务的每个实例访问,因此在发生故障时会重新加载所有回调。

抱歉,这可能不是您想要的。

于 2013-09-26T13:36:18.157 回答