-
Model
- Model은 앱이 포함해야할 데이터가 무엇인지를 정의한다.
- Model은 Data와 애플리케이션이 무엇을 할 것인지를 정의하는 부분으로 내부 비즈니스 로직을 처리하기 위한 역할을 한다.
- 모델은 컨트롤러가 호출을 하면 DB와 연동하여 사용자의 입출력 데이터를 다루는 일과 같은 데이터와 연관된 비즈니스 로직을 처리하는 역할을 한다.
View
- 사용자에게 보여주는 화면(UI)
- 사용자와 상호작용을 하며 컨트롤러로부터 받은 모델의 결과값을 사용자에게 화면으로 출력하는 일을 한다.
- MVC에서는 여러개의 View가 존재할 수 있다.
Controller
- Controller는 Model과 View 사이를 이어주는 인터페이스 역할을 한다.
- Controller는 앱의 사용자로부터의 입력에 대한 응답으로 Model 또는 View를 업데이트하는 로직을 포함한다. Controller는 Model이 데이터를 어떻게 처리할지 알려준다.
- 사용자로부터 View에 요청이 있으면 Controller는 해당 업무를 수행하는 Model을 호출하고 Model이 업무를 모두 수행하면 다시 결과를 View에 전달하는 역할을 한다.
MVC 장점
- 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있게 된다.
- 각 구성요소들을 독립시켜 협업을 할 때 맡은 부분의 개발에만 집중할 수 있어 개발의 효율성을 높여준다.
- 유지보수성과 확장성이 보장된다.
MVC 단점
Model과 View는 서로의 정보를 갖고 있지 않는 독립적인 상태라고 하지만 Model과 View사이에는 Controller를 통해 소통을 이루기에 의존성이 완전히 분리될 수 없다.
그래서 복잡한 대규모 프로그램의 경우 다수의 View와 Model이 Controller를 통해 연결되기 때문에 Controller가 불필요하게 커지는 현상이 발생하기도 한다. (Massive-View-Controller 현상이라고 한다.)
Controller를 통해 View와 Model 간에도 관계가 복잡하게 연결되어 있어서 수정 시 테스트가 힘들고, 파악이 어려워 여러 사이드 이펙트를 불러오게 되는 문제점이 있다.
이 문제점들을 보완하기 위해 MVP, MVVM, Flux, Redux 등의 다양한 패턴들이 생겨났다. (더 알아보기!!)
728x90반응형