[SPRING]MVC Pattern
카테고리: SPRING
[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) 패턴
- 컨트롤러를 대표해서 모든 요청과 응답을 대응함.
- 요청 및 응답에 대한 횡단 관심사(보안, 예외 처리)를 적용함.
- 적절한 하위 컨트롤러에게 작업 위임, 뷰 선택 및 결과를 출력함.
댓글 남기기