[Programming] MVC/MTV 디자인패턴

황인용·2020년 7월 24일
0

Programming

목록 보기
6/8
post-thumbnail

디자인패턴

  • 웹을 설계하면서 발생하는 문제를 해결 또는 문제발생을 방지하기 위해 만들어진 표준화된 메뉴얼
  • 기능별로 분리시켜 상호의존성을 없앰으로써 개발 및 유지보수 시 부작용을 최소화함

MVC(Model-View-Controller)


  • 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴 중 하나
  • 어플리케이션을 Model과 View 그리고 Controller로 역할을 나누어 구분한 디자인 패턴
  • 사용자가 Controller를 조작하면, Controller는 Model을 통해 데이터를 가져옴
  • 가져온 데이터를 View를 통해 사용자에게 전달

MVC 구성요소

Model(모델)

  • Controller(컨트롤러)가 호출할 때, 요청에 맞는 역할을 수행하는 코드.
  • 표시 형식에 의존하지 않는다. 즉, 사용자에게 어떻게 보일지 생각하지 않는다.
  • 사용자의 질의(Query)에 대한 정보를 정의한다.
  • Database에 접근하고 데이터를 CRUD할 수 있는 코드를 정의한다.
  • e.g. DB접근

View(뷰)

  • 데이터를 기반으로 사용자들이 볼 수 있는 화면을 제공하는 코드
  • Controller로 부터 받은 데이터를 웹브라우져에 랜더링 되도록 변환한다.
  • e.g. html

Controller(컨트롤러)

  • Model과 View 사이를 이어주는 로직(매개체)을 담당한다.
  • 사용자는 Controller를 사용하여 Model에 데이터를 요청한다.
  • Model에 데이터를 요청할 때, 각 Model에 맞는 인자값을 가공해서 요청한다.
  • 요청에 대한 응답값을 View에 전달한다.

왜 MVC를 사용하는가?

  • 사용자가 보는 페이지, 데이터 처리, 이 두가지를 중간에서 제어하는 컨트롤러
  • 어플리케이션을 위 세가지로 각각 나누어 개발에 집중할 수 있도록 분리
  • 유지보수성, 확장성, 유연성 등이 효율적으로 증가
  • 코드의 중복성 최소화

MVT(Model-View-Template)

  • Python의 Django 프레임워크에서 사용하는 디자인 패턴
  • Django의 MVC 패턴
  • Model ⇒ Model
    • 데이터베이스에 저장되는 데이터를 CRUD 하는 부분
  • View ⇒ Template
    • 사용자에게 보여지는 UI 부분
  • Controller ⇒ View
    • 프로그램의 비즈니스 로직을 구현하여 데이터를 요청 및 가져오고
      가져온 데이터를 Template에 전달

MVT 처리과정

  1. 클라이언트로 부터 요청을 받으면 URLconf를 이용하여 URL 을 분석

  2. URL 분석 결과를 통해 해당 URL 에 대한 처리를 담당할 View 를 결정

  3. View 는 자신의 로직을 실행 하면서 만일 데이터 베이스 처리가 필요하면 해당 모델에 요청하고 그 결과를 반환받음

  4. View 는 자신의 로직 처리가 끝나면 Template 을 사용하여 클라이언트에 전송할 HTML 파일을 생성

  5. View 는 최종 결과로 HTML 파일을 클라이언트에 보내어 응답

더 자세한 MVT 패턴

[Django] MVT(Model-View-Template) 패턴

profile
dev_pang의 pang.log

0개의 댓글