Хотелось бы, чтобы все было так просто. Несмотря на то, что DTO возникла из-за сетевых уровней распределения системы, может возникнуть целый ряд проблем, если объекты домена возвращаются в слои View. Вот некоторые из них:
1.Представляя объекты Домена слою View, представления узнают о структуре объектов домена, что позволяет представлению делать некоторые предположения о том, как доступны связанные объекты. Например, если объект домена «Person» был повторно переведен в представление, с которым он «связан», а в каком-либо другом представлении «Адрес» Person должен быть связан, то на прикладном уровне будет тенденция использовать семантическое подобие person.getAddresse (), который woukd завершается ошибкой, так как в этот момент объект Домена адреса не мог быть загружен в точке По сути, поскольку доменные объекты становятся доступными для слоев представления, представления всегда могут делать предположения о том, как данные становятся доступными.
2.) Когда доменные объекты привязаны к представлениям (особенно в толстых клиентах), всегда будет тенденция к центрированной логике View, чтобы проникнуть внутрь этих объектов, что делает их логически поврежденными.
В основном из своего опыта я видел, что предоставление доменных объектов, доступных для Views, создает архитектурные проблемы, но есть проблемы с использованием DTO, так как использование DTO создает дополнительную работу с точки зрения создания Assemblers (DTO для объектов Domain и наоборот) , Распространение аналогичных объектов, таких как объект домена пациента, DTO пациента и, возможно, бин пациента, связанный с просмотром.
Очевидно, что нет правильных ответов на это, особенно в толстой клиентской системе.
Я позаимствовал этот короткий и не полный, но верный ответ на клише DTO у:
http://www.theserverside.com/discussions/thread.tss?thread_id=32389#160505