정의

MVC 는 Model, View, Controller의 약자

프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴

  • Model : 내부 비지니스 로직을 처리하기 위한 역할
  • Controller :  어떻게” 처리할 지를 알려주는 역할
  • View : 화면에 “무엇” 인가를 “보여주기 위한 역할”

<출처 : https://asfirstalways.tistory.com/180 >

더보기

C/S(Client - Server)구조로 요청을 하면 그에 맞는 응답을 하는 구조를 기본으로 하고 있다.

 

1. 웹 브라우저가 웹 서버에 웹 애플리케이션 실행을 요청한다. (MVC 구조가 WAS라고 보면 된다.)

2. 웹 서버는 들어온 요청을 처리할 수 있는 서블릿을 찾아서 요청을 전달한다.(Matching)

3. 서블릿은 모델 자바 객체의 메서드를 호출한다.

4. 데이터를 가공하여 값 객체를 생성하거나, JDBC를 사용하여 데이터베이스와의 인터랙션을 통해 값 객체를 생성한다.

5. 업무 수행을 마친 결과값을 컨트롤러에게 반환한다.

6. 컨트롤러는 모델로부터 받은 결과값을 View에게 전달한다.

7. JSP는 전달받은 값을 참조하여 출력할 결과 화면을 만들고 컨트롤러에게 전달한다.

8. 뷰로부터 받은 화면을 웹 서버에게 전달한다.

9. 웹 브라우저는 웹 서버로부터 요청한 결과값을 응답받으면 그 값을 화면에 출력한다.

 

목적 및 장점

서로 분리되어 각자의 역할에 집중 -> 유지보수성, 확장성, 유연성 증가, 중복코딩 문제 해소

비지니스 처리 로직과 사용자 인터페이스 요소들을 분리시켜 서로 영향없이 개발 하기 수월하다는 장점

 

한계점

복잡한 화면과 데이터의 구성이 필요하다면, Controller에 다수의 Model과 View가 복잡하게 연결되어 있는 상황 발생

MVC가 너무 복잡하고 비대해져서, 새 기능을 추가할때마다 크고 작은 문제점 발생 -> Massive ViewController 

위의 문제점을 보완한 여러 다양한 패턴 -> MVP, MVVM, Viper, Clean Architecture, Flux, Redux, RxMVVM 등등

반응형

'기초 컴퓨터 공학' 카테고리의 다른 글

(컴퓨터 기초) 아스키코드, 유니코드  (0) 2021.12.01
디자인 패턴  (0) 2021.09.05
함수형 프로그래밍, 반응형 프로그래밍  (0) 2021.09.05
TDD (Test-Driven Development)  (0) 2021.09.05
REST, RESTful API  (0) 2021.09.05

+ Recent posts