- 국기기관을 입법,사법,행정으로 나누듯이 규모가 커지고 복잡해질 때에는 특정한 기준으로 분리해서 접근합니다.
- 이와 마찬가지로, 웹사이트를 비롯한 소프트웨어는 Model,View,Controller로 나뉘고 MVC란 접근법이 많이 사용됩니다.
MVC
View란?
- 눈에 보이는 것, 웹의 경우 html과 css로 나타내는 요소들을 일컫습니다.
Controller란?
- 무언가를 제어하는 것을 의미합니다. 프로그래밍이 많이 이루어지는 부분입니다.
Model이란?
- 어플리케이션의 정보, 데이터와 관련된 부분입니다.
MVC는 Model,View,Controller의 앞머리를 딴 글자입니다.
라이브러리 vs 프레임워크
- 여러 회사 비영리 단체, 혹은 개인들이 MVC 구조의 기본 설계가 갖춰진 상태인 MVC 웹 프레임워크를 제공합니다.
- MVC 웹 프레임워크를 건물에 비유를 하면, 건물의 기초 골격과 수도, 전기, 난방이 설치된 채로 사용자가 원하는 대로 집을 개조하고 꾸밀 수 있게 제공되는 것입니다.
- 라이브러리는 각 각 개별적인 기능들(비유하자면 문짝이나 욕조 등의 부속품)이라고 하면 프레임워크는 이것들이 연결되어 기초적인 제품 형태를 갖춘 상태를 뜻합니다.
- 쉽게 말해, 내가 무언가를 가져다가 쓴다는 느낌이 든다면 그것을 라이브러리를 사용하는 것이고(내가 갑), 내가 무언가의 틀 안에서 작업한다는 느낌이 든다면 프레임워크입니다.(프레임워크가 갑)
인기 MVC 프레임워크
프레임워크 | 언어 |
---|
Spring | Java |
Django | Python |
ASP.NET | C# |
Express | JavaScript |
Ruby on Radils | Ruby |
Laravel | PHP |
MVC는 크게 두 가지 패턴으로 구분할 수 있습니다. 이 중, 스프링은 MVC2패턴을 채택하였습니다.
MVC1
- MVC1 패턴의 경우 View와 Controller를 모두 JSP가 담당하는 형태를 가집니다.
- 즉 JSP 하나로 유저의 요청을 받고 응답을 처리하므로 구현 난이도는 쉽습니다.
- 단순한 프로젝트에는 괜찮겠지만 내용이 복잡하고 거대해질수록 이 패턴은 힘을 잃습니다.
- JSP 하나에서 MVC 가 모두 이루어지다보니 재사용성도 매우 떨어지고, 읽기도 힘들어집니다. 즉 유지보수에 있어서 문제가 발생합니다.
MVC2
-
MVC2 패턴은 널리 표준으로 사용되는 패턴입니다. 요청을 하나의 컨트롤러(Servlet)가 먼저 받습니다.
-
즉 MVC1과는 다르게 Controller, View가 분리되어 있습니다.
-
따라서 역할이 분리되어 MVC1패턴에서의 단점을 보완할 수 있습니다.
-
그러므로 개발자는 M, V, C 중에서 수정해야 할 부분이 있다면, 그것만 꺼내어 수정하면 됩니다. 따라서 유지보수에 있어서도 큰 이점을 가집니다.
-
MV2는 MVC1 패턴보다 구조가 복잡해질 수 있지만, 개발자가 이러한 세부적인 구성까지 신경쓰지 않을 수 있도록 각종 프레임워크들이 지금까지 잘 발전되어 왔습니다. 그 중에서 대표적인 것이 바로 스프링 프레임워크입니다.
Spring Framework의 MVC2 패턴
-
스프링에서는 유저의 요청을 받는 DispathcerServlet이 핵심입니다. 이것이 Front Controller의 역할을 맡습니다.
-
Front Controller(프런트 컨트롤러)란, 우선적으로 유저(클라이언트)의 모든 요청을 받고, 그 요청을 분석하여 세부 컨트롤러들에게 필요한 작업을 나눠주게 됩니다.
-
모든 과정은, 스프링 프로젝트를 실행하여 디버깅할 시 로그에서 모두 확인할 수 있습니다.