Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

MVC

MVC(Model-View-Controller)는 소프트웨어 공학에서 사용하는 아키텍처 패턴 중 하나다. 패턴의 목적은 사용자 인터페이스로부터 비지니스 로직을 분리하는 것이다. 소프트웨어를 구성하는 컴포넌트를 분리하겠다는 의미다. 소프트웨어 컴포넌트를 분리하면(혹은 느슨하게 연결되도록 하면) 다른 구성요소로의 영향을 최소화하면서 쉽게 수정할 수 있는 장점이 생긴다. 예컨데, MVC 모델은 비지니스로직에 영향을 주지 않고 사용자 인터페이스를 수정하기 위해서 만들어진 패턴이다. 물론 그 반대의 경우 (사용자 인터페이스에 영향을 주지 않고 비지니스로직을 변경하는)도 가능하다.

비지니스 로직과 사용자 인터페이스를 분리한다고 하지만, 분리라기 보다는 두 개의 연결을 느슨하게 만든다는 관점으로 봐야 한다. Controller이 비지니스 로직과 유저 인터페이스를 연결하는 역할을 한다.

  • Controller : 모델에 명령을 내려서 모델의 상태를 변경한다. 예컨데 문서 변경과 같은 작업이다.
  • Model : Controller에 의해서 모델이 변경되면, 변경된 내용을 view에 통지한다.
  • View : 모델로부터 넘어온 정보를 유저가 볼 수 있는 형태로 재현한다.
흐름을 좀더 자세히 그려보자.

  1. 브라우저의 요청을 받은 controller는 model을 업데이트 한다.
  2. Model은 상태를 반환한다.
  3. Controller는 View를 선택한다.
  4. View는 모델로부터 변경값을 가져온다.
  5. 변경값으로 HTML 문서를 만들어서
  6. 브라우저에 반환한다.

웹 애플리케이션에서의 활용

MVC는 개인용 컴퓨터에서 작동하는 애플리케이션의 개발을 목적으로 만들어진 패턴이지만 WWW(World Wide WEB) 애플리케이션을 사용하기 위한 용도로도 폭넓게 사용하고 있다. 다양한 사용 혹은 공개 애플리케이션 프레임워크들이 MVC 패턴을 지원하고 있다.

초기 MVC는 thin client 형태를 취했다. 즉 클라이언트가 서버로 요청을 하면, 모델과 뷰는 완전히 업데이트된 새로운 페이지를 전송했다. 지금은 javascript 언어와 이 언어를 기반으로 한 JavaScriptMVCBackbone과 같은 MVC 컴포넌트의 발전으로 변경된 부분만 클라이언트에 전송하는게 가능하다.

MVC의 역사

MVC는 GUI(그래픽 사용자 인터페이스)를 가진 유저 소프트웨어를 만들기 위해서 만들어진 패턴이다. 1970년대 스몰토크-76에서 MVC가 소개됐으니 40년이 넘은 유구한 역사를 가진 소프트웨어 개발 방식이다. MVC가 일반화 된것은 1988년 쯤이다.

참고