我希望通过Context A引发的事件集成两个有界上下文,并使用上下文B中的事件。 我怎么想避免编译时依赖,所以Context B不必包含Context A的dll /库。(至少我不希望每次新的Event类型获取时都需要更新对A的引用的麻烦由上下文A公开。
Rebus是否有任何优先/最佳做法?
答案 0 :(得分:1)
实际上有几种方法:)
我自己,我更喜欢将消息分发为单独的NuGet包 - 然后调查$("#selector").data("name", null);
console.log($("#selector").data("name"));
以查看每个端点有哪些依赖关系。
只要我保持已发布的消息模式不可变(即遵循严格的仅附加方法来进化它),消费事件就没有问题 - 在反序列化为旧版本的消息模式时,数据会被截断。 / p>
但是如果你希望你的端点不那么耦合,你可以做几件事。
除非您更改序列化程序,否则消息将被序列化为UTF8编码的JSON。这意味着订户可以始终安装自己的JSON序列化器,例如,将消息反序列化为自己的类型,或者简单地反序列化为packages.config
(假设您使用的是Newtonsoft JSON.NET)。
事实上 - 如果我没记错的话 - 您可以包含NuGet包JObject
并通过
Rebus.NewtonsoftJson
它将Newtonsoft的Configure.With(new CastleWindsorContainerAdapter(container))
.(...)
.Serialization(s => s.UseNewtonsoftJson())
.Start();
带入混合中,然后您可以通过实现JObject
在消息处理程序中使用它。
我希望能给你一些灵感:)