MVC 컴포넌트의 역할
Model
- 컨트롤러가 호출했을때, 요청에 맞는 역할을 수행한다.
비즈니스 로직을 구현하는 영역
으로 응용프로그램에서 데이터를 처리하는 부분이다. - DB에 연결하고 데이터를 추출하거나 CRUD 등의 작업을 수행한다.
- 상태의 변화가 있을때, 컨트롤러와 뷰에 통보해 후속 조치 명령을 받을 수 있게 된다.
- 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야한다.
Controller
- 클라이언트의 요청을 받았을 때, 그 요청에 대해 실제 업무를 수행하는 모델컴포넌트를 호출한다. 또한 클라이언트가 보낸 데이터가 있다면, 모델에 전달하기 쉽게 데이터를 가공한다.
- 모델이 업무를 마치면 그 결과를 뷰에게 전달한다.
- 모델이나 뷰에 대해 알고 있어야 하며, 둘의 변경을 모니터링해야한다.
View
- 컨트롤러로부터 받은 모델의 결과값을 가지고, 사용자에게 출력할 화면을 만드는 일을 한다.
- 만들어진 화면을 컨트롤러로 다시 보내고, 컨트롤러는 이를 웹 브라우저에 전송하여 웹 브라우저가 출력하게 한다.
- 모델과 컨트롤러에 대해 몰라야한다.
MVC 구동 원리
Client-Server 구조로, 요청을 하면 그에 맞는 응답을 하는 구조를 기본으로 하고 있다.
- 웹 브라우저가 웹 서버에 웹 어플리케이션 실행을 요청한다.
- 웹 서버는 들어온 요청을 처리할 수 있는 컨트롤러를 찾아 요청을 전달한다.
- 컨틀롤러는 모델의 메서드를 호출한다.
- 모델은 데이터를 가공하여 값 객체를 생성하거나, DB와의 인터랙션을 통해 값 객체를 생성한다.
- 업무 수행을 마친 결과 값을 컨트롤러에게 반환한다.
- 컨트롤러는 모델로부터 받은 결과값을 View에게 전달한다.
- View는 적절한 화면을 생성하고, 컨트롤러에게 전달한다.
- 컨트롤러는 뷰로부터 받은 화면을 웹서버에 전달한다.
- 웹 브라우저는 웹 서버의 응답을 받고 화면을 출력한다.