Aplikacije Go lahko kombinirajo veliko različnih vrst datotek izvorne kode, zato ima uporaba trdne, običajne strukture veliko prednosti.

Heksagonalna (ali "vrata in adapterji") arhitektura je priljubljen vzorec programske arhitekture, ki ga lahko uporabite, ko gradite svoje aplikacije Go. Z njegovo uporabo lahko izboljšate razširljivost, vzdržljivost in možnost testiranja vaše aplikacije.

Ta arhitektura pomaga ločiti poslovno logiko od zunanjih odvisnosti in infrastrukture, zaradi česar je vaša aplikacija prilagodljiva in lažja za vzdrževanje.

Kaj je heksagonalna arhitektura?

Heksagonalna arhitektura deli aplikacije na tri glavne plasti:

  1. TheAplikacijska plast vsebuje osnovno logiko aplikacije, neodvisno od kakršnih koli odvisnosti tretjih oseb. Aplikacijska plast mora vsebovati vašo poslovno logiko, domenske modele in aplikacijske storitve.
  2. TheSloj vrat in adapterjev vsebuje adapterje, ki komunicirajo z obstoječimi aplikacijami. Vrata so vmesniki, ki definirajo operacije za vašo aplikacijo, medtem ko so adapterji izvedbe vmesnikov. Adapterji so lahko baze podatkov, HTTP API-ji, posredniki sporočil ali kateri koli drug zunanji sistem.
  3. Infrastrukturni sloj hiše za izvedbo adapterjev. Infrastrukturna plast mora vključevati baze podatkov, posrednike sporočil in druge zunanje sisteme.

Prednosti uporabe heksagonalne arhitekture

Heksagonalna arhitektura je priljubljena zaradi naslednjih prednosti, ki jih ponuja.

Razširljivost in vzdržljivost projekta

Razdelitev vaših aplikacij omogoča modularno in ločeno kodno osnovo, ki olajša prilagajanje in vzdrževanje vaše aplikacije.

Vmesnike lahko odstranite, ne da bi to vplivalo na logiko jedra, in spremenite logiko jedra, ne da bi to vplivalo na vmesnike. To pomeni, da lahko preprosto zamenjate adapterje, ne da bi morali ponovno napisati celotno aplikacijo.

Preizkušljivost in enostavnost integracije

Šestkotna arhitektura spodbuja preizkušljivost, saj lahko pišete teste enot za osnovno logiko brez lažnih zunanjih odvisnosti. Uporabite lahko testne dvojnike, kot so ponaredki ali škrbine, ne da bi vam bilo treba vzpostavi bazo podatkov ali posrednik sporočil.

Heksagonalna arhitektura prav tako olajša integracijo vaše aplikacije z drugimi sistemi. Ker so adapterji ločeni od jedrne logike, jih lahko znova uporabite v drugih aplikacijah ali za mikrostoritve. API-je vrat svoje aplikacije lahko izpostavite tudi za uporabo v drugih sistemih.

Fleksibilnost in prilagodljivost spreminjajočim se zahtevam

Heksagonalna arhitektura zagotavlja fleksibilnost in prilagodljivost spreminjajočim se zahtevam. Ker je osnovna logika neodvisna od adapterjev, lahko preprosto spremenite ali razširite funkcionalnost aplikacije, ne da bi to vplivalo na adapterje.

Svojo aplikacijo lahko sčasoma razvijate tako, da se držite določenih zunanjih sistemov.

Go in šesterokotna arhitektura

V jedru šesterokotne arhitekture gre za ločevanje osnovne poslovne logike aplikacije od infrastrukture, tako da lahko zamenjate odvisnosti, ne da bi to vplivalo na osnovno logiko aplikacije, kar olajša vzdrževanje in testiranje aplikacija.

Tipična šestkotna aplikacija Go uporablja štiri glavne imenike: cmd, notranji, pakiranje, in prodajalec.

The cmd imenik vsebuje glavne aplikacije za projekt. Koda, ki jo napišete tukaj, običajno kliče funkcije iz datotek v pkg in notranjih imenikih.

The notranji Imenik mora vsebovati kodo zasebne aplikacije, za katero ne želite, da jo uporabniki uvozijo v svojo aplikacijo. Prevajalnik Go uveljavlja notranji vzorec postavitve in v drugih imenikih imate lahko poljubno število notranjih imenikov. Niste omejeni na notranji imenik najvišje ravni.

The pakiranje Imenik mora vsebovati kodo knjižnice, za katero želite, da uvozijo in uporabljajo zunanje aplikacije. Čeprav z uporabo pakiranje imenik je običajna praksa, ni splošno sprejet ali uveljavljen.

The prodajalec Imenik mora vsebovati odvisnosti aplikacij (ročno ali samodejno upravljane). Lahko uporabite go mod prodajalec ukaz za ustvarjanje a /vendor imenik za izkoriščanje funkcij, ki jih Go ponuja prodajalcem.

Implementacija heksagonalne arhitekture v Go

Datotečna struktura vašega projekta je pomembna pri izvajanju heksagonalne arhitekture v katerem koli jeziku, vključno z Go.

Tukaj je primer strukture datoteke za implementacijo heksagonalne arhitekture v Go:

.
├── cmd
│ └── http
│ └── main.go
├── notranji
│ ├── adapterji
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── zbirka podatkov
│ │ └── db_adapter.go
│ ├── pril
│ │ ├── domena
│ │ │ ├── entiteta1.go
│ │ │ └── entiteta2.go
│ │ ├── vrata
│ │ │ ├── vnos
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── izhod
│ │ │ ├── izhodna_vrata1.go
│ │ │ └── output_port2.go
│ │ └── primeri uporabe
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── pak
│ ├── vnos
│ │ ├── input1.go
│ │ └── input2.go
│ └── izhod
│ ├── izhod1.go
│ └── izhod2.go
└── prodajalec
├── modul1
│ ├── file1.go
│ └── file2.go
└── modul2
├── file1.go
└── file2.go

The pakiranje imenik vsebuje vhodna in izhodna vrata vaše aplikacije v tem primeru. V teh datotekah boste definirali vmesnike za vhodna in izhodna vrata.

The notranji imenik vsebuje domeno aplikacije in primere uporabe. V te datoteke boste zapisali poslovno logiko svoje aplikacije.

The adapterji imenik vsebuje kodo infrastrukture, ki povezuje vašo aplikacijo z bazo podatkov in API-jem.

Nastavitev datotečne strukture heksagonalne arhitekture

Nastavitev strukture datotek s šestkotno arhitekturo vašega projekta je lahko okorna, vendar lahko napišete skript bash za avtomatizacijo postopka ustvarjanja imenika.

Zaženite ta ukaz v delovnem imeniku vašega projekta za ustvarite bash skript, šesterokotno.šin mu dodelite dovoljenja za branje, pisanje in izvajanje:

dotik heksagonalno.sh && chmod 777 šesterokotno.sh

Vnesite to bash kodo šesterokotno.š da ustvarite datotečno strukturo v vašem trenutnem delovnem imeniku:

#!/bin/bash

# ustvarite imenike najvišje ravni
mkdir cmd notranji prodajalec pkg

# ustvarite imenik cmd/http
mkdir cmd/http

# ustvarite notranje imenike
mkdir notranji/adapters notranji/aplikacija notranji/aplikacija/domena notranji/aplikacija/vrata notranja/aplikacija/vrata/vhodni notranji/aplikacija/vrata/izhod notranji/aplikacija/uporabe

# ustvarite notranje imenike/adapters
mkdir notranji/adapters/api notranji/adapters/baza podatkov

# ustvarite imenike internal/app/ports
mkdir notranji/aplikacija/vrata/vhodni notranji/aplikacija/vrata/izhod

# ustvarite imenike prodajalcev
mkdir prodajalec/modul1 prodajalec/modul2

# sporočilo o uspešnem tiskanju
odmev"Struktura imenika je bila uspešno ustvarjena."

Ta skript bash lahko zaženete z naslednjim ukazom:

./hexagonal.sh

Program bash ustvari mape in podmape, tako da lahko nadaljujete z ustvarjanjem datotek in pisanjem poslovne logike za svojo aplikacijo.

Heksagonalna arhitektura je priročna za gradnjo kompleksnih aplikacij

Implementacija heksagonalne arhitekture je lahko dolgotrajna, vendar koristi dolgoročno odtehtajo stroške. Če ločite pomisleke in naredite svojo kodo bolj modularno, lahko preprosto vzdržujete in testirate svoje aplikacije.

Obstaja veliko drugih arhitekturnih vzorcev, od katerih ima vsak prednosti in slabosti za gradnjo prilagodljivih in zmogljivih aplikacij. Ti vključujejo priljubljeno arhitekturo MVC (model, pogled, krmilnik) za ustvarjanje spletnih aplikacij.