Гексагональная архитектура¶

Гексагональная (шестигранная) архитектура — альтернатива многоуровневой. Организует логическое представление таким образом, что бизнес-логика оказывается в центре. Вместо уровня представления есть один или несколько входящих адаптеров, которые обрабатывают внешние запросы путём вызова бизнес-логики. Вместо уровня хранения данных используются один или несколько исходящих адаптеров, которые вызываются бизнес-логикой и обращаются к внешним приложениям. Ключевой характеристикой является то, что бизнес-логика не зависит от адаптеров; они зависят от нее.
У бизнес-логики есть входящие и исходящие порты. Порт определяет набор операций и то, как и в чем бизнес-логика взаимодействует с внешним кодом. Например, в Java или .NET порт есть интерфейс.
Входящий порт — это API, выставляемое наружу, например, интерфейс, описывающий публичные методы.
Исходящий порт — то, как бизнес-логика обращается к внешим системам, например, интерфейс репозитория.
Вокруг бизнес-логики размещаются входящие и исходящие адаптеры.
Входящий адаптер обрабатывает запросы внешнего мира, обращаясь к входящему порту. Например — контроллеры REST endpoints, или клиент брокера сообщений, подписывающийся на сообщения. Несколько входящих адаптеров могут обращаться к одному и тому же входящему порту.
Исходящий адаптер реализует исходящий порт и обрабатывает запросы бизнес-логики, обращаясь к внешнему приложению или сервису. Например — класс объекта доступа к данным(Data Access object — DAO). Еще пример — класс-прокси, вызывающий внешний сервис. Еще пример — клиент брокера сообщений, публикующий сообщения.
Основное преимущество гексагональной архитектуры в том, что адаптеры отделяют бизнес-логику от внешнего мира, делая ее независимой. Благодаря этому значительно упрощается задача тестирования бизнес-логики.
Дата создания : 24 июля 2022 г.