由多个源更改的对象版本控制的设计模式



我正在寻找一种用于从多个源更新服务器对象的设计模式。

现状:

  • 有一个移动应用程序可以显示和修改数据
  • 有一个服务器用对象版本存储数据
  • 有一个新的服务,它还更新服务器上数据对象的一些属性

每次在服务器上更改对象时,对象版本属性都会增加。移动应用程序必须发送带有新数据的当前版本,才能不更改服务器上对象的新版本。在这种情况下,会抛出一个错误。

因此,这是可以的,只要只有应用程序-服务器关系,并且应用程序确保在服务器上有新对象的情况下更新其本地对象。

新要求:

有一种新的服务可以(可能(与移动应用程序同时更新服务器上的对象。因此,外部源会向服务器发送新数据,服务器会更新对象并增加版本。

然后可能发生的情况是,移动应用程序也会发送新的对象数据,现在的问题是,什么是更新的,以及如何确保不覆盖";更新的";属性值。

新服务不会更新对象的所有属性,只更新选定的属性,但移动应用程序也可以更改这些属性。

我的想法:

我可以创建一个额外的版本属性,该属性指示可以由移动应用程序和外部服务更改的对象属性的版本。因此,通过这种方式,移动应用程序将在更新中发送这两个版本。然后,对象版本指示哪些属性用于从移动应用程序更新,并且第二版本将处理在此期间可能从其他源更改的其他属性。如果服务器对象版本2的值相等,则存储移动应用程序的值。否则,它们将被丢弃,因为在此期间有人改变了这些价值观。

问题

有人看到这个解决方案的缺点吗?或者有没有针对这种对象版本控制的现有设计模式?

描述似乎与乐观锁定相匹配,乐观锁定是一种久经考验的工作原理。悲观锁定是另一种选择,用户可以立即得到其他人已经锁定对象的反馈。

最新更新