„Go“ programos gali sujungti daugybę skirtingų šaltinio kodo failų tipų, todėl naudojant tvirtą, įprastą struktūrą, yra daug privalumų.
Šešiakampė (arba „prievadų ir adapterių“) architektūra yra populiarus programinės įrangos architektūros modelis, kurį galite taikyti kurdami „Go“ programas. Naudodami jį galite pagerinti programos mastelio keitimą, priežiūrą ir testavimą.
Ši architektūra padeda atskirti verslo logiką nuo išorinių priklausomybių ir infrastruktūros, todėl jūsų programa tampa lanksti ir lengviau prižiūrima.
Kas yra šešiakampė architektūra?
Šešiakampė architektūra padalina programas į tris pagrindinius sluoksnius:
- TheTaikymo sluoksnis talpina pagrindinę programos logiką, nepriklausomą nuo trečiųjų šalių priklausomybių. Programos lygmenyje turėtų būti jūsų verslo logika, domeno modeliai ir taikomųjų programų paslaugos.
- ThePrievadų ir adapterių sluoksnis talpina adapterius, sąveikaujančius su esamomis programomis. Prievadai yra sąsajos, apibrėžiančios jūsų programos operacijas, o adapteriai yra sąsajų įgyvendinimas. Adapteriai gali būti duomenų bazės, HTTP API, pranešimų brokeriai ar bet kuri kita išorinė sistema.
- Infrastruktūros sluoksnis yra adapterių diegimas. Infrastruktūros sluoksnis turėtų apimti duomenų bazes, pranešimų tarpininkus ir kitas išorines sistemas.
Šešiakampės architektūros naudojimo pranašumai
Šešiakampė architektūra yra populiari dėl šių privalumų.
Projekto mastelio keitimas ir priežiūra
Jūsų programų padalijimas leidžia sukurti modulinę ir atsietą kodų bazę, kuri palengvina programos mastelį ir priežiūrą.
Galite pašalinti adapterius nepaveikdami pagrindinės logikos ir modifikuoti pagrindinę logiką nepaveikdami adapterių. Tai reiškia, kad galite lengvai pakeisti adapterius neperrašydami visos programos.
Išbandomumas ir integravimo paprastumas
Šešiakampė architektūra skatina testavimą, nes galite rašyti vienetinius pagrindinės logikos testus be netikrų išorinių priklausomybių. Galite be reikalo naudoti bandomuosius dublikatus, pvz., padirbtus ar stuburus sukurti duomenų bazę arba žinučių brokeris.
Šešiakampė architektūra taip pat leidžia lengvai integruoti programą su kitomis sistemomis. Kadangi adapteriai yra atskirti nuo pagrindinės logikos, galite juos pakartotinai naudoti kitose programose arba mikropaslaugoms. Taip pat galite atskleisti savo programos prievado API naudoti kitose sistemose.
Lankstumas ir prisitaikymas prie besikeičiančių reikalavimų
Šešiakampė architektūra suteikia lankstumo ir prisitaikymo prie kintančių reikalavimų. Kadangi pagrindinė logika nepriklauso nuo adapterių, galite lengvai modifikuoti arba išplėsti programos funkcionalumą nepaveikdami adapterių.
Laikui bėgant galite tobulinti programą, laikydamiesi konkrečių išorinių sistemų.
Eik ir šešiakampė architektūra
Šešiakampės architektūros esmė yra programos pagrindinės verslo logikos atskyrimas nuo infrastruktūros, kad galite pakeisti priklausomybes nepaveikdami pagrindinės programos logikos, todėl bus lengviau prižiūrėti ir išbandyti taikymas.
Įprastoje šešiakampėje Go programoje naudojami keturi pagrindiniai katalogai: cmd, vidinis, pkg, ir pardavėjas.
The cmd kataloge yra pagrindinės projekto programos. Kodas, kurį rašote čia, paprastai iškvies funkcijas iš failų, esančių pkg ir vidiniuose kataloguose.
The vidinis kataloge turėtų būti privatus programos kodas, kurio nenorite, kad vartotojai importuotų į savo programą. „Go“ kompiliatorius įgyvendina vidinį išdėstymo modelį, o kituose kataloguose galite turėti tiek vidinių katalogų, kiek norite. Jūs neapsiribojate aukščiausio lygio vidiniu katalogu.
The pkg kataloge turi būti bibliotekos kodas, kurį norite importuoti ir naudoti išorinėms programoms. Nors naudojant pkg katalogas yra įprasta praktika, jis nėra visuotinai priimtas ar vykdomas.
The pardavėjas kataloge turi būti taikomųjų programų priklausomybės (valdomos rankiniu būdu arba automatiškai). Galite naudoti go mod pardavėjas komanda sukurti a /vendor katalogas, skirtas išnaudoti „Go“ tiekėjams teikiamas funkcijas.
Šešiakampės architektūros įgyvendinimas Go
Jūsų projekto failo struktūra yra svarbi diegiant šešiakampę architektūrą bet kuria kalba, įskaitant „Go“.
Štai failų struktūros pavyzdys, skirtas šešiakampei architektūrai įdiegti „Go“:
.
├── cmd
│ └── http
│ └── main.go
├── vidinis
│ ├── adapteriai
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── duomenų bazėje
│ │ └── db_adapter.go
│ ├── programėlė
│ │ ├── domenas
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
│ │ ├── prievadai
│ │ │ ├── įvestis
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── išvestis
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── naudojimo atvejai
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── vnt
│ ├── įvestis
│ │ ├── input1.go
│ │ └── input2.go
│ └── išvestis
│ ├── output1.go
│ └── output2.go
└── pardavėjas
├── modulis1
│ ├── file1.go
│ └── file2.go
└── modulis2
├── file1.go
└── file2.go
The pkg Šiame pavyzdyje yra jūsų programos įvesties ir išvesties prievadai. Šiuose failuose nustatysite įvesties ir išvesties prievadų sąsajas.
The vidinis kataloge yra programos domenas ir naudojimo atvejai. Šiuose failuose rašysite savo programos verslo logiką.
The adapteriai kataloge yra infrastruktūros kodas, jungiantis jūsų programą su duomenų baze ir API.
Šešiakampės architektūros failo struktūros nustatymas
Projekto šešiakampės architektūros failų struktūros nustatymas gali būti sudėtingas, tačiau galite parašyti bash scenarijų, kad automatizuotumėte katalogo kūrimo procesą.
Vykdykite šią komandą savo projekto darbo kataloge į sukurti bash scenarijų, šešiakampis.sh, ir suteikite jam skaitymo, rašymo ir vykdymo teises:
touch hexagonal.sh && chmod 777 hexagonal.sh
Įveskite šį bash kodą šešiakampis.sh Norėdami sukurti failo struktūrą dabartiniame darbo kataloge:
#!/bin/bash
# sukurti aukščiausio lygio katalogus
mkdir cmd vidinis pkg tiekėjas# sukurti cmd/http katalogą
mkdir cmd/http# sukurti vidinius katalogus
mkdir vidinis/adapteriai vidinis/programos vidinis/programa/vidinis domenas/programa/vidiniai prievadai/programa/prievadai/vidinis įvestis/programa/prievadai/išvestis vidinė/programa/naudojimo atvejai# sukurti vidinius / adapterių katalogus
mkdir internal/adapters/api internal/adapters/database# sukurti vidinius / programų / prievadų katalogus
mkdir interior/app/ports/input internal/app/ports/output# sukurti tiekėjų katalogus
mkdir tiekėjas/modulis1 pardavėjas/modulis2
# atsispausdinti sėkmės pranešimą
aidas"Katalogo struktūra sėkmingai sukurta."
Šį bash scenarijų galite paleisti naudodami šią komandą:
./hexagonal.sh
Bash programa sukuria aplankus ir poaplankius, kad galėtumėte toliau kurti failus ir rašyti savo programos verslo logiką.
Šešiakampė architektūra yra patogi kuriant sudėtingas programas
Šešiakampės architektūros įgyvendinimas gali užtrukti daug laiko, tačiau ilgalaikėje perspektyvoje nauda nusveria išlaidas. Atskirdami problemas ir padarydami kodą moduliškesnį, galite lengvai prižiūrėti ir išbandyti programas.
Yra daug kitų architektūrinių modelių, kurių kiekvienas turi privalumų ir trūkumų kuriant lanksčias, našias programas. Tai apima populiarią MVC (modelis, rodinys, valdiklis) architektūrą, skirtą žiniatinklio programoms kurti.