MixedCode

안녕하세요. 믹스드코드 입니다.
1979년 MVC로 시작한 UI Pattern의 발전사를 통해 MVC,MVP,MVVM 등 대표적인 UI Design Pattern들에 대해 알아보고  MVVM 패턴이 다른 UI 패턴들에 비해  어떤 장단점들을 가지고 있는지 알아 봅니다.


그리고 각각의 UI Pattern들이 실질적으로 요즘어떤 UI 기술들과 결합되어 사용되고 있는지도 함께 알아보겠습니다.


1.MVC(Model,View,Controller) UI Pattern
ㅁModel
§데이터 구조 표현 및 데이터를 담거나 옮긴다.
§비지니스로직(BLL) 및 데이터 처리(DAL) 기능을 포함한다.
§ORM(EF,Nhibernate) 활용.
§Model 상태를 ControllerViewNotify 가능.

ㅁView
§HTMLUI를 표현하다.
§Model기반 View에 데이터를 표현가능

ㅁController
§화면,화면이벤트 및 데이터 흐름제어를 담당
§모델을 제어하고 상호작용하며 뷰에전달한다.
§뷰를 선택하고 뷰에 모델을 전달한다.
§뷰를 직접적으로 제어하거나 관여하지 않는다.

u장점:  UI 패턴 중  구현이 가장 쉽다.
u단점:  ViewModel 간 의존성이 크고 UI 로직이 복잡한 경우 적절치 않다.

ㅁ적용 분야
-주로 대부분의 현대적 Web Application(FrontEnd & Server Side) 개발 시  관련 개발언어와 개발 프레임워크 환경에서 지원됨.
-ASP.NET MVC5, Spring MVC Framework,AngularJS,Django Python MVC Framework,PHP7 Framework(CodeIgniter,CodeIgniter)등등



2. MVP(Model,View,Presenter) UI Pattern
ㅁModel
§데이터 구조 표현 및 데이터를 담거나 옮긴다.
§비지니스로직(BLL) 및 데이터 처리(DAL) 기능을 포함한다.

ㅁView
§UI를 표현한다(HTML, Activity ).
§UI 이벤트를 Presenter에게 전달한다

ㅁPresenter
§뷰에서 발생하는 이벤트를 처리한다.
§뷰를 직접적으로 제어 업데이트 하며 UI로직 처리를 담당한다.
§주로 뷰와 1:1로 매칭된다.
§모델 및 데이터 변경상태에 맞게 뷰에 데이터를 제공한다.

u장점:  ViewModel간의 의존성이 제거된다.
u단점:  ViewPresenter1:1 관계로 뷰 의존성이 커 뷰 중심적으로 설계된다.(다양한 뷰에 대한 Presenter 기능의 재사용이 어렵다. )

ㅁ적용 분야
-Winform,WPF등 각종 Desktop Application 개발에서 부터 ASP.NET Webform을 이용한 웹어플리케이션 개발, XCode기반의 IOS Native App, 안드로이드 스튜디오,이클립스 ADT Adroid Native APP개발 등 Application 개발 전 분야에서 다양하게 사용되고 있음.



3.MVVM(Model,View,ViewModel) UI Pattern
ㅁModel
§데이터 구조 표현 및 데이터를 담거나 옮긴다.
§비지니스로직(BLL) 및 데이터 처리(DAL) 기능을 포함한다.

ㅁView
§데이터 바인딩을 통해 데이터 상태변경을 알아차리고 자동 갱신한다.
§ICommand 인터페이스를 통해 명령을 ViewModel에 전달한다.
§뷰모델과의 느슨한 결합을 통해 데이터를 표현한다.

ㅁViewModel
§뷰를 직접 참조하지 않는다.
§다양한 뷰에 대한 표현이 가능하다.
§주로 뷰와 1:n로 매칭된다.
§데이터 바인딩기법을 이용 데이터 상태를 뷰에 알린다

u장점:  View가 완전한 Model ViewModel의 의존성에서 벗어난다. 다양한 View에서의 코드 재사용이 가능하다.
u단점: ViewModel 개념 구현이 어렵고  플랫폼 제한적이다.


ㅁ적용분야
최근 다양한  Appication 개발분야에서 MVVM UI Pattern 지원이 늘어나고 있습니다.
WPF,Knockout.js, Angular.js,Xamarin.Forms,UWP, React,Swift for IOS,IONIC 










Comments

Leave a Reply

*