在“实现域驱动设计”中,Vernon提供了将有界上下文与基于消息传递或REST的解决方案集成的详细示例,它还提到了数据库集成,但我知道它不是一个非常干净的解决方案来共享数据库或者至少BC之间的数据库表。
但是,如果我要集成的2个BC在本地托管在同一台服务器上,那么使用消息传递/休息/ rpc解决方案真的是个好主意吗? (这似乎更适合远程托管BC给我)
否则,除了数据库集成之外,还有哪些替代方案?在同一个过程中托管两个BC并直接调用它(仍然使用适配器和翻译器进行清洁分离)?
由于
答案 0 :(得分:2)
您可以考虑在同一台服务器上使用类似0MQ的进程进行进程间通信。我过去也只是按照你的建议在同一个进程中托管了一些东西,并且只使用了接口/内存中的消息来分离出上下文。
最终所有的事情都是权衡,所以你只需要决定你愿意接受什么样的隔离。最简单的解决方案是通过文件夹和接口将解决方案内部分开,另一端是完全独立的服务器。
答案 1 :(得分:1)
我不认为这个位置应该发挥作用w.r.t. BC之间的整合。
还有其他因素需要考虑,例如保证向收件人发送邮件以确保进行处理。无论两个BC是否托管在同一台服务器上,都应该要求这样做。
忽略位置的另一个原因是,当您需要扩展时,您的架构应该能够从一开始就处理它。
正如tomliversidge所提到的那样,可以使用一些部署机制(如非持久消息传递)来加快速度,但肯定会有一个权衡因素,这必须是一个有意识的决定。