c# – 在NServiceBus服务之间共享消息定义
富有想象力的设置
>几项服务 研究 NServiceBus基础知识的示例显示了作为同一解决方案一部分的多个应用程序如何使用另一个共享库项目共享消息定义,它们都引用它们.在这里,如果服务不是同一解决方案的一部分,事情会变得复杂. 我想,共享项目可以被提取到一个单独的存储库中,然后作为DLL或自定义NuGet包从其他存储库中引用.但它在开发过程中会产生很多困难,并且感觉不对. 在这个样本http://docs.particular.net/samples/step-by-step/中,甚至有一条说明:
但是我还没有找到最佳实践. 问题:如何以正确的方式在服务之间共享消息定义? 解决方法
你富有想象力的设置很好.但是,每个服务都可以拥有自己的消息程序集,而不是拥有一个共享消息程序集,然后将其作为NuGet程序包发布到专用存储库.
因此,如果您拥有Sales服务(例如,在Sales存储库中),还将包含Sales.Messages项目.它是最基本的形式,它包含Sales服务处理的所有命令的定义,以及Sales服务发布的所有事件的定义. 在Sales.InternalMessages和(我们现在只调用它)Sales.Contracts之间进一步划分消息也是明智的. 内部消息只是在您的服务中被抛出的消息.与私有方法一样,您不希望其他团队能够从您的服务外部调用那些,因此您不会将这些消息作为NuGet包在外部分发. 然后,Sales.Contracts将仅包含那些超出服务的消息.将它们命名为“合同”会提醒您它们是什么 – 服务之间的合同 – 因此您需要对它们进行管理.这意味着需要仔细考虑和版本化对它们的更改. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |