Introduction

Anyframe Web은 MVC 기반의 아키텍처를 준수하여 웹 어플리케이션의 프리젠테이션 레이어를 구조적으로 개발할 수 있도록 지원하는 웹 프레임워크이다. UI 영역에 표현되는 정보를 처리하고 프리젠테이션 레이어로부터 비즈니스 로직을 분리하여 개발할 수 있다. Anyframe Web은 Web Framework 오픈 소스로 Struts와 Spring MVC을 채택하고 있으며 이를 확장하여 프리젠테이션 레이어 개발에 필요한 공통 기능들을 제공하고 있다. 또한 사용자간 상호 작용을 중시하는 Web 2.0 기술 트랜드에 맞추어 다양한 UI 모듈(X-internet 툴 등)을 연계할 수 있는 프레임워크 기반의 아키텍처를 제공한다.

Anyframe Web의 특징

  • MVC Model2 아키텍처 제공: Layered Architecture에 기반한 Java EE 웹 어플리케이션을 작성할 때 프리젠테이션 로직과 비지니스 로직을 완전히 분리하여 프리젠테이션 레이어를 구조적으로 개발할 수 있다.
  • 웹 화면 개발 시 필요한 공통 기능 제공: 어플리케이션 개발에 공통적으로 필요한 화면흐름 제어, 에러처리, 일원화된 권한처리 등 다양한 부분을 프레임워크화하여 Model2 방식의 일관되고 쉬운 개발을 지원한다.
  • Anyframe Core와의 쉬운 통합: Anyframe Web은 MVC 의 View 와 Controller 영역을 담당하며, Model 영역에 해당하는 Anyframe Core 와의 쉬운 통합을 지원한다.
  • Struts/Spring MVC의 활용 최적화: Anyframe Web은 프로젝트에서 많이 사용되고 있는 Struts와 Spring MVC를 기반으로 구성된 웹 프레임워크로 둘 중 어느 것을 선택하더라도 Anyframe Core와 함께 사용 시 Struts와 Spring MVC의 기능들이 최적화된 형태로 활용될 수 있도록 가이드되고 있다.
  • 다양한 웹 클라이언트 기술과 용이한 연계 가능: 상용 X-internet 툴 등 다양한 웹 클라이언트 기술과 쉽게 연동되는 구조를 제공한다.

Anyframe Web의 주요기능

Anyframe Web은 MVC 설계 원칙에 충실하도록 모든 요청은 Controller 에 의해 처리/전달되도록 구현되었으며 기반이 되는 오픈 소스 웹 프레임워크인 Struts, Spring MVC의 기본 기능을 활용하고 있다. 또한 프로젝트에서 공통적으로 요구되는 다양한 추가 기능을 Struts와 Spring MVC를 확장하여 제공하므로 프리젠테이션 레이어 개발에 많은 도움을 준다.
  • 화면 흐름 제어
    화면 네비게이션 흐름을 JSP 페이지나 클래스 내에서 처리하지 않고 설정 파일(XML)을 통해서 제어할 수 있게 한다. 공통 에러 페이지 등 프로젝트에서 필요한 공통 페이지 설정도 설정 파일을 통해 가능하다.
  • 공통 클래스 제공
    프리젠테이션 레이어를 개발하는 개발자들은 Struts 사용 시 Action 클래스를, Spring MVC 사용 시 Controller 클래스를 개발해야 한다. 이때 Anyframe Web에서 상위 공통 Action 클래스와 Controller 클래스를 제공함으로써 모든 하위 클래스에서 필요한 로깅, Exception 처리, Double Submit 방지 등의 기능을 사용할 수 있으며 특정 액션 수행 이전과 이후에 공통적으로 수행해야 할 로직을 구현하기 쉽다. 아래 그림은 Struts 사용 시 사용되는 공통 클래스의 모습이다.
  • 국제화(i18N), 지역화(L10n) 지원
    국제화를 지원한다는 것은 언어나 지역에 영향을 받는 부분과 영향을 받지 않는 코드를 분리하여 쉽게 지역화될 수 있게 만들었다는 것을 의미하는 것으로 소스 코드의 수정 없이 다양한 언어를 지원할 수 있도록 한다.
  • 사용자 입력값 유효성 검증(Validation)
    Jakarta Commons 프로젝트의 하나로 Validation 모듈이 제공되는데 이를 Struts/Spring MVC와 연계하여 제공하고 있다. 유효성 검증 로직을 소스 코드 내에 작성하거나 소스 외부에서 설정 파일(XML)을 통해 관리할 수 있다. 이외에 일반적으로 많이 사용되는 자바 스크립트를 통해 입력값 검증을 수행할 수도 있다.
  • Tag Library를 통한 View 개선
    JSP 개발 시 Struts, Spring MVC에서 제공하는 기본 태그 라이브러리와 JSTL 표준 태그 라이브러리 및 Anyframe Web에서 확장한 태그 라이브러리를 사용하여 JSP 페이지 내에 추가 자바 코딩없이 개발함으로써 HTML 디자인 개발과 프리젠테이션 레이어 개발을 분리하여 진행할 수 있다. 목록 조회 페이지에서 페이지 네비게이션 정보를 표현하는 부분에서 사용되는 태그 라이브러리가 그 대표적인 예이다.
  • 에러 처리
    클래스 내에서 try~catch 구문을 이용하여 예외를 처리하지 않고 설정 파일(XML)을 이용하여 선언적으로 정의하여 관리할 수 있다. 에러 처리 페이지에서는 예외 발생 시 설정된 메시지 키에 의한 메시지 내용을 화면에 디스플레이되도록 한다.
  • 요청(Request) 권한 처리
    Struts를 사용하는 경우, RequestProcessor 클래스의 processRoles 메소드를 확장하여 구현함으로써 사용자가 해당 요청(Request)에 대한 권한을 가지고 있는지 판별할 수 있도록 한다. Spring MVC를 사용하는 경우, Acegi Security 프레임워크 등 다른 오픈 소스와 연계하여 인증 및 권한 부분을 처리할 수 있다.
  • Double Submit 방지
    설정 파일(XML)에 선언적인 방식으로 Double Submit 방지 기능을 정의하여 사용할 수 있다. 이를 통해 Form submit 중복(브라우저 Refresh, Submit 2회 이상 수행)으로 인한 오동작을 방지할 수 있는 기능을 제공한다.
  • X-Internet 연계
    대표적인 X-Internet 솔루션 중 하나인 MiPlatform을 Anyframe Core/Web과 연계할 수 있도록 모듈을 제공하고 있다. MiPlatform은 웹 브라우저(IE) 상에서 ActiveX Control을 사용하여 데스크탑과 같은 UI 환경을 쉽게 개발할 수 있도록 기능을 제공한다.

오픈소스

Anyframe Web에서 사용하고 있는 주요 오픈소스는 다음과 같다. 이외, 오픈소스 목록은 Anyframe Web 라이브러리와 함께 배포되는 readme.txt 파일의 6. 외부 오픈 소스 라이센스 정책 내에 제시된 오픈소스 목록을 참고하도록 한다.