Pertama, perbedaan utama adalah bahwa ViewModel dapat memiliki perilaku atau metode yang DTO Tidak Harus !!!
Kedua, Menggunakan DTO sebagai ViewModel di ASP.NET MVC membuat aplikasi Anda terhubung erat dengan DTO dan itulah tujuan yang berlawanan dari penggunaan DTO. Jika Anda melakukannya, apa bedanya menggunakan Model domain atau DTO Anda, lebih rumit untuk mendapatkan anti-pola?
Juga ViewModel di ASP.NET dapat menggunakan DataAnnotations untuk validasi.
DTO yang sama dapat memiliki Pemetaan ViewModels yang berbeda, dan Satu ViewModel dapat disusun dari DTO yang berbeda (selalu dengan pemetaan objek, bukan komposisi). karena saya pikir lebih buruk lagi jika Anda memiliki ViewModel yang berisi DTO, kami akan memiliki masalah yang sama.
Dari lapisan presentasi Anda, pikirkan tentang DTO sebagai kontrak, Anda akan menerima objek yang harus Anda anggap asing bagi aplikasi Anda dan tidak memiliki kendali apa pun padanya (bahkan jika Anda memiliki layanan, lapisan dto, dan presentasi. adalah milikmu).
Terakhir, jika Anda melakukan pemisahan yang bersih ini, pengembang dapat bekerja sama dengan mudah. Orang yang mendesain ViewModels, Views, dan Controllers tidak perlu khawatir tentang lapisan layanan atau implementasi DTO karena dia akan membuat pemetaan saat developer lain menyelesaikan implementasinya ... Dia bahkan dapat menggunakan alat Mocking atau mocking manual untuk mengisi lapisan presentasi dengan data untuk pengujian.