MVC의 컨트롤러와 MVVM의 ViewModel의 차이점은 무엇입니까?


21

MVC와 MVVM의 차이점을 명확하게 볼 수 없습니다. ViewModel의 Command는 Controller의 Action 메소드와 같습니다. 또한 Controller와 ViewModel은 데이터 바인딩을 통해 모델의 상태를 수정 한 후 자체적으로 새로 고치도록 View에 알립니다. 두 패턴의 주요 차이점은 무엇입니까?

답변:


25

컨트롤러와 ViewModel은 여러 가지면에서 다릅니다.

MVC에서 컨트롤러는보기를 알고 있으며보기를 변경할 수 있습니다. 또한 모델을 알고 호출 할 수 있습니다. MVVM에서 ViewModel은 View의 추상 표현이며 구체적인 UI를 알지 못하므로 Model을 원하는 방식으로 표시하여 원하는대로 표시 할 수 있습니다.

기존 MVC에서 컨트롤러는 모델과 상호 작용하기위한 View 의 전략 일뿐 입니다. 실제로 때로는 컨트롤러가 필요하지 않습니다. MVVM에서는 다른 동작이 필요한 경우 동일한 View에 대해 다른 ViewModel을 가질 수 있으므로 필요하지 않습니다. MVC에서는 모델과 통신하기 위해 예를 들어 ReadOnlyController 또는 AdminController를 가질 수 있습니다. MVVM에서는 두 개의 ViewModel을 가질 수 있으며 View에 필요한 모델을 선택할 수 있습니다.

그러나 그들은 몇 가지 유사점이 있습니다. 두 패턴 모두에서보기는 관찰자 입니다. 기존 MVC에서 뷰는 모델의 관찰자이며 MVVM에서는 ViewModel의 관찰자입니다.

두 패턴 모두 우려를 분리하기위한 것입니다. MVVM은 기본적으로 사용중인 UI 기술과 완전히 독립적 인 View의 추상화를 제공하는 것을 목표로합니다. MVC는 그렇게 멀지 않습니다. 비즈니스 로직 (모델)을 고려하지 않도록 우려 사항을 분리하는 것이 가장 중요합니다.

비슷한 질문에 대한 나의 대답 이 도움 이 될 수도 있습니다.

마지막으로 두 패턴이 모두 같은 가족에 속한다고 말해야합니다. MVVM이 후손 인 MVP는 MVC의 형제입니다. 이 링크를 따라 Martin Fowler의 웹 사이트를 더 자세히 알고 싶다면 모든 세부 사항을 설명합니다.


이러한 모델 뷰 아키텍처는 구현하는 사람들이 가장 잘 이해한다고 생각하지 않습니다. 개발자가 선택하는 것이 중요하다고 생각합니다. 약간 오버 헤드 (MVVM의 경우)로 뷰에 대한 전체 추상화를 원하는지 여부에 따라 MVC 또는 MVVM을 선택합니다.
Pankaj Upadhyay

@Pankaj Upadhyay : 어떤 기술을 사용해야 하는가는 요구 사항과 기술 선택 및 플랫폼의 특유성에 달려 있습니다.
팔콘

MVC 아키텍처는 무엇이든 충분하다고 생각하지만 MVVM이 특히 필요한 문제에 직면하지 않았기 때문일 수 있습니다. IMO, 당신은 절대적으로 느슨하게 만들면 향후 업그레이드에서 더 많은 오류가 향상 될 것이므로보기를 약간 제어해야합니다.
Pankaj Upadhyay

1
@Pankaj Upadhyay : 다양한 UI 기술에 동일한 로직을 사용하려면 MVP가 우수합니다. 나는 당신이 반드시 시야를 통제해야한다고 생각하지 않습니다. 완전히 독립적 일 수 있으며 더 좋지는 않지만 ViewModel을 테스트 할 수도 있습니다. 더 나은 분리는 프로젝트 작업을 더 잘 분할 할 수 있기 때문에 디자이너에게도 도움이됩니다.
팔콘
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.