我有一些消息设计头痛。我想为一个长时间运行的进程启动一个 NServiceBus 传奇。进行初始化所需的部分数据是约束列表,它们是抽象基类的实现。据我了解设计理念,理想情况下,消息应该是
- 自包含,即包含处理它们所需的所有数据。在此之后,我将传递消息中的所有约束列表。
- 可版本化。NServiceBus 通过使用不传递类型信息的 XML 序列化程序来做到这一点(参见Udi 的这个线程答案)。就我而言,这意味着我无法在接收端了解约束的细节。
使用 可以“解决”序列化问题BinarySerializer
,但这似乎不是推荐的做法,因为它会破坏版本控制。另一种方法是发送一些标识符,以便可以从某个数据存储中检索约束,但这会消除“自包含”。
这里有第三种方法,还是我只需要选择一些“最不坏”的解决方案?