Где должны быть реализованы порты exaclty?

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

Это правильная реализация. Где добавить порты / слушатели команд.

1 ответ

Я делаю следующее сопоставление между слоями DDD и гексагональной архитектурой:

  • Порты драйверов - это интерфейсы служб приложений DDD, они являются левыми краями шестиугольника.

  • Внутренняя часть шестиугольника разделена на реализацию сервисов приложений DDD и модель домена DDD.

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

  • Внутренняя часть шестиугольника реализует порты драйвера и использует управляемые порты.

  • Адаптер драйвера (например, контроллер REST API или веб-приложение) использует / вызывает порт драйвера. Драйверы-адаптеры являются уровнем представления DDD.

  • Управляемый адаптер реализует управляемый порт. Управляемые адаптеры являются уровнем инфраструктуры DDD.

Если вы хотите взглянуть, вот моя статья, объясняющая гексагональную архитектуру:

https://softwarecampament.wordpress.com/portsadapters

Надеюсь, поможет.

Другие вопросы по тегам