[SPRING]MVC Pattern

Date:     Updated:

카테고리:

태그:

[8] MVC Pattern

8.1. 관심사의 분리 (Separation of Concerns)와 계층화(layering)

  • 관심이 같은 것은 한곳으로 모으고, 다른 것은 따로 떨어뜨려 => 서로 영향을 주지 않도록 분리하는 것임.
  • 복잡한 소프트웨어를 계층으로 나눔으로써 관심사를 분리함.
    프리젠테이션(Presentation) : 사용자와 소프트웨어간 상호작용을 처리함 
      ||               
     \||/
    도메인 (Domain) : 핵심 업무 논리 처리하는 객체들로 구성됨
      ||            엔터프라이즈 애플리케이션에서 가장 중요한 자산
      ||
      ||
     \||/
    데이터 원본 (DataSource) : 파일 또는 데이터베이스 시스템 등과 데이터 송/수신 처리함   
    

8.2. 소프트웨어 개발시 지켜야 할 두가지 요건

  • 오늘 완성해야 하는 기능을 구현하는 코드를 짜야하는 동시에
  • 내일 쉽게 변경할 수 있는 코드를 짜야 한다.

8.3. SOLID 원칙

  • 다섯가지 소프트웨어 설계 원칙임

    - Single responsibility
    - Open/closed
    - Liskov responsibility
    - Interface separation
    - Dependency inversion principle
    
  • 함수와 데이터 구조를 클래스로 배치하는 방법, 그리고 이들 클래스를 서로 결합하는 방법으로 구성됨
  • 모듈과 컴포넌트 내부의 구조를 이해하기 쉽고, 변경에 유연하게 만드는데 목적을 두고 있음.

8.4. 관심사의 분리 (Separation of Concerns)와 높은 응집도, 낮은 결합도

  • 관심이 같은 것끼리는 한곳으로 모으고, 다른 것은 따로 떨어뜨려 서로 영향을 주지 않도록 분리하는 것임.
  • 응집도가 높다는 것
    • 하나의 모듈, 클래스가 하나의 책임 또는 관심사에만 집중되어 있다는 뜻임.
  • 결합도가 낮다는 것
    • 하나의 오브젝트가 변경될 때에 관계를 맺고 있는 다른 오브젝트에 영향을 안준다는 뜻임.

8.5. MVC (Model-View-Controller) 패턴

  • 모델-뷰-컨트롤러는 소프트웨어 공학에서 사용되는 아키텍쳐 패턴으로
  • 주목적은 Business logic과 Presentation logic을 분리하기 위함.
  • 서로 영향없이 쉽게 고칠 수 있는 애플리케이션 만들수 있음.
  • Model : 애플리케이션의 정보(데이터, Business Logic 포함)
    View : 사용자에게 제공할 화면 (Presentation Logic)
    Controller : Model과 View 사이의 상호 작용을 관리

8.6. 각각의 MVC 컴포넌트 역할

  • 모델 컴포넌트
    • 데이터 저장소(DB)와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 일을 함
    • 여러 개의 데이터 변경 작업(추가, 변경, 삭제)을 하나의 작업으로 묶는 트랜잭션을 다루는 일도 함
    • DAO 클래스, Service 클래스에 해당
  • 뷰 컴포넌트
    • 모델이 처리한 데이터나 그 작업 결과를 가지고 사용자에게 출력할 화면을 만드는 일을 함
    • 생성된 화면은 웹 브라우저가 출력하고, 뷰 컴포넌트는 HTML나 CSS, JavaScript(jQuery)를 사용하여 웹 브라우저가 출력할 UI를 만듦
    • HTML과 JSP를 사용하여 작성할수 있음
  • 컨트롤러 컴포넌트
    • 클라이언트의 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출하는 일을 함
    • 클라이언트가 보낸 데이터가 있다면, 모델을 호출할 때 전달하기 쉽게 데이터를 적절히 가공하는 일을 함
    • 모델이 업무 수행을 완료하면, 그 결과를 가지고 화면을 생성하도록 뷰에게 전달 (클라이언트 요청에 대해 모델과 뷰를 결정하여 전달)
    • Servlet를 사용하여 작성할수 있음

8.7. 스프링 MVC의 요청/응답 처리 흐름

  • 프런트 컨트롤러인 DispatcherServlet을 중심으로 동작함.
  • MVC(Model-View-Controller)가 협력해 웹 요청과 응답을 처리함.

8.8. MVC 아키텍쳐 패턴

  • 로직과 프리젠테이션 분리
  • 화면의 구성요소와 데이터를 담은 모델(Model)
  • 화면 출력 로직을 담은 뷰(View)
  • 애플리케이션 제어 로직을 담은 컨트롤러(Controller)

8.9. 프론트 컨트롤러(Front Controller) 패턴

  • 컨트롤러를 대표해서 모든 요청과 응답을 대응함.
  • 요청 및 응답에 대한 횡단 관심사(보안, 예외 처리)를 적용함.
  • 적절한 하위 컨트롤러에게 작업 위임, 뷰 선택 및 결과를 출력함.

SPRING 카테고리 내 다른 글 보러가기

댓글 남기기