旧状态和新状态之间的区别



我正在开发一个应该向客户端发送状态更改的 SOAP 服务器。服务器与其他系统通信以更新其内部状态。

我正在寻找一种解决方案(模式 o 无论如何(,让我跟踪更新后的状态变化。我观察了纪念品模式,但这不是我想要的,因为我不需要以前的状态,而是需要变化。我不能简单地将更改传播到客户端,因为它是一个拉取架构(客户端轮询更改(。

用例

假设服务器状态是具有 3 个元素的对象list,并且更新会修改它并添加一个新元素。客户端必须仅接收新添加的元素,而不是包含 4 个元素的列表。

有什么解决办法吗?

您可以定义一组可序列化的命令(有关更多详细信息,请参阅命令设计模式(,这些命令在必须执行更改时生成。
然后,可以在本地执行这些命令以将更改应用于模型,并在队列中序列化这些命令。每当客户端拉取它们时,它都可以简单地将相同的命令重新应用于其本地模型,并获得与服务器端相同的结果。
不知何故,您的服务器在要应用的更改方面表现得与客户端完全相同,不同之处在于它会立即拉取它们。

考虑到您的用例,可以将命令定义为列表中的插入,并与所有必需的参数一起创建。您可以轻松地将其扩展到对列表对象的删除和更新。

最新更新