İlk olarak, en büyük fark, ViewModel'in DTO'nun Olmaması Gereken davranışlara veya yöntemlere sahip olabilmesidir !!!
İkinci olarak, ASP.NET MVC'de DTO'yu bir ViewModel olarak kullanmak, uygulamanızı DTO ile sıkı bir şekilde birleştirir ve bu, DTO kullanmanın tam tersi bir amaçtır. Bunu yaparsanız, etki alanı Modelinizi veya DTO'nuzu kullanmanın farkı nedir, bir anti-model elde etmek için daha fazla karmaşıklık?
ASP.NET'teki ViewModel, doğrulama için DataAnnotations'ı da kullanabilir.
Aynı DTO, farklı ViewModels Mapping'e sahip olabilir ve One ViewModel, farklı DTO'lardan oluşturulabilir (kompozisyon değil, her zaman nesne haritalama ile). çünkü bir DTO içeren bir ViewModel'e sahipseniz daha da kötü olduğunu düşünüyorum, aynı sorunu yaşayacağız.
Sunum katmanınızdan, DTO'yu bir sözleşme olarak düşünün, uygulamanıza yabancı olduğunu düşünmeniz gereken ve üzerinde herhangi bir kontrolünüz olmayan bir nesne alacaksınız (eski hizmet, dto ve sunum katmanlarına sahip olsanız bile) senindir).
Son olarak, bu temiz ayrımı yaparsanız, geliştiriciler kolaylıkla birlikte çalışabilirler. ViewModel'ları, Görünümleri ve Denetleyicileri tasarlayan kişinin, hizmet katmanı veya DTO uygulaması hakkında endişelenmesine gerek yoktur çünkü diğer geliştiriciler uygulamalarını bitirdiğinde haritalama yapacaktır ... test verileri içeren sunum katmanı.