본문 바로가기
컴퓨터공학

MVVM vs MVC, 장점과 단점

by 책 읽는 개발자_테드 2021. 10. 14.
반응형

MVC

· 애플리케이션을 세 가지 주요 논리 구성 요소인 Model, View, Controller로 분리하는 아키텍처

· 비즈니스 로직과 프레젠테이션 레이어를 서로 분리함

https://www.guru99.com/mvc-vs-mvvm.html

· Model: 로직과 관련된 모든 데이터를 포함

· View: 사용자에게 데이터를 표현하거나 유저와 상호작용을 처리함

· Controller: 모델과 뷰 구성요소 간의 인터페이스

 

MVVM

· 애플리케이션을 세 가지 주요 논리 구성 요소인 Model, View, ViewModel로 분리하는 아키텍처

· 마틴 파울러의 Presentation 모델 패턴에서 파생된 디자인 패턴

· MVVM 패턴의 목표: 비즈니스 로직과 프레젠테이션 로직을 UI로 부터 분리하는 것

   - 이를 통해 테스트, 유지 보수, 재사용이 쉬워짐

· 동작원리:

   1. 사용자의 Action이 뷰를 통해 들어옴

   2. 뷰에서 Action이 들어오면, Command 패턴으로 뷰모델에 Action을 전달

   3. 뷰모델은 모델에게 데이터를 전달

   4. 모델은 뷰모델에게 요청 받은 데이터를 응답

   5. 뷰모델은 응답 받은 데이터를 가공하여 저장

   6. 뷰는 뷰모델과 데이터바인딩하여 화면을 나타냄

https://www.guru99.com/mvc-vs-mvvm.html

· View: HTML, CSS, jQuery 등과 같은 UI 구성 요소. 모델을 UI로 변경함.

· View-Model: 뷰에 필요한 데이터를 모델에 요청하고, 응답받은 데이터를 가공하여 뷰에 전달

· Model: 애플리케이션에서 사용되는 데이터와 해당 데이터를 처리

 

 

MVVM과 MVC의 차이

MVC MVVM
애플리케이션의 진입점은 컨트롤러 애플리케이션의 진입점은 뷰
컨트롤러와 뷰가 1:다수 관계 뷰와 뷰모델이 1:다수 관계
뷰에 컨트롤러에 대한 참조가 없음 뷰에 뷰 모델에 대한 참조가 존재
모델을 읽고, 변경하고, 단위 테스트하고, 재사용하기 어려움 복잡한 데이터 바인딩이 있는 경우 디버깅 프로세스가 복잡해짐
모델 컴포넌트를 사용자와 별도로 테스트 가능 별도의 단위 테스트가 쉽고, 코드가 이벤트 기반임

 

MVVM과 MVC의 장단점

  MVC MVVM
장점 · 단순하고 직관적임
· 기능 별로 코드를 분리하여, 하나의 파일에 코드가 모이는 것을 방지하여 가독성과 코드 재사용 증가
· View와 Model 사이의 의존성이 없음
· Command 패턴과 Data Binding을 사용하여 View와 View Model 사이의 의존성이 없음
단점 · View와 Model 사이의 의존성이 높음
· View와 Model의 높은 의존성은 어플리케이션이 커질수록 복잡해지고, 유지보수가 어려움

· View-Model의 설계가 쉽지 않음

https://medium.com/@jang.wangsu/%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4-mvc-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80-1d74fac6e256

 

· 위 그림과 같이 복잡한 대규모 프로그램에서 Controller에 다수의 Model과 View가 복잡하게 연결되어, 새 기능을 추가할 때마다 문제가 발생하고, 코드 분석과 테스트도 어려워질 수 있음

· 이 문제를 해결하기위해 MVP, MVVM 등의 구조가 도입

 

출처

https://donggyu9410.medium.com/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-mvc-mvvm-%EB%B9%84%EA%B5%90-1a4e6c1c860a

https://velog.io/@k7120792/Model-View-ViewModel-Pattern

https://www.guru99.com/mvc-vs-mvvm.html

반응형

댓글