Является ли соединение websocket ведущим адаптером или управляемым адаптером в гексагональной архитектуре

Является ли соединение websocket ведущим адаптером или управляемым адаптером в гексагональной архитектуре
Является ли соединение websocket ведущим адаптером или управляемым адаптером в гексагональной архитектуре - oleg_savenok @ Unsplash

Нет никаких проблем

Все в порядке с тем, что служба веб-сокетов является как управляющей, так и управляемой.

Рассмотрим пример.

  • У вас есть интернет-магазин, в котором бэкенд и фронтенд взаимодействуют через веб-сокет.
  • Когда пользователь нажимает на кнопку "Купить" во фронтенде, бэкенд должен выполнить соответствующую бизнес-логику.
  • Когда бэкенд обнаруживает, что доступны новые товары, фронтенд должен отобразить некоторое сообщение.

При использовании гексагональной архитектуры бэкенду нужны BuyItemPort и PushMessagePort.

Покупка товара - это бизнес-логика. Поэтому порт BuyItemPort реализован на прикладном уровне. Когда пользователь нажимает на кнопку купить, фронтенд отправляет сообщение через веб-сокет. Оно поступает на службу веб-сокета в бэкенде, которая вызывает BuyItemPort. Поэтому служба веб-сокета должна быть ведущим адаптером.

Согласно бизнес-логике, при появлении новых товаров в магазине должно отправляться push-сообщение. Поэтому на прикладном уровне есть некое событие NewItem с обработчиком события. Теперь обработчик вызывает PushMessagePort, который отправляет сообщение через веб-сокет на фронтенд. Поэтому служба веб-сокета должна быть управляемым адаптером.


LetsCodeIt, 3 января 2023 г., 23:19