0

我们正在为一个全新的domain model(和Bounded Context)“ Appointment”创建一个新的应用程序。我们选择为我们的新域结合CQSHexagonal Architecture使用端口和适配器)。

我们的包结构主要是这样的:

.appointments
  .application
    .command
    .representation
    - AppointmentScheduleApplicationService.java
    - AppointmentScheduleQueryService.java
  .domain.model
  .port.adapter
    .integration
    .persistence
    .web
    .service
      - AppointmentScheduleFacade.java

我的问题:

  1. 这个包结构是否适合我们想要实现的目标?
  2. 我们希望通过该AppointmentScheduleFacade接口查看与其他域之间的每一次通信。跨域通信以普通方法调用(没有 RPC 或 REST)的形式存在,因为它们不是分布式的。

    门面主要代表:

    • AppointmentScheduleApplicationService.java用于模型修改
    • AppointmentScheduleQueryService.java用于将数据传递到其他域。

这个设置好吗?或者其他域是否应该直接与Applicationand对应QueryService

4

1 回答 1

0

您的结构似乎很好,但当然这取决于您如何使用它。六边形架构不仅仅是文件夹结构的问题。

关于模块或上下文之间的通信,我建议您努力实现尽可能少的耦合:您可以使用发布域事件的消息总线来做到这一点,而其他域可以检索这些消息并做任何他们需要的事情。因此,从一个模块您不需要知道其他模块,您只需要知道总线并能够从该总线读取消息(通常以 json 格式序列化)。

模块发布和订阅事件:是依赖倒置原则,但在架构层面。

如果您发布一些代码示例,我可能会更明确。

祝你好运!

于 2019-11-18T22:57:00.523 回答