[WPF] MVC, MVP, MVVM 차이점

2019.01.06 14:06

졸리운_곰 조회 수:131

 

디자인 패턴 중 WPF 많이 쓰이는 MVVM 패턴을 알기전에 MVC, MVP 패턴과의 차이점을 알 필요가 있다.

MVVM의 패턴과 유사한 패턴인 MVC, MVP 패턴과 차이점을 설명하기전에 공통적으로 쓰이는 Model과 View에 대해서 간략히 알도록 하자.

Model - 일종의 데이터(Data)라고 생각하면 된다. 데이터 이외에 데이터를 조작하는 간단한 로직이 추가 되기도 한다.

View - 디스플레이. 사용자에게 제공되어지는 UI Layer를 뜻한다. 보통 Application에서는 View는 CSS/HTML/XML/XAML 등으로 렌더링 된 화면을 가르킨다.

MVC, MVP, MVVM 패턴과 같은 프레임워크가 나오게 된 궁극적인 이유는?

한마디로 각 계층을 분리시킴으로써 코드의 재활용성을 높이고 불필요한 중복을 막기위한 이유이다.

Model과 VIew의 의존성을 어떻게 제어하느냐에 따라 각 패턴이 분류 된다.

 

1.MVC (Model - View - Controller)

모든 입력은 Controller 에서 처리된다. 입력이 Controller로 들어오면 Controller는 입력에 해당하는 Model을 조작(업데이트)하고, Model을 나타내어줄 View를 선택한다.

Controller는 View를 선택할수 있기 때문에 하나의 Controller가 여러개의 View를 선택하여 Model을 나타내어 줄 수 있다.

이때 Controller는 View를 선택만하고 업데이트를 시켜주지 않기때문에 View는 Model을 이용하여 업데이트 하게된다. 

Model을 직접 사용하거나 Model에서 View에게 Notify해주는 방법, View에서 Polling을 통해 Model의 변화를 알아채는 방법등이있다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

이와 같이, View는 Model을 이용하기 때문에 서로간의 의존성을 완벽히 피할 수 없다는 단점이 있고, 좋은 MVC 패턴이라 함은 View와 Model간의 의존성을 최대한 낮게한 패턴이 좋은 패턴이라 할 수 있다.

2. MVP(Model - View - Presenter)

MVC 패턴과 다르게 입력이 View에서 처리된다. Presenter는 View의 인스턴스를 갖고 있으며 View와 1대1 관계이고, 그에 해당하는 Model의 인스턴스 또한 갖고 있기때문에 View와 Model 사이에서 다리와 같은 역할을 한다. View에서 이벤트가 발생하면 Presenter에게 전달해주고 Presenter는 해당 이벤트에 따른 Model을 조작하고 그 결과를 바인딩을 통해 View에게 통보를 하여 View를 업데이트 시켜준다. MVC 패턴과는 다르게 Presenter를 통해 Model과 View를 완벽히 분리해 주기 때문에 View는 Model을 따로 알고 있지 않아도 된다는 장점이 있다. 단점으로는 View와 1대1 관계이기 때문에 View와의 의존성이 매우 강하다.

3. MVVM(Model - View - ViewModel)

ViewModel 뷰모델 말그대로 View를 나타내주기 위한 Model이라고 생각하면 된다. View보다는 Model과 유사하게 디자인 되며, View의 바인딩 될 때 가장 강력하다. 

MVP와 같이 View에서 입력이 처리된다.

MVVM 패턴의 가장 큰 장점이라 함은 Command와 Data Binding으로 MVP 패턴과 달리 View와의 의존성을 완벽히 분리 할 수 있다는 장점이 있다.

Command를 통하여 Behavior를 View의 특정한 ViewAction(Event)와 연결할 수 있으며, ViewModel의 속성과 특정 View의 속성을 Binding 시켜 줌으로써 ViewModel 속성이 변경 될때마다 View를 업데이트 시켜줄 수 있다.

 

 

출처 : https://tomyrhymond.wordpress.com/2011/09/16/mvc-mvp-and-mvvm/



출처: http://hackersstudy.tistory.com/71 [공대인들이 직접쓰는 컴퓨터공부방]

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
778 인텔 x86 어셈블리 메뉴얼 The Intel Assembly Manual file 졸리운_곰 2019.01.24 158
777 Machine Learning in Excel file 졸리운_곰 2019.01.23 180
776 올한해 React.js 개발을 접다 - 충동적인 프레임워크 변경에서 오는 후회 file 졸리운_곰 2019.01.19 106
775 ◈ 금강경(金剛經) 전문(全文) 및 풀이 글 졸리운_곰 2019.01.16 469
774 금강경 한글 전문 졸리운_곰 2019.01.16 272
773 금강경 전문 졸리운_곰 2019.01.16 390
772 How to Call SWI-Prolog from PHP 5 졸리운_곰 2019.01.09 430
771 위키페디어 덤프 파일 mongoDB 임포트 및 php에서 사용 file 졸리운_곰 2019.01.08 204
770 Windows 10에서 VisualStudio 6 설치 file 졸리운_곰 2019.01.07 357
» [WPF] MVC, MVP, MVVM 차이점 file 졸리운_곰 2019.01.06 131
768 MVC, MVP, MVVM 비교 file 졸리운_곰 2019.01.06 114
767 텍스트 마이닝 무엇을 할 수 있을까? 졸리운_곰 2019.01.03 107
766 SD(System Dynamics, 시스템타이내믹스)의 개요 졸리운_곰 2019.01.03 85
765 100 Best GitHub: Expert System 100 깃허브의 전문가 시스템 오픈소스 file 졸리운_곰 2019.01.01 163
764 윈도우10에서 배드섹터복구하는 3가지 방법 : Bad Sector Repair in Windows 10 (3 Ways Included) file 졸리운_곰 2018.12.29 406
763 경제금융용어 700선-게시용.pdf file 졸리운_곰 2018.12.28 712
762 [경제] 경제 영어 (용어) 20000 졸리운_곰 2018.12.28 2458
761 영어 경영용어정리했으니 확인하세요 ^^ file 졸리운_곰 2018.12.28 504
760 경제경영 용어 정리(인사, 노무, 재무, 회계) 졸리운_곰 2018.12.28 496
759 주식관련 용어 정리 졸리운_곰 2018.12.27 673
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED