В этой статье я хочу вкратце рассказать о концепции гексагональной архитектуры, также известной как шаблон портов и адаптеров.
Что это такое?
Шестиугольная архитектура основана на трех столпах или принципах.
- Отдельные: на стороне пользователя, бизнес-логика и на стороне сервера;
- Зависимости переходят от стороны пользователя и стороны сервера к бизнес-логике;
- Мы соединяем границы приложения с помощью портов и адаптеров.
Порты
Порты обеспечивают всю связь с нашим основным приложением. Это интерфейсы, с которыми взаимодействуют наши внутренние компоненты, без информации о том, кто с ними подключается.
Адаптеры
Когда приложению (соединителю) требуется другой разъем, а порты не могут справиться с этой модификацией: мы используем адаптеры для преобразования данные из внешних приложений в наш основной формат приложения.
Пример
В этом примере представьте, что REST API подключен к внешнему веб-приложению.
- Внешний порт: запрос может иметь разные параметры и может ожидать разные форматы ответа. Мы можем создать адаптер для каждого внешнего отправителя;
- Адаптер: он получает запрос, преобразует его в согласованный формат, определенный портом, и передает его внутреннему приложению.
Когда данные достигают внутреннего приложения, они уже в ожидаемом формате, и приложение работает с ними и возвращает ответ в формате, который ожидает порт.
- Порт: порт перенаправляет ответ адаптеру, от которого он получил запрос.
- Адаптер. Адаптер преобразует ответ в формат, подходящий для запрашивающей стороны.
Плюсы
- Независимое решение для внешних сервисов;
- Разделение бизнес-логики;
- Легче протестировать.
Минусы
- Более сложная архитектура, чем тривиальная (необходимость построения слоев);
- Стоимость строительства и содержания.
Заключение
«Создайте свое приложение для работы без пользовательского интерфейса или базы данных, к которому вы можете запускать автоматические регрессионные тесты, развертывать, когда база данных недоступна, и подключать приложения без их участия». (Алистер Кокберн)
Это еще один способ создавать и изучать код и архитектуру приложений. Концепция изоляции помогает работать с микросервисами и другими решениями, которые следуют аналогичному шаблону.
Я надеюсь, что эта статья поможет вам. Спасибо!