20211206 TIL - MVC를 알아보자

JIHYE·2021년 12월 6일
0

MVC

MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다
소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있다
이러한 "관심사 분리" 는 더나은 업무의 분리와 향상된 관리를 제공한다

  • 모델 : 데이터베이스와 비지니스 로직을 관리한다
  • 뷰 : 레이아웃과 화면을 처리한다
  • 컨트롤러 : 명령을 모델과 뷰 부분으로 라우팅한다

Model

모델은 포함해야할 데이터가 무엇인지를 정의한다
데이터의 상태가 변경되면 모델을 일반적으로 뷰에게 알리며(따라서 필요한대로 화면을 변경할 수 있습니다) 가끔 컨트롤러에게 알리기도 한다(업데이트된 뷰를 제거하기 위해 다른 로직이 필요한 경우)

View

뷰는 앱의 데이터를 보여주는 방식을 정의한다(JSP, HTML 등)

Controller

컨트롤러는 앱의 사용자로부터의 입력에 대한 응답으로 모델 및/또는 뷰를 업데이트하는 로직을 포함한다

출처 : MDN Web Docs

MVC와 3 Layer Architecture

MVC모델과 3계층구조가 비슷하다고 생각했는데 비슷하면서도 다른점이 보였다
내가 파악한 3계층 구조는 자기가 맡은 역할은 자기가 처리하기이다
Presentation Layer, Business Layer, Data Access Layer 가 서로의 역할을 침범하지않고 로직을 처리하는것이다
Business Layer가 직접 Database에 접근 하는 일이 없어야하고, Data Access Layer가 직접 client에 응답을 해서는 안된다고 생각한다

3 Layer Architecture가 선형이라면, MVC Model은 삼각형 형태로 되어있지않다
뷰는 컨트롤러에 업데이트를 보내고 컨트롤러는 모델을 업데이트하며 뷰는 모델에서 직접 업데이트된다
출처 : stackoverflow


http://www.tonymarston.net/php-mysql/3-tier-architecture.html

물리적으로 구분할 수 없는 MVC 패턴은,
[view -> controller] 사용자의 요청을 view에서 받아 이를 controller에게 전달
[controller -> model] controller는 model단에 데이터 처리요청
[model -> view] 해당 결과를 바로 view로 보여줌

3tier와 MVC관계를 보면
Presentation Layer 에는 controller 와 view 가
Business Layer(Service Layer) 에는 Model이
Data Access Layer(Repository Layer)에는 DAO가 있다.
출처 : DW dev blog

모의면접과 연관지어보면

면접관님이 MVC모델의 Model, View, Controller가 3 Layer Architecture 3부분의 어디에 해당될까요? 라는 질문의 대답은
View와 Controller는 Presentaion Layer에 해당하고 Model은 Business Layer에 해당하니까 우리 프로젝트 구조에 매칭시켜보면
View, Controller는 우리의 Controller이고 Model은 Service에 해당하는것이 아닐까 라고 자문자답 해보게된다

profile
초보개발자의 개발일기

0개의 댓글