Где должны быть реализованы порты exaclty?
В реализации DDD с шестиугольной архитектурой приложение может иметь порты (интерфейсы) и адаптеры (клиенты) . В моем текущем проекте я реализую основанные на событиях микросервисы на основе событий. У меня есть уровень обслуживания приложений домена, а также уровень инфраструктуры и уровень адаптера (для прослушивателей команд) .) . Я погуглил много реализаций, а уровень инфраструктуры содержит как адаптеры, так и порты. теперь инфраструктурный уровень однажды вызовет уровень обслуживания приложений, что неправильно, как я понимаю.
Это правильная реализация. Где добавить порты / слушатели команд.
1 ответ
Я делаю следующее сопоставление между слоями DDD и гексагональной архитектурой:
Порты драйверов - это интерфейсы служб приложений DDD, они являются левыми краями шестиугольника.
Внутренняя часть шестиугольника разделена на реализацию сервисов приложений DDD и модель домена DDD.
Управляемые порты (например, интерфейс хранилища или интерфейс службы, реализуемый инфраструктурой), являются правыми краями шестиугольника.
Внутренняя часть шестиугольника реализует порты драйвера и использует управляемые порты.
Адаптер драйвера (например, контроллер REST API или веб-приложение) использует / вызывает порт драйвера. Драйверы-адаптеры являются уровнем представления DDD.
Управляемый адаптер реализует управляемый порт. Управляемые адаптеры являются уровнем инфраструктуры DDD.
Если вы хотите взглянуть, вот моя статья, объясняющая гексагональную архитектуру:
https://softwarecampament.wordpress.com/portsadapters
Надеюсь, поможет.