본문으로 이동

모델-뷰-뷰모델

위키백과, 우리 모두의 백과사전.
TedBot (토론 | 기여)님의 2020년 4월 25일 (토) 18:38 판 (봇: 틀 이름 및 스타일 정리)

모델-뷰-뷰모델(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 동작에 대해 지나칠 정도로 심하다고 지적한다.

구현체

닷넷 프레임워크

자바스크립트 프레임워크

같이 보기

각주

  1. Google groups. “Thought: MVVM eliminates 99% of the need for ValueConverters”. 
  2. Smith, Josh (February 2009). “WPF Apps with the Model-View-ViewModel Design Pattern”. 《MSDN Magazine》. 
  3. Massey, Simon. “Presentation Patterns in ZK”. 2012년 3월 24일에 확인함. 
  4. Steve Sanderson. “KnockoutJS”. 
  5. John Gossman. “Tales from the Smart Client: Advantages and disadvantages of M-V-VM”. 

외부 링크