De ce que je comprends, le MCV sépare les définitions de classes (modèle) de la présentation (vue) via le "lien" qu'est le contrôleur. Le contrôleur devrait avoir une seule responsabilité et donc être testable. Les ViewModels sont utilisés pour rassembler des données provenant de plusieurs entités et pour "masser" les données du contrôleur pour la vue.
Il semble que la logique métier n'a pas vraiment sa place... donc je pense qu'une autre couche de services serait appropriée. Je ne suis tout simplement pas sûr de où placer cette couche, ou comment construire les services - devrait-il s'agir d'une classe appelée "services" contenant un tas de fonctions? Je suis un peu nouveau en MVC, donc tout matériel de lecture, exemples, ou des conseils pour débutants seraient géniaux.