Skip to content
4 / 15

Что такое порты и адаптеры и чем гексагональная архитектура отличается от обычных слоёв?

Домен объявляет порты — контракты того, что ему нужно от мира: хранилище, платёжный шлюз, отправка почты. Инфраструктура поставляет адаптеры, эти контракты реализующие. Главное правило — зависимости направлены внутрь: внешний слой знает про внутренний, внутренний про внешний никогда, поэтому фреймворк и СУБД становятся сменными деталями. От обычных слоёв отличие в том, кто владеет контрактом: порт принадлежит домену, а не инфраструктуре. Выгода прикладная: сценарий тестируется без базы и сети, вход может быть любым, а отказ внешней системы легко воспроизвести фейком. Цена тоже реальная — два набора классов, маппинг между ними, композиционный корень и дисциплина не пускать фреймворк внутрь. На небольшом CRUD это не окупается.

Что такое порты и адаптеры и чем гексагональная архитектура отличается от обычных слоёв? | JScriptiser