Я не вижу необходимости в интерфейсах для ваших прикладных служб. Поскольку они обычно организуют определенные c сценарии использования приложений, не должно быть разных реализаций одного и того же типа рабочего процесса. Кроме того, они не должны иметь зависимости от самой инфраструктуры, а скорее организовывать рабочий процесс действий, которые должны произойти, путем вызова операций в репозиториях, доменных службах или агрегатах.
Более важно убедиться, что ваше приложение службы получают доступ только к интерфейсам, а не к конкретным реализациям, зависящим от инфраструктуры. Это означает, что он должен использовать только интерфейсы для репозиториев или компонентов, которые обращаются к другой инфраструктуре (например, сервисный компонент, который делает запросы к внешним системам).
Однако, если есть интерфейсы для ваших приложений (или вариантов использования), интерфейсы должен быть определен на уровне приложения. Это то же правило, что и для интерфейсов домена (например, интерфейсов репозитория), которые должны находиться на уровне домена.