Aplicațiile Go pot combina multe tipuri diferite de fișiere de cod sursă, astfel încât utilizarea unei structuri convenționale solide are multe beneficii.

Arhitectura hexagonală (sau „porturi și adaptoare”) este un model de arhitectură software popular pe care îl puteți aplica pe măsură ce vă construiți aplicațiile Go. Folosind-o, puteți îmbunătăți scalabilitatea, mentenabilitatea și testabilitatea aplicației dvs.

Această arhitectură ajută la separarea logicii de afaceri de dependențele și infrastructura externă, făcând aplicația dvs. flexibilă și mai ușor de întreținut.

Ce este arhitectura hexagonală?

Arhitectura hexagonală împarte aplicațiile în trei straturi principale:

  1. TheStrat de aplicație găzduiește logica de bază a aplicației independent de orice dependențe terțe. Stratul de aplicație ar trebui să conțină logica dvs. de afaceri, modelele de domeniu și serviciile de aplicație.
  2. TheStratul porturi și adaptoare găzduiește adaptoarele care interacționează cu aplicațiile existente. Porturile sunt interfețe care definesc operațiunile pentru aplicația dvs., în timp ce adaptoarele sunt implementări ale interfețelor. Adaptoarele pot fi baze de date, API-uri HTTP, brokeri de mesaje sau orice alt sistem extern.
    instagram viewer
  3. Stratul de infrastructură găzduiește implementarea adaptoarelor. Stratul de infrastructură ar trebui să includă baze de date, brokeri de mesaje și alte sisteme externe.

Avantajele utilizării arhitecturii hexagonale

Arhitectura hexagonală este populară pentru următoarele avantaje pe care le oferă.

Scalabilitate și întreținere a proiectului

Divizarea aplicațiilor dvs. permite o bază de cod modulară și decuplată, care facilitează scalarea și întreținerea aplicației.

Puteți elimina adaptoarele fără a afecta logica de bază și puteți modifica logica de bază fără a afecta adaptoarele. Aceasta înseamnă că puteți înlocui cu ușurință adaptoarele fără a rescrie întreaga aplicație.

Testabilitate și ușurință de integrare

Arhitectura hexagonală promovează testabilitatea, deoarece puteți scrie teste unitare pentru logica de bază fără dependențe externe simulate. Puteți utiliza teste duble, cum ar fi falsuri sau stub-uri, fără a fi nevoie configurați o bază de date sau broker de mesaje.

Arhitectura hexagonală facilitează, de asemenea, integrarea aplicației dumneavoastră cu alte sisteme. Deoarece adaptoarele sunt separate de logica de bază, le puteți reutiliza în alte aplicații sau pentru microservicii. De asemenea, puteți expune API-urile portului aplicației dvs. pentru consum în alte sisteme.

Flexibilitate și adaptabilitate la cerințele în schimbare

Arhitectura hexagonală oferă flexibilitate și adaptabilitate la cerințele în schimbare. Deoarece logica de bază este independentă de adaptoare, puteți modifica sau extinde cu ușurință funcționalitatea aplicației fără a afecta adaptoarele.

Vă puteți evolua aplicația în timp, respectând anumite sisteme externe.

Du-te și Arhitectura Hexagonală

În esență, arhitectura hexagonală se referă la separarea logicii de afaceri de bază a aplicației de infrastructură, astfel încât puteți schimba dependențele fără a afecta logica de bază a aplicației, facilitând întreținerea și testarea aplicarea.

Aplicația Go hexagonală tipică utilizează patru directoare principale: cmd, intern, pachet, și vânzător.

The cmd directorul conține principalele aplicații pentru proiect. Codul pe care îl scrieți aici va apela de obicei funcții din fișierele din pkg și directoarele interne.

The intern directorul ar trebui să conțină un cod de aplicație privat pe care nu doriți ca utilizatorii să-l importe în aplicația lor. Compilatorul Go impune modelul de aspect intern și puteți avea câte directoare interne în alte directoare doriți. Nu sunteți limitat la un director intern de nivel superior.

The pachet directorul ar trebui să conțină codul bibliotecii pe care doriți să îl importe și să îl utilizeze aplicațiile externe. Deși se folosește pachet directorul este o practică obișnuită, nu este universal acceptat sau aplicat.

The vânzător directorul ar trebui să conțină dependențe de aplicație (gestionate manual sau automat). Puteți folosi du-te vânzător de mod comanda pentru a crea un /vendor director pentru a profita de funcționalitățile oferite de Go pentru furnizori.

Implementarea arhitecturii hexagonale în Go

Structura de fișiere a proiectului este importantă atunci când implementați arhitectura hexagonală în orice limbă, inclusiv Go.

Iată un exemplu de structură de fișiere pentru implementarea arhitecturii hexagonale în Go:

.
├── cmd
│ └── http
│ └── main.go
├── intern
│ ├── adaptoare
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── baza de date
│ │ └── db_adapter.go
│ ├── aplicație
│ │ ├── domeniu
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
│ │ ├── porturi
│ │ │ ├── intrare
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── ieșire
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── cazuri de utilizare
│ │ ├── caz de utilizare1.go
│ │ └── usecase2.go
├── pachet
│ ├── intrare
│ │ ├── input1.go
│ │ └── input2.go
│ └── ieșire
│ ├── output1.go
│ └── output2.go
└── vânzător
├── modulul 1
│ ├── fișier1.go
│ └── fișier2.go
└── modulul2
├── fișier1.go
└── fișier2.go

The pachet directorul conține porturile de intrare și de ieșire ale aplicației dvs. în acest exemplu. Veți defini interfețele pentru porturile de intrare și ieșire în aceste fișiere.

The intern directorul conține domeniul aplicației și cazurile de utilizare. Veți scrie logica de afaceri a aplicației dvs. în aceste fișiere.

The adaptoare directorul conține codul de infrastructură care conectează aplicația dvs. la baza de date și la API.

Configurarea structurii fișierului de arhitectură hexagonală

Configurarea structurii de fișiere cu arhitectură hexagonală a proiectului poate fi greoaie, dar puteți scrie un script bash pentru a automatiza procesul de creare a directorului.

Rulați această comandă în directorul de lucru al proiectului dvs. la creați un script bash, hexagonal.shși acordați-i permisiuni de citire, scriere și executare:

atingeți hexagonal.sh && chmod 777 hexagonal.sh

Introduceți acest cod bash în hexagonal.sh pentru a crea structura de fișiere în directorul de lucru curent:

#!/bin/bash

# creați directoare de nivel superior
mkdir cmd furnizor intern de pachete

# creați directorul cmd/http
mkdir cmd/http

# creați directoare interne
mkdir intern/adaptoare intern/aplicație intern/aplicație/domeniu intern/aplicație/porturi intern/aplicație/porturi/intrare intern/aplicație/porturi/ieșire intern/aplicație/cazuri de utilizare

# creați directoare interne/adaptoare
mkdir internal/adapters/api internal/adapters/database

# creați directoare interne/aplicații/porturi
mkdir internal/app/ports/input internal/app/ports/output

# creați directoare cu furnizori
mkdir furnizor/modul1 furnizor/modul2

# printare mesaj de succes
ecou„Structură de director creată cu succes”.

Puteți rula acest script bash cu următoarea comandă:

./hexagonal.sh

Programul bash creează folderele și subfolderele, astfel încât să puteți continua să creați fișiere și să scrieți logica de afaceri pentru aplicația dvs.

Arhitectura hexagonală este utilă pentru construirea de aplicații complexe

Implementarea arhitecturii hexagonale poate fi consumatoare de timp, dar beneficiile depășesc costurile pe termen lung. Separând preocupările și făcând codul mai modular, vă puteți întreține și testa cu ușurință aplicațiile.

Există multe alte modele arhitecturale, fiecare cu argumente pro și contra pentru construirea de aplicații flexibile și performante. Acestea includ arhitectura populară MVC (model, vizualizare, controler) pentru crearea de aplicații web.