MVC (Model, View, Controller)
MVC패턴은, 어플리케이션/서비스 등을 구현할 때 해당 시스템의 구조를 모델, 뷰, 컨트롤러 이 3가지로 구분한 방법론
- Model : 데이터베이스를 클래스화시켜놓은 것
- View : 말 그대로 보여주는 것
- Controller : 모델과 소통하여 뷰에게 현재의 상태를 알려주게 되는 것
Model
기본적으로 애플리케이션의 데이터를 나타냄
여기서 데이터란, 데이터베이스 애플리케이션 단에서 맨 처음 정의되는 여러 변수, 상수 + 데이터들을 다루기 위한 여러 쿼리 등을 비롯한 기능들
사용자는 최종적으로 모델을 통해서만 데이터에 접근한다. 나머지 View, Controller 단에서 내부 속성값을 가지면 안된다. 따라서 다른 컴포넌트가 모델의 데이터를 변경하고 싶거나 혹은 모델 내의 데이터가 변경되었을 떄에 다른 컴포넌트 간의 통신 수단을 구현해야한다.
View
사용자에게 어플리케이션의 UI 등을 통해 화면에 무언가를 보여주기 위한 역할
( 웹의 경우 html, css, js 등 )
View 는 사용자에게 화면을 보여주는 역할 외에 타 역할에 전혀 관여하지 않음.
그저 뷰는 데이터를 받으면 자신의 정의된 역할에 따라 화면을 표시하는 역할
원하는 데이터가 있을 경우 컨트롤러를 통해 모델에 접근하여 참조할 필요가 있음.
Controller
컨트롤러는 위의 모델과 뷰간의 중간 다리 역할 수행 (애플리케이션의 핵심 로직)
사용자가 뷰에서 제공된 화면에서 이벤트에 대하여 기능을 수행할 때 컨트롤러가 받아서 수행
뷰와 모델은 서로의 존재를 몰라도 되고, 각자의 역할만 수행하는 반면, 컨트롤러는 모델과 뷰 간의 통신을 중재하기 위해서 모든 존재를 알고 있어야함.
MVC 패턴의 장점
- 하나의 파일로 분업의 어려움 → MVC 모델로 서로의 구조가 분리되어 각자 자신의 역할에 충실히 집중할 수 있음
- 개발이 완료된 이후에도 유지보수, 확장성, 유연성 등의 측면에서 도움받을 수 있음
MVC 패턴의 단점
인터넷에서도 가장 흔하게 주목되는 한계점으로 주로 Model, View 간의 의존성이 지적받고 있다.
필자는 아까 위의 뷰에 대한 설명단에서 "View는 내부의 속성/정보 등을 가져서는 안되며, 원하는 데이터가 있을 경우 컨트롤러를 통해 모델에 접근하여 참조할 필요"라고 언급하였다.
이는 좀 더 쉽게 말하자면 화면에 출력되는 블록의 위치, 블록의 규격, 블록 내의 텍스트 내용, 텍스트의 속성 등을 모두 모델이 가지고 있어야 한다는 것이다. 모든 블록이 체계적으로 재사용되고 중복이 많이 일어나는 경우가 아니라면 "굳이 이걸 이렇게 불러오라고? 여기서 한번만 쓸껀데..? 걍 뷰에다가 박아놓으면 안돼?"라는 단순한 의문점이 생겨난다.
이렇듯이 뷰와 모델의 구조상 겹치는 부분이라도 구조화를 위해 무리하게 MVC 패턴을 고수하다 보면 위와 같은 의존성에 의해 최악의 경우, 애플리케이션의 퍼포먼스가 저하될 수도 있다.
참고) https://m.blog.naver.com/shino1025/221822085061
MVC 패턴에 대해 알아보자
이번 포스팅에서는 여러 프레임워크에서 자주 등장하는 개념인 디자인 패턴인 MVC 패턴에 대하여 간단하...
blog.naver.com
'PHP' 카테고리의 다른 글
서버단(PHP) 처리 vs 스크립트단(JS) 처리 (0) | 2023.10.04 |
---|---|
PHP 기반의 웹 어플리케이션 관련 지식 (0) | 2023.04.20 |
[php] php 함수 var_dump() (0) | 2022.01.05 |
[PHP] 트랜잭션 처리 (0) | 2021.02.18 |
PHP 엑셀 서버 업로드 - 배열 엑셀 저장 (0) | 2021.02.15 |
댓글