본문 바로가기
프로그래밍/일반

[디자인 패턴] MVC모델이란?

by 불타는홍당무 2015. 1. 28.


MVC모델이란? 

: Model-View-Controller의 약자로 어플리케이션을 세가지의 역할로 구분한 개발 방법론이다. 이 아키텍처 패턴을 효과적으로 사용하면 사용자 인터페이스로부터 비즈니스 로직을 분리하여 어플리케이션의 시각적 요소와 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 수정 및 유지보수할 수 있다는 장점이 있다.


Model 영역

애플리케이션에 비즈니스 로직과 사용되는 데이터를 다루는 영역이다.

일반적으로 비즈니스 데이터는 DBMS에 의해 관리되고, 그 데이터를 다루는 연산은 SQL문을 통해 구현된다.


View 영역

최종 사용자에게 보여줄 프리젠테이션 로직을 담당하는 영역이다.

일반적으로 자바 웹 애플리케이션에서는 JSP를 통해 구현된다.


Controller 영역

사용자의 요청을 받아 이를 수행하기 위한 비즈니스 로직을 선택하고 호출하며,

수행한 비즈니스 로직의 결과를 뷰를 통해 보여준다.

=> 사용자가 Controller에게 요청을 보내면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.

 

[MVC 모델 1]


*DTO(Data Transfer Object) : 데이터 전송을 위한 개체, VO와 동일한 개념.

모델1의 가장 큰 특징은 요청 흐름을 제어하기 위한 컨트롤러가 특별히 존재하지 않는다는 것이다. MVC로 굳이 구분하자면 클라이언트의 요청을 받은 JSP가 Model 영역을 선택해서 호출하므로 컨트롤러 역할을 수행한다고 볼 수 있다. JSP는 JavaBean을 이용하여 데이터베이스를 연동하여 Model 영역의 수행 결과를 받아 클라이언트에게 보내줄 UI를 생성하므로 View 역할도 수행한다. 프리젠테이션 로직과 비즈니스로직의 분리가 어렵고 그로 인해 뷰의 재활용성이 떨어진다. 차후 수정이 힘들기 때문에 개발기간이 짧은 소규모 프로젝트나, 변경사항이나 요구사항이 적을경우 빠르게 개발할 수 있다는 장점이 있다.

예) 영화 홍보용 사이트

 

[MVC 모델 2 (= MVC 패턴 )]


MVC 패턴이란 애플리케이션을 크게 Model, View, Controller의 세 영역으로 구분하여 영역 간의 결합도를 소화한 패턴이다. 주로 웹 애플리케이션에서 사용되며, 일반 애플리케이션에서도 사용된다. MVC 패턴의 가장 중요한 장점 중 하나는 비즈니스 로직과 프리젠테이션 로직이 분리되었다는 것이다. 즉, 디자이너와 개발자들의 영역이 분리됨으로써 서로 각자의 영역에 더 집중할 수 있다는 장점이 있다.

Model2[ = MVC 패턴 ]에서는 서블릿이 흐름을 제어하는 컨트롤러 역할을 수행한다. 모든 클라이언트의 요청은 서블릿에 전달되어 서블릿이 클라이언트의 요청에 따라 비즈니스 로직을 호출하고 그 결과에 따라 View에 해당하는 JSP를 호출하는 방식이다.

Model2가 Model1에 비해 개발 초기의 부하가 비교적 높고, 아키텍처에 대한 수준 높은 이해를 요구하지만 재사용성이 높고 확장이 Model1에 비해 용이하다. 무엇보다 Model2는 그 구조적 특징으로 인해 자연스럽게 MVC 각 영역의 역할이 구분되도록 해준다.

Model2는 Controller 역할을 하는 서블릿의 역할이 매우 중요하며, 서블릿이 잘못 개발된 경우 애플리케이션 전체에 미치는 영향이 매우 크다. 현재는 많은 시행 착오 끝에 웹 프레임워크 형태로 보급되어 그러한 오류를 방지하고 있다.