A Go alkalmazások sokféle forráskódfájlt kombinálhatnak, így a szilárd, hagyományos struktúra használata számos előnnyel jár.

A hatszögletű (vagy "portok és adapterek") architektúra egy népszerű szoftverarchitektúra minta, amelyet a Go-alkalmazások összeállításakor alkalmazhat. Használatával javíthatja alkalmazása méretezhetőségét, karbantarthatóságát és tesztelhetőségét.

Ez az architektúra segít elkülöníteni az üzleti logikát a külső függőségektől és infrastruktúrától, rugalmassá és könnyebben karbantarthatóvá téve az alkalmazást.

Mi a hatszögletű építészet?

A hatszögletű architektúra három fő rétegre osztja az alkalmazásokat:

  1. AAlkalmazási réteg az alkalmazás alapvető logikáját tartalmazza, függetlenül a harmadik féltől származó függőségektől. Az alkalmazási rétegnek tartalmaznia kell az üzleti logikát, a tartománymodelleket és az alkalmazásszolgáltatásokat.
  2. APortok és adapterek réteg tartalmazza a meglévő alkalmazásokkal kölcsönhatásba lépő adaptereket. A portok olyan interfészek, amelyek meghatározzák az alkalmazás műveleteit, míg az adapterek az interfészek megvalósításai. Az adapterek lehetnek adatbázisok, HTTP API-k, üzenetközvetítők vagy bármilyen más külső rendszer.
  3. Az infrastruktúra réteg az adapterek megvalósítását tartalmazza. Az infrastruktúra rétegnek tartalmaznia kell adatbázisokat, üzenetközvetítőket és egyéb külső rendszereket.

A hatszögletű architektúra használatának előnyei

A hatszögletű architektúra a következő előnyök miatt népszerű.

Projekt méretezhetőség és karbantarthatóság

Az alkalmazások felosztása moduláris és leválasztott kódbázist tesz lehetővé, amely megkönnyíti az alkalmazás méretezését és karbantartását.

Eltávolíthatja az adaptereket az alapvető logika befolyásolása nélkül, és módosíthatja az alaplogikát az adapterek befolyásolása nélkül. Ez azt jelenti, hogy egyszerűen kicserélheti az adaptereket anélkül, hogy átírná a teljes alkalmazást.

Tesztelhetőség és egyszerű integráció

A hatszögletű architektúra elősegíti a tesztelhetőséget, mivel egységteszteket írhat az alapvető logikához, hamis külső függőségek nélkül. Használhat tesztkettőket, például hamisítványokat vagy csonkokat, anélkül, hogy muszáj lenne adatbázist felállítani vagy üzenetközvetítő.

A hatszögletű architektúra megkönnyíti az alkalmazás más rendszerekkel való integrálását is. Mivel az adapterek elkülönülnek az alapvető logikától, újra felhasználhatja őket más alkalmazásokban vagy mikroszolgáltatásokhoz. Az alkalmazás portjainak API-jait más rendszerekben is felhasználhatja.

Rugalmasság és alkalmazkodóképesség a változó követelményekhez

A hatszögletű architektúra rugalmasságot és alkalmazkodóképességet biztosít a változó követelményekhez. Mivel az alaplogika független az adapterektől, egyszerűen módosíthatja vagy bővítheti az alkalmazás funkcionalitását anélkül, hogy ez befolyásolná az adaptereket.

Alkalmazását idővel fejlesztheti, ragaszkodva meghatározott külső rendszerekhez.

Menj és a hatszögletű építészet

A hatszögletű architektúra lényege az alkalmazás alapvető üzleti logikájának és az infrastruktúrának a szétválasztása, hogy kicserélheti a függőségeket anélkül, hogy ez befolyásolná az alkalmazás alapvető logikáját, így könnyebben karbantartható és tesztelhető Alkalmazás.

A tipikus hatszögletű Go alkalmazás négy fő könyvtárat használ: cmd, belső, pkg, és eladó.

A cmd könyvtár tartalmazza a projekt fő alkalmazásait. Az itt írt kód jellemzően a pkg és a belső könyvtárak fájljaiból hív meg függvényeket.

A belső könyvtárnak tartalmaznia kell egy privát alkalmazáskódot, amelyet nem szeretne a felhasználóknak importálni az alkalmazásukba. A Go fordító a belső elrendezési mintát kényszeríti ki, és tetszőleges számú belső könyvtárad lehet más könyvtárakban. Ön nem korlátozódik egy felső szintű belső könyvtárra.

A pkg könyvtárnak tartalmaznia kell azt a könyvtárkódot, amelyet a külső alkalmazásokkal importálni és használni kíván. Bár a pkg címtár bevett gyakorlat, nem általánosan elfogadott vagy kötelező.

A eladó könyvtárnak tartalmaznia kell az alkalmazásfüggőségeket (manuálisan vagy automatikusan kezelve). Használhatja a go mod eladó parancs létrehozásához a /vendor könyvtárat a Go által a szállítók számára biztosított funkciók kihasználásához.

A hatszögletű architektúra megvalósítása a Go-ban

A projekt fájlszerkezete fontos a hatszögletű architektúra bármilyen nyelven való megvalósítása során, beleértve a Go-t is.

Íme egy példa fájlszerkezet a hatszögletű architektúra Go-ban való megvalósításához:

.
├── cmd
│ └── http
│ └── main.go
├── belső
│ ├── adapterek
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── adatbázis
│ │ └── db_adapter.go
│ ├── kb
│ │ ├── domain
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
│ │ ├── portok
│ │ │ ├── bemenet
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── kimenet
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── használati esetek
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── db
│ ├── bemenet
│ │ ├── input1.go
│ │ └── input2.go
│ └── kimenet
│ ├── output1.go
│ └── output2.go
└── eladó
├── modul1
│ ├── file1.go
│ └── file2.go
└── modul2
├── file1.go
└── file2.go

A pkg könyvtár tartalmazza az alkalmazás bemeneti és kimeneti portjait ebben a példában. Ezekben a fájlokban interfészeket kell megadnia a bemeneti és kimeneti portokhoz.

A belső könyvtár tartalmazza az alkalmazási tartományt és a használati eseteket. Ezekben a fájlokban írja be az alkalmazás üzleti logikáját.

A adapterek könyvtár tartalmazza azt az infrastruktúra kódot, amely összeköti az alkalmazást az adatbázissal és az API-val.

A hatszögletű architektúra fájlszerkezet beállítása

A projekt hatszögletű architektúrájú fájlszerkezetének beállítása nehézkes lehet, de írhat egy bash szkriptet a címtár-létrehozási folyamat automatizálásához.

Futtassa ezt a parancsot a projekt munkakönyvtárában ide hozzon létre egy bash szkriptet, hatszögletű.sh, és olvasási, írási és végrehajtási engedélyeket adjon neki:

touch hexagonal.sh && chmod 777 hexagonal.sh

Írja be ezt a bash kódot hatszögletű.sh a fájlstruktúra létrehozásához az aktuális munkakönyvtárban:

#!/bin/bash

# legfelső szintű könyvtárak létrehozása
mkdir cmd belső pkg szállító

# cmd/http könyvtár létrehozása
mkdir cmd/http

# belső könyvtárak létrehozása
mkdir belső/adapterek belső/alkalmazás belső/alkalmazás/domain belső/alkalmazás/belső portok/alkalmazás/portok/bemenet belső/alkalmazás/portok/belső kimenet/app/használati esetek

# belső/adapter könyvtárak létrehozása
mkdir belső/adapterek/api belső/adapterek/adatbázis

# belső/app/port könyvtárak létrehozása
mkdir belső/app/ports/input interior/app/ports/output

# szállítói könyvtárak létrehozása
mkdir vendor/module1 vendor/module2

# nyomtatási sikerüzenet
visszhang"A címtárstruktúra sikeresen létrehozva."

Ezt a bash szkriptet a következő paranccsal futtathatja:

./hexagonal.sh

A bash program létrehozza a mappákat és almappákat, így folytathatja a fájlok létrehozását és az alkalmazás üzleti logikájának megírását.

A hatszögletű architektúra hasznos lehet összetett alkalmazások építéséhez

A hatszögletű architektúra megvalósítása időigényes lehet, de az előnyök hosszú távon meghaladják a költségeket. Az aggályok elkülönítésével és a kód modulárisabbá tételével egyszerűen karbantarthatja és tesztelheti alkalmazásait.

Számos más építészeti minta létezik, amelyek mindegyikének előnyei és hátrányai vannak a rugalmas, hatékony alkalmazások kialakításához. Ide tartozik a népszerű MVC (modell, view, controller) architektúra webes alkalmazások létrehozására.