版本控制
如果您的事件发生更改,您将创建该事件的新版本,并保留旧版本。为了使您的域代码表单因处理所有版本的事件而变得臃肿,您基本上会引入一个组件,将您的事件从以前的版本转换为新版本,然后将它们应用于域。请记住,事件是在您的域中实际发生的事情,因此在大多数情况下,已弃用事件中的信息很有价值。
我还没有找到任何这样的例子。
有什么帮助吗?
版本控制
如果您的事件发生更改,您将创建该事件的新版本,并保留旧版本。为了使您的域代码表单因处理所有版本的事件而变得臃肿,您基本上会引入一个组件,将您的事件从以前的版本转换为新版本,然后将它们应用于域。请记住,事件是在您的域中实际发生的事情,因此在大多数情况下,已弃用事件中的信息很有价值。
我还没有找到任何这样的例子。
有什么帮助吗?
处理事件转换有两种主要方法。两者都发生在事件反序列化期间:
您可以添加带有版本号的新类(SomethingHappened、SomethingHappened2、SomethingHappened3)。反序列化器将实例化并填充该类,将其传递给转换器以在其更高版本中获取相同的事件,此处为SomethingHappened3。问题之一是您还必须更新事件处理程序才能使用事件的最新版本。为了缓解这种情况,您可以使用“SomethingHappened”始终是最后一个版本的约定。转到 v2 时,将 SomethingHappened 重命名为 SomethingHappened1 并创建一个将成为 v2 的 SomethingHappened。为此,您需要控制从序列化事件创建的类,因为序列化类名称不包含版本号,您应该将其存储在一边。
转换器将接收一个文档(树,如 Xml 文档或 JSON 对象)并修改它以提供构建最后一个版本所需的信息,而不是将每个版本的类保留在您的代码中。
所有这一切都取决于您对反序列化管道的控制。