Do Dat

MVC패턴 모델(Model), 뷰(View), 컨트롤러(Controller) 본문

프로그래밍

MVC패턴 모델(Model), 뷰(View), 컨트롤러(Controller)

Jayzzz 2017.08.31 16:38

 

 

 

모든 어플리케이션은 수백 줄의 프로토타입 코드나 하룻밤만에 만든 장난스러운 프로젝트에서 시작한다.

 

하지만 이 어플리케이션 코드에 새로운 기능을 추가하다 보면 점점 이해하거나 수정하기가 어려워진다.

 

이럴떄 소프트웨어 구조를 더 쉽게 유지하고 수정하기 위한 용도로 MVC패턴을 사용하게 된다.

 

 

 

 

 

 

 

MVC의 기본 개념은 어플리케이션을 모델, 뷰, 컨트롤러 세부분으로 나누는 것이다.

 

 

~ 모델(Model) : 데이터이자 비지니스 로직

 

~ 뷰(View) : 화면상의 윈도우

 

~ 컨트롤(Controller) : 이둘을 연결한다고 생각하면 된다.

 

 

 

뷰와 컨트롤러는 모델에 의존하지만 모델은 화면 표시나 컨트롤러와는 독립적이다. 이게 바로 MVC의 핵심이다.

 

모델에 대한 작업을 할떄 어플리케이션 로직이나 화면상 표혀네 영향을 주지 않는다는 것이다.

 

(웹투파이, 피라미드, 장고, 지오토, 키스 등의 사용 파이썬 웹프레임워크가 MVC패턴을 사용한다.

 

 

 

 

 

 

위의 그림을 보면 알수 있듯이 컨트롤러, 모델, 뷰 간의 상호작용 흐름이 나온다.

 

사용자가 애플리케이션과 컨트롤러에 최초 처리를 요청한다. 그후 데이터 생성, 갱신, 삭제라는 모델 조작을 한다.

 

그리고 모델은 이 결과를 컨트롤러에 전달하고 다시 뷰에 결과가 전달되어 사용자가 결과를 보게 된다.

 

 

 

 

 

 

 

 

1. 모델(Model) : 어플리케이션의 지식

 

 

~ 모델(Model)은 애플리케이션의 주춧돌이라고 할 수 있다.

 

뷰와 컨트롤러는 모델에 의존하지만 모델은 화면 표시나 컨트롤러에 독립적이다.

 

모델은 데이터와 데이터가 동작하는 방식을 제공하며 상태 정보와 이 상태를 변경하는 메소드가 있지만 이정보가

 

시각화되는 기능은 없다.

 

모델을 프로그램 데이터의 무결성을 유지하는 책임을 진다. 데이터의 무결성이 깨지면 모두에게 좋지 않다.

 

 

~ 모델 작업을 할때 염두해야 할 Tip

 

* 데이터 모델을 생성하고 이를 다루는 인터페이스를 만든다.

 

* 데이터를 검증하고 모든 에러를 컨트롤러에 보고한다.

 

* 유저 인터페이스를 직접 다루지 않는다.

 

 

 

 

2. 뷰(View) : 지식의 표현

 

 

~ 뷰(View)는 컨트롤러를 통해 모델로부터 데이터를 받고 이를 시각화한다,.

 

여기에는 복잡한 로직이 포함되지 않아야 한다. 복잡한 로직은 모델이나 컨트롤러에 어울린다.

 

예를 들어 사용자가 스마트폰이나 PC를 사용하는 상황에 따라 화면 표시를 달리해야하는 어플리케이션의 시각화 메소드를 수정해야

 

한다면 뷰를 수정하면 된다. 여기는 HTML, XML 등이 포함된다.

 

 

~ 뷰 작업을 할때 염두해야 할 Tip

 

* 최대한 간결하게 유지한다. 간단한 비교문과 반복문만 사용한다.

 

* 데이터베이스의 직접 접근을 피한다.

 

* 순환문과 비교문 이외의 로직을 사용한다. 이를 분리시키면 모든 복잡한 로직을 모델에서 수행하도록 해야하기 때문이다.

 

 

 

 

3. 컨트롤러(Controller) : 모델과 뷰의 연결고리

 

 

~ 컨트롤러(Controller)의 핵심 요소는 데이터를 받고 시스템의 다른 부분에 전달하는 것이다.

 

컨트롤러는 '얇게', 그리고 시스템 요소의 연결고리로만 사용해야 한다.

 

 

~ 컨트롤러를 사용할때 주의 사항 Tip

 

* 사용자의 요청으로 부터 데이터를 받고 모델에 전달해서 이를 처리하고 저장한다.

 

* 뷰에 데이터를 전달해서 화면에 표시한다.

 

* 모든 요청 에러와 모델 에러를 처리한다.

 

* 다음사항에는 피하도록한다. (데이터를 화면에 표시한다. 데이터베이스와 로직을 직접다룬다)

 

 

똑똑한 모델, 최소한의 컨트롤러, 멍청한 뷰가 필요하다.

 

 

 

 

 

그렇다면 MVC패턴의 장점은 어떤 것들이 있을까??

 

 

 

MVC패턴의 장점

 

 

1. 로직과 데이터 등 어플리케이션을 세부분으로 분리함으로써 더 이해하기 쉬워지고 부속간의 의존성이 낮아진다.

 

2. 개발자들은 특정 영역에 특화되는 경우가 많다. 예를 들어 어떤 개발자는 사용자 인터페이스만 만들고 어떤 개발자는 로직만

 

개발하는 식이다. 따라서 특정 코드에만 집중할 수 있도록 업무를 분할 할 수 있다.

 

3. MVC를 사용하면 로직에 전혀 영향을 주지 않고 화면 표시를 수정 할 수 있다.

 

4. MVC를 사용하면 화면 표시에 전혀 영향을 주지 않고 로직을 수정 할 수 있다.

 

5. MVC를 사용하면 뷰 구현을 수정하지 않고 사용자 동작에 반은하는 코드를 수정 할 수 있다.

 

 

 

 

0 Comments
댓글쓰기 폼