NServiceBus升级主要版本策略

时间:2018-09-22 09:47:34

标签: c# .net upgrade nservicebus

我一直在阅读有关将NServiceBus升级到新的主要版本(例如从6.x.x版本升级到7.x.x版本)的含义。

在ParticularDocs网站上,the Upgrade Guides说:

  

由于具有线兼容性保证,因此不需要   解决方案中的每个端点都使用相同版本的NServiceBus。   这意味着可以对单个端点进行升级,测试和   在升级另一台之前部署到生产中。

但是,如果您读到有关Unobstrusive Mode Messages的内容,则表示:

  

可以使用普通类或接口定义消息协定。   为了使NServiceBus在扫描程序集时找到这些类,它们   需要使用IMessage接口进行标记,该接口本质上说,   “这是消息定义”。这允许去耦消息   来自NServiceBus程序集的合同。

     

当有不同的服务时,此依赖关系可能导致问题   运行不同版本的NServiceBus。   乔纳森·奥利弗(Jonathan Oliver)拥有great write up on this very subject

     

这对于命令来说并不重要,因为它们总是被使用   在单一服务范围之内,公平地要求   服务以使用相同版本的NServiceBus。但是当涉及到   事件,这变得更加成问题,因为它需要服务   都使用相同版本的NServiceBus,从而迫使它们   一次升级所有NServiceBus。

前者告诉我们,独立升级节点没有问题,但后者似乎表明,对于消息程序集,我们必须保留相同的版本并一次全部升级。

如果我没有误会:

由于我的节点依赖于我的消息程序集,所以当我升级一个节点时,我还必须将它们的依赖项升级到相同的主版本,这样我也将不得不升级我的消息程序集。使用这些相同消息程序集的其他节点也将需要升级。这样可以扩展我所有系统的升级链。

唯一避免这种情况的方法是使用Unobstrusive Mode Messages

我们拥有实现IEventICommand的所有消息。现在更改为Unobstrusive Mode Messages会带来不便。

1 个答案:

答案 0 :(得分:0)

经过一番挖掘之后,有一个我忽略的解决方案,您可以使用程序集重定向,它应该适用于v 5.x及更高版本。

希望这会有所帮助