Search
🌍

bb7.1.1.2_1.2.1.1.5_1.1. title: 모델-뷰-컨트롤러(‣) 패턴에서 모델(Model)과 뷰(View)의 관계는 엄밀하게 정의되지 않는다. 뷰는 컨트롤러와만 소통하기도 하고, 뷰가 모델과 직접 소통하기도 한다. MVC의 본질은 모델 뷰 컨트롤러가 분리되어 있고, 컨트롤러가 중앙에서 모델을 통제한다는 것이다. 프레임워크에서 양방향 데이터바인딩을 지원하며 패턴이 흐트러졌다.

생성
🚀 prev note
🚀 next note
14 more properties
프레임워크 뷰(Vue)를 사용하면 컨트롤러(Controller)가 뷰(View)를 갱신하는 것이 아니라, 뷰(View)가 모델(Model)의 변화를 감지하고 바로 화면을 갱신해 버린다. 이것도 모델-뷰-컨트롤러(MVC) 구조라고 볼 수 있을까? 구글에 ‘MVC 패턴’ 을 검색하면 수많은 자료들을 찾아볼 수 있다. 그런데 문제는 해석이 저마다 제각각이라는 것이다. 특히 뷰(View)와 모델(Model) 사이의 관계에 대한 해석이 그러하다. 우선 어떤 해석들이 있는지 간략히 살펴보자.
그림(참고1) : 위키백과. 뷰와 모델은 서로 직접 상호작용하지 않는다.
그림(참고2) : 우아한 테크코스 발표자료. 뷰와 모델은 서로 직접 상호작용하지 않는다. 컨트롤러가 모델에게 데이터를 받아 직접 뷰를 통제한다.
그림(참고3) : 생활코딩의 MVC 수업자료. 뷰와 모델은 서로 직접 상호작용하지 않는다. 컨트롤러가 모델에게 데이터를 받아 직접 통제한다.
그림(참고4) : 팀노바의 MVC 설명자료. 뷰는 모델의 변화를 감지하고 직접 값을 읽어간다.
그림 : 페이스북의 Flux 발표자료. 뷰는 컨트롤러와 별개로 모델과 상호작용한다.
이 논의를 통해 질문에 내릴 수 있는 답은 다음과 같다. 프레임워크를 이용해 MVC를 구현할 때 패턴이 구체화되는 형태는 조금씩 다르다(참고8). 만약 프레임워크가 뷰(Vue)라면 컨트롤러의 개입 없이 뷰가 모델의 변화를 감지하고 자동으로 화면을 갱신하여 둘은 직접 상호작용한다고 볼 수 있다. 데이터를 바인딩하는 것이 일반적이기 때문에, 뷰(View)와 데이터를 분리시키려는 행위는 오히려 부자연스럽다(from2). 하지만 CI(Codelgniter)와 같은 프레임워크에서는 모델(Moel)과 뷰(View) 둘은 직접 상호작용하지 않고 컨트롤러가 중간에서 모든 것을 매개해주어야 한다(참고1,2,4,5,6). 따라서 모델-뷰-컨트롤러(Model-View-Controller (MVC)) 패턴에서 모델(Model)과 뷰(View)의 관계는 엄밀하게 정의되지 않는다는 것을 알 수 있다. 뷰는 컨트롤러와만 소통하기도 하고, 뷰가 모델과 직접 소통하기도 한다(참고5,6:위키백과. 이럴수도 저럴수도 있다는 것을 말하고 있다. 하나의 문서에서도 의견이 갈린다)(참고7:배달의민족).
MVC라는 컨셉의 노이즈 속에서 남겨지는 본질은 (1) 모델-뷰-컨트롤러가 분리되어 있고, (2) 컨트롤러가 중앙에서 모델을 통제한다는 것이다. 뷰와 모델이 직접 상호작용해서는 안된다는 “엄밀한 MVC” 원칙은 프론트엔드 프레임워크가 편의를 위해 양방향 데이터 바인딩을 지원하면서 무너졌기 때문이다.
parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.
from : 과거의 어떤 생각이 이 생각을 만들었는가?
2.
supplementary : 어떤 새로운 생각이 이 문서에 작성된 생각을 뒷받침하는가?
1.
None
opposite : 어떤 새로운 생각이 이 문서에 작성된 생각과 대조되는가?
1.
None
to : 이 문서에 작성된 생각이 어떤 생각으로 발전되고 이어지는가?
참고 : 레퍼런스