因此,我查看了人们为 Duplex Communications 创建的示例示例,即由 IIS 托管并通过 Silverlight 连接时。有很多这样的例子(这篇 MSDN 文章很棒),但都使用相同的范例:
用户 A 连接到服务器 A,它将他放在内存列表中以接收未来的更新。
用户 B 连接到服务器 A,它通知列表中的所有用户有人“登录”。
...但是当
用户 C 连接到服务器 C,服务器 C 的内存列表不包含用户 A 或 B。
问题是我希望在集群(网络场)环境中实现这一点。这使事情变得复杂,因为我无法验证哪台机器最终会执行 wcf 调用,因此很难将任何消息转发给所有其他用户。
我能想到的最佳方案是让客户端实际连接到某种路由服务,该服务接收传入请求并将客户端转发到特定机器。当然,这样我就失去了网络农场的好处,因为一台机器有效地处理了所有传入的请求。
一个不太有效的解决方案是让服务不断轮询某些东西(文件服务器上的文件或数据库中的表)以查找更改。一旦出现更改,将它们推送给客户端。这看起来像一个非常丑陋的婴儿。
我错过了什么?
更新 - 路由系统无法满足我的需要。我的托管公司不允许我通过 IP 直接连接到场中的特定机器。我只能连接到通用负载平衡器前端,所以不能保证我的用户会在同一台服务器上结束。
到目前为止,我们正在轮询数据库中的表以查找更改。看起来仍然像一个丑陋的婴儿。