如何在多客户端应用程序之间同步数据

3
我需要将“一个客户端”更新并需要在同一应用程序的“其他客户端”(在另一个房间)上进行刷新的数据同步。

1-最佳方法是什么? 我考虑了SqlDependency,但该应用程序也可以在其他数据库引擎上运行(我放弃了它) 我还想到了一个定时器轮询更新,但我真的不想定期检查更改。

有人遇到过这个问题吗?你是如何解决的?

2-此外。 当数据必须在UI中更新而不妨碍其他电脑上的人们工作时怎么办?

场景: 3台电脑使用相同的数据。 创建/更新需要同步的记录(以获取每台PC所做的最新更改)。

我希望我的情况清楚明了。

提前感谢您。

1个回答

0
如果你知道你只需要两个应用实例,那么你可以使用 WCF 来完成。每个客户端在想要发送更新时都充当另一个客户端的服务器。
如何处理由两个客户端编辑的数据的更新可能有些棘手。这取决于你的数据类型以及 GUI 是否开发了处理更新等操作的功能。

抱歉,我认为你没有完全理解我的意思。我在几台电脑上都有同样的应用程序。在使用相同的应用程序时,如果操作员1更改了“用户的名称”,我希望这个更改能够反映在操作员2和操作员3正在使用的应用程序中。我需要将在一台计算机上进行的更改与其他计算机同步。 - Andrés Falcón
这与跨线程通信相同,例如“GUI与工作线程”。您可以选择“服务器通知客户端”或“客户端轮询服务器”。如果您不想轮询服务器,则可以使用远程调用/ WCF /套接字来通知客户端。无论如何,您都需要在数据上提供某种锁(乐观或悲观)。基于事件的同步不足以维护数据的完整性。 - Dmitry Karpezo
因此,您正在提出一种模型,在该模型中,用于通知需要更改/刷新PC2、PC3和“其他”上的更新数据的已更改数据(在PC1中)的通信将使用套接字。 我的三个选择是:1-如您所说,客户端之间的套接字(也许我会聚合执行广播到其他客户端的小型服务器,这只是一个想法),2-使用sqldependency或类似的东西,3-使用定时器定期轮询(不好的选择)... - Andrés Falcón
1
我会尝试通过客户端/服务器解决方案来解决这个问题,其中服务器将更新分发给连接的客户端。这样,如果可以解决编辑/更新问题,您还可以在正在编辑的对象上实现锁定。 Client1开始编辑一个对象,将其通信到服务器,服务器为该对象创建一个锁定(具有密钥和超时),服务器将其通信到所有连接的客户端。这是一种方法。客户机也可以向服务器请求对象的锁定,然后服务器决定客户机是否可以拥有它。 - Paw Baltzersen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接