Это поднималось снова и снова. Мало того, что это довольно существенный обман, но ответ субъективен и спорен. ViewModels - это ответ на DDD и концепция постоянного невежества.
Сказать, что не использовать ViewModels - это плохо, значит игнорировать то, что Django и Rails и большинство сред PHP ORM / MVC вообще не заботятся об этих концепциях. Вы хотите, чтобы кто-то сказал вам, что все эти другие языки и фреймворки «делают это неправильно?».
То, хотите ли вы использовать ViewModels, на 100% зависит от того, какие архитектурные стили вы собираетесь использовать и каковы цели приложения.
Это все равно что задавать вопрос о том, подходит ли перетаскивание GridViews в приложении WebForm? Зависит от многих вещей.
Существует также неправильное представление о СУХОЙ, что у вас здесь. Прокси-классы из службы WCF нарушают DRY? Содержит ли ViewModel логику? Основная цель СУХОГО состоит в том, чтобы не иметь дублированной логики с осмысленной целью. Не нарушают ли это несколько DTO, которые используют общие объектные формы?
Принцип DDD ограниченного контекста также послужил бы хорошим чтением. Если объект ShoppingCart должен работать по-разному в настройках хранилища и веб-сайта электронной коммерции, значит ли это, что вы должны делиться типами? Что происходит, когда единственной общей функциональностью является общая цена (цена + налог + доставка)? Вы создаете базовый класс только для этого, поэтому увеличивая связь? Каковы компромиссы во времени / стоимости / обслуживании для 100% СУХОГО для простого метода, такого как GetTotal (). Нарушает ли DRY, когда это имеет смысл, уменьшение сложности и общей стоимости обслуживания вашей кодовой базы?
Я прошу прощения за то, что ответил так много вопросов, но, надеюсь, теперь вы можете увидеть нюансы и тонкости вопроса, который вы задали. ,)