웹 프로그램 개발 시 일반적으로 적용되는 설계 구조를 의미한다. 어떤 의미로는 공식과 비슷한 것이라고 할 수 있다. MVC는 프로젝트의 구성 요소를 Model, View, Controller로 구분하며 각각의 구성 요소는 다른 요소들에게 영향을 미치지 않는다.
Model은 데이터베이스에 저장되는 데이터와 그 데이터를 처리하는 유형과 방법을, View는 사용자의 요청에 대한 결과물을 시각적으로 보여주는 역할을, Controller는 요청에 따라 Model에게 적절한 로직을 가동하도록 지시하고 Model이 응답하면 그 결과를 View에 전달하는 역할을 한다. Model과 View를 이어주는 역할을 담당하는 것이다. 구체적인 예시는 아래와 같다.
- 사용자가 Controller에 요청을 보낸다.(ex. 로컬에 있는 이미지 경로를 입력하고 업로드 버튼을 누른다)
- Controller가 Model에게 요청에 맞추어 데이터를 수정할 것을 지시한다.(ex. 이미지 데이터를 디코딩하여 데이터베이스에 저장하라고 지시)
- Model은 지시대로 데이터를 수정하고 Controller에게 지시사항을 완료했음을 알린다.(ex. 이미지를 저장)
- Controller는 수정된 데이터를 토대로 웹페이지 화면에 표시할 내용을 결정하여 View에게 화면을 출력할 것을 지시한다.(ex. 저장된 이미지를 업로드할 위치에 출력하고 업로드 완료라는 메시지를 띄우라고 지시)
- View가 화면을 출력한다.
MVC는 개발자와 디자이너의 작업 영역을 분리할 뿐 아니라 유연성이 높고 유지보수가 용이하다는 장점이 있다. 하지만 프로젝트 규모가 커질수록 컨트롤러가 지나치게 커지고, 유지보수가 점점 어려워진다는 단점이 있다. 이 단점을 보완하기 위해 MVP, MVVM 등 새로운 디자인 패턴도 쓰이고 있다.
'What is □?' 카테고리의 다른 글
06. 웹 서버(WEB)란 무엇인가? (0) | 2021.04.01 |
---|---|
05. 요청(Request)란 무엇인가? (1) | 2021.03.23 |
03. 파싱(parsing)이란 무엇인가? (3) | 2021.03.19 |
02. 쿼리(query)란 무엇인가? (2) | 2021.03.18 |
01. 인공지능이란 무엇인가? (0) | 2020.12.17 |