본문 바로가기

C#의 속삭임

[C#][패턴] MVVM

* 아..책을 사서 공부 해야되나!~ ㅠ.ㅠ 학교 공부에 학업에 허리가 휜다 휘어 

* 이번에는 MVVM에 대해 공부해본다.

* 웹에는 MVC가 있다. 하지만 그건 웹이고...실버라이트나 WPF에는 MVVM(Model-View-ViewModel)을 쓴단다.





* MVVM패턴이란?

** 데이터 모델분과 뷰 그리고 뷰에서 발생되는 이벤트 행동을 뷰모델로 나눈는 것이다.( 근데 작업을 하다 보면 몰라도 자연스래 이래 나누고 싶었을것이다...-0-)

** 즉, 일반적으로 View(XAML, Code+이벤트핸들러)<->DataModel이었는데, 이걸 View(XAML,code)<->ViewMode(State+Operations)<->DataModel로 나눈다.




* MVVM패턴 왜쓰나?

** MVC랑 같다. 디자인 개발자를 구분하여 협업하기 위함이다.

*** 각 툴로 개발자는 VisualStudio 를 사용하고, 디자이너는 Blend를 사용한다.

** 반복된 이벤트 핸들러와 비즈니스로직을 캡슐화 하여 관리 할수 있고 재사용 할수 있다.

** 객체의 상관관계에 제약받지 않고 좀더 편리하게 이벤트들을 실행할수 있다.

** 다른이가 보더라도 또 자기 자신이 보더라도 유지 보수가 쉬워 질것입니다.




* MVVM을 배우기 앞서 Command패턴.

** Command패턴이란 요청을 객체의 형태로 캡슐화하여 사용자가 준 요청을 나중에 보낼 수 있도록 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 그리고 취소를 가능하게 만드는 패턴이다. 즉, 여러 객체들에서 발생하는 일들을 Command에서 일괄적으로 명령을 처리를 하게 된다. 그러므로 각의 일들을 분리 시켜서 관리 할 수 있다.

** MVVM으로 나누긴 위해서는 Command패턴을 이용한다. 물론 다른 방법도 있긴 있다. 다른것에는 Attached property등을 사용하는 패턴도 있단다. 




* Behavior

** 말그대로 행동을 가지고 있는 객체이다. 예를 들어 드래그앤드랍이라는 핸동이 있다면 그 행동 하나를 가지고 있는 객체이다. 드래그앤 드랍기능을 가지고 Behavior를 원하는 컨트롤에 부여하면 그 컨트롤은 드래그앤드랍기능을 사용 할 수 있도록 되는것이다.



* MVVM을 이용하여 예제소스 간단하게 실행 해보는것은 나중에~