Приложенията Go могат да комбинират много различни типове файлове с изходен код, така че използването на солидна, конвенционална структура има много предимства.

Шестоъгълната (или „портове и адаптери“) архитектура е популярен модел на софтуерна архитектура, който можете да приложите, докато създавате своите Go приложения. Използвайки го, можете да подобрите скалируемостта, поддръжката и възможността за тестване на вашето приложение.

Тази архитектура помага за отделянето на бизнес логиката от външните зависимости и инфраструктура, което прави вашето приложение гъвкаво и по-лесно за поддръжка.

Какво представлява шестоъгълната архитектура?

Шестоъгълната архитектура разделя приложенията на три основни слоя:

  1. TheПриложен слой съдържа основната логика на приложението, независимо от зависимостите на трети страни. Приложният слой трябва да съдържа вашата бизнес логика, модели на домейни и услуги за приложения.
  2. TheСлой портове и адаптери съдържа адаптерите, взаимодействащи със съществуващите приложения. Портовете са интерфейси, които определят операциите за вашето приложение, докато адаптерите са реализации на интерфейсите. Адаптерите могат да бъдат бази данни, HTTP API, брокери на съобщения или всяка друга външна система.
    instagram viewer
  3. Слоят на инфраструктурата помещава изпълнението на адаптерите. Инфраструктурният слой трябва да включва бази данни, брокери на съобщения и други външни системи.

Предимства от използването на шестоъгълната архитектура

Шестоъгълната архитектура е популярна със следните предимства, които предлага.

Мащабируемост на проекта и поддръжка

Разделянето на вашите приложения позволява модулна и отделена кодова база, която улеснява мащабирането и поддържането на вашето приложение.

Можете да премахвате адаптери, без да засягате логиката на ядрото, и да променяте логиката на ядрото, без да засягате адаптерите. Това означава, че можете лесно да замените адаптерите, без да пренаписвате цялото си приложение.

Тестваемост и лесна интеграция

Шестоъгълната архитектура насърчава възможността за тестване, тъй като можете да пишете модулни тестове за основна логика без фалшиви външни зависимости. Можете да използвате тестови двойници, като фалшификати или мъничета, без да е необходимо създайте база данни или брокер на съобщения.

Шестоъгълната архитектура също така прави лесно интегрирането на вашето приложение с други системи. Тъй като адаптерите са отделни от основната логика, можете да ги използвате повторно в други приложения или за микроуслуги. Можете също така да изложите API на порта на вашето приложение за използване в други системи.

Гъвкавост и адаптивност към променящите се изисквания

Шестоъгълната архитектура осигурява гъвкавост и адаптивност към променящите се изисквания. Тъй като основната логика е независима от адаптерите, можете лесно да промените или разширите функционалността на приложението, без да засягате адаптерите.

Можете да развиете приложението си с течение на времето, като се придържате към конкретни външни системи.

Отидете и шестоъгълната архитектура

В основата си шестоъгълната архитектура е свързана с разделянето на основната бизнес логика на приложението от инфраструктурата, така че можете да разменяте зависимостите, без да засягате основната логика на приложението, което улеснява поддържането и тестването на приложение.

Типичното шестоъгълно приложение Go използва четири основни директории: cmd, вътрешни, опаковка, и продавач.

The cmd директорията съдържа основните приложения за проекта. Кодът, който пишете тук, обикновено ще извиква функции от файлове в pkg и вътрешни директории.

The вътрешни директорията трябва да съдържа частен код на приложение, който не искате потребителите да импортират в своето приложение. Компилаторът Go налага вътрешния модел на оформление и можете да имате колкото искате вътрешни директории в други директории. Не сте ограничени до вътрешна директория от най-високо ниво.

The опаковка директорията трябва да съдържа кода на библиотеката, който искате външните приложения да импортират и използват. Въпреки че с помощта на опаковка директорията е обичайна практика, не е универсално приета или наложена.

The продавач директорията трябва да съдържа зависимости на приложението (ръчно или автоматично управлявани). Можете да използвате go mod vendor команда за създаване на a /vendor директория за използване на функционалностите, които Go предоставя на доставчиците.

Внедряване на шестоъгълната архитектура в Go

Файловата структура на вашия проект е важна, когато внедрявате шестоъгълна архитектура на всеки език, включително Go.

Ето примерна файлова структура за внедряване на шестоъгълната архитектура в Go:

.
├── cmd
│ └── http
│ └── main.go
├── вътрешен
│ ├── адаптери
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── база данни
│ │ └── db_adapter.go
│ ├── ап
│ │ ├── домейн
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
│ │ ├── портове
│ │ │ ├── вход
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── изход
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── случаи на употреба
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── опаковка
│ ├── вход
│ │ ├── input1.go
│ │ └── input2.go
│ └── изход
│ ├── output1.go
│ └── output2.go
└── продавач
├── модул1
│ ├── file1.go
│ └── file2.go
└── модул2
├── file1.go
└── file2.go

The опаковка директорията съдържа входните и изходните портове на вашето приложение в този пример. Ще дефинирате интерфейси за входни и изходни портове в тези файлове.

The вътрешни директорията съдържа домейна на приложението и случаите на използване. Ще напишете бизнес логиката на вашето приложение в тези файлове.

The адаптери съдържа инфраструктурния код, който свързва вашето приложение с базата данни и API.

Настройка на файловата структура с шестоъгълна архитектура

Настройването на файловата структура на вашия проект с шестоъгълна архитектура може да бъде тромаво, но можете да напишете bash скрипт, за да автоматизирате процеса на създаване на директория.

Изпълнете тази команда в работната директория на вашия проект, за да създайте bash скрипт, шестоъгълни.ши му дайте разрешения за четене, писане и изпълнение:

докосване hexagonal.sh && chmod 777 hexagonal.sh

Въведете този bash код шестоъгълни.ш за да създадете файловата структура във вашата текуща работна директория:

#!/bin/bash

# създаване на директории от най-високо ниво
mkdir cmd вътрешен доставчик на pkg

# създаване на cmd/http директория
mkdir cmd/http

# създаване на вътрешни директории
mkdir вътрешни/адаптери вътрешни/приложение вътрешно/приложение/домейн вътрешно/приложение/портове вътрешни/приложение/портове/вход вътрешни/приложение/портове/изход вътрешни/приложение/употреби

# създаване на вътрешни/адаптери директории
mkdir вътрешни/адаптери/api вътрешни/адаптери/база данни

# създайте директории internal/app/ports
mkdir вътрешен/приложение/портове/вход вътрешен/приложение/портове/изход

# създаване на директории на доставчици
mkdir доставчик/модул1 доставчик/модул2

# съобщение за успешно отпечатване
ехо„Структурата на директорията е създадена успешно.“

Можете да стартирате този bash скрипт със следната команда:

./hexagonal.sh

Програмата bash създава папките и подпапките, така че можете да продължите да създавате файлове и да пишете бизнес логиката за вашето приложение.

Шестоъгълната архитектура е удобна за изграждане на сложни приложения

Внедряването на шестоъгълната архитектура може да отнеме много време, но ползите надхвърлят разходите в дългосрочен план. Като разделите проблемите и направите своя код по-модулен, можете лесно да поддържате и тествате вашите приложения.

Има много други архитектурни модели, всеки с плюсове и минуси за изграждане на гъвкави, производителни приложения. Те включват популярната MVC (модел, изглед, контролер) архитектура за създаване на уеб приложения.