Go rakendused võivad kombineerida mitut erinevat tüüpi lähtekoodifaile, seega on kindla ja tavapärase struktuuri kasutamisel palju eeliseid.

Kuusnurkne arhitektuur (või "pordid ja adapterid") on populaarne tarkvaraarhitektuuri muster, mida saate Go rakenduste loomisel rakendada. Seda kasutades saate parandada oma rakenduse mastaapsust, hooldatavust ja testitavust.

See arhitektuur aitab eraldada äriloogika välistest sõltuvustest ja infrastruktuurist, muutes teie rakenduse paindlikuks ja hõlpsamini hooldatavaks.

Mis on kuusnurkne arhitektuur?

Kuusnurkne arhitektuur jagab rakendused kolmeks põhikihiks:

  1. TheRakenduskiht sisaldab rakenduse põhiloogikat, mis ei sõltu mis tahes kolmanda osapoole sõltuvustest. Rakenduskiht peaks sisaldama teie äriloogikat, domeenimudeleid ja rakendusteenuseid.
  2. ThePortide ja adapterite kiht sisaldab adaptereid, mis suhtlevad olemasolevate rakendustega. Portid on liidesed, mis määravad teie rakenduse toimingud, samas kui adapterid on liideste teostused. Adapterid võivad olla andmebaasid, HTTP API-d, sõnumimaaklerid või mis tahes muu välissüsteem.
  3. instagram viewer
  4. Infrastruktuuri kiht sisaldab adapterite rakendamist. Infrastruktuurikiht peaks sisaldama andmebaase, sõnumivahendajaid ja muid väliseid süsteeme.

Kuusnurkse arhitektuuri kasutamise eelised

Kuusnurkne arhitektuur on populaarne järgmiste eeliste poolest.

Projekti skaleeritavus ja hooldatavus

Teie rakenduste jaotus võimaldab modulaarset ja lahtisidestatud koodibaasi, mis muudab rakenduse skaleerimise ja hooldamise lihtsamaks.

Saate eemaldada adapterid ilma põhiloogikat mõjutamata ja muuta põhiloogikat ilma adaptereid mõjutamata. See tähendab, et saate adaptereid hõlpsalt asendada ilma kogu rakendust ümber kirjutamata.

Testitatavus ja integreerimise lihtsus

Kuusnurkne arhitektuur soodustab testitavust, kuna saate kirjutada põhiloogika ühikuteste ilma väliste sõltuvusteta. Saate ilma vajaduseta kasutada testpabereid, näiteks võltsinguid või tüngasid luua andmebaas või sõnumite vahendaja.

Kuusnurkne arhitektuur muudab teie rakenduse integreerimise teiste süsteemidega lihtsaks. Kuna adapterid on põhiloogikast eraldiseisvad, saate neid teistes rakendustes või mikroteenustes uuesti kasutada. Samuti saate avaldada oma rakenduse pordi API-d kasutamiseks teistes süsteemides.

Paindlikkus ja kohanemisvõime muutuvate nõuetega

Kuusnurkne arhitektuur pakub paindlikkust ja kohanemisvõimet muutuvate nõuetega. Kuna põhiloogika on adapteritest sõltumatu, saate rakenduse funktsioone hõlpsasti muuta või laiendada, ilma adaptereid mõjutamata.

Saate oma rakendust aja jooksul arendada, järgides konkreetseid väliseid süsteeme.

Mine ja kuusnurkne arhitektuur

Kuusnurkse arhitektuuri keskmes on rakenduse põhilise äriloogika eraldamine infrastruktuurist, nii et saate sõltuvusi vahetada, ilma et see mõjutaks rakenduse põhiloogikat, muutes rakenduse hooldamise ja testimise lihtsamaks. rakendus.

Tüüpiline kuusnurkne Go rakendus kasutab nelja peamist kataloogi: cmd, sisemine, pkgja müüja.

The cmd kataloog sisaldab projekti peamisi rakendusi. Kood, mille siia kirjutate, kutsub tavaliselt funktsioone pkg ja sisemiste kataloogide failidest.

The sisemine kataloog peaks sisaldama privaatset rakenduse koodi, mida te ei soovi, et kasutajad oma rakendusse impordiksid. Go kompilaator jõustab sisemise paigutusmustri ja teil võib teistes kataloogides olla nii palju sisemisi katalooge, kui soovite. Te ei piirdu ainult tipptasemel sisemise kataloogiga.

The pkg kataloog peaks sisaldama teegi koodi, mida soovite välisrakendustel importida ja kasutada. Kuigi kasutades pkg kataloog on tavaline praktika, see pole üldiselt aktsepteeritud ega jõustatud.

The müüja kataloog peaks sisaldama rakenduste sõltuvusi (käsitsi või automaatselt hallatav). Võite kasutada go mod müüja käsk luua a /vendor kataloog, et võimendada funktsioone, mida Go pakub hankijatele.

Kuusnurkse arhitektuuri rakendamine Go-s

Teie projekti failistruktuur on oluline kuusnurkse arhitektuuri rakendamisel mis tahes keeles, sealhulgas Go.

Siin on failistruktuuri näide kuusnurkse arhitektuuri rakendamiseks Go-s:

.
├── cmd
│ └── http
│ └── main.go
├── sisemine
│ ├── adapterid
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── andmebaas
│ │ └── db_adapter.go
│ ├── rakendus
│ │ ├── domeen
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
│ │ ├── pordid
│ │ │ ├── sisend
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── väljund
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── kasutusjuhtumeid
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── tk
│ ├── sisend
│ │ ├── input1.go
│ │ └── input2.go
│ └── väljund
│ ├── output1.go
│ └── output2.go
└── müüja
├── moodul1
│ ├── file1.go
│ └── file2.go
└── moodul2
├── file1.go
└── file2.go

The pkg kataloog sisaldab selles näites teie rakenduse sisend- ja väljundporte. Nendes failides saate määratleda sisend- ja väljundportide liidesed.

The sisemine kataloog sisaldab rakenduse domeeni ja kasutusjuhtumeid. Nendesse failidesse kirjutate oma rakenduse äriloogika.

The adapterid kataloog sisaldab infrastruktuuri koodi, mis ühendab teie rakenduse andmebaasi ja API-ga.

Kuusnurkse arhitektuuri failistruktuuri seadistamine

Projekti kuusnurkse arhitektuuri failistruktuuri seadistamine võib olla tülikas, kuid kataloogi loomise protsessi automatiseerimiseks saate kirjutada bash-skripti.

Käivitage see käsk oma projekti töökataloogis aadressile luua bash-skript, kuusnurkne.shja andke sellele lugemis-, kirjutamis- ja täitmisõigused:

touch hexagonal.sh && chmod 777 hexagonal.sh

Sisestage see bash-kood kuusnurkne.sh failistruktuuri loomiseks praeguses töökataloogis:

#!/bin/bash

# looge tipptasemel katalooge
mkdir cmd sisemine pkg tarnija

# loo cmd/http kataloog
mkdir cmd/http

# looge sisemised kataloogid
mkdir sisemine/adapterid sisemine/rakenduse sisemine/rakendus/domeeni sisemine/rakendus/sisemised pordid/rakendus/pordid/sisend/rakendus/pordid/sisemine väljund/rakendus/kasutusjuhtumid

# looge sisemised/adapterite kataloogid
mkdir sisemine/adapterid/api sisemine/adapterid/andmebaas

# looge sisemised / rakenduste / portide kataloogid
mkdir sisemine/rakendus/pordid/sisend/rakendus/pordid/väljund

# looge hankijate kataloogid
mkdir tarnija/moodul1 hankija/moodul2

# printige eduteade
kaja"Kataloogistruktuur loodi edukalt."

Selle bash-skripti saate käivitada järgmise käsuga:

./hexagonal.sh

Bash-programm loob kaustad ja alamkaustad, et saaksite jätkata failide loomist ja oma rakenduse äriloogika kirjutamist.

Kuusnurkne arhitektuur on mugav keerukate rakenduste ehitamiseks

Kuusnurkse arhitektuuri rakendamine võib olla aeganõudev, kuid pikas perspektiivis kaalub kasu kulud üles. Eraldades probleemid ja muutes oma koodi modulaarsemaks, saate hõlpsalt oma rakendusi hooldada ja testida.

Paindlike ja tõhusate rakenduste loomiseks on palju muid arhitektuurimustreid, millest igaühel on plusse ja miinuseid. Nende hulka kuulub populaarne MVC (mudel, vaade, kontroller) arhitektuur veebirakenduste loomiseks.