Я часто с этим борюсь. Я обычно говорю, что ваш бизнес / сервисный уровень должен принимать доменные объекты в качестве параметров.
Если мы говорим о сети, ваш веб-уровень будет иметь идентификатор. Скорее всего, он создаст экземпляр объекта или извлечет его из сервисного уровня. Поэтому имеет смысл передать его на уровень обслуживания.
Однако часто бывают случаи, когда вам приходится дублировать извлечение объекта. Иногда ваши службы будут загружать объект в любом случае из-за некоторых дополнительных данных, не записанных в веб-слое. У меня даже были случаи, когда слой доступа к данным должен загружать объекты для зависимостей. Кэширование может решить некоторые из этих проблем, а реструктуризация ваших данных / модели может исправить другие. Конечно. Но иногда, в свете производительности или других проблем, передача идентификатора имеет больше смысла.
Подводя итог, предпочтите передачу доменных объектов бизнес-уровню. Но поймите, что по другим причинам вам лучше передать ID, и, к сожалению, должны быть исключения из вашего правила.