MVC 패턴

MVC 패턴은 개발자라면 한번은 들어봤을겁니다. 오늘은 MVC 패턴에 대해서 알아보겠습니다.

 

 

 

MVC 패턴이란?

모델-뷰-컨트롤러(Model-View-Controller, MVC)는 소프트웨어 디자인 패턴 중 하나입니다. 이 패턴은 사용자 인터페이스(UI)로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있습니다. 쉽게 말해 비즈니스 로직과 화면을 구분하는데 중점을 둔다는건겁니다.

MVC는 여러 파생되는 패턴을 가지고 있는데요. MVVM(Model-View-ViewModel), MVP(Model-View-Presenter), MVW(Model-View-Whatever)가 있습니다. 이 글에서는 MVC 에 대해서 알아보도록 하겠습니다.

 

 

 

Model, View, Controller의 관계

  • Model : 모델은 애플리케이션의 핵심 데이터와 비즈니스 로직을 나타냅니다. DB와의 상호작용, 데이터 처리 및 유효성 검사와 같은 작업을 수행합니다. 모델은 독립적으로 작동하며, 뷰와 컨트롤러와 직접적으로 통신하지 않습니다.
  • View : 사용자 인터페이스(UI)를 담당합니다. 모델에서 데이터를 받아 사용자에게 표시하고, 입력을 컨트롤러에 전달하는 역할을 합니다.
  • Controller : 사용자의 입력을 처리하고, 애플리케이션의 흐름을 관리합니다. 모델을 호출하여 데이터를 조작하거나 변경된 결과를 뷰에 전달하는 역할을 합니다.

출처 : wikipeida - 모델-뷰-컨트롤러

 

MVC 패턴을 설명할때 많이 사용하는 흐름도를 가져왔습니다.

 

이 개념을 웹에 적용한다면,

 

  1. USES : 사용자의 입력을 감지하고 Controller로 전달한다.
  2. MANIPULATES : Controller는 사용자가 요청한 웹 페이지를 보여주기 위해 Model 호출한다.
  3. UPDATES : 비즈니스 로직을 통해 데이터를 제어한 후 결과를 Controller에 반환하고 다시 Controller는 Model의 결과를 받아 View에 전달합니다.
  4. SEES : 데이터가 반영된 View가 사용자에게 보여준다.

 

 

MVC 패턴의 설계원칙

 

1. 각 구성 요소의 역할과 책임을 명확하게 구분

Model, View, Controller는 독립적으로 작동하고, 각각의 역할에 집중해야 합니다.

 

2. 구성 요소간의 결합도 최소화

구성 요소간의 직접적인 참조를 피해 의존성을 낮춰야합니다. 이를 통해 구성 요소를 독립적으로 개발, 수정, 테스트할 수 있습니다.

 

3. 코드의 재사용성과 확장성 고려

각 구성 요소는 독립적이고 재사용 가능한 모듈로 개발되어야합니다. 프로젝트의 규모가 코지거나 요구 사항이 변경되었을 때, 확장 및 수정이 용이해야합니다.

GET과 POST의 차이

 

 

HTTP Method

HTTP Method는 클라이언트가 서버에 요청의 목적 및 종류를 알리는 수단입니다.

그 종류에는 GET, POST, PUT ,PATCH, DELETE.. 등 여러가지가 있습니다. 오늘은 가장 많이 쓰이는 GET과 POST에 대해서 알아보겠습니다.

 


GET

GET 방식은 주로 서버에서 리소스를 조회할때 사용됩니다.

 

특징

  • 캐시가 가능하다
    • 리소스를 요청할 때 웹 캐시가 요청을 가로채 리소스 복사본을 반환합니다. HTTP Header에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있습니다.
  • 브라우저 히스토리에 남습니다.
  • GET은 SELECT 성향이 있어 서버에서 데이터 조회하는 용도로 활용됩니다.
  • URL에 데이터를 포함하여 요청할 수 있습니다. (쿼리스트링)
  • 데이터를 Header에 포함하여 전송합니다.

 

쿼리 스트링 또는 쿼리 파라미터

 

쿼리스트링은 ?로 시작하여 키(Key) = 값(Value) 형태로 전송할 수 있고 & 기호를 사용하여 다수의 데이터를 전송 할 수 있습니다. 다만 문제는 Header에 데이터가 노출되는 문제가 발생합니다. 


POST

POST 방식은 서버에 리소스를 처리할 때 사용됩니다. 주로 데이터를 추가하거나 수정하기 위해 사용됩니다.

 

특징

  • 캐시가 불가능 합니다.
  • 브라우저 히스토리에 남지 않습니다.
  • URL에 데이터를 노출하지 않고 요청할 수 있습니다.
  • 데이터를 Body에 포함하여 전송합니다.

GET과 POST의 차이

  • 사용목적
    • GET : 데이터 조회
    • POST : 데이터 생성 또는 수정
  • 데이터 위치
    • GET : Header
    • POST : Body
  • 멱등성(Idempotent) : 연산을 여러 번 하더라도 결과가 달라지지 않는 성질을 의미합니다.
    • GET : 멱등성 보장
    • POST : 멱등성 보장 X 

https://ko.wikipedia.org/wiki/HTTP

 

+ Recent posts