event-handling - 到底应该在哪里实现端口?

标签 event-handling domain-driven-design hexagonal-architecture

在使用六角架构的 DDD 实现中,应用程序可能具有端口(接口(interface))和适配器(客户端)。在我当前的项目中,我正在实现基于事件驱动的微服务。我有一个域应用程序服务层、基础设施层和适配器层(对于命令监听器)。 我在谷歌上搜索了许多包含适配器和端口的实现和基础设施层。 现在基础设施层将调用应用程序服务层,根据我的理解,这是错误的。

这是正确的实现吗?在哪里添加端口/命令监听器。

最佳答案

我在 DDD 层和六边形架构之间进行了以下匹配:

  • 驱动程序端口是 DDD 应用程序服务接口(interface),它们是六边形的左边缘。

  • 六边形内部分为 DDD 应用服务实现和 DDD 域模型。

  • 驱动端口(例如存储库接口(interface)或由基础设施实现的服务接口(interface))是六边形的右边缘。

  • 六边形内部实现驱动端口并使用从动端口。

  • 驱动程序适配器(例如,REST API Controller 或 Web 应用程序)使用/调用驱动程序端口。驱动适配器是 DDD 的表示层。

  • 驱动适配器实现驱动端口。驱动适配器是 DDD 的基础设施层。

如果你想看一下,这是我写的一篇解释六边形架构的文章:

https://softwarecampament.wordpress.com/portsadapters

希望有帮助。

关于event-handling - 到底应该在哪里实现端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54606481/

相关文章:

architecture - 领域驱动设计中基础设施和应用程序代码的意义

architecture - 六边形架构 : How to implement driver ports

node.js - 无法处理model.save错误并返回到FE

java - 使用 EPL 跟踪事件序列

php - ddd - 与远程 API 的同步应该去哪里?

php - 六边形架构/干净代码 : Problems implementing adaptor pattern

architecture - 六边形架构 - 一个简单的用例

c# - 如何通过Codedom实现 "Handles"

javascript - 如何使用 JavaScript 列出 DOM 节点的所有已注册事件?

domain-driven-design - 如何建模跨两个聚合根的多对一排序顺序