关于 HexaGO (A simple ports & adapter architecture example)
HexaGO 是一个用 Go 编写的简易计算器项目,用于演示六边形(端口与适配器)架构,适合学习如何将应用逻辑与外部系统分离。
主要功能
- 01演示端口与适配器架构
- 02分离核心逻辑与适配器
- 03以端口组织接口
- 04包含计算器应用
适用场景
- 01学习 Go 中的六边形架构
- 02了解核心与适配器的边界
- 03将小型项目用作架构示例
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
HexaGO(一个简单的端口与适配器架构示例)
这是一个使用端口与适配器架构的简单计算器应用示例。
如何运行
- 克隆仓库
- 安装 air:
go install github.com/cosmtrek/air@latest - 安装 templ:
go install github.com/a-h/templ/cmd/templ@latest - 在项目根目录运行
air - 打开浏览器并访问
http://localhost:3000
灵感来源
本项目的灵感来自 Alistair Cockburn 和 Juan Manuel Garrido de Paz(RIP)所著的《Hexagonal Architecture》。
本项目的目的是展示如何在 Go 项目中实现端口与适配器架构的简单示例。
许可证
你可以随意使用本项目。它是免费的开源项目,不附带任何限制。
简介
什么是 hexago?
这是一个用 golang 实现的简易六边形架构(端口与适配器)。
什么是六边形架构?
六边形架构是一种软件设计模式,可将应用程序划分为不同的层。此模式也称为端口与适配器模式。
六边形架构的主要组成部分如下:
- 核心:这是应用程序的主要部分,包含业务逻辑和领域模型。
- 端口:这是核心用于与外部世界通信的接口。它们在核心中定义,并由适配器实现。
- 驱动器:这是端口的实现,负责与外部系统(数据库、API 等)交互。 -- 驱动适配器:这是驱动器的实现,负责在核心与外部系统之间转换数据。
- 适配器:这是端口的实现,负责在核心与外部系统之间转换数据。
六边形架构的主要优势是让应用程序更易于测试和维护。核心与外部系统解耦,因此可以单独测试。端口和适配器可以轻松替换为不同的实现,因此应用程序可以轻松适应新的需求。
如何使用 hexago?
我喜欢将内部层拆分为多个六边形。 每个六边形都位于自己的文件夹中,并具有如下文件夹结构:
<HexagonName>
├── core
│ ├── <HexagonName>.go
│ └── <HexagonName>_test.go
├── ports
│ ├── driven
│ │ ├── for<Verb><Action>.go // e.g forCreatingUser.go
│ │ └── for<Verb><Action>_test.go
│ └── driving
│ ├── for<Verb><Action>.go // e.g forCreatingUser.go
│ └── for<Verb><Action>_test.go
└── adapters
├── db.go
└── calculatorHTTP.go
core 文件夹包含六边形的业务逻辑和领域模型。
ports 文件夹包含核心用于与外部世界通信的接口。
adapters 文件夹包含端口的实现。
端口是一组接口,用于限制核心与外部系统之间的交互。
如何开始
- 克隆仓库
- 安装 air:
go install github.com/cosmtrek/air@latest - 安装 templ:
go install github.com/a-h/templ/cmd/templ@latest - 在项目根目录运行
air - 打开浏览器并访问
http://localhost:3000
Docker 化待办步骤
- 将
compose.yml中的镜像名称更改为你的镜像名称 - 将
nginx.conf中的域名更改为你的域名 - 将
.github/workflows/deploy.yml中的 Docker 镜像名称更改为相同的名称
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。