본문 바로가기
프로그래밍/디자인 패턴

MVC 패턴

by Hwan2 2021. 3. 12.
728x90
반응형

 

 

 

 

1. MVC 패턴이란?

 

모델-뷰-컨트롤러(Model–View–Controller, MVC)의 줄인말로 코드를 짤때 해당 기능별로 코드를 나눈것을 말합니다.

즉, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 말합니다.

 

여기서 말하는 비즈니스 로직이란 사용자와 데이터 베이스 간에 정보전달을 원활히 해주는 코드 개념입니다.

즉, MVC모델을 사용하면 각 클래스 마다 처리하는 일이 정해저 있으므로 가독성이 좋아지며, 코드의 수정이 쉽다는 뜻입니다.

 

 

2. MVC 패턴.... 정말 필요할까?

 

요즘 웹 어플리케이션 서버를 보면 대부분 MVC모델을 사용합니다. 또한 요즘 트랜드는 MVC가 선택이 아닌 필수가 되고 있습니다. 또한 사용 안할 이유도 없으며, 수 많은 프레임워크에서 웹 어플리케이션을 만들 때 기본적으로 MVC모델 기반으로 설계되어 기능을 제공하게 됩니다.

 

물론 MVC 패턴보다 더 좋은 디자인 패턴이 있다면 해당 패턴을 사용하시면 됩니다. 하지만 저는 못봤습니다....

프로그램을 만들어본 분들은 아시겠지만 정말 필요합니다. 코드가 깔끔하게 정리되고 가독성이 많이 올라갑니다.

가독성이 올라가면서 자연스럽게 수정하거나 고칠때 편리하구요. 

 

그 외 프로그램 코드를 설계할 때 디자인은 정말 중요합니다. 클라이언트의 요구에 맞춰 수시로 기능과 코드가 변경되는데, 이때 기능을 추가하고 수정하는 일을 손쉽게 할 수 있어야 합니다. 

 

물론 이런 디자인 패턴도 과하면 안좋겠지만, 적당히 필요한 구간에 코드가 잘 녹아들 수 있도록 설계하는 것이 중요하다고 생각합니다. 그러니 의문이 든다면 의문을 갖지 말고 사용하세요!!

 

 

3. MVC 설명

사진에서 나오는 View, Controller, Model 은 객체 단위로 보시면 됩니다.

 

매커니즘은 다음과 같습니다.

 

1. 브라우저에서 사이트에 접속을 하면 GET요청을 통해 해당 페이지의 index를 받아오게 됩니다.

여기서 GET요청은 Controller로 가게되며, GET요청의 어떤방식이냐에 따라 View로 갈 수 있고,

Model을 거처 View로 갈 수 있습니다. 

 

2. 브라우저에서 정적 페이지를 요청한다면 View로 바로가서 해당 html을 클라이언트에게 전달해주지만,

동적 페이지 같은 경우 데이터를 실시간으로 받아와야 하기 때문에 Model에서 데이터를 갖고와 View로 전달하게 됩니다.

 

여기서 대략적으로 각 Layer별로 역할을 파악할 수 있습니다.

 

  • Controller : 말 그대로 데이터를 받아와 컨트롤 해주는 부분입니다. 즉, 요청 방식에 따라서 Model로 데이터를 요청할 지, View로 바로 보낼지 결정하는 역할을 하게 됩니다. 때문에 restful 서버를 설계해보면 Controller로 요청을 받습니다.
     
  • Model : 모델은 다소 이름이 생소할 수 있고, 어디에 매칭이 잘 되지 않는 단어입니다. 해당 모델은 데이터 베이스에 접근하는 유일한 객체로 데이터를 직접적으로 관리하게 됩니다. 
  • View : 뷰는 클라이언트에게 서비스를 보여주는 역할을 합니다. 이름 그대로의 역할을 하는 샘이죠. 컨트롤러를 통해 들어온 요청 방식에 따라 클라이언트에게 다양한 결과 화면을 전달해 주게 됩니다. 뷰의 장점은 프론트 엔드와 상호작용할 수 있다는 것입니다. 

 

또한 앞서 비즈니스 로직이 분리되어 있다고 했는데, 이는 각 Layer들로 하여금 의존관계가 없다는 뜻입니다. 때문에 코드의 수정이 자유롭게 됩니다.

 

 

 

 

반응형

댓글


스킨편집 -> html 편집에서