关于Hexagonal/端口适配器架构的理解确认及疑问咨询
Hexagonal架构(端口适配器架构)相关问题解答
1. 你的架构理解是否正确?
你的核心理解是准确的,补充细节能让认知更完整:
- 应用层:确实是承载核心业务逻辑的核心层,不依赖任何外部实现,仅通过端口与外部交互。
- 端口层:需明确分为两类:
- 驱动端口(Driver Ports):应用层对外暴露的接口,供驱动侧适配器调用以触发业务逻辑。
- 被驱动端口(Driven Ports):应用层定义的、依赖外部实现的接口(如数据存储、第三方服务调用接口),由被驱动侧适配器负责实现。
- 适配器层:你的分类完全正确,驱动侧适配器负责将外部输入(REST、gRPC、CLI等)转换为应用层可识别的调用;被驱动侧适配器负责实现被驱动端口,将应用层的调用转换为外部系统能处理的请求(如数据库操作、跨服务调用)。
2. 输入验证与授权的分层归属
输入验证
- 基础格式验证:比如字段非空校验、邮箱格式校验、参数类型校验等,归属于驱动侧适配器。这类验证用于过滤不符合格式规范的请求,避免无效请求进入应用层。
- 业务规则验证:比如用户年龄需满18岁、订单金额不能超过用户可用额度等,归属于应用层。这类验证是核心业务逻辑的一部分,必须由应用层把控,确保业务规则的一致性。
授权
- 身份认证:比如Token合法性校验、账号密码验证等,归属于驱动侧适配器。这类操作是对请求发起者身份的初步验证,用于过滤未认证的请求。
- 业务级授权:比如判断用户是否拥有操作该订单的权限、是否属于特定角色等,归属于应用层。这类授权基于业务规则,需要结合业务逻辑判断,必须由应用层实现以保证业务规则的统一。
内容的提问来源于stack exchange,提问作者Ian
相关产品推荐
相关产品推荐

