【发布时间】:2020-08-07 07:22:22
【问题描述】:
我正在寻找一种用于从多个来源更新服务器对象的设计模式。
现状:
- 有一个显示和修改数据的移动应用程序。
- 有一个服务器存储带有对象版本的数据
- 有一个新服务也更新了服务器上数据对象的一些属性
每次在服务器上更改对象时,都会增加对象版本属性。 移动应用程序必须使用新数据发送当前版本,以不更改服务器上对象的更新版本。在这种情况下会引发错误。
所以这很好,只要只有一个应用程序-服务器关系并且应用程序确保它更新它的本地对象,以防服务器上有一个更新的对象。
新要求:
有一项新服务可以与移动应用程序同时更新服务器上的对象(可能)。 因此,外部源将新数据发送到服务器,服务器会更新对象并增加版本。
然后可能会发生,移动应用程序也发送新的对象数据,现在的问题是,什么是新的以及如何确保不覆盖“较新”的属性值。
新服务不会更新对象的所有属性,只会更新选定的属性,但移动应用程序也可以更改这些属性。
我的想法:
我可以创建一个额外的版本属性,它指示可以由移动应用程序和外部服务更改的对象属性的版本。因此,移动应用程序将在更新中发送这两个版本。然后对象版本指示哪些属性用于从移动应用程序更新,第二个版本将处理可能同时从其他源更改的其他属性。如果服务器对象 version2 值相等,则存储移动应用程序值。如果不是,它们将被丢弃,因为在此期间有人更改了这些值。
问题
是否有人认为此解决方案存在缺陷,或者是否存在此类对象版本控制的现有设计模式?
【问题讨论】:
-
HTTP 为此目的使用ETags。
标签: design-patterns versioning