我们正在为全新domain model
(和Bounded Context
)'Appointment
'创建新的应用程序。我们选择将CQS
与Hexagonal Architecture
(使用端口和适配器)合并到我们的新域中。
我们的包结构主要如下所示:
.appointments
.application
.command
.representation
- AppointmentScheduleApplicationService.java
- AppointmentScheduleQueryService.java
.domain.model
.port.adapter
.integration
.persistence
.web
.service
- AppointmentScheduleFacade.java
我的问题:
我们希望通过以下方式查看与其他域之间的每次通信
AppointmentScheduleFacade
界面。跨域
通信作为普通方法调用(无RPC或REST)
因为他们没有分发。
立面主要代表:
AppointmentScheduleApplicationService.java
进行模型修改AppointmentScheduleQueryService.java
用于将数据传递到其他域。这个设置好吗?或者其他域名是否应与Application
和QueryService
直接对应?
答案 0 :(得分:0)
您的结构似乎很好,但是当然取决于您的使用方式。六角形结构不仅仅是文件夹结构的问题。
关于模块或上下文之间的通信,我建议您努力实现尽可能少的耦合:您可以使用消息总线在发布域事件的情况下做到这一点,而其他域可以检索这些消息并执行其所需的任何操作。因此,从一个模块中您不需要了解其他模块,只需知道总线并能够从该总线中读取消息(通常以json格式序列化)。
模块发布和订阅事件:是依赖关系反转原理,但在体系结构级别。
如果您发布一些代码示例,我可能会更加明确。
祝你好运!