웹개발 쪽을 공부하다가 보면 MVC패턴1과 MVC패턴2에 대해서 알게되는데 요 부분은 개발면접에서도 많이 나오는 문제이기 때문에 다시 공부를 해보도록 하자
MVC패턴이란?
MVC (Model-View-Controller) 패턴은 Java EE에서 사용되는 웹 애플리케이션 디자인 패턴 중 하나로, 사용자 인터페이스와 비즈니스 로직을 분리하여 개발하는 방법론입니다. MVC 패턴에는 보통 세 가지 요소인 Model, View, Controller가 있다.
- Model: 데이터와 비즈니스 로직을 담당
- View: 사용자 인터페이스를 담당합니다.
- Controller: 사용자 입력을 처리하고 Model과 View 사이의 상호 작용을 관리
MVC패턴1
MVC 1은 사용자의 요청을 JSP가 전부 다 처리하고, 웹브라우저 사용자의 요청을 받은 JSP는 자바빈이나 서비스 클래스를 사용하여 웹브라우저가 요청한 작업을 처리하고 그 결과를 출력해준다.
단순한 아키텍처와 비교적 쉬운 개발 방법을 제공하므로, 초보 개발자나 작은 규모의 애플리케이션에서 많이 사용되나,
대규모 애플리케이션에서는 유지보수와 확장성 면에서 한계가 있음
또한, 개발자와 디자이너의 분업도 쉽지 않다.
MVC패턴2
MVC 2는 MVC 1과는 달리 프론트 컨트롤러(Front Controller)와 커맨드(Command) 패턴을 사용하여 보다 복잡하고 유연한 아키텍처를 제공한다.
MVC 2에서는 JSP, Servlet, EL(Expression Language), JSTL(JSP Standard Tag Library) 등을 사용하여 View를 구현한다. 또한, AJAX(Asynchronous JavaScript and XML)와 같은 기술을 이용하여 비동기적으로 데이터를 처리할 수 있다. 컨트롤러(Controller)는 프론트 컨트롤러(Front Controller)와 커맨드(Command) 패턴을 사용하여 구현하며, 보통 별도의 Java 클래스로 분리하여 개발한다.
MVC 2는 보다 복잡한 아키텍처를 가지므로, 유지보수성과 확장성 면에서 높은 수준의 성능을 보입니다. 그러나 초기 구축 비용이 높고, 구현하기 어렵다는 단점이 있다.
MVC 1과 MVC 2는 모두 MVC 패턴을 기반으로 하지만, 다음과 같은 차이점이 있다.
* 아키텍처
MVC 1은 아키텍처가 단순하며, JSP(Java Server Pages)와 Servlet만을 이용해서 개발한다. 반면에, MVC 2는 프론트컨트롤러(Front Controller)와 Command 패턴을 이용한 컨트롤러(Controller)를 도입하여 보다 복잡한 아키텍처를 가지고 있다.
* View의 처리 방법
MVC 1은 JSP에서 HTML을 포함하여 동적으로 생성하고 응답한다. 하지만, MVC 2는 JSP보다 더욱 복잡한 View를 생성하기 위해 JSTL, EL(Expression Language) 등의 기술을 사용한다. 또한, AJAX(Asynchronous JavaScript and XML)와 같은 기술을 이용하여 비동기적으로 데이터를 처리할 수 있다.
* 컨트롤러(Controller)의 역할
MVC 1은 컨트롤러(Controller)가 주로 Servlet에서 수행한다. 반면에, MVC 2는 프론트컨트롤러(Front Controller)를 이용하여 컨트롤러를 중앙 집중적으로 관리한다. 이는 유지보수와 확장성 면에서 큰 장점을 가진다.
* 유지보수와 확장성
MVC 2는 코드의 재사용성, 유지보수성, 확장성이 높다. 이는 프론트컨트롤러(Front Controller)와 Command 패턴을 이용하여 컨트롤러를 중앙 집중적으로 관리함으로써, 애플리케이션의 모듈화가 가능하기 때문이다.
이상 MVC패턴1 VS MVC패턴2에 대해서 알아보았다.