Go lietotnēs var apvienot dažādus avota koda failu veidus, tāpēc stabilas, parastās struktūras izmantošanai ir daudz priekšrocību.

Sešstūra (vai "portu un adapteru") arhitektūra ir populārs programmatūras arhitektūras modelis, ko varat izmantot, veidojot savas Go lietotnes. Izmantojot to, varat uzlabot savas lietotnes mērogojamību, apkopi un pārbaudāmību.

Šī arhitektūra palīdz atdalīt biznesa loģiku no ārējām atkarībām un infrastruktūras, padarot jūsu lietojumprogrammu elastīgu un vieglāk uzturējamu.

Kas ir sešstūra arhitektūra?

Sešstūra arhitektūra sadala lietojumprogrammas trīs galvenajos slāņos:

  1. TheUzklāšanas slānis satur lietojumprogrammas pamata loģiku neatkarīgi no trešās puses atkarībām. Lietojumprogrammas slānim ir jāietver jūsu biznesa loģika, domēna modeļi un lietojumprogrammu pakalpojumi.
  2. ThePortu un adapteru slānis satur adapterus, kas mijiedarbojas ar esošajām lietojumprogrammām. Porti ir saskarnes, kas nosaka jūsu lietojumprogrammas darbības, savukārt adapteri ir saskarņu implementācijas. Adapteri var būt datu bāzes, HTTP API, ziņojumu brokeri vai jebkura cita ārēja sistēma.
  3. Infrastruktūras slānis ietver adapteru ieviešanu. Infrastruktūras slānī jāiekļauj datu bāzes, ziņojumu brokeri un citas ārējās sistēmas.

Sešstūra arhitektūras izmantošanas priekšrocības

Sešstūra arhitektūra ir populāra ar tālāk norādītajām priekšrocībām.

Projekta mērogojamība un uzturēšana

Lietojumprogrammu sadalījums nodrošina modulāru un atsaistītu kodu bāzi, kas atvieglo lietotnes mērogošanu un uzturēšanu.

Varat noņemt adapterus, neietekmējot pamata loģiku, un modificēt pamata loģiku, neietekmējot adapterus. Tas nozīmē, ka varat viegli nomainīt adapterus, nepārrakstot visu lietojumprogrammu.

Pārbaudāmība un integrācijas vieglums

Sešstūra arhitektūra veicina pārbaudāmību, jo jūs varat rakstīt vienības testus pamata loģikai, neizmantojot ārējas atkarības. Varat bez nepieciešamības izmantot pārbaudes dubultniekus, piemēram, viltojumus vai stubs izveidot datu bāzi vai ziņojumu brokeris.

Sešstūra arhitektūra arī atvieglo jūsu lietojumprogrammas integrēšanu ar citām sistēmām. Tā kā adapteri ir atsevišķi no galvenās loģikas, varat tos atkārtoti izmantot citās lietojumprogrammās vai mikropakalpojumos. Varat arī atklāt savas lietojumprogrammas porta API izmantošanai citās sistēmās.

Elastīgums un pielāgošanās mainīgajām prasībām

Sešstūra arhitektūra nodrošina elastību un pielāgojamību mainīgajām prasībām. Tā kā galvenā loģika ir neatkarīga no adapteriem, varat viegli modificēt vai paplašināt lietojumprogrammas funkcionalitāti, neietekmējot adapterus.

Laika gaitā varat attīstīt savu lietotni, pieturoties pie konkrētām ārējām sistēmām.

Iet un sešstūra arhitektūra

Sešstūra arhitektūras pamatā ir lietojumprogrammas biznesa loģikas atdalīšana no infrastruktūras, lai varat nomainīt atkarības, neietekmējot lietojumprogrammas pamata loģiku, tādējādi atvieglojot apkopi un testēšanu. pieteikumu.

Tipiskā sešstūra Go lietojumprogramma izmanto četrus galvenos direktorijus: cmd, iekšējais, pkg, un pārdevējs.

The cmd direktorijā ir galvenās projekta lietojumprogrammas. Šeit ierakstītais kods parasti izsauks funkcijas no failiem pkg un iekšējos direktorijos.

The iekšējais direktorijā ir jābūt privātam lietojumprogrammas kodam, kuru nevēlaties, lai lietotāji importētu savā lietojumprogrammā. Go kompilators ievieš iekšējo izkārtojuma modeli, un citos direktorijos var būt tik daudz iekšējo direktoriju, cik vēlaties. Jūs neaprobežojaties tikai ar augstākā līmeņa iekšējo direktoriju.

The pkg direktorijā ir jāietver bibliotēkas kods, kuru vēlaties importēt un izmantot ārējām lietojumprogrammām. Lai gan izmantojot pkg katalogs ir izplatīta prakse, tas nav vispārpieņemts vai ieviests.

The pārdevējs direktorijā ir jāietver lietojumprogrammu atkarības (manuāli vai automātiski pārvaldītas). Jūs varat izmantot go mod pārdevējs komandu, lai izveidotu a /vendor direktoriju, lai izmantotu funkcijas, ko Go nodrošina pārdevējiem.

Sešstūra arhitektūras ieviešana Go

Jūsu projekta faila struktūra ir svarīga, ieviešot sešstūra arhitektūru jebkurā valodā, tostarp Go.

Šeit ir faila struktūras piemērs sešstūra arhitektūras ieviešanai Go:

.
├── cmd
│ └── http
│ └── main.go
├── iekšējais
│ ├── adapteri
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── datu bāze
│ │ └── db_adapter.go
│ ├── lietotne
│ │ ├── domēns
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
│ │ ├── porti
│ │ │ ├── ievade
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── izvade
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── lietošanas gadījumi
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── gab
│ ├── ievade
│ │ ├── ievade1.go
│ │ └── input2.go
│ └── izvade
│ ├── output1.go
│ └── output2.go
└── pārdevējs
├── modulis1
│ ├── file1.go
│ └── file2.go
└── modulis2
├── file1.go
└── file2.go

The pkg direktorijā ir jūsu lietojumprogrammas ievades un izvades porti šajā piemērā. Šajos failos jūs definēsit saskarnes ievades un izvades portiem.

The iekšējais direktorijā ir lietojumprogrammas domēns un lietošanas gadījumi. Šajos failos jūs ierakstīsit savas lietojumprogrammas biznesa loģiku.

The adapteri direktorijā ir infrastruktūras kods, kas savieno jūsu lietojumprogrammu ar datu bāzi un API.

Sešstūra arhitektūras faila struktūras iestatīšana

Projekta sešstūra arhitektūras failu struktūras iestatīšana var būt apgrūtinoša, taču varat uzrakstīt bash skriptu, lai automatizētu direktoriju izveides procesu.

Palaidiet šo komandu sava projekta darba direktorijā uz izveidot bash skriptu, sešstūrains.sh, un piešķiriet tam lasīšanas, rakstīšanas un izpildes atļaujas:

touch hexagonal.sh && chmod 777 hexagonal.sh

Ievadiet šo bash kodu sešstūrains.sh lai izveidotu faila struktūru pašreizējā darba direktorijā:

#!/bin/bash

# izveidot augstākā līmeņa direktorijus
mkdir cmd iekšējais pkg piegādātājs

# izveidot cmd/http direktoriju
mkdir cmd/http

# izveidot iekšējos direktorijus
mkdir iekšējie/adapteri iekšējie/lietotnes iekšējie/lietotnes/domēna iekšējie/lietotnes/iekšējie porti/lietotne/porti/ieeja iekšā/lietotne/porti/izvade iekšējais/lietotne/lietošanas gadījumi

# izveidot iekšējos/adapteru katalogus
mkdir iekšējais/adapteri/api iekšējais/adapteri/datubāze

# izveidot iekšējos/lietotņu/portu direktorijus
mkdir iekšējais/app/ports/input interior/app/ports/output

# izveidot pārdevēju katalogus
mkdir vendor/module1 vendor/module2

# izdrukāt veiksmes ziņojumu
atbalss"Katalogu struktūra ir veiksmīgi izveidota."

Šo bash skriptu var palaist ar šādu komandu:

./hexagonal.sh

Programma bash izveido mapes un apakšmapes, lai jūs varētu turpināt izveidot failus un rakstīt lietojumprogrammas biznesa loģiku.

Sešstūra arhitektūra ir ērta sarežģītu lietojumprogrammu celtniecībai

Sešstūra arhitektūras ieviešana var būt laikietilpīga, taču ieguvumi ilgtermiņā pārsniedz izmaksas. Atdalot problēmas un padarot kodu modulārāku, varat viegli uzturēt un pārbaudīt savas lietojumprogrammas.

Ir daudz citu arhitektūras modeļu, un katram ir plusi un mīnusi elastīgu, veiktspējīgu lietojumu veidošanai. Tie ietver populāro MVC (model, view, controller) arhitektūru tīmekļa lietojumprogrammu izveidei.