#3 Presentation Tier Patterns
- Decorating Filter
 - Front Controller
 - View Helper
 - Composite View
 - Service To Worker
 - Dispatcher View
 
Decorating Filter
- 
Pattern name : Decorating Filter (Intercepting Filter)
 
- 
예제 #1(영문) : 링크
 
- 
Problem : 웹 애플리케이션의 Main 프로세스가 처리되기 전에 선처리 작업으로서 실행해야 하는 작업이 발생되는 경우
 
- 
클라이언트 IP 주소 신뢰성 여부 확인
 
- 
데이터 인코딩(encoding) 작업
 
- 
클라이언트의 유효한 인증 여부 확인
 
- 
특정 브라우저를 지원가능 여부 확인
 
- 
Solution : Main 프로세스 코드 변경 없이 표준방법으로 공통적인 서비스를 처리
 
- 
GoF의 Decrator 패턴
 
- 
Servelet 2.3의 Filter API 이용
 
- 
스트러츠 경우 Request 객체를 Override 함 
 
- 
Consequence
 
- 
재사용성 증가
 
- 
유지보수 용이
 
- 
전처리 코드의 집중화로 확장용
 
Pattern name : Decorating Filter (Intercepting Filter)
- 예제 #1(영문) : 링크
 
Problem : 웹 애플리케이션의 Main 프로세스가 처리되기 전에 선처리 작업으로서 실행해야 하는 작업이 발생되는 경우
- 클라이언트 IP 주소 신뢰성 여부 확인
 - 데이터 인코딩(encoding) 작업
 - 클라이언트의 유효한 인증 여부 확인
 - 특정 브라우저를 지원가능 여부 확인
 
Solution : Main 프로세스 코드 변경 없이 표준방법으로 공통적인 서비스를 처리
- GoF의 Decrator 패턴
 - Servelet 2.3의 Filter API 이용
 - 스트러츠 경우 Request 객체를 Override 함
 
Consequence
- 재사용성 증가
 - 유지보수 용이
 - 전처리 코드의 집중화로 확장용
 
Front Controller
- 
Pattern name : Front Controller
 
- 
MVC 모델에서 C에 해당함.
 
- 
예제 #1(영문) : 링크
 
- 
Problem : 
 
- 
웹 애플리케이션 시스템은 view 관리, navigation 관리등과 같은 처리를 통합처리 할 필요가 있음
 
- 
통합처리 않는 시스템의 문제점
 
- 
각각 개별적인 요청에 의한 view 처리에 대한 중복코드 발생
 
- 
view 및 내용이 혼합되어 복잡
 
- 
처리 프로세스의 복잡성 때문에 유지보수 어려움
 
- 
Solution
 
- 
모든 요청(링크,전송) 의 진입점을 담당하는 controller 역할 
 
- 
controller은 인증과 권한 기능 및 에러처리 기능을 포함할 수 있음 
 
- 
요청에 해당하는 실제적인 비즈니스 처리를 담당하는 곳으로 처러를 위임 하거나 또는 알맞은 view를 선택 
 
- 
Consequence
 
- 
Control 기능의 집중화 
 
- 
보안 기능 강화 
 
- 
재상용성 증대
 
- 
사용자 Tracking 과 logging
 
- 
에러처리 및 valiation 체크
 
Pattern name : Front Controller
- MVC 모델에서 C에 해당함.
 - 예제 #1(영문) : 링크
 
Problem : 
- 웹 애플리케이션 시스템은 view 관리, navigation 관리등과 같은 처리를 통합처리 할 필요가 있음
 - 통합처리 않는 시스템의 문제점
 - 각각 개별적인 요청에 의한 view 처리에 대한 중복코드 발생
 - view 및 내용이 혼합되어 복잡
 - 처리 프로세스의 복잡성 때문에 유지보수 어려움
 
Solution
- 모든 요청(링크,전송) 의 진입점을 담당하는 controller 역할
 - controller은 인증과 권한 기능 및 에러처리 기능을 포함할 수 있음
 - 요청에 해당하는 실제적인 비즈니스 처리를 담당하는 곳으로 처러를 위임 하거나 또는 알맞은 view를 선택
 
Consequence
- Control 기능의 집중화
 - 보안 기능 강화
 - 재상용성 증대
 - 사용자 Tracking 과 logging
 - 에러처리 및 valiation 체크
 
View Helper
- 
패턴명 : View Helper
 
- 
jsp 코드에 자바 코드가 없도록 하는 것이 목적^^
 
- 
예제 #1 : oracle
 
- 
적용 문제
 
- 
Presentation Tier는 매우 자주 변경되는 특징을 갖음
 
- 
View안에 비지니스 로직과 프리젠테이션 로직의 혼합으로 유지보수가 어렵다
 
- 
비지니스 로직과 프리젠테이션을 분리하고자 할때
 
- 
해결방안
 
- 
View(jsp) 컴포너트에는 Formatting code만 구현 나머지는 비즈니스 코드는 Helper 클래스를 이용
 
- 
대표적인 help 클래스 : JavaBeans 혹은 커스텀 태그
 
- 
적용 결과
 
- 
웹 애플리케이션의 역할 분담이 명확해짐
 
- 
재사용과 유지보수를 좋아짐
 
패턴명 : View Helper
- jsp 코드에 자바 코드가 없도록 하는 것이 목적^^
 - 예제 #1 : oracle
 
적용 문제
- Presentation Tier는 매우 자주 변경되는 특징을 갖음
 - View안에 비지니스 로직과 프리젠테이션 로직의 혼합으로 유지보수가 어렵다
 - 비지니스 로직과 프리젠테이션을 분리하고자 할때
 
해결방안
- View(jsp) 컴포너트에는 Formatting code만 구현 나머지는 비즈니스 코드는 Helper 클래스를 이용
 - 대표적인 help 클래스 : JavaBeans 혹은 커스텀 태그
 
적용 결과
- 웹 애플리케이션의 역할 분담이 명확해짐
 - 재사용과 유지보수를 좋아짐
 
Composite View
- 
패턴명 : Composite View
 
- 
예제 #1 (영문) : 오라클
 
- 
적용 문제
 
- 
복잡한 웹 페이지들은 하나의 페이지에서도 많은 Data와 Subview들로 구성되어 있는 경우 
 
- 
요청에 따른 페이지 변경 시에도 중복되는 subview들이 있으며 이 subview들을 매 페이지마다 동일하게 구현 
 
- 
해결방안
 
- 
중복코드를 위한 템플릿(template)를 작성
 
- 
템플릿에서 중복되는 subview를 인스턴스화 함
 
- 
적용 결과
 
- 
subview들의 재사용 증가 
 
- 
유지보수 감소
 
패턴명 : Composite View
- 예제 #1 (영문) : 오라클
 
적용 문제
- 복잡한 웹 페이지들은 하나의 페이지에서도 많은 Data와 Subview들로 구성되어 있는 경우
 - 요청에 따른 페이지 변경 시에도 중복되는 subview들이 있으며 이 subview들을 매 페이지마다 동일하게 구현
 
해결방안
- 중복코드를 위한 템플릿(template)를 작성
 - 템플릿에서 중복되는 subview를 인스턴스화 함
 
적용 결과
- subview들의 재사용 증가
 - 유지보수 감소
 
Service To Worker
- 
패턴명 : Service To Worker
 
- 
MVC : V , C
 
- 
 
- 
적용 문제
 
- 
FrontController 문제 와 View Helper 문제 혼합
 
- 
해결방안
 
- 
요청 처리를 모듈화 시키고 view 관리를 담당하는 Dispatcher를 이용
 
- 
적용 결과
 
- 
업무 분리 명확 
 
- 
재사용성 증가
 
- 
유지보수 감소
 
패턴명 : Service To Worker
- MVC : V , C
 
적용 문제
- FrontController 문제 와 View Helper 문제 혼합
 
해결방안
- 요청 처리를 모듈화 시키고 view 관리를 담당하는 Dispatcher를 이용
 
적용 결과
- 업무 분리 명확
 - 재사용성 증가
 - 유지보수 감소
 
Dispatcher View
- 
패턴명 : Dispatcher View
 
- 
 
- 
적용 문제
 
- 
FrontController 문제 와 View Helper 문제 혼합
 
- 
해결방안
 
- 
비즈니스 처리 요청을 controller가 아닌 view에서 처리
 
- 
적용 결과
 
- 
업무 분리 명확 
 
- 
재사용성 증가
 
- 
유지보수 감소
 
출처 - OJTKOREA(링크)
패턴명 : Dispatcher View
적용 문제
- FrontController 문제 와 View Helper 문제 혼합
 
해결방안
- 비즈니스 처리 요청을 controller가 아닌 view에서 처리
 
적용 결과
- 업무 분리 명확
 - 재사용성 증가
 - 유지보수 감소