Концепция

Гексагональная архитектура ("Порты и адаптеры") - архитектура в которой нет слоев. Есть приложение, порты и адаптеры. Порты относятся к приложению, они являются API приложения. Адаптеры находятся вне приложения, и каждый зависит от порта приложения.

Реализация шестиугольного права должна отделять адаптеры друг от друга, и каждый адаптер должен зависеть только от порта, который он использует/реализует (в зависимости от того, какой порт является драйвером или управляемым).


Придумана с целью создания архитектур, в которых код независим и отделен от технических деталей реализации, таких как фреймворки и базы данных. Называется так потому, что в рамках этой архитектуры имеется концепция различных портов, которые могут быть адаптированы для использования с другими слоями.

Основное назначение: Позволяет взаимодействовать с приложением как пользователю, так и программам, автоматическим тестам, скриптам пакетной обработки. Также позволяет приложению быть разработанным и оттестированным без каких-либо дополнительных устройств или баз данных.

Внутренняя область включает все предметные понятия, а внешняя отвечает за взаимодействия с внешним миром (то есть пользовательские интерфейсы, базы данных, механизмы интеграции сторонними продуктами). Главное правило здесь: внешняя область зависит от внутренней но никогда не наоборот.

Также нужно для высокой поддерживаемости и низкого уровня технического долга.


Преимущества

  • Четкое разделение компонентов, предотвращающее утечку кода между ними.

Недостатки

  • Из-за большого количества артефактов, если проект большой, сборка всего проекта займет много времени.

Целью представления приложения в виде отдельных слоев, является возможность разделить приложение на разные области ответственности.

Каждая из таких архитектур производит системы, которые:

  1. Независимы от рамок. Архитектура не зависит от наличия некоторой библиотеки программного обеспечения с широкими возможностями. Это позволяет вам использовать фреймворки в качестве инструментов, а не встраивать вашу систему в их ограничения.
  2. Тестируемые. Бизнес-правила могут быть протестированы без пользовательского интерфейса, базы данных, веб-сервера или любого другого внешнего элемента.
  3. Независимы от пользовательского интерфейса. Пользовательский интерфейс может быть легко изменен без изменения остальной части системы. Веб-интерфейс можно заменить консольным, например, без изменения бизнес-правил.
  4. НезависимыThe Dependency Rule от базы данных. Вы можете заменить Oracle или SQL Server на Mongo, BigTable, CouchDB или что-то еще. Ваши бизнес-правила не привязаны к базе данных.
  5. Независимо от какого-либо внешнего агентства. На самом деле ваши бизнес-правила просто ничего не знают о внешнем мире.

? Луковая и гексагональная архитектура?

results matching ""

    No results matching ""