Jump to content

Шестиугольная архитектура (программное обеспечение)

Шестиугольная архитектура , или архитектура портов и адаптеров , представляет собой архитектурный шаблон, используемый при разработке программного обеспечения . Он направлен на создание слабосвязанных компонентов приложений, которые можно легко подключить к программной среде с помощью портов и адаптеров . Это делает компоненты взаимозаменяемыми на любом уровне и облегчает автоматизацию тестирования. [1]

Источник

[ редактировать ]

Шестиугольная архитектура была изобретена Алистером Кокберном в попытке избежать известных структурных ошибок в объектно-ориентированном проектировании программного обеспечения , таких как нежелательные зависимости между уровнями и загрязнение пользовательского интерфейса кода бизнес-логикой . Сначала это обсуждалось в вики Portland Pattern Repository ; [2] [3] в 2005 году Кокберн переименовал его в «Порты и адаптеры». [1] В апреле 2024 года Кокберн опубликовал обширную книгу на эту тему, написанную в соавторстве с Хуаном Мануэлем Гарридо де Пасом. [4]

Термин «шестиугольный» происходит от графических условных обозначений, согласно которым компонент приложения изображается в виде шестиугольной ячейки. Цель заключалась не в том, чтобы предложить шесть границ/портов, а в том, чтобы оставить достаточно места для представления различных интерфейсов, необходимых между компонентом и внешним миром. [1]

Пример шестиугольной архитектуры с внутренним шестиугольником, представляющим ядро ​​приложения, и внешним шестиугольником для адаптеров, граница между которыми представляет собой порты.
Пример шестиугольной архитектуры

Шестиугольная архитектура делит систему на несколько слабосвязанных взаимозаменяемых компонентов, таких как ядро ​​приложения, база данных, пользовательский интерфейс, тестовые сценарии и интерфейсы с другими системами. Этот подход является альтернативой традиционной многоуровневой архитектуре.

Каждый компонент соединен с другими через ряд открытых «портов». Связь через эти порты осуществляется по определенному протоколу в зависимости от их назначения. Порты и протоколы определяют абстрактный API , который может быть реализован любыми подходящими техническими средствами (например, вызов метода на объектно-ориентированном языке , удаленные вызовы процедур или веб-сервисы ).

Детализация портов и их количество не ограничены:

  • в некоторых случаях может быть достаточно одного порта (например, в случае простого потребителя услуги);
  • обычно имеются порты для источников событий (пользовательский интерфейс, автоматическая подача), уведомлений (исходящие уведомления), базы данных (для сопряжения компонента с любой подходящей СУБД) и администрирования (для управления компонентом);
  • в крайнем случае, при необходимости для каждого варианта использования может быть другой порт .

Адаптеры — это клей между компонентами и внешним миром. Они адаптируют обмены между внешним миром и портами, которые представляют требования внутреннего компонента приложения. Для одного порта может быть несколько адаптеров, например, данные могут предоставляться пользователем через графический интерфейс или интерфейс командной строки, через автоматизированный источник данных или посредством тестовых сценариев.

Термин «шестиугольный» подразумевает, что концепция состоит из 6 частей, тогда как ключевых областей всего 4. Использование этого термина связано с графическими соглашениями, которые показывают компонент приложения в виде шестиугольной ячейки. Цель заключалась не в том, чтобы предложить шесть границ/портов, а в том, чтобы оставить достаточно места для представления различных интерфейсов, необходимых между компонентом и внешним миром. [1]

По словам Мартина Фаулера , шестиугольная архитектура имеет преимущество использования сходства между уровнем представления и уровнем источника данных для создания симметричных компонентов, состоящих из ядра, окруженного интерфейсами, но с недостатком, заключающимся в сокрытии присущей им асимметрии между поставщиком услуг и потребителем услуг. это лучше было бы представить в виде слоев. [5]

Эволюция

[ редактировать ]

По мнению некоторых авторов, гексагональная архитектура лежит в основе архитектуры микросервисов . [6]

Варианты

[ редактировать ]

Луковая архитектура, предложенная Джеффри Палермо в 2008 году, похожа на гексагональную архитектуру: она также выводит инфраструктуру за пределы инфраструктуры с интерфейсами, чтобы обеспечить слабую связь между приложением и базой данных. [7] Далее ядро ​​приложения разбивается на несколько концентрических колец с помощью инверсии управления . [8]

Чистая архитектура, предложенная Робертом К. Мартином в 2012 году, сочетает в себе принципы гексагональной архитектуры, луковичной архитектуры и нескольких других вариантов. Он обеспечивает дополнительные уровни детализации компонента, которые представлены в виде концентрических колец. Он изолирует адаптеры и интерфейсы (пользовательский интерфейс, базы данных, внешние системы, устройства) во внешних кольцах архитектуры и оставляет внутренние кольца для вариантов использования и сущностей . [9] [10] Чистая архитектура использует принцип инверсии зависимостей со строгим правилом, согласно которому зависимости должны существовать только между внешним кольцом и внутренним кольцом и никогда наоборот.

См. также

[ редактировать ]
  1. ^ Jump up to: а б с д Кокберн, Алистер (1 апреля 2005 г.). «Шестиугольная архитектура» . alistair.cockburn.us . Проверено 18 ноября 2020 г.
  2. ^ «Шестиугольная архитектура в C2 Wiki» .
  3. ^ «Архитектура портов и адаптеров в C2 Wiki» .
  4. ^ «Объяснение шестиугольной архитектуры» .
  5. ^ Фаулер, Мартин (2003). Шаблоны архитектуры корпоративных приложений . Аддисон-Уэсли. п. 21. ISBN  0-321-12742-0 . OCLC   50292267 .
  6. ^ Раджеш Р.В. (2017). Микросервисы Spring 5.0: создавайте масштабируемые микросервисы с помощью Reactive Streams, Spring Boot, Docker и Mesos (второе изд.). Пакт Паблишинг. стр. 13–14. ISBN  978-1-78712-051-8 . OCLC   999610958 .
  7. ^ Джеффри, Палермо (29 июля 2008 г.). «Луковая архитектура: часть 1» . Программирование с Палермо . Проверено 12 августа 2019 г.
  8. ^ Чатекар, Сухас (2015). Изучение NHibernate 4: изучите весь потенциал NHibernate для создания надежного кода доступа к данным . Пакт Паблишинг. стр. 249–250. ISBN  978-1-78439-206-2 . OCLC   937787252 .
  9. ^ Мартин, Роберт, К. (12 августа 2012 г.). «Чистая архитектура | Блог Clean Coder» . blog.cleancoder.com . Проверено 12 августа 2019 г. {{cite web}}: CS1 maint: несколько имен: список авторов ( ссылка )
  10. ^ Мартин, Роберт С. (2017). Чистая архитектура: руководство для мастера по структуре и дизайну программного обеспечения . Прентис Холл. ISBN  978-0-13-449416-6 . OCLC   1004983973 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c358bf622bef955ddee250d207782e7b__1722878040
URL1:https://arc.ask3.ru/arc/aa/c3/7b/c358bf622bef955ddee250d207782e7b.html
Заголовок, (Title) документа по адресу, URL1:
Hexagonal architecture (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)