MVC

2020. 12. 7. 17:35공부 정리/Back end

1. MVC


MVC는 Model-View-Controller의 약자

 

  • Model : 모델은 뷰가 렌더링 하는데 필요한 데이터다. 예를 들어 사용자가 요청한 상품 목록이나, 주문 내역이 이에 해당한다.
  • View : 웹 애플리케이션에서 뷰(View)는 실제로 보이는 부분이며, 모델을 사용해 렌더링을 한다. 뷰는 JSP, JSF, PDF, XML 등으로 결과를 표현한다.
  • Controller : 컨트롤러는 사용자의 액션에 응답하는 컴포넌트다. 컨트롤러는 모델을 업데이트하고, 다른 액션을 수행한다.

 

2. architectural (아키텍쳐)


a. MVC Model pattern

출처: https://www.boostcourse.org/web316/lecture/16762

JSP page에서 모든 요청을 처리하기 때문에 구현하기 쉽지만 규모가 커질수록 유지보수에 힘이 들게 된다.

 

 

b. MVC Model2 pattern

출처: https://www.boostcourse.org/web316/lecture/16762
출처: https://www.boostcourse.org/web316/lecture/16762

 

MVC pattern1 방식을 보완한 패턴으로 로직과 디자인 개발의 분리로 인해

웹 애플리케이션이 구조화되어 유지보수 및 확장이 용이해진다.

 

※architectural-pattern관계 mingrammer.com/translation-10-common-software-architectural-patterns-in-a-nutshell/

 

3. MVC의 한계


MVC는 유연하고 확장하기 쉽지만 규모가 커질수록 Model과 View의 의존성이 높다는 한계가 있다.

 

출처: https://medium.com/@jang.wangsu/%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4-mvc-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80-1d74fac6e256

MVC 규모가 커질수록, Controller에 다수의 Model과 View가 복잡하게 연결되어 있는(의존적인) 상황이 생길 수 있다.

이때, 새 기능을 추가할 때마다 복잡하게 연결되어 있는 부분을 확인하면서 구현해야 하기에 유지 보수에 어려움을 가진다. 이렇게 복잡하게 되면 View와 Controller의 연결이 강해져 한계가 오는 것을 Massive ViewController라 한다.

 

이를 해결하기 위해서 MVP, MVVP, MVVM, VIPER 등 여러 패턴으로 파생됐다.

 

 

참고&출처

 

 

'공부 정리 > Back end' 카테고리의 다른 글

VO, DTO, DAO  (0) 2021.02.27
container  (0) 2020.11.20
REST API -Web API  (0) 2020.11.12
Maven  (0) 2020.11.11
servlet, WAS  (0) 2020.11.06