深度解读六边形架构: Ports 与 Adapters 实战
深度解读六边形架构:Ports 与 Adapters 实战 你是否遇到过这样的困境:业务逻辑被分散在 Controller、Service、Repository 各个层级中?换个数据库、换个框架,整个系统都要伤筋动骨? 六边形架构(Hexagonal Architecture) 就是来解决这些问题的。 什么是六边形架构? 六边形架构由 Alistair Cockburn 提出,也叫端口与适配...

Source: DEV Community
深度解读六边形架构:Ports 与 Adapters 实战 你是否遇到过这样的困境:业务逻辑被分散在 Controller、Service、Repository 各个层级中?换个数据库、换个框架,整个系统都要伤筋动骨? 六边形架构(Hexagonal Architecture) 就是来解决这些问题的。 什么是六边形架构? 六边形架构由 Alistair Cockburn 提出,也叫端口与适配器架构(Ports and Adapters)。它的核心思想是: 将业务逻辑放在系统核心,通过端口与外部世界交互,适配器负责对接各种技术。 核心概念 1. 核心领域(Domain/Core) 这是系统的心脏,只包含业务逻辑,不依赖任何外部框架。 # 领域模型示例 class Order: def __init__(self, order_id, items, status="pending"): self.order_id = order_id self.items = items self.status = status def total(self): return sum(item.price * item.quantity for item in self.items) def can_cancel(self): return self.status in ["pending", "confirmed"] 2. 端口(Ports) 端口是核心领域与外部交互的接口,分为: 输入端口(Driving Ports):外部驱动系统操作的接口,如 API、服务接口 输出端口(Driven Ports):核心向外部请求帮助的接口,如 Repository、消息发送 # 输出端口示例 - 定义仓储接口 class OrderRepository(Protocol): def save(self, order: Order) -> None: ... def find_by_id(self, order_id: str) -> Order | None: ... 3. 适配器(Adapters) 适配器是端口的具体实现,连接外部技术: 主适配器(Driving Adapters):HTTP 控制器、CLI、消息消费者 从适配器(Driven Adapters):数据库实现、第