Гексагональна архітектура (програмування)Гексагональна архітектура, або архітектура портів та адаптерів, є прикладом архітектури, що використовується при розробці програмного забезпечення. Вона спрямована на створення слабкозв'язних компонентів застосувань, які можна легко підключити до програмного середовища за допомогою портів та адаптерів. Це робить компоненти легкозамінними на будь-якому рівні та полегшує автоматизацію тестування.[1] ПоходженняГексагональну архітектуру винайшов Алістер Кокберн, намагаючись уникнути відомих усім структурних підводних каменів в об'єктно-орієнтованому дизайні програмного забезпечення, таких як небажані залежності між архітектурними рівнями та присутність бізнес-логіки в коді користувальницького інтерфейсу. Вона опублікована в 2005 році.[2] Термін «гексагональний» походить від графічних домовленостей, які показують компонент програми, такий як гексагональна комірка. Було необхідно залишити достатньо місця для представлення різних інтерфейсів, необхідних для зв'язку між компонентом та зовнішнім світом[1] і одночасно не допустити, що буде 6 границь. ПринципГексагональна архітектура розділяє систему на декілька вільнопов'язаних взаємозамінних компонентів, таких як ядро програми, база даних, користувальницький інтерфейс, тестові скрипти та інтерфейси з іншими системами. Цей підхід є альтернативою традиційній багатошаровій архітектурі. Кожен компонент з'єднаний з іншими через безліч відкритих «портів». Зв'язок через ці порти здійснюється за певним протоколом залежно від їх призначення. Порти та протоколи визначають абстрактний API, який може бути реалізований будь-якими відповідними технічними засобами (наприклад, виклик методу об'єктно-орієнтованою мовою, віддалені виклики процедур або вебслужби). Деталізованість портів та їх кількість не обмежена:
Адаптери — це міст, що поєднує компоненти та зовнішній світ. Вони адаптують обмін між зовнішнім світом та портами, що відповідають вимогам внутрішньої частини компонента програми. Для одного порту може бути кілька адаптерів, наприклад, якщо дані можуть бути надані користувачем через графічний інтерфейс або інтерфейс командного рядка, через автоматизоване джерело даних або за допомогою тестових скриптів. КритикаЗа словами Мартіна Фаулера, гексагональна архітектура має перевагу використання і схожості між шаром презентації та рівнем джерела даних для створення симетричних компонентів, виготовлених із ядра, оточеного інтерфейсами, але з недоліком приховування властивої асиметрії між постачальником послуг та споживачем послуги. Цей недолік можна було б виправити, якщо представити у вигляді шарів.[3] На думку деяких авторів, гексагональна архітектура базована на основі мікросервісної[4] архітектури. ВаріантиЦибулева архітектура, запропонована Джеффрі Палермо в 2008 році, схожа на шестигранну архітектуру: вона також дає можливість зовнішнього існування інфраструктури з належними інтерфейсами для забезпечення вільного зв'язку між додатком та базою даних.[5] Він додатково розкладає серцевину додатка на кілька концентричних кілець за допомогою інверсії керування.[6] Чиста архітектура, запропонована Робертом К. Мартіном у 2012 році, поєднує принципи гексагональної архітектури, цибулевої архітектури та декількох інших варіантів. Вона забезпечує додаткові рівні деталізації компонента, які представлені у вигляді концентричних кілець. Це ізолює адаптери і інтерфейси (призначений для користувача інтерфейс, бази даних, зовнішні системи, пристрій) в зовнішніх кільцях архітектури і залишає внутрішні кільця для варіантів використання і бізнес-правил рівня підприємства[7][8]. Чиста архітектура використовує принцип інверсії залежностей із суворим правилом, згідно з яким залежності повинні існувати лише між зовнішнім кільцем та внутрішнім кільцем, а ніколи не навпаки. Див. такожСписок літератури
|