첫째, 주요 차이점은 ViewModel이 DTO가하지 말아야 할 동작이나 메서드를 가질 수 있다는 것입니다.
둘째, ASP.NET MVC에서 DTO를 ViewModel로 사용하면 응용 프로그램이 DTO와 밀접하게 연결되며 이는 DTO를 사용하는 목적과 정반대입니다. 그렇다면 도메인 모델 또는 DTO를 사용하는 차이점은 무엇입니까? 안티 패턴을 얻기 위해 더 복잡합니까?
또한 ASP.NET의 ViewModel은 유효성 검사를 위해 DataAnnotations를 사용할 수 있습니다.
동일한 DTO는 서로 다른 ViewModel 매핑을 가질 수 있으며 하나의 ViewModel은 서로 다른 DTO에서 구성 될 수 있습니다 (항상 구성이 아닌 개체 매핑 사용). DTO를 포함하는 ViewModel이 있으면 더 나쁘다고 생각하기 때문에 동일한 문제가 발생합니다.
프레젠테이션 계층에서 DTO를 계약으로 생각하면 응용 프로그램에 대해 낯선 것으로 간주해야하며 제어 할 수없는 개체를 받게됩니다 (예 : 서비스, dto 및 프레젠테이션 계층이 있더라도 당신입니다).
마지막으로 이렇게 깔끔하게 분리하면 개발자가 쉽게 함께 작업 할 수 있습니다. ViewModels, Views 및 Controllers를 설계하는 사람은 다른 개발자가 구현을 완료하면 매핑을 만들기 때문에 서비스 계층이나 DTO 구현에 대해 걱정할 필요가 없습니다. 테스트 용 데이터가있는 프레젠테이션 레이어