[IT]/Design Pattern

[Design Pattern] MVC패턴이란? (Model-View-Controller) |(Model1, Model2 비교)

ee2ee2 2021. 12. 8. 18:22
728x90
반응형

MVC(Model - View - Controller)

: 어플리케이션을 세 개의 영역으로 나누고, 각 구성요소에 고유한 역할을 두는 개발 방식이다. MVC 패턴을 잘 사용하면, 사용자의 인터페이스로부터 비즈니스 로직을 분리하여 어플리케이션의 시각적 요소나, 다른 비즈니스 로직에 서로 영향없이 쉽게 수정가능한 어플리케이션을 개발 할 수 있다

 


1. MVC 패턴 구조

- 모델(Model) : 어플리케이션이 무엇을 할 것인지 정의한다. 즉, 내부 비즈니스 로직을 처리하기 위한 역할을 하며 DB와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다룬다.

- 뷰 (View) : Model이 가진 데이터를 화면에 보여주기 위한 역할을 한다.

- 컨트롤러 (Controller) : Model과 View 사이의 연결 역할을 한다. Model에 명령을 보냄으로써 Model이 데이터를 어떻게 처리할지 알려주는 역할을 한다. Model이 데이터 처리를 완료하면 결과 값을 View에 전달하는 역할도 한다.

 

Model과 View는 Controller에 의해 연결되며 각각 독립적으로 구현되어야 한다.
이는 유지보수의 편리성, 애플리케이션의 확장성 등 여러 장점을 이끌어 낸다.


 

2. MVC 동작 시나리오

  1. 사용자가 웹 사이트에 접속한다. (URL을 통해 웹 서버에 요청을 전송)
  2.  웹 서버의 요청을 받은 컨테이너가 URL과 매핑된 Controller를 찾는다.
  3. Controller는 사용자가 요청한 동작을 처리하기 위해 Model을 호출한다.
  4. Model은 DB, 혹은 파일에 접근하여 필요한 작업을 수행한 후 그 결과는 Controller에 리턴한다.
  5. Controller는 Model에게 리턴받은 결과를 View에 전달한다.
  6. Controller로 부터 받은 데이터가 반영된 View를 사용자에게 보인다.

 


MVC 패턴에는 Model 1방식과 Model2 방식이 존재한다. 

Model1과 Model2 방식을 알아보고, 그 차이에 대해 비교해보자.

 

3. Model1 과 Model2

: 둘의 가장 큰 차이는 사용자의 요청을 처음 받는 곳과 처리하는 곳이다. 

-. Model 1

: 비즈니스 로직(Controller)에 화면 (View)영역을 같이 구현하는 방식이다. 사용자의 요청을 화면단에서 모두 처리한다.

즉, 웹 브라우저 사용자의 요청을 JSP에서 받고, JSP 에서 모든 것을 처리한다.

Model 1

 

-. Model 2

: 비즈니스 로직(Controller)과 (View)영역을 분리되어 있는 방식이다. 웹 브라우저의 요청을 Servlet이 받으며, Servlet은 요청을 View로 보여줄지, Model로 보내줄 건지 정하여 컨트롤한다.

Model 2

 

Model1 vs Model2