MVC 패턴이란?

Bummy·2023년 2월 7일
0

웹개발

목록 보기
1/7
post-thumbnail

MCV 패턴이란?

MVC(모델-뷰-컨트롤러)는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있습니다. 이러한 "관심사 분리"는 더나은 업무의 분리와 향상된 관리를 제공합니다.


출처: https://developer.mozilla.org/ko/docs/Glossary/MVC


MVC 패턴은 비즈니스 로직을 분리해서 각 컴포넌트의 역할에 맡는 업무를 담당하는 것을 의미합니다.

Model, View, Controller

Model

  • 데이터와 관련된 책임을 담당하는 레이어
  • 주로 상태 변화를 처리한다.
  • 데이터와 행동을 갖는 객체이다.

View

  • 사용자에게 보일 사용자 인터페이스를 담당하는 레이어
  • 웹에서는 웹 브라우저로 랜더링 되는 페이지가 해당된다.
  • 데이터, 로직은 없어야한다.

Controller

  • Model과 View를 연결해주는 레이어
  • 일종의 중개자이며 컨트롤러를 사용자의 요청에 맞는 서비스를 실행하게 된다.
  • 처리한 모델의 값을 뷰에 전달해서 반환한다.
  • 사용자의 요청(웹 브라우저로 들어오는 요청)을 가장 먼저 마주한다.

📌 컨트롤러를 제외한 레이어(모델, 뷰)는 다른 레이어를 알아서는 안된다.

MVC 실행 순서(Spring)

  1. DispatcherServlet이 요청을 수신
  2. DispatcherServlet은 Handler Mappin에 어느 Controller를 사용할 것인지 확인
  3. DispatcherServlet은 요청을 해당 Controller에 전송하고 서비스 요청의 처리 결과를 리턴 받음
  4. ModelAndView Object에 수행결과가 포함되어 DistpatcherServelt에 리턴
  5. ModelAndView는 실제 JSP정보를 가지고 있지 않으며 ViewResolver가 논리적 이름을 실제 JSP 이름으로 변환
  6. View는 결과정보를 화면에 표현

MVC의 장단점

MVC의 장점

  • 기능별로 코드를 분리하여 하나의 파일에 여러 기능을 하는 코드가 모이는 것을 방지하여 가독성과 유지보수 등에 장점이 있다.
  • 각 구성요소들을 독립시켜 개발을 진행할 수 있어 개발에 있어 효율성과 확장성이 증가한다.
  • 개발 후에도 쉽게 확장이 가능하며 유지보수가 편리하다.

MVC의 한계

Model과 View는 서로의 정보를 갖고 있지 않은 독립적인 상태라고 하지만 Controller를 통해 소통을 이루기에 의존성이 완전히 분리될 수 없다. 그래서 복잡한 대규모 프로그램의 경우 다수의 View와 Model이 Controller를 통해 연결되기에 불필요하게 Controller가 커지는 현상이 발생하기도 한다.
이러한 현상을 Massive-View-Controller 현상이라고 하며 이를 보완하기 위해 MVP, MVVM, Flus, Redux 등의 다양한 패턴이 생겨났다.

Reference

0개의 댓글