Web Framework 소개

Anyframe Web 은 Anyframe 기반 웹 어플리케이션의 골격을 담당하며 MVC 패턴 기반의 Model2 아키텍처를 따르고 있어 개발자가 Presentation Layer의 처리 로직에 초점을 맞추어 Controller와 View 파트를 구현하는데 도움을 준다. Struts Framework (ver. 1.2.7) / Spring MVC 를 재사용하고 있으며 웹 환경 프로젝트에 공통적으로 필요한 기능들을 포함하고 있다. 또한 사용자간 상호작용을 중시하는 Web 2.0 기술 트랜드에 맞추어 다양한 UI 모듈(Ajax, X-internet 툴 등)을 연계할 수 있는 프레임워크 기반의 아키텍처를 제공한다.

Anyframe Web의 특징

Anyframe Web 은 Layered Architecture에 기반한 JavaEE 웹 어플리케이션을 작성할 때 프리젠테이션 로직과 비지니스 로직을 완전히 분리하여 프리젠테이션 레이어를 구조적으로 개발할 수 있는 MVC Model2 아키텍처를 제공한다. 또한 최근 관심이 높아지고 있는 Ajax, 상용 X-internet 툴 등 다양한 웹 클라이언트 기술과 쉽게 연동되는 구조를 제공하고 있다.
  • 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의 기능들이 최적화된 형태로 활용될 수 있도록 가이드되고 있다.
  • 다양한 웹 클라이언트 기술과 용이한 연계 가능 : 최근 관심이 높아지고 있는 Ajax, 상용 X-internet 툴 등 다양한 웹 클라이언트 기술과 쉽게 연동되는 구조를 제공한다.

Anyframe Web의 주요기능

Anyframe Web은 MVC 설계 원칙에 충실하도록 모든 요청은 Controller 에 의해 처리/전달되도록 구현되었으며 기반이 되는 오픈 소스 웹 프레임워크인 Struts , Spring MVC의 기본 기능 을 활용하고 있다. 또한 프로젝트에서 공통적으로 요구되는 다양한 추가 기능을 Struts와 Spring MVC를 확장하여 제공하므로 프리젠테이션 레이어 개발에 많은 도움을 준다.
  • 화면 흐름 제어(Screen Workflow Control) : 화면 네비게이션 흐름을 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 디자인 개발과 프리젠테이션 레이어 개발을 분리하여 진행할 수 있다. 목록 조회 페이지에서 페이지 네비게이션 정보를 표현하는 부분에서 사용되는 태그 라이브러리가 그 대표적인 예이다.
  • 에러 처리(Exception Handling) : 클래스 내에서 try~catch 구문을 이용하여 Exception을 처리하지 않고 설정 파일(XML)을 이용하여 선언적으로 정의하여 관리할 수 있다. 에러 처리 페이지에서는 Exception 발생 시 설정된 메시지 키에 의한 메시지 내용을 화면에 디스플레이되도록 한다.
  • 요청(Request) 권한 처리 : Struts를 사용하는 경우, RequestProcessor 클래스의 processRoles 메소드를 확장하여 구현함으로써 사용자가 해당 요청(Request)에 대한 권한을 가지고 있는지 판별할 수 있도록 한다. Spring MVC를 사용하는 경우, Acegi Security 프레임워크 등 다른 오픈 소스와 연계하여 인증 및 권한 부분을 처리할 수 있다.
  • Double Submit 방지 : 설정 파일(XML)에 선언적인 방식으로 Double Submit 방지 기능을 정의하여 사용할 수 있다. 이를 통해 Form submit 중복(브라우저 Refresh, Submit 2회 이상 수행)으로 인한 오동작을 방지할 수 있는 기능을 제공한다.
  • 재사용성이 높은 공통 Ajax UI 컴포넌트 제공 : 데스크탑과 같은 기능과 특징을 가진 웹 어플리케이션을 위한 기반 기술로 Ajax를 지원하며 Grid, Tree, Tab, Calendar, Combo, Form 등 Ajax 상용 제품인 Nitobi에서 제공한 UI 컴포넌트를 이용한 화면 유형 별 개발 템플릿 8종을 제공한다. (Nitobi UI 컴포넌트는 상용 제품이므로 사용 시 구매해야 한다. 단, 30일 Trial 버전을 다운로드 받아 테스트해볼 수 있다.)
  • 다양한 웹 클라이언트(UI) 연계 지원(Ajax/X-internet Integration) : 다양한 Ajax 및 X-internet과 Anyframe Core/Web을 연계할 수 있도록 모듈을 제공하고 있다. Ajax/X-internet 제품 연계에 대한 자세한 내용은 이곳 을 참고하도록 한다.

Struts Framework 소개

아파치 자카르타 프로젝트 중의 하나로 Servlet, JSP 기술 기반의 오픈소스 프레임워크이다. 웹 어플리케이션을 만들 때 기반으로 삼을 수 있는 통합 하부구조를 제공하며 이를 통해 개발자는 비지니스 어플리케이션 구현에 집중할 수 있게 된다. Apache Struts의 특징은 다음과 같다.
  • Model-And-View의 디자인 패턴 즉, Model2의 아키텍처를 지원한다.
  • ActionForm, Java Bean 같은 폼 관리 기능을 제공한다.
  • 폼 입력값의 검증을 위해 validation을 이용할 수 있다.
  • 화면 레이아웃 구현을 위한 Tiles를 제공한다.
  • JSP 태그 라이브러리를 제공하여 View 레이어를 보다 쉽게 개발할 수 있다.
Model Component :
Model Component를 만드는 다양한 방법을 직접 제공하지 않는다. 대신 EJB (Enterprise Java Beans), JDO (Java Data Objects), JavaBeans, ORM (Object to Relational Mapping framework ) 등 여러 기술들을 이용해 구현된 어떤 Model Component 에도 접근 가능하다
View Component :
표준 JSP 나 Struts에서 제공하는 tag library 를 사용하여 View Component를 제작 한다. Component의 재사용, 관리 노력의 절감, 에러 감소를 위해 Application-Specific Custom tag, Page Composition (etc Tiles), Image Rendering Component 등 다른 기술의 채택을 고려할 수 있다.
Controller Component :
ActionServlet과 RequestProcessor 가 Controller 역할을 담당하고 있으며 Request 의 Flow를 제어한다
Anyframe Web Architecture (Struts Base)
Web Framework의 담당 영역 :
MVC의 View 와 Controller 영역만 담당한다.
Web Framework 기반의 웹 어플리케이션 개발 :
  • 페이지 레이아웃을 설계하여 JSP로 표현 부분을 작성한다.
  • 사용자 입력값(HTML Form) 의 Controller 전달과 입력값 검증 및 데이터 버퍼로써의 역할을 수행하는 ActionForm 클래스를 작성한다.
  • 각각의 Http Request 에 대해 처리와 응답을 담당할 Action 클래스를 작성한다.
  • struts-config.xml 파일 내에 페이지 네비게이션과 관련된 Action Mapping 을 작성한다.

SpringMVC 소개

Spring Framework 프로젝트 중의 하나로 Servlet, JSP 기술 기반의 오픈소스 프레임워크이다. 웹 어플리케이션을 만들 때 기반으로 삼을 수 있는 통합 하부구조를 제공하며 이를 통해 개발자는 비지니스 어플리케이션 구현에 집중할 수 있게 된다. Spring MVC의 특징은 다음과 같다.
  • Model-And-View의 디자인 패턴 즉, Model2의 아키텍처를 지원한다.
  • Spring Framework의 다른 모듈과의 연계가 용이하다.
  • 컨트롤러, command 객체, 모델 객체, validator등 각각의 역할에 대해 명확히 분리되어있다.
  • Form 객체가 필요하지 않은 사용자 지정가능한 데이터 바인딩과 유효성 체크가 가능하다.
  • 어떠한 view기술과도 연계가 용이하다.
  • 태그 라이브러리를 통해 message 출력, theme 적용 등과 입력폼을 보다 쉽게 구현할 수 있다.
Model Component :
Model Component를 만드는 다양한 방법을 직접 제공하지 않는다. 대신 EJB (Enterprise Java Beans), JDO (Java Data Objects), JavaBeans, ORM (Object to Relational Mapping framework ) 등 여러 기술들을 이용해 구현된 어떤 Model Component 에도 접근 가능하다
View Component :
표준 JSP 나 Spring에서 제공하는 tag library 를 사용하여 View Component를 제작 한다. 또한 Spring MVC에서는 로직 구현을 위한 JSTL태그의 사용을 권장하고 있다. Component의 재사용, 관리 노력의 절감, 에러 감소를 위해 Application-Specific Custom tag, Image Rendering Component 등 다른 기술의 채택을 고려할 수 있다.
Controller Component :
DispatcherServlet가 Controller 역할을 담당하고 있으며 Request의 Flow를 제어한다

Anyframe Web Architecture (Spring MVC Base)

Web Framework의 담당 영역 :
MVC의 View 와 Controller 영역만 담당한다.
Web Framework 기반의 웹 어플리케이션 개발 :
  • 페이지 레이아웃을 설계하여 JSP로 표현 부분을 작성한다.
  • 사용자 입력값(HTML Form) 의 Controller 전달과 입력값 검증을 할 수 있는 메소드 및 바인드 객체를 제공한다.
  • 각각의 Http Request 에 대해 처리와 응답을 담당할 Controller 클래스를 작성한다.
  • action-servlet.xml 파일 내에 페이지 네비게이션 관련된 Controller Mapping과 각각의 Controller의 속성을 정의한다.
웹 어플리케이션을 구축할 때 UI 요소는 사용자에게 직접적으로 보여지는 부분으로 유려한 사용자 인터페이스와 Grid, Tab, Tree 등 사용자 상호 작용성이 높은 컴포넌트에 대한 활용성은 중요하다. 이러한 기능의 경우 기존의 단순 HTML/JSP 환경으로는 구현이 어렵기 때문에 개선된 UI 구현 기술이 필요한 경우가 많다. 국내의 경우, 특히 대규모 기업 어플리케이션을 구축할 때 상용 X-internet 제품과의 연동 지원에 대한 요구가 많으며 Anyframe Web 은 이러한 요구 사항에 부합하도록 웹 UI 솔루션과의 연동 모듈을 지원하고 있다.
  • 사용자 인터페이스의 편의성, 기능성에 대한 요구
  • 이미 보유/선정된 UI 솔루션과의 연계 요구 - X-internet
  • 기 작성/운용중인 UI 모듈과 코드 수정없이 쉽계 연동될 수 있는 구조 - X-internet
  • 공통화/표준화 하여 개발 생산성 극대화
  • 플랫폼 독립적인 Web UI 요구 - Ajax
  • 비지니스 서비스의 재사용 요구 vs. 특정 UI 솔루션에 특화된 요구(재사용은 고려치 않고 단순하고 성능 지연없이 직접처리 가능한 서버 구조)

Anyframe Web과 통합되어 쉽게 사용할 수 있도록 현재 제공되고 있는 Ajax/X-internet 연동 모듈은 다음과 같다. 여기서 Ajax 컴포넌트를 제공하는 Nitobi 제품이나 X-internet 제품(MiPlatform, Gauce)은 모두 상용 제품이므로 구매하여 사용해야 한다.
Nitobi
  • Ajax 기반 상용 제품으로 10여 종의 Ajax UI 컴포넌트를 제공한다. 사용 시 구매해야 하나, 30일 Trial 버전을 다운로드 받아 테스트해볼 수 있다.
  • Grid, Tree, Tab, ComboBox, Form 컴포넌트 설치 및 레퍼런스 가이드, 사용예 제공
  • 8종의 가장 많이 사용되는 화면 유형별 UI Templates/Snippets 제공
  • Nitobi의 UI 컴포넌트와 직접 바인딩되는 Nitobi 제공 객체(GetHandler,SaveHanlder,Record 등) 로 직접 처리 가능한 NitobiSQLService 기반의 조회/CUD 처리- Template 가이드의 Ajax 활용 참조
MIPlatform(3.2)
  • 국내 TOBESOFT사 제품으로 WISYWIG 개발툴 지원이 강력하며 별도의 엔진을 통한 독자적 스크립트를 처리할 수 있다.
  • MiPlatform UI 연계용 공통 템플릿 클래스(DefaultMIActionSupport 등) 및 VO/Map, List 등 일반 Java 객체 <-> MiPlatform Dataset, VariableList 과의 Data 변환 공통 Util 제공
  • MiPlatform 의 UI 컴포넌트(Grid 등)와 직접 바인딩되는 MiPlatform 제공 객체(Dataset,Variable) 로 직접 처리 가능한 MIPSQLService 기반의 조회/CUD 처리- Template 가이드의 MiPlatform 활용 참조

위의 예와 같이 SI 프로젝트에서 많이 쓰이는 X-internet 제품의 경우 개발자 작성 영역을 최소화한 공통 연동 모듈과 템플릿을 제공하고 있다. 또한 Anyframe 은 표준 기술에 기반하여 확장에 유연한 구조를 제공하고 있기 때문에 이미 연동 모듈을 제공하고 있는 위 UI 솔루션 외에도 쉽게 연계가 가능하며, 어떤 UI 기술과도 유연하게 통합되어 전체적인 어플리케이션을 쉽고 빠르게 구축할 수 있도록 앞으로도 계속 확장될 것이다.

MVC에 관하여

The MVC Model
MVC(Model-View-Controller)란 중간에 Controller 컴포넌트를 두어 Data Access and Business Logic <-> Data Presentation and User Interaction 을 분리시킨 디자인 패턴이다.
  • Model : 모델에는 어플리케이션 기능의 핵심이 포함되며 어플리케이션의 상태를 캡슐화한다. 모델은 뷰나 컨트롤러를 볼 수 없다.
  • View : 모델의 표현이다. 모델이 변경될 때 공지를 받는다. 보통 사용자 인터페이스 요소이다.
  • Controller : 일반적으로 사용자의 액션에 대한 처리와 응답을 담당한다. 사용자 액션을 모델의 변경으로 매핑한다.

  • MVC의 장점

  • Model-View-Controller 는 대부분의 Web Application Framework 에서 필수적으로 지원하고 있는 중요한 아키텍처로 다음과 같은 장점이 있다.
    • 각 영역별로 역할이 명확히 구분되어 해당 영역에 집중하여 개발할 수 있다.
    • 모듈간의 의존성을 낮추어 재사용성 및 확장이 용이한 구조이다.
    • 전체 소프트웨어 라이프 사이클로 보았을 때 유지보수에 유리하기 때문에 대규모 프로젝트에서 특히 도움이 된다.
    • 프레임워크 기반으로 웹 어플리케이션을 작성하게 되면 MVC 설계 원칙을 강제할 수 있다.
MVC 패턴을 웹에 적용한 Model2 방식
Model2 개발 방식은 Model-View-Controller 로 각각의 역할을 나누어 작업하고자 하는 일을 분담시킨 MVC 패턴을 웹에 적용한 것이다.
  • View - 프리젠테이션 로직만을 처리한다. JSP가 담당.
  • Controller - 브라우저에서 요청을 받아 그 요청을 어디로 보낼지 결정한다. Servlet이 담당.
  • Model - 어플리케이션의 상태를 가지고 비지니스 객체들로 구성된다. Model 부분은 비지니스 레이어에 포함됨.
Anyframe Web 기반 개발의 특징
위와 같이 Anyframe은 어플리케이션 개발에 공통적으로 필요한 다양한 부분을 프레임워크화하여 Model2 방식의 일관되고 쉬운 개발을 지원하며 다음과 같은 특징을 가진다.
  • 널리 알려진 오픈 소스 웹 프레임워크(Struts, Spring MVC)를 기반으로 Open Standard를 지향하고 있음
  • Front Controller 패턴을 적용하여 하나의 대표 Servlet 으로 모든 클라이언트의 Request를 처리
  • 표준 URI 형식의 사용자 Request는 XML 설정 파일을 기반으로 개발자가 작성한 Controller 에 맵핑되어 모델 영역(비지니스 레이어)을 호출함
  • 처리 결과 또한 XML 설정에 따른 논리적인 View 로 적절히 선택하여 응답
  • Tag Library를 사용한 View 개선, 사용자 입력 유효성 검증, 에러처리, 국제화지원 등 다양한 UI 계층의 기술이 사용됨
  • Ajax 기반의 UI 컴포넌트와 화면 유형별 개발 템플릿 활용 가능
  • 현장에서 실제적으로 많이 요구되는 상용 X-internet 툴과의 연동 지원