ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MVC 패턴
    CS 2024. 7. 18. 21:20

     

    모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다.

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

    MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

    출처: MVC - wikipedia

     

     

    Model, View, Controller

     

    더보기

    Model

    - Model 은 Data 와 애플리케이션이 무엇을 할지 정의하는 내부 비지니스 로직을 처리하기 위한 역할

     

    - 즉, Data 를 가진 객체를 Model

     

    -  Model 의 상태에 변화가 있을 때 Controller 와 View 에 이를 통보

     

    - Controller 는 Model 의 변화에 따른 데이터 추가, 삭제, 수정 가능.

     

    규칙

     

     - 사용자가 편집하기를 원하는 데이터를 모두 가지고 있어야 함

     

    - View, Controller 에 대해 어떠한 정보도 알지 말아야함

     

    - 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야 함

     

    View

    -  클라이언트 측 기술 HTML/CSS/Javascript 를 모아놓은 컨테이너 사용자가 볼 결과물을 생성하기 위해

       Model 로부터 정보를 가져옴

     

    -  즉, 사용자에게 보여주는 화면(UI)

     

    -  MVC 에서는 여러개의 View 존재 가능

     

    -  Model 에서 받은 데이터는 별도로 저장하지 않음

     

    규칙

     

    - Model 이 가지고 있는 정보를 따로 저장하면 안됨

     

    - Model 이나 Controller 와 같이 다른 구성요소를 몰라야 함

     

    - 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야함

     

    Controller

    - Controller 는 Model 과 View 사이를 이어주는 interface 역할

     

    - 즉, Model 이 데이터를 어떻게 처리할지 알려주는 역할

     

    -  사용자가 접근한 URL 에 따라 사용자의 요청을 파악 후 그 요청에 맞는 데이터를 Model 에 호출

       업무를 모두 새항하면 결과를 다시 View 에 전달하는 역할

     

    - Model 에 명령을 보냄으로써 View 의 상태 변경 가능 (워드 문서 편집)

     

    - Controller 가 관련된 Model 에 명령을 보냄으로써 View 의 표시 방법 변경 가능 (문서 스크롤)

     

    규칙

     

    - Model 이나 View 에 대해 알고 있어야함

     

    - Model 이나 View 의 변경을 모니터링 해야함

     

    구동원리

     

     

    MVC패턴은 Spring프레임워크와 JSP를 사용하는 웹 애플리케이션 개발에 많이 사용

    이 때의 웹 애플리케이션에서의 MVC의 구동 원리 ↓

    1. 웹 브라우저가 웹 서버에 웹 애플리케이션 실행을 요청한다. (MVC 구조가 WAS라고 보면 된다.)
    2. 웹 서버는 들어온 요청을 처리할 수 있는 서블릿을 찾아서 요청을 전달한다. (Matching)
    3. 서블릿은 모델 자바 객체의 메서드를 호출한다.
    4. 데이터를 가공하여 값 객체를 생성하거나, JDBC를 사용하여 데이터베이스와의 인터랙션을 통해 값 객체를 생성한다.
    5. 업무 수행을 마친 결과값을 컨트롤러에게 반환한다.
    6. 컨트롤러는 모델로부터 받은 결과값을 View에게 전달한다.
    7. JSP는 전달받은 값을 참조하여 출력할 결과 화면을 만들고 컨트롤러에게 전달한다.
    8. 뷰로부터 받은 화면을 웹 서버에게 전달한다.
    9. 웹 브라우저는 웹 서버로부터 요청한 결과값을 응답받으면 그 값을 화면에 출력한다

    출처: https://osy0907.tistory.com/63

     

     

    MVC 장점

    더보기

    - 기능별 코드를 분리하여 하나의 파일에 코드가 모이는 것을 방지(가독성과 코드 재사용 증가)

     

    - 비즈니스 로직과 UI 로직을 분리하여 유지보수를 독립적으로 수행 가능

     

    - 각 구성요소가 독립되어 있어 협업을 할 때 분업을 가능하게 해줌

     

    - Model 과 View 가 다른 컴포넌트에 종속되지 않아 애플리케이션의 확장성, 유연성에 유리

     

    - 개발 후, 유지보수성과 확장성 보장

     

    MVC 한계

     

    더보기

    Model 과 View 는 서로 정보를 갖고 있지 않아 독립적인 상태지만 Controller 를 통해 소통하기 때문에 의존성이

    완전히 분리될 수 없음. 그러므로 복잡한 대규모 프로그램의 경우 다수의 View, Model 이 Controller 를 통해 

    연결되기 때문에 복잡하게 연결되어 있는 상황과 함께 불필요하게 커지는 현상이 발생할 수 있음. (Massive-View-Controller)

    이를 보안하기 위한 MVP, MVVM, Flux, Redux 등 다양한 패턴 존재.

     

    MVC 패턴 요약

    Model - 백그라운드에서 동작하는 비즈니스 로직(데이터) 처리
    View - 정보를 화면으로 보여주는 역할.
    Controller - 사용자의 입력 처리와 흐름 제어 담당. 화면과 Model과 View를 연결시켜주는 역할

     

     

    (참고)

    https://opentutorials.org/course/697/3828

    https://developer.mozilla.org/ko/docs/Glossary/MVC

     

    'CS' 카테고리의 다른 글

    HTTP 상태 코드 (100, 200, 300, 400, 500)  (4) 2024.08.28
    보일러플레이트란?  (0) 2024.07.29
Designed by Tistory.