모델-뷰-뷰모델
보이기

모델-뷰-뷰모델(model–view–viewmodel, MVVM)은 소프트웨어 아키텍처 패턴의 하나이다.
MVVM은 마크업 언어나 GUI 코드를 통해 그래픽 사용자 인터페이스의 개발을 비즈니스 로직이나 프론트엔드 로직("데이터 모델")과 분리를 용이케 한다. MVVM의 뷰 모델은 값 변환기이며,[1] 이는 뷰 모델이 모델로부터 데이터 객체를 노출(변환)시키는 일을 맡음으로써 객체들이 쉽게 표현될 수 있게 한다는 의미이다. 이러한 관점에서 뷰 모델은 단순한 뷰 이상의 모델이며 뷰의 디스플레이 로직 대부분을 관리한다.[1] 뷰 모델은 중재자 패턴을 구현할 수 있으며 뷰가 지원하는 유즈 케이스들의 집합 주변 백엔드 로직에 대한 접근 권한을 정리한다.
MVVM은 사용자 인터페이스의 사건 기반 프로그래밍을 단순하게 만들 목적으로 마이크로소프트의 설계자 켄 쿠퍼와 테드 페스터스에 의해 발명되었다. 마이크로소프트의 WPF 및 실버라이트 설계자 중 한 명인 존 구스먼은 2005년 MVVM을 자신의 블로그에 발표하였다.[2]
모델-뷰-뷰모델은 특히 닷넷 플랫폼을 수반하지 않는 구현체에 대해 모델-뷰-바인더(model–view–binder)라고도 부른다. ZK, KnockoutJS는 모델-뷰-바인더를 사용한다.[2][3][4]
비평
이 패턴의 비판은 정작 MVVM의 개발자 존 고스먼 자신에게서 비롯되었으며,[5] 그는 MVVM을 구현하는 부하가 단순한 UI 동작에 대해 지나칠 정도로 심하다고 지적한다.
구현체
닷넷 프레임워크
- Caliburn / Caliburn.Micro
- DevExpress MVVM
- DotVVM 오픈 소스 프로젝트
- MVVMLight Toolkit
- ReactiveUI
- Mugen MVVM Toolkit
- Uno Framework - Open Source
자바스크립트 프레임워크
같이 보기
각주
- ↑ 가 나 Google groups. “Thought: MVVM eliminates 99% of the need for ValueConverters”.
- ↑ 가 나 Smith, Josh (February 2009). “WPF Apps with the Model-View-ViewModel Design Pattern”. 《MSDN Magazine》.
- ↑ Massey, Simon. “Presentation Patterns in ZK”. 2012년 3월 24일에 확인함.
- ↑ Steve Sanderson. “KnockoutJS”.
- ↑ John Gossman. “Tales from the Smart Client: Advantages and disadvantages of M-V-VM”.
외부 링크
- “How to implement MVVM (Model-View-ViewModel) in TDD (test-driven development)”. 《마이크로소프트 개발자 네트워크》. Microsoft.
- “Introduction to Model/View/ViewModel pattern for building WPF apps”. 《마이크로소프트 개발자 네트워크》. Microsoft.
- MVVM validation logic, written in Java by Tim Clare
- “Understanding MVVM: A Guide for JavaScript Developers”. 《AddysOnmani.com》.
- “MVVM Step by step tutorial”. 《learnmvvm.com》.