Я считаю, что вы можете практиковать DDD разными способами, и самое важное - это посмотреть на потребности и ситуацию вашего проекта. Если вы будете практиковать DDD в веб-приложении MVP или MVC asp.net, и приложение, вероятно, не будет взаимодействовать с другими внешними системами. Тогда может оказаться излишним использование сервисного уровня и объектов DTO только для того, чтобы НЕ дать уровню представления ничего знать о домене. Наиболее важным является то, что вы скрываете / удаляете знания о создании сущностей, доменной логике и возможности переводить сущности в недопустимое состояние. Все это может быть достигнуто с хорошим API домена. Тогда я чувствую, что может быть хорошей практикой отправлять сущности на уровень представления. Вы также можете использовать репозитории для загрузки сущностей в ваших классах Controller / Presenter на уровне представления.
Если вы посмотрите на множество примеров DDD, то обнаружите, что люди стремятся к тому, что им подходит лучше всего.
Я никогда не видел ни одного примера и практики, где вы представляете свои сущности с помощью интерфейсов. Вы можете многого добиться, используя только внутренние, защищенные и доступные только для чтения атрибуты. Это скроет функции API для слоя представления.
/ С наилучшими пожеланиями BacceSR