C# 如何在客户端之间保持对象同步

C# 如何在客户端之间保持对象同步,c#,sql,object,synchronization,C#,Sql,Object,Synchronization,假设两台客户机召回了一张罚单。如果一个客户端进行了更改,那么保持第二个客户端同步的最佳方法是什么?显然,我不希望第二个客户端覆盖第一个客户端的更改,但另外,我希望第二个客户端得到更新,因为它可能会基于该票据执行操作,该操作需要包括另一台计算机所做的更新 我考虑过的一些方法: MSMQ-我们的应用程序实际上曾经使用过它,但当我被聘用时,它已经不再使用了,只是死代码。我曾考虑过恢复它,但我觉得MSMQ并没有提供我想要的功能,不仅仅是通知其他客户端某个更改,而且还分发该更改 SQL Service B

假设两台客户机召回了一张罚单。如果一个客户端进行了更改,那么保持第二个客户端同步的最佳方法是什么?显然,我不希望第二个客户端覆盖第一个客户端的更改,但另外,我希望第二个客户端得到更新,因为它可能会基于该票据执行操作,该操作需要包括另一台计算机所做的更新

我考虑过的一些方法:

MSMQ-我们的应用程序实际上曾经使用过它,但当我被聘用时,它已经不再使用了,只是死代码。我曾考虑过恢复它,但我觉得MSMQ并没有提供我想要的功能,不仅仅是通知其他客户端某个更改,而且还分发该更改

SQL Service Broker—我已经有一段时间没有看到这一点了,但我清楚地记得这不是我想要走的路线

Web服务——而不是每个应用程序都访问数据库本身,我认为有一个Web服务在中间负责形成业务对象并将其释放出来,这将是一个局部的解决方案,除了我们的应用程序是纯Windows窗体的事实。但肯定有另一种方法可以实现这一点,而不需要实际的web服务器吗

套接字-我考虑过创建一个与我们的业务对象集成的windows服务,并使用windows套接字来a)告诉其他客户端他们需要调用数据库进行更新,或b)实际给客户端提供更新,以便他们不需要调用数据库


这对我来说是一个新领域,我不知道有任何关于设计模式的好书或文章能解决这个问题,所以如果你知道的话,请告诉我。

我不确定,但你可以利用它们

-定义对象之间的一对多依赖关系,以便当一个对象更改状态时,自动通知并更新其所有依赖项


并实施它

关于您的web服务选项,请注意WCF不需要web服务器。它所需要的只是一个主机,您可以轻松地使用它。该主机可能是满足您需要的Windows服务。

使用这种方法,我需要从中心位置分发对象,而不是让每个系统自己获取数据并形成自己的对象,对吗?我不知道如何正确地实现该解决方案,但我也不确定正确的实现方法是什么。@Brandon Moore-点击链接并查看一些在线示例可能会对您有所帮助,因为我只是对这一点有概念性的理解……您对当前的应用程序架构有点不了解,只有客户端和数据库服务器吗?@d_schnell这是一个销售点系统。一般来说,我处理过的大多数pos系统都很少处理这个问题,或者只是试图通过确保一个终端不能在另一个终端已经打开的情况下提取票证来阻止它的发生。这在大多数情况下已经足够好了,但我正在为一个新项目创建一些业务对象,我认为如果我能够在基础级别合并此功能,以便适当的对象可以继承此功能,那将是非常棒的。很酷,WCF已经在我的学习清单上,所以这将是一个很好的机会。