2016년 7월 12일 화요일

디자인 패턴 - #3 Presentation Tier Patterns

#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)
  • 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 체크

View Helper

  • 패턴명 : View Helper
    • jsp 코드에 자바 코드가 없도록 하는 것이 목적^^
    • 예제 #1 : oracle
  • 적용 문제
    • Presentation Tier는 매우 자주 변경되는 특징을 갖음
    • View안에 비지니스 로직과 프리젠테이션 로직의 혼합으로 유지보수가 어렵다
    • 비지니스 로직과 프리젠테이션을 분리하고자 할때
  • 해결방안
    • View(jsp) 컴포너트에는 Formatting code만 구현 나머지는 비즈니스 코드는 Helper 클래스를 이용
    • 대표적인 help 클래스 : JavaBeans 혹은 커스텀 태그
  • 적용 결과
    • 웹 애플리케이션의 역할 분담이 명확해짐
    • 재사용과 유지보수를 좋아짐

Composite View

  • 패턴명 : Composite View
  • 적용 문제
    • 복잡한 웹 페이지들은 하나의 페이지에서도 많은 Data와 Subview들로 구성되어 있는 경우
    • 요청에 따른 페이지 변경 시에도 중복되는 subview들이 있으며 이 subview들을 매 페이지마다 동일하게 구현
  • 해결방안
    • 중복코드를 위한 템플릿(template)를 작성
    • 템플릿에서 중복되는 subview를 인스턴스화 함
  • 적용 결과
    • subview들의 재사용 증가
    • 유지보수 감소

Service To Worker

  • 패턴명 : Service To Worker
    • MVC : V , C
    • 예제 #1(영문) : 링크  
  • 적용 문제
    • FrontController 문제 와 View Helper 문제 혼합
  • 해결방안
    • 요청 처리를 모듈화 시키고 view 관리를 담당하는 Dispatcher를 이용
  • 적용 결과
    • 업무 분리 명확
    • 재사용성 증가
    • 유지보수 감소

Dispatcher View

  • 패턴명 : Dispatcher View
  • 적용 문제
    • FrontController 문제 와 View Helper 문제 혼합
  • 해결방안
    • 비즈니스 처리 요청을 controller가 아닌 view에서 처리
  • 적용 결과
    • 업무 분리 명확
    • 재사용성 증가
    • 유지보수 감소
출처 - OJTKOREA(링크)


2016년 7월 9일 토요일

디자인 패턴 - #2 J2EE Design Pattern 개요

#2 J2EE Design Pattern 개요

Presentation Tier Pattern

  • Decorating Filter(Intercepting Filter) : 웝 요청 전후의 기능을 확장 및 변경
    • Filter 라는 클래스가 사용
    • 한글 인코팅 처리 시
  • Front Controller : 웹 요청을 서비스 하는 Entry point 역할
    • 고객 , 운영자
  • View Helper : View를 단순화 시키는 역할
    • 모듈화를 통해서 나눔
  • Composite View : 재사용 가능한 view를 조합하여 새로운 view
    • include : top , left , bottom
  • Service To Worker : Front Controller 와 View Helper을 이용 비지니스 프로세스 역할이 Controller에게 있음
    • model2 : mvc 모델에서 적용
  • Dispatcher View : Front Controller 와 View Helper을 이용 비지니스 프로세스 역할이 View에게 있음
    • view : jsp
    • model1에서 적용

Business Tier : EJB (Presentation 와 연동)

  • Business Delegate
    • 비지니스 컴포넌트와의 인터페이스를 제공
    • Presentation 과 Business의 의존성 감소
  • Value Object(Transfer Object)
    • Data를 큰 단위(coarse-grained) 접근 방법을 사용함으로서 네트워크 호출을 감소
    • Tiers 간의 Data 전송
  • Session Facade : Workflow를 집중화하고 business 객체의 복잡성을 은닉화
    • 비지니스 티어의 진입자 역할을 수행
  • Aggregate Entity(Composite Entity) : Coarse-grained Entity beans을 모델링할 수 있는 best practice를 제공
    • Entity Bean 묶어주는 역할?
    • EJB 1.1 에서는 Aggregate 라고 함
  • Value Object Assembler : 여러 개의 value object를 조립하는 역할 제공
  • Value List Handler : DAO을 통해 얻는 데이터를 캐싱
    • 예) 게시판 페이지 뷰 할때 캐싱하는 역할을 수행
  • Service Locator : 중복된 JNDI lookup 처리만 담당
Integration Tier Patterns
  • Data Access Object : 테이터베이스의 접근 로직을 분리
    • 데이터 베이스에만 접근하는 클래스 생성
  • Service Activator (Message Facade) : 비동기처리를 담당

J2EE Pattern catalog

J2EE_Pattern_catalog.png
좀더 최신 형태 구조 설명 (참고)
출처 - OJTKOREA(링크)

디자인 패턴 -#1 디자인 패턴 개요

#1. 디자인 패턴 개요

문제 해결을 위한 가장 효율적인 방법을 정형화 시킴

특징

  • 효율적인 방법을 경험 할 수 있음
  • best Practices
  • 재사용
  • 구조적인 형태
  • 큰 문제 해결에 용이

GoF : 23 패턴

  • 3가지 분류
    • 생성 패턴 (Creational)
    • 구조 패턴 (Structure)
    • 행위 패턴 (Behavioral)

GoF와 J2EE 패턴 서로 다른 것이 아니라 연관성 있음

디자인 패턴 Level 별 분류

  • Architectural 패턴
    • 고수준 H/W , S/W 구조
    • 비기능적 요구(성능) 관련
  • Desing Pattern
    • 중간 단계 구조
    • 기능적
  • Idioms
    • 저 수준 구조
    • language-specific 특징

디자인 패턴 요소

  • 패턴명 - 의사소통 역할
  • 문제 - 적용시켜야 할 조건상태
  • 해법 - 문제해결을 위한 적용 방법
  • 결과 - 패턴 적용후 발생된 조건(trade off) 및 결과

Logical 구조 Tier

Tier
요소
영역
Client
App Client, HTML , swing , applet

Presentation
JSP / Servlet
J2EE 패턴
Business
EJB and Business Object
Integration
JMS , JDBC ,Connectors
Resource
DB , 외부 시스템

참고도서

# core j2ee patterns - http://www.corej2eepatterns.com/index.htm
출처 - OJTKOREA(링크)