【发布时间】:2014-08-13 05:42:53
【问题描述】:
我有两台带有 WCF 服务的服务器(以后可能会更多),都位于负载均衡器后面。多个 IS 服务器(也是负载均衡)中的客户端应用程序调用 WCF 执行一些操作,比如说保存。 相同的数据,比如说客户信息,可以同时被多个用户打开。 然后,可以同时从多个用户执行 Save 操作,并且调用将转到不同的 WCF 服务器。
我希望当用户从 UI 调用 Save 时,并且已经从另一个 UI 对相同的客户端数据进行了 Save,那么第二个用户会收到有关它的警报。 为此,所有 WCF 实例都应该知道在其他实例中执行的操作。
那么如何在所有 WCF 服务器实例之间同步数据状态? 我不想分享数据,只是数据的一些状态(打开,保存中,类似的)
请指教,谢谢,
我正在使用 c#/.NET4
添加:WCF 实际上托管在 Windows 服务中。
【问题讨论】:
-
你能发布代码示例吗?这个问题有点太宽泛了,部分问题,比如确保它只保存一次可以使用异步进程解决,也许使用命令模式和消息总线..
-
好吧,我认为代码示例在这里并不重要,问题更多在于要设置的体系结构。消息总线已经讨论过了,似乎其他团队成员更愿意避免使用中间件层,我们正在寻找其他可能的方法。
-
您可以使用某种集中式锁定系统和诸如 SignalR 之类的东西来提醒其他查看者相同的数据正在被更改/保存。
-
SignalR 已经讨论过作为通知机制。但在同步部分仍然不清楚。
-
您可能需要为该部分提供一些代码示例或更多信息。我不确定是否有足够的余地,因为默认情况下 WCF 服务应该是无状态的。