Го апликације могу да комбинују много различитих типова датотека изворног кода, тако да коришћење чврсте, конвенционалне структуре има много предности.
Хексагонална (или „портови и адаптери“) архитектура је популаран образац софтверске архитектуре који можете применити док правите своје Го апликације. Користећи га, можете побољшати скалабилност, могућност одржавања и тестирање апликације.
Ова архитектура помаже у одвајању пословне логике од спољних зависности и инфраструктуре, чинећи вашу апликацију флексибилном и лакшом за одржавање.
Шта је хексагонална архитектура?
Хексагонална архитектура дели апликације у три главна слоја:
- ТхеАпликациони слој садржи основну логику апликације независно од зависности од трећих страна. Апликациони слој треба да садржи вашу пословну логику, моделе домена и сервисе апликација.
- ТхеПортови и слојеви адаптери садржи адаптере који су у интеракцији са постојећим апликацијама. Портови су интерфејси који дефинишу операције за вашу апликацију, док су адаптери имплементације интерфејса. Адаптери могу бити базе података, ХТТП АПИ-ји, брокери порука или било који други спољни систем.
- Инфраструктурни слој садржи имплементацију адаптера. Инфраструктурни слој треба да укључује базе података, посреднике порука и друге екстерне системе.
Предности коришћења хексагоналне архитектуре
Хексагонална архитектура је популарна због следећих предности које нуди.
Скалабилност и одрживост пројекта
Подела ваших апликација омогућава модуларну и одвојену базу кода која олакшава скалирање и одржавање ваше апликације.
Можете уклонити адаптере без утицаја на основну логику и модификовати основну логику без утицаја на адаптере. То значи да можете лако да замените адаптере без поновног писања целе апликације.
Тестабилност и лакоћа интеграције
Хексагонална архитектура промовише могућност тестирања јер можете писати јединичне тестове за основну логику без лажних спољних зависности. Можете да користите дупле тестове, као што су лажне или заглавље, без потребе поставити базу података или посредник порука.
Хексагонална архитектура такође олакшава интеграцију ваше апликације са другим системима. Пошто су адаптери одвојени од основне логике, можете их поново користити у другим апликацијама или за микросервисе. Такође можете изложити АПИ-је порта ваше апликације за употребу у другим системима.
Флексибилност и прилагодљивост променљивим захтевима
Хексагонална архитектура пружа флексибилност и прилагодљивост променљивим захтевима. Пошто је основна логика независна од адаптера, можете лако да измените или проширите функционалност апликације без утицаја на адаптере.
Можете да еволуирате своју апликацију током времена, држећи се одређених спољних система.
Иди и Хексагонална архитектура
У суштини, хексагонална архитектура се односи на одвајање основне пословне логике апликације од инфраструктуре тако да можете да замените зависности без утицаја на основну логику апликације, што олакшава одржавање и тестирање апликација.
Типична хексагонална Го апликација користи четири главна директоријума: цмд, унутрашњег, пкг, и продавац.
Тхе цмд директоријум садржи главне апликације за пројекат. Код који овде напишете обично позива функције из датотека у пкг и интерним директоријумима.
Тхе унутрашњег директоријум треба да садржи приватни код апликације који не желите да корисници увозе у своју апликацију. Го компајлер примењује интерни распоред распореда, и можете имати онолико интерних директоријума у другим директоријумима колико желите. Нисте ограничени на интерни директоријум највишег нивоа.
Тхе пкг директоријум треба да садржи код библиотеке коју желите да спољне апликације увозе и користе. Иако коришћењем пкг директоријум је уобичајена пракса, није универзално прихваћен или примењен.
Тхе продавац директоријум треба да садржи зависности апликација (управљане ручно или аутоматски). Можете користити иди продавац модова команда за креирање а /vendor директоријум да би се искористиле функције које Го пружа добављачима.
Имплементација хексагоналне архитектуре у Го
Структура датотеке вашег пројекта је важна када се имплементира хексагонална архитектура на било ком језику, укључујући Го.
Ево примера структуре датотеке за имплементацију хексагоналне архитектуре у Го:
.
├── цмд
│ └── хттп
│ └── маин.го
├── унутрашње
│ ├── адаптери
│ │ ├── апи
│ │ │ └── апи_адаптер.го
│ │ └── база података
│ │ └── дб_адаптер.го
│ ├── апп
│ │ ├── домен
│ │ │ ├── ентити1.го
│ │ │ └── ентити2.го
│ │ ├── портови
│ │ │ ├── унос
│ │ │ │ ├── инпут_порт1.го
│ │ │ │ └── инпут_порт2.го
│ │ │ └── излаз
│ │ │ ├── оутпут_порт1.го
│ │ │ └── оутпут_порт2.го
│ │ └── случајеви употребе
│ │ ├── усецасе1.го
│ │ └── усецасе2.го
├── паковање
│ ├── унос
│ │ ├── инпут1.го
│ │ └── инпут2.го
│ └── излаз
│ ├── оутпут1.го
│ └── оутпут2.го
└── продавац
├── модул1
│ ├── филе1.го
│ └── филе2.го
└── модул2
├── филе1.го
└── филе2.го
Тхе пкг директоријум садржи улазне и излазне портове ваше апликације у овом примеру. У овим датотекама ћете дефинисати интерфејсе за улазне и излазне портове.
Тхе унутрашњег директоријум садржи домен апликације и случајеве употребе. У ове датотеке ћете написати пословну логику ваше апликације.
Тхе адаптери директоријум садржи инфраструктурни код који повезује вашу апликацију са базом података и АПИ-јем.
Подешавање структуре датотеке хексагоналне архитектуре
Постављање структуре датотека хексагоналне архитектуре вашег пројекта може бити гломазно, али можете написати басх скрипту да аутоматизујете процес креирања директоријума.
Покрените ову команду у радном директоријуму вашег пројекта за креирајте басх скрипту, шестоугаони.ш, и доделите му дозволе за читање, писање и извршавање:
тоуцх хекагонал.сх && цхмод 777 хекагонал.сх
Унесите овај басх код шестоугаони.ш да креирате структуру датотеке у вашем тренутном радном директоријуму:
#!/бин/басх
# креирајте директоријуме највишег нивоа
мкдир цмд интерни добављач пакета# креирајте цмд/хттп директоријум
мкдир цмд/хттп# креирајте интерне директоријуме
мкдир интерни/адаптери интерни/интерна апликација/апликација/домен интерни/апп/портови интерни/апп/портови/инпут интерни/апп/портови/излаз интерни/апп/усецасес# креирајте интерне/адаптерске директоријуме
мкдир интерни/адаптери/апи интерни/адаптери/база података# креирајте интерне/апп/портове директоријуме
мкдир интерни/апп/портс/инпут интернал/апп/портс/оутпут# креирајте директоријуме добављача
мкдир вендор/модуле1 вендор/модуле2
# штампај поруку о успеху
одјек„Структура директоријума је успешно направљена.“
Ову басх скрипту можете покренути следећом командом:
./хекагонал.сх
Басх програм креира фасцикле и поддиректоријуме тако да можете да наставите са креирањем датотека и писањем пословне логике за вашу апликацију.
Хексагонална архитектура је згодна за изградњу сложених апликација
Имплементација хексагоналне архитектуре може бити дуготрајна, али предности су дугорочно веће од трошкова. Раздвајањем проблема и начином модуларнијег кода, лако можете одржавати и тестирати своје апликације.
Постоји много других архитектонских образаца, од којих сваки има предности и недостатке за изградњу флексибилних, ефикасних апликација. Ово укључује популарну МВЦ (модел, приказ, контролер) архитектуру за креирање веб апликација.