我刚刚开始学习NServicebus(以及一般的SOA)并且有一些问题和要点我需要澄清解决方案通常是如何构建的和常见的最佳实践:
文档并未真正解释端点是什么。从我收集它是一个单位 部署和您的服务将有1个或多个端点。这是对的吗?
您正在开发的每个服务都有一个VS解决方案是最佳做法吗?使用消息项目,然后是每个端点的项目,最后是与包含域层的端点共享的项目?
根据我的阅读,服务通常由单个组件组成。可以(或应该)服务中的任何组件访问同一个数据库,还是每个组件应该是一个数据库?
感谢您提供的任何澄清或见解。
答案 0 :(得分:5)
我会尽力回答你的问题......
我不确定术语"最佳实践"我会考虑这个术语" Best Thinking"或" Paradigm"
Q1:是的,端点是一个有效的部署过程,它消耗了它的队列消息。
它不必属于单一的服务" (逻辑)(例如,在Web端点的情况下),端点可以部署一个或多个处理程序。
Q2:我会使用一个解决方案(以及后来的repo)每个逻辑域服务,在解决方案中我会为每个消息处理程序创建一个项目,因为在扩展时你需要在端点之间移动你的处理程序,或者自己的终点取决于规模。然而消息是合同,所以我会把它们放在一个解决方案中,可能是拆分命令和事件。您可以考虑使用nuget之类的东西来发布您的消息包。问题3:A"服务"是自治组件的逻辑组合,每个组件都是一个垂直的功能片段,因此它们可以共享同一个数据库,但我想说只有一个组件有权修改它自己的数据。我总是会想到当你需要扩展时会发生什么。
这有道理吗?