2016년 9월 20일 화요일

41day / WEB / Model2 Architecture

Model2 Architecture
Model1 Architecture
  • Model2 Architecture
웹 어플리케이션 설계 방식으로 MVC 패턴을 근간으로 한다

Model
business + data access logic을 담당

View
동적인 화면을 제공한다

Controller
웹 어플리케이션의 제어를 담당
(Request를 분석해 Model과 연동하며 View에 응답한다)

* 위의 2개의 이미지 참고)
Model 1 과의 차이는 presentation layer에서 View 와 Controller로 분리된다.

  • 이동방식
Controller 에서 View로 이동시키는 방식은 두가지가 있다

1. forward
웹컨테이너 상에서 이동
Request와 Response가 유지됨 client browser에서는 url 변화가 없다

2. redirect
응답시에 클라이언트 브라우저에게 특정 url로 이동하도록 명령하는 방식
Request와 Response가 유지되지 않는다 browser 상에서 이동되므로 url이 변경된다


Front Controller Design Pattern
클라이언트의 다양한 요청을 하나의 진입점으로 모아 처리하기 위한 패턴
  -> 컨트롤러 영역에서의 공통된 정책을 적용하기 위하여 사용한다

장점
생산성 : 중복된 코드를 줄이고 유지보수성 : 이후 변경시 효과적으로 수정을 향상
 ex) 실세계 -> 콜센터


  • 기존 Model2 ( MVC ) 
client →  FindServlet
client →  FindAddressServlet
client →  InsertServlet
아래 이미지 윗 부분 참고 🔻
 

  •  Front Controller Pattern 적용 후 (🔺위 이미지 아래 부분 참고)
client →  DispatcherServlet (Front Controller 역할)
client →  handleRequest(request,response) : 컨트롤러 로직
client →
모든 클라이언트의 요청은 하나의 진입점(DispatcherServlet)으로 집중된다.
컨트롤러 영역에서의 공통되는 정책을 일관성있게 처리할 수 있으나
DispatcherServlet의 handleRequest 메서드의 코드량이 비대해진다
↳ 유지보수성에 문제가 발생할 수 있음

해결책
Front Controller ( DispatcherServlet )
공통 정책 ( ex : 인코딩 , 에러처리 , 인증작업 )을
처리하고 개별 요청처리는 별도의 Controller 클래스에서 담당하도록 한다
→ 또한 개별 Controller 클래스는 Controller 인터페이스의 하위 클래스로 처리하여
표준화 하도록 한다 ( 표준화 : 다형성- 하나의 메세지 방식으로 다양한 동작을 수행)

아래 이미지 참고 🔻


0 개의 댓글:

댓글 쓰기