티스토리 뷰

 개인적인 프로젝트를 진행 중 하나의 고민이 생겼다. 아무런 디자인, 템플릿없이 단순 JSP로 화면을 만들어놓고 서버단에만 집중하다보니 도저히 눈뜨고 볼수없는 족보없는 화면단이 구성이 되었다. 이 처참한 화면단을 어떻게 해야할까? 어떻게 생명력을 불어넣어 주어야할까? 고민중 JSP와 JSPF로 이루어진 단순 반복 템플릿을 구성하는 것보다 프레임워크를 이용하여 구성해야겠다 결심했다.


 그럼 화면단 구성을 위한 템플릿 프레임워크를 찾아보니 크게 TilesSitemesh로 나뉘었다. Tiles 2 프레임워크는 과거에 한번 사용해 보긴 했었는데 너무 오래되어 하나도 생각이 안났다. Sitemesh는 사용해본적이 없었고.. 이 두개의 프레임워크중 하나를 선택해야하는데 우선 현재 더 많이 쓰이는 프레임워크가 무엇인지 궁금하여 구글트렌드를 이용해서 찾아보았다.



  1   Trend




 우선 Sitemesh라는 단어와 Tiles 3를 검색해보았다. 압도적인 수치로 Tiles의 우세였다. 그럼 왜 Tiles가 Sitemesh보다 훨씬 인기가 좋을까?

 처음 Tiles 프레임워크를 접할때 공부했던것을 떠올려보면 우선 Tiles는 재사용성이 매우 좋다. 설정은 조금 어렵지만 그만큼 성능 및 유지보수 차원의 용이성이 매우 훌륭하다.


 그렇다면 Sitemesh는? 검색으로 알게된 정보는 설정이 매우 쉽다는점.. 그 외에는 Tiles를 능가하는 별다른 장점이 존재하지 않는것 같다. 설정이 많다는건 그만큼 기능이 많다는것. 그리고 설정이 적다면 그만큼 간단하다는것 이것은 변하지않는 법칙이다. 그럼 Tiles와 Sitemesh는 정확하게 어떤 차이점이 존재하는지 궁금해졌다.



  2   Tiles vs Sitemesh


  

 검색을 해보니 Tiles와 Sitemesh의 가장 큰 차이점은 패턴이었다. Tiles의 경우 Composite View 패턴, Sitemesh의 경우 Decorator 패턴을 사용하고 있다. 이 두 패턴의 차이점을 비교해보자면 다음과 같다.


참조 : http://tiles.apache.org/framework/tutorial/pattern.html


Composite View vs. Decorator

Tiles is a composite view framework: it allows to reuse page pieces across the application. But another approach to achieve the same result is using the Decorator pattern. For example, Sitemesh is based on the Decorator pattern.

Instead of creating a template and organizing the pieces together, the Decorator pattern (in this case) takes a simple HTML page, transforms it adding the missing pieces (in our example, adding header, footer and menu) and finally renders it.

 Here you can find a comparison table between the two patterns.


 Aspect

 Composite View

 Decorator

 Reusability

 The different parts of the page (template and pieces)  can be reused across the whole application.

 Each decorator can be reused, but the decoration itself  can be applied to one page at a time.

 Ease of  configuration

 Each page must be defined explicitly.

 The decorator can be applied even to the entire application.

 Runtime  configuration

 The pages can be configured and organized 

 at runtime

 Since one page is decorated at a time, this feature is not  present.

 Performances

 Low overhead for composition.

 The page to be decorated has to be parsed.


  • 재사용성
     
    Composite View패턴의 Tiles의 경우 페이지의 모든 부분을 모두 재사용할 수 있다. 반면 Decorator 패턴의 Sitemesh는 각각의 데코레이터를 재사용 할수는 있지만 데코레이션 자체는 한 페이지씩 적용할 수 있다고 한다. 이렇게 되면 데코레이터가 무엇인지 또 공부해야 하지만 우선 설명으로 보자면 모든 부분을 재사용할 수 있는 Composite View 패턴이 Decorator 패턴보다 나아보인다.
  • 설정
     
    앞서 말했던 설정부분이다. Composite View 패턴은 각 페이지를 명시적으로 정의해야하지만, Decorator패턴은 전체적으로 적용할 수있다는데 이게 무슨말인지는 잘 모르겠다. 어쨋든 각페이지를 일일히 다 정의해야하는 Tiles 보다는 Sitemesh가 쉽다는것은 확실하다.
  • 실행중 설정여부
     Composite View 패턴은 런타임주엥 각페이지의 설정을 변경할 수 있고, Decorator 패턴은 최초 한번에 적용이 되기 때문에 런타임중 수정할 수 있는 기능은 존재하지 않는다.
  • 성능
     Composite View패턴에 비해 매번 페이지를 파싱해야하는 Decorator 패턴은 상대 패턴보다 나은 성능을 기대하긴 어려울것으로 보인다.

 이렇게 비교를 해보니 Tiles의 우세가 이해가 간다. 간단한 프로그램이고, 복잡한 화면이 아니라면 Sitemesh도 좋은 선택이 될수 있을 듯 하지만 그렇게 간단한 화면들이라면 일반적인 JSP + JSPX 조합으로도 충분히 구현할 수 있어보인다. 이러한 단순작업이라도 편하게 하기위해 개발된것이 프레임워크라 하지만음.. 미래를 봐도 Sitemesh가 Tiles를 앞서 나가긴 힘들것 같다는 생각이 든다.


그렇다면.. 이제 Tiles 공부를 시작해야한다는 말이겠구나..  



댓글