티스토리 뷰

728x90

MVC 구조란?

MVC 구조는 Model, View, Controller 로 구성된 구조이다.

MVC 구조를 이용하게 되면 웹페이지를 구성하는 요소들(시각적인 요소, 데이터를 담당하는 요소) 드 ㄹ끼리의 간섭없이 각각 독립적으로 개발함으로서 큰 효율을 낼 수 있다는 장점이 있다.

 

 

Model 이란?

Model 은 데이터를 처리하는 역할을 담당한다.

Controller 에서 명령을 받고 Database 에서 데이터를 저장하거나 삭제, 업데이트, 변환 등의 작업을 수행한다.

 

Model은 3가지의 규칙을 가지고 있다.

 

1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.

즉, 화면 안의 네모박스에 글자가 표현이 되도록 사용자가 설정을 하였다면, 네모박스의 위치, 크기, 글자의 내용, 글자의 위치 등의 정보를 가지고 있어야 한다.

 

2. View나 Controller에 대해서 어떤 정보도 알지 말아야 한다.

즉, Model은 오로지 데이터와 관련된 작업을 하기 때문에 Model이 화면의 UI를 변경할 수는 없다.

 

3. 변경이 발생하면, 변경 통지에 대한 처리 방법을 구현해야 한다.

누군가 모델을 변경을 요청하는 이벤트를 보냈을 때, 이를 받을 수 있는 방법을 구현해야함. 모델은 재사용이 가능해야 하며 다른 인터페이스에서도 변하지 말아야 한다.

 

View 란?

View는 우리말로 '보다'라는 의미를 가지고 있는 것처럼, 시각적인 부분, 화면을 담당하는 역할을 한다.

자세히 말하면 '모델의 데이터를 어떤 방식으로 사용자에게 보여줄까?'를 연구하는 요소이다. 

화면의 뼈대를 담당하는 html, 이를 예쁘게 스타일링하는 css, 그리고 이들이 보다 동적으로 작동할 수 있도록 도와주는 javascript를 이용하여 View를 만들어낸다. 

 

View 는 다음과 같은 규칙이 있다.

 

1. 모델이 가지고 있는 정보를 따로 저장해서는 안된다.

화면에 글자를 표시 하기 위해, 모델이 가지고 있는 정보를 전달받게 될텐데, 그 정보를 유지하기 위해서 임의의 뷰 내뷰에 저장하면 안된다. 단순히 네모 박스를 그리라는 명령을 받으면, 화면에 표시하기만 하고 그 화면을 그릴 때 필요한 정보들은 저장하지 않아야 한다.

 

2. 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 한다.

모델과 같은 자기 자신의 빼고는 다른 요소는 참조하거나 어떻게 동작하는지 알아서는 안된다. 그냥 뷰는 데이터를 받으면 화면에 표시해주는 역할만 가진다고 보면 된다.

 

3. 변경이 일어나면 변경통지에 대한 처리 방법을 구현해야만 한다.

모델과 같이 변경이 일어났을 때 이른 누군가에게 변경을 알려줘야 하는 방법을 구현해야 한다. 뷰에서는 화면에서 사용자가 화면에 표시된 내용을 변경하게 되면 이를 모델에게 전달해서 모델을 변경해야 할 것이다. 그 작업을 하기 위해 변경 통지를 구현한다.

그리고 재사용 가능하게끔 설계를 해야 하며 다른 정보들을 표현할 때 쉽게 설계를 해야 한다.

 

Controller 이란?

Controller는 사용자가 접근하려는 URL에 따라서 요청하상을 파악한 후, 그 요청에 맞는 Moel의 데이터를 의뢰하고 데이터를 View에 반영해서 사용자에게 알려준다. 한마디로 전반적인 제어를 담당하는 역할을 하고 이는 java와 같은 언어의 프로그래밍으로 이루어진다. 

 

예시를 들어보면 다음과 같다. 사용자가 네이버에 접속을 한다. 화면에 보이는 네이버 창은 View로 인해 다루어진다. 사용자가 웹툰을 보고 싶어 웹툰 버튼을 클릭하였다. 웹툰 버튼을 클릭하면 웹툰과 관련된 많은 양의 데이터를 Model로부터 불러와야 한다. 이렇게  View와 Model 사이에서 사용자의 요청을 분석하고 이에 맞는 데이터를 불러오는 작용 중간에서 매개하는 요소가 바로 Controller인 셈이다. 

 

Controller 는 다음과 같은 규칙이 있다.

 

1. 모델이나 뷰에 대해서 알고 있어야 한다.

모델이나 뷰는 서로의 존재를 모르고, 변경을 외부로 알리고, 수신하는 방법만 가지고 있는데 이를 컨트롤러가 중재하기 위해 모델과 그에 관련된 뷰에 대해서 알고 있어야 한다.

 

2. 모델이나 뷰의 변경을 모니터링 해야 한다.

모델이나 뷰의 변경 통지를 받으면 이를 해석해서 각각의 구성 요소에게 통지를 해야 한다.

또한, 애플리케이션의 메인 로직은 컨트롤러가 담당하게 된다.

 

 

 

 

 

 

Reference Link

https://newindow.tistory.com/66

https://m.blog.naver.com/jhc9639/220967034588

 

 

728x90