2011년 5월 23일 월요일

MVC (Model-View-Controller) Pattern

1. MVC (Model-View-Controller) Pattern
웹 어플리케이션에서는 기존의 MVC Model를 MVCD(Model-View-Controller-Dispatch) 또는 MVC Model 2+1 라고 불러야 한다는 소리가 있다. 그 이유는 웹 어플리케이션에서는 View 화면이 Controller에 의해서 Dispatch되기 때문이다.
MVC에는 다음과 같은 특징이 있다.


장점
• 표준에 맞는 개발이 이루어지므로 확장성이 뛰어나다.
• 모듈별 검색이 쉽다.
• 표준화된 코드를 이용하기 때문에 공동 작업이 용이하고 유지보수가 쉽다.

단점
• 개발 과정이 복잡해 초기 개발 속도가 늦다.
• 프로그램 로직을 별도의 자바 클래스나 서블릿을 이용해 처리(소스 변경에 따른 재컴파일, 컨테이너 재시동 등 불편)
• 초보자가 이해하고 프로그래밍하기에는 다소 어렵다
또 Web Application 에서는 다음과 같은 계층으로 MVC모델을 구현한다. 만들고자 하는 Web Application이 어떤 복잡도를 가지고 있든지 간에, 애플리케이션 아키텍처를 아래의 세 가지 논리 계층으로 나누어서 시작하는 것이 기본적으로 도움이 된다.

1. 프리젠테이션 계층(presentation layer) - 클라이언트측에 표시되는 것들이 바로 이 계층에 해당된다. HTML, XML, 자바 애플릿을 들 수 있겠다. 애플리케이션의 사용자 인터페이스로 생각해도 무리가 없는데, 최종 사용자로부터 입력을 받아와서 애플리케이션의 처리 결과를 표시하는데 사용되기 때문이다. MVC의 관점에서 본다면, 이 계층은 뷰(view)의 역할을 맡고 있다. 애플리케이션 로직, 즉 모델이 가지고 있는 정보를 가공하여 사용자에게 보여주는 것이다. 프리젠테이션 계층은 정보가 어디서 관리되고 어떻게 취해지는지에 대해서는 관계하지 않는다. 단지 정보 자체를 보여주는 일에만 충실할 뿐이며, 나머지의 동작은 다른 계층으로 넘긴다. 예를 들어, 웹 브라우저 폼을 통해 검색 질의를 받아들이는 애플리케이션이 있다고 하면, 프리젠테이션 계층의 일은 폼과 검색 결과를 화면에 띄우는 것 뿐이다.

2. 컨트롤 계층(control layer) - 컨트롤 계층은 프리젠테이션 계층과 애플리케이션 로직 계층 사이의 중계 역할을 맡아 애플리케이션의 흐름을 제어하는 부분이다. 프론트 엔드에서 사용자와의 동작과 백 엔드에서 비즈니스 서비스를 연결한다고 정의 하면 깔끔하다. MVC 패턴의 입장에서 본다면 이 게층은 컨트롤러(controller)이다. 모델을 뷰로 전달하며 모델과 뷰 사이의 통신을 조절한다. 여러 개의 프리젠테이션 방법을 사용할 수 있을 때, 어떤 방법을 사용할 것인지를 결정하는 일도 이 계층에서 맡고 있다. 사용자의 언어, 로케일, 액세스 수준 등등에 따라 프리젠테이션이 좌우된다면, 이에 대한 결정을 바로 컨트롤 계층에서 맡는 것이다. 예를 들어, 사이트 관리자는 모든 페이지를 볼 수 있는 반면, 최종 사용자(일반 사용자)는 제한된 처리 결과 만을 담은 페이지를 볼 수 있게 하는 것이다. 애플리케이션으로 들어가는 모든 요청은 반드시 컨트롤 계층을 거지게 되는데, 컨트롤 계층은 이 요청을 어떻게 처리하고 어떤 정보를 돌려주어야 하는지를 결정한다. 이 때 요청과 애플리케이션의 상태에 다라 여러 가지 일들이 다르게 발생한다. 예를 들어, 기업의 내부 인트라넷 서비스를 생각해보자. 컨트롤 계층은 인증과정을 거치지 않은 사용자에게 사용자 인증을 받을 수 있는 화면(프리젠테이션)을 보여줄 것이다. 또, 사용자가 인사관리와 관련된 애플리케이션 로직에 접근할 수 있도록 할 것이며, 그에 맞는 화면(프리젠테이션)을 보여줄 것이다.

3. 애플리케이션 로직 계층(application logic layer) - 이 계층은 애플리케이션의 핵심으로서, 애플리케이션에 대해 사용자들이 "바라는" 동작을 실제로 해주는 부분이다. 데이터와 그 데이터를 가지고 이면에서 수행되는 비즈니스 프로세스를 모델링한다. 또한, 프리젠테이션과 별도로 데이터와 동작원리를 캡슐화하고 있다. 프리젠테이션 계층과 달리, 애플리케이션 로직 계층은 데이터의 저장, 조직, 생성에만 관여하며, 표시에는 관여하지 않는다. 때문에, 애플리케이션 로직으로 설계되는 컴포넌트는 웹 기반 애플리케이션 이외의 용도에도 사용할 수 있다. 동작 자체가 웹 중심이 아니기 때문이다.

이번 장에서 다룰 웹 티어 디자인 패턴은 프리젠테이션 계층과 컨트롤 계층을 포함 합니다.
다음 단원 부터는 웹티어 계층에 주로 사용하는 디자인 패턴에 대하여 살펴 보겠습니다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...