본문 바로가기

학원/복기

[MVC] MVC Model1 / MVC Model2

MVC(Mode-View-Controller)

 
MVC(Mode-View-Controller)는 소프트웨어 디자인 패턴 중 하나로, 사용자 인터페이스와 비즈니스 로직을 분리하여 애플리케이션을 구성하는 방법을 제공한다. MVC 패턴은 애플리케이션의 유지보수성, 확장성 및 재사용성을 향상시키는 데 도움이 되는 구조를 제공한다. 
 

MVC 구성요소

  • Model(모델) : 애플리케이션의 데이터와 비즈니스 로직을 담당한다. 모델은 데이터를 관리하고 업데이트하며, 변경 사항을 뷰와 컨트롤러에 알린다. 데이터베이스, 파일 또는 외부 서비스와 같은 데이터 저장소와 상호작용한다.
  • View(뷰): 모델의 데이터를 시각적으로 표현하는 역할을 담당한다. 사용자 인터페이스를 구성하고, 모델의 데이터를 표시하며, 사용자 입력을 처리하는 등의 작업을 수행한다. 여러 개의 뷰가 하나의 모델을 표현할 수 있다.
  • Controller(컨트롤러): 사용자 입력을 처리하고, 모델과 뷰 사이의 상호작용을 관리한다. 컨트롤러는 사용자의 요청을 받아 해당하는 작업을 수행하고, 그에 따른 모델의 업데이트와 뷰의 갱신을 조정한다. 사용자의 액션에 따라 모델과 뷰를 변경하고, 필요한 데이터를 모델로부터 가져와 뷰에 전달한다. 

 

Model1 구조

모델1은  View와 Controller를 JSP에서 모두 구현하는 구조를 가지고 있다. 따라서 따라서 클라이언트의 요청을 받는것도 JSP, Model과 상호작용을 하여 변경된 Model을 사용하여 View를 다시 그려내는것도 JSP이다.
즉, 사용자의 요청처리와 요청에 대한 응답처리를 JSP에서 모두 구현하는 구조이다.

MVC Model1구조는 흐름이 단순하기 때문에 개발이 쉽고 중소형 프로젝트에 적합하다는 장점이 있다.

하지만 프로젝트의 규모가 커질수록 유지보수가 어려워지고, View와 Controller가 하나의 JSP에 합쳐져 있기때문에 디자이너와 개발자의 협업에 어려움이 생길 수 있다.
 
 

Model2 구조

 

MVC Model2 MVC Model1과는 다르게 View와 Controller가 분리된 구조를 가지고 있다.

 

클라이언트의 요청을 처리, 흐름제어를 하면서 필요시 Model과 상호작용을 하는 Controller는 Servlet에서 담당하고, 사용자 인터페이스를 보여주는 View는 JSP에서 담당한다. 

이렇게 Controller와 View를 분리함으로써 클라이언트의 요청처리 부분과 응답처리 부분을 분리하여 각 로직을 독립적으로 수행할 수 있다.

따라서 유지보수 측면에서 매우 좋고 디자이너와 개발자간의 협력이 수월하다는 장점이 있다.
하지만 MVC Model1보다 프로그램의 흐름이 복잡하기 때문에 개발 난이도가 높으며, 설계에서 어려움을 겪을 수 있다는 단점이 있다.

 

MVC Model1 VS MVC Model2

 

두 모델의 핵심적인 차이는 두 가지로 요약 가능

  • 클라이언트의 요청처리와 응답처리가 분리되어 있는가
    • MVC Model1은 요청처리와 응답처리가 모두 하나의 JSP에서 이루어짐
    • MVC Model2는 요청처리는 Servlet에서 담당하고 응답처리는 JSP에서 이루어지기 때문에 두 로직이 분리되어 있음
  • 접근방식
    • MVC Model1은 View와 Controller가 하나의 JSP에 존재하기 때문에 클라이언트가 직접적으로 View에 접근할 수 있음
    • MVC Model2에서 클라이언트는 View에 직접적으로 접근할 수 없고 반드시 Controller를 통해서 접근해야 함

두 가지 차이점 중에서도 첫 번째가 가장 핵심적인 차이점이라고 할 수 있다.

또한 MVC패턴에 대해 말할때는 보통 MVC Model2를 의미하며, MVC Model1을 사용하여 개발하는 사례는 거의 없기 때문에 
우리는 MVC Model2에 대한 개념을 잘 알고있어야 한다. 

 
 
 
 
출처: https://velog.io/@ovan/MVC-Model1%EA%B3%BC-MVC-Model2