HexaGO端口适配器架构示例

HexaGO是一个使用端口适配器架构的简单计算器应用示例,展示了如何在Go项目中实现六边形架构。

  • by edlingao
  • CSS
  • 本地部署
  • 更新于
在 GitHub 查看 edlingao/example-mcp-server-with-go

使用说明

HexaGO(一个简单的端口和适配器架构示例)

这是一个使用端口和适配器架构的计算器应用程序的简单示例。

如何跑步

  1. 克隆存储库
  2. 安装空气 go install github.com/cosmtrek/air@latest
  3. 安装templ go install github.com/a-h/templ/cmd/templ@latest
  4. 跑 air 在项目的根源
  5. 打开浏览器并转到 http://localhost:3000

灵感

这个项目的灵感来自Alistair Cockburn和Juan Manuel Garrido de Paz(RIP)的《六角形建筑》一书。

本项目的目的是展示一个如何在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

核心文件夹包含六边形的业务逻辑和域模型。

ports文件夹包含核心用于与外界通信的接口。

adapters文件夹包含端口的实现。

端口是限制核心和外部系统之间交互的接口集合。

如何开始

  1. 克隆存储库
  2. 安装空气 go install github.com/cosmtrek/air@latest
  3. 安装templ go install github.com/a-h/templ/cmd/templ@latest
  4. 跑 air 在项目的根源
  5. 打开浏览器并转到 http://localhost:3000

码头化Todo步骤

  1. []更改 compose.yml 图像名称到您的图像名称
  2. []更改 nginx.conf 域名到您的域名
  3. []更改 .github/workflows/deploy.yml docker镜像名称改为该名称