контроллеры ведь по сути своей содержат код "вариантов использования"? Ну, если брать ddd, то Domain layer содержит сервисы уровня домена, сущности, агрегаты и т.д., а контроллер это сервис уровня приложения ведь? Ну типа паттерн command? Пользователь взаимодействует с интерфейсом, вызывается контроллер который в себе уже работает с доменом, так?