Здравствуйте, igor-booch, Вы писали: IB>Я считаю ViewModel должна только вызывать логику классов модели, логику вспомогательных классов и сервисом. IB>По сути ViewModel это код связывающий View и Model и никакой дополнительной логики во ViewModel быть не должно.
В общем-то ViewModel по-моему — это не медиатор, а инкапсулятор логики представления.
Не надо забывать также, что одно из важных предназначений ViewModel (и младших братьев контроллеров/презентеров в MVC/MVP)
— возможность покрытия этой логики тестами. С этой точки зрения presentation logic для конкретного View как раз должна размещаться во ViewModel, а не быть размазанной по сервисам.
Модель на мой взгляд лучше вообще сделать максимально свободной от логики. Хотя в MVC и практикуется подход, когда presentation logic сосредоточена в модели, а контроллер — чистый посредник.
Обычно я стараюсь придерживаться следующей архитектуры — во ViewModel помещается логика представления,
на отдельном BL-слое размещается бизнес-логика (как правило описывается интерфейсными контрактами, которые легко подменять mockup-объектами для целей тестирования). Какая-то специфическая логика доступа к данным
может быть в модели, но от ViewModel эта логика опять же скрывается для уменьшения связности, т.е. ViewModel работает с моделью как с черным ящиком.