2Bbear's knowledge workshop

Mvvm이란 무엇인가

Code/C#2019. 2. 28. 10:12


(출처 : https://happybono.wordpress.com/2017/10/10/mvvm-i-mvvm-%ED%8C%A8%ED%84%B4%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90/)



- 설명 -

Mvvm이란 Model, View, ViewModel을 줄인 약자로써 MVC 패턴에서 단점으로 여겨지는 View와 Model의 의존성을 최소화 하기 위해 사용되어진다. 

간단히 말하자면 화면에 보이는 View 와 프로그래밍적 로직을 담고 있는 Model을 서로 분리해서, Model을 기준으로 다른 View로 표현하게 할 수 있고, View를 기준으로 다른 데이터를 표현하기 위해 Model을 바꾸는 것이 쉬운 구조로 만드는 것이 주 목적이다.


- 주요 기능-

이러한 Mvvm을 구현하기 위해서 만들어진것이. Command 기능과 데이터 바인딩이라는 기법이다.


Command는 View에서 UI 이벤트를 처리하기 위해서 만들어졌다.

Command를 이용하여 View에서는 Model이 변경될 때 UI에 붙은 이벤트 이름을 변경할 필요가 없어졌다.


데이터 바인딩은 Model에서 만들어진 Data를 View에 표현하기 위해서 만들어졌다.

데이터 바인딩을 이용하여 Model에서 다른 View로 데이터를 표현할때 View의 UI를 호출하지 않고 데이터를 출력 할 수 있게 되었다.



- 구성 -



기본적으로 UI가 나오는 프로그램의 기본 요소는

자료를 저장할 데이터 ,

데이터를 처리하는 로직 ,

데이터를 표현하는 UI 

이렇게 3가지 정도로 나눌 수 있다.


여기에 Mvvm을 하기 위해 Property - 데이터 바인딩용 과 Delegate-Command용이 추가된다.


이러한 요소들을 Model, ViewModel, View로 나누어 넣으면


Model

- 데이터를 처리하는 메소드


ViewModel

- 데이터를 저장하고 있는 프로퍼티

- 데이터를 저장하기 위한 공간

- 이벤트 처리를 위한 Delegate


View

- Command가 붙은 UI


이렇게 구성이 된다.



- 도움이 되는 프레임워크 또는 라이브러리 -

WPF 

 - DevExpress

 - Prism


- 도움이 되는 예제 -

https://github.com/2Bbear/WindowsProgrmaDevelop/tree/master/WPF