본문 바로가기
CS/ETC

MVC 패턴과 MTV 패턴

백엔드 초보에게 스프링이 너무 어려웠던 바, 아무래도 프로젝트를 해서 포트폴리오를 만들어야 하는 입장이다보니 장고 공부를 시작하게 되었다. 장고 공부를 하면서 장고는 스프링과는 달리 MTV 패턴이라 불리우는 동작을 기반으로 작동된다고 들어, 그게 뭔가 하고 알아봤더니 같은 건데 이름만 다르게 붙였다고 한다. 그래서 헷갈릴까 싶어 간략히 정리해둔다.

 

우선, 스프링을 배울 때 MVC 패턴에 대해 공부했다.

 

출처: http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/mvc.html

 

MVC 모델은

M = Model : 어플리케이션의 정보, 데이터 등 백그라운드 데이터를 담당한다

V = View(s) : 사용자에게 보여지는 부분을 출력한다 

C = Controller(s): 중간 관리자 역. 사용자의 입력을 처리하고 흐름을 제어한다

 

MTV 모델은 여기서 이름만 바뀐 것으로,

M = Model: 어플리케이션의 정보, 데이터 등 백그라운드 데이터를 담당한다

T = Template: 사용자들에게 보여지는 화면을 출력한다 (HTML 등)

V = View(s): 데이터가 어떤 상황에서 어떻게 처리되는지를 알려주는 함수가 모여있는 곳이다

 

라는 설명을 들었으나, 결국 MVC 모델과 비교했을 때는 MVC의 뷰가 MTV의 템플릿이고, MVC의 컨트롤러가 MTV의 뷰라고 이해하면 될 성 싶다. 명칭만 다르지 결국 작동 원리는 상단의 다이어그램과 같다.

 

 사용자가 클릭을 하거나 입력값을 넣어주는 등 리퀘스트를 실행하면 MTV 모델 기준으로 뷰에서 본 값을 받아 처리하고, 만약 데이터를 찾아볼 게 있다면 모델에게 이를 요청해 받아온다. 그리고 그에 상응하는 값을 화면에 띄워야 할 시 템플릿에 이를 올려주는 식이라고 한다. 내가 아직 장고 초보라 가르쳐주는 사람이 눈높이에 맞춰 쉽게 설명해준 것 같지만, 이정도로도 일단 기본 개념에 대한 이해는 됐다.

 

 이렇게 세 개의 부분이 각각 독립적으로 맡은 임무를 수행하면서 장고(혹은 다른 백엔드 프로그램?) 전체를 구동시키는 것이다. 식으로 구분하는 이유는 어느 한 부분에서 문제가 생겼을 때 확인하기도 쉽고, (객체지향 프로그래밍의 의의와 비슷하지 않을까?) 유지보수나 디자인, 개발 등에 유용하기 때문이다. 

 

 

 

'CS > ETC' 카테고리의 다른 글

특정 사이트를 차단하는 네 가지 방법  (1) 2020.07.24