版本控制
如果您的活动发生变化,您将创建该活动的新版本,并保留旧版本。为了使域代码表单因处理所有版本的事件而变得臃肿,您基本上会引入一个组件,将事件从以前的版本转换为新版本,然后将它们应用到域上。请记住,事件是在您的域中实际发生的事情,因此在大多数情况下,已弃用事件中的信息很有价值。

我还没有找到任何这方面的例子。

有什么帮助吗?

有帮助吗?

解决方案

处理事件转换有两种主要方法。两者都发生在事件反序列化期间:

  1. 您可以添加带有版本号的新类(SomethingHappened、SomethingHappened2、SomethingHappened3)。反序列化器将实例化并填充该类,将其传递给转换器以获得更高版本中的相同事件,此处为 SomethingHappened3。问题之一是您还必须更新事件处理程序才能使用该事件的最新版本。为了缓解这种情况,您可以使用“SomethingHappened”始终是最后一个版本的约定。当转到 v2 时,将 SomethingHappened 重命名为 SomethingHappened1 并创建一个将成为 v2 的 SomethingHappened。为此,您需要控制从序列化事件创建的类,因为序列化类名称不包含版本号,您应该将其存储在一边。

  2. 转换器将接收一个文档(一棵树,如 Xml 文档或 Json 对象),并对其进行修改以提供构建最新版本所需的信息,而不是在代码中保留类的每个版本。

所有这一切都取决于您对反序列化管道的控制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top