HexaGO(一个简单的端口和适配器架构示例)
这是一个使用端口和适配器架构的计算器应用程序的简单示例。
如何跑步
- 克隆存储库
- 安装空气
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)的《六角形建筑》一书。
本项目的目的是展示一个如何在Go项目中实现端口和适配器架构的简单示例。
许可证
你想做什么就做什么。它是免费和开源的。没有附加条件。
引言
什么是hexago?
这是golang中六边形架构(端口和适配器)的一个小实现。
什么是六边形建筑?
六边形架构是一种将应用程序分为不同层的软件设计模式。这种模式也称为端口和适配器模式。
六边形建筑的主要部分是:
- 核心:这是应用程序的主要部分。它包含业务逻辑和域模型。
- 港口:这些是核心用来与外界通信的接口。它们在核心中定义,并在适配器中实现。
- 驾驶员:这些是端口的实现。它们负责与外部系统(数据库、API等)进行交互。 -- 驱动适配器:这些是驱动程序的实现。他们负责在核心系统和外部系统之间转换数据。
- 适配器:这些是端口的实现。他们负责在核心系统和外部系统之间转换数据。
六边形架构的主要优点是它使应用程序更具可测试性和可维护性。核心与外部系统解耦,因此可以单独测试。端口和适配器可以很容易地用不同的实现方式替换,因此应用程序可以很容易适应新的要求。
如何使用hexago?
我喜欢把内层分成多个六边形。 每个六边形都位于自己的文件夹中,文件夹结构如下:
├── core
│ ├── .go
│ └── _test.go
├── ports
│ ├── driven
│ │ ├── for.go // e.g forCreatingUser.go
│ │ └── for_test.go
│ └── driving
│ ├── for.go // e.g forCreatingUser.go
│ └── for_test.go
└── adapters
├── db.go
└── calculatorHTTP.go核心文件夹包含六边形的业务逻辑和域模型。
ports文件夹包含核心用于与外界通信的接口。
adapters文件夹包含端口的实现。
*端口是限制核心和外部系统之间交互的接口集合。*
如何开始
- 克隆存储库
- 安装空气
go install github.com/cosmtrek/air@latest - 安装templ
go install github.com/a-h/templ/cmd/templ@latest - 跑
air在项目的根源 - 打开浏览器并转到
http://localhost:3000
码头化Todo步骤
- \[\]更改
compose.yml图像名称到您的图像名称 - \[\]更改
nginx.conf域名到您的域名 - \[\]更改
.github/workflows/deploy.ymldocker镜像名称改为该名称
