Tout d'abord, la différence majeure est que ViewModel peut avoir un comportement ou des méthodes qui DTO Doivent Pas !!!
Deuxièmement, à l'Aide de DTO comme un ViewModel dans ASP.NET MVC faire votre demande étroitement couplée à la DTO et c'est exactement la oppostie objectif de l'aide de DTO. Si vous le faites, quelle est la diffrence à l'aide de votre Modèle de domaine ou DTO, plus de complexité pour obtenir un anti-modèle ?
Aussi ViewModel dans ASP.NET pouvez utiliser DataAnnotations pour validation.
La même DTO peut avoir différentes Viewmodel de la Cartographie, et Un ViewModel peut être composé de différents DTO (toujours avec l'objet de mappage pas la composition) . parce que je pense que c'est encore pire si vous avez un ViewModel qui contient un DTO, nous aurons le même problème.
À partir de la couche de présentation, pensez à DTO comme un contrat, vous recevrez un objet que vous avez à considérer comme étranger à votre demande et n'ont pas de contrôle sur celui-ci (même si vous avez des ex du service, la dto et des couches de présentation sont les vôtres).
Enfin, si vous n'cette séparation, les développeurs peuvent travailler de concert avec la facilité.
La personne qui conçoivent des ViewModels, les Vues et les Contrôleurs n'avez pas à vous soucier de la couche de service ou de la DTO de mise en œuvre, parce qu'il va faire de la cartographie les autres développeurs de terminer leur mise en œuvre...
Il peut même utiliser les Moqueries outil manuel ou moqueur pour remplir la couche de présentation avec les données de test.