메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

XForms Thick Clients

한빛미디어

|

2007-11-28

|

by HANBIT

6,094

제공 : 한빛 네트워크
저자 : Jack Cox
역자 : 이철
원문 : XForms Thick Clients

소개

모든 개발자는 사용자 요구사항이 애매하거나 데이터 모델이 잘 정의되지 않은 등의 문제에 직면해 있으며, 많은 경우에 프로젝트 막바지에 요구사항이 변경되기도 한다. 이러한 슬픈 현실 때문에 몇몇 개발자들은 문서기반 아키텍쳐를 환영하기도 한다. 하지만 이러한 접근 방법은 Thick Client 애플리케이션을 필요로 하는 네트워크에 연결되어 있지 않은 디바이스를 포함하는 환경에 직면하면 소용이 없어진다. 이 기사는 네트워크에 연결되어 있지 않는 환경에서 XForms를 이용하여 문서 기반의 Thick Client 애플리케이션을 구축하는 컴포넌트와 테크닉을 설명한다. 이러한 접근 방식을 이용하면 배치 비용이 적게 들고, Thick Client의 크로스 플랫폼 사용이 가능하며, 기업 내에서 컴포넌트의 재사용성을 높일 수 있다. 일반적으로 엔터프라이즈 네트워크 배치에는 웹 베이스 애플리케이션이 최적임에도 불구하고, 네트워크에 연결되어 있지 않는 동안에도 동일한 애플리케이션에 접근하기를 필요로 하는 사용자 층이 있다. XForms 및 다른 XML 기술이나 Java를 이용하면 네트워크에 연결되어 있지 않은 사용자가 네트워크에 연결된 사용자처럼 동일한 애플리케이션에 접근할 수 있는 시스템을 구축할 수 있으며, 유연성을 갖는 문서 기반 시스템을 구축할 수 있다. 이 기사는 프리젠테이션, 비즈니스 로직, 전략 로직 및 보안 등을 포함하는 XForms 기반의 Thick Client에 사용되는 컴포넌트를 다룬다.

접근 방식

XForms 같은 네트워크 기반의 기술을 사용하려면 각각의 컴포넌트들이 필요하다. 이를 이용한 애플리케이션은 특정 운영체제에 맞는 실행파일이 되며, 이러한 실행파일은 멀티 시스템에서 널리 사용되는 모든 애플리케이션을 포함한다. [그림1]은 이러한 Thick Client의 컴포넌트 및 계층을 보여준다.


[그림 1]

각 OS에 맞는 실행파일의 가장 아랫단은 디스플레이 컨텍스트의 제공, 각 클래스의 경로 정보의 세팅 및 자바 가상 머신(JVM)의 초기화 같은 부트스트래핑(Bootstrapping)을 담당한다. 브라우저 컴포넌트는 디스플레이 컴포넌트로서 OS의 기본 브라우저를 내장한다. 프리젠테이션 레이어는 브라우저 컴포넌트에 표시되는 HTML/CSS를 생성한다.

OS의 실행파일은 각 애플리케이션 로직을 실행하기 위한 JVM을 로드 한다. 초기 자바 클래스는 내장된 서버 컴포넌트를 초기화 하며, 이 서버 컴포넌트는 전통적인 3개의 애플리케이션을 포함하고 있다. 데이터베이스가 실행파일 내에 내장 되므로, 모든 레이어의 애플리케이션을 하나의 실행파일로 묶으면서 애플리케이션이 실행되기 전에 데이터베이이스를 먼저 실행되도록 할 필요는 없다.

이클립스 RCP 프로젝트는 프리젠테이션 레이어의 결과을 디스플레이 할 브라우저 컴포넌트를 포함하는 런타임 환경을 제공한다. RCP는 Java 프로그램을 다양한 타겟 플랫폼에 맞는 실행파일로 감싼다. 따라서 RCP를 사용하면 동일한 Java 컴포넌트에 기반한 Windows, Mac OS X, Linux와 같은 플랫폼에서 모두 실행될 수 있는 프로그램을 작성할 수 있다.

프리젠테이션 레이어

XForms는 문서 기반 애플리케이션 내에서 관리되는 XML 문서와의 깔끔한 상호 작용을 위한 적절한 도구를 제공한다. XForms는 웹 애플리케이션에서 사용자 입력을 받는 XML 기반의 방식을 제공한다. XForms는 폼에서 사용되는 XML 문서의 내용을 관리함으로써 개발자에게 페이지의 내용에 대한 완벽한 관리 방법을 제공한다. 예를 들어, 여러분은 사용자에게 이벤트 및 액션을 이용해서 유효성 검사의 즉각적인 피드백을 줄 수 있다.

문서 기반 시스템에서 XForms를 이용하면, 개발자는 XForms 모델 내에서 내용 및 유효성 규칙을 지정하여 데이터의 내용과 유효성 규칙을 관리할 수 있다. XForms는 프리젠테이션 레이어의 프리젠테이션 로직의 표현을 단순화 시킬 수 있지만, 비니지스 로직의 코딩을 어렵게 한다.

XForms 애플리케이션을 배치하는 데에는 2가지 방법이 있다. 첫 번째 방법은 플러그인 또는 브라우저 내에서 XForms를 지원하는 확장 프로그램을 사용하는 것이고, 두 번째 방법은 XForms를 브라우저로 보내기 전에 HTML이나 JavaScript로 변환시키는 변환 레이어를 사용하는 것이다. XForms 내에서 사용하는 브라우저의 확장 프로그램에는 Mozilla XFormsformsPlayer (IE의 ActiveX 컨트롤)이 있다. 소프트웨어 변환 툴에는 Chiba, OrbeonIBM Lotus Forms이 있다.

애플리케이션이 OS에 의해서 결정된 내장된 브라우저 컴포넌트와 동작하므로, 가장 좋은 방법은 소프트웨어 변환 레이어를 사용하는 것이다. Orbeon은 XForms 1.0을 제공하며, XForms 1.1의 몇 가지 향상된 부분을 포함한다. Orbeon은 표준 배포판에 XML 기반의 비즈니스 레이어 및 XML 데이터베이스를 포함하였다. 3개의 레이어를 모두 배포판에 포함하여 초기 개발 환경을 구축하는 시간을 줄일 수 있다. 또한 Orbeon은 폼에서 편집하는 내용을 데이터 모델로 런타임으로 보여주는 굉장히 편리한 디버깅 위젯을 제공한다.

비즈니스 레이어

프리젠테이션 레이어가 XML을 사용하므로, 비즈니스 레이어는 XML을 객체 지향(Object Oriented)적인 표현으로 변환 하거나, 비즈니스 로직이 XML에서 바로 수행되어야 한다. 객체 재향적 표현으로 변환되는 것을 피할 수 있다면 비즈니스 레이어는 처리 로직에 직접적인 영향을 주지 않는 범위의 스키마로의 변화에 대해서는 영향을 받지 않을 수 있다. 비즈니스 레이어가 스키마의 변화에 영향을 받지 않으면 시스템의 어떠한 변화에도 영향을 받지 않으므로 유지 보수의 용이성 및 확장성이 향상된다.

XForms는 비즈니스 레이어가 XML 문서를 입력으로 받을 수 있고, XForms 문서를 처리할 수 있으면 비즈니스 레이어와 관계없이 동작한다. 비즈니스 레이어가 XML 중심으로 되어 있을수록 연결 코드(glue code)의 사용이 필요 없게 된다. XML 중심의 비즈니스 레이어의 대안은 XML Pipelines (XPL)로 알려진 W3C 의 표준안의 초안이다.

XPL은 개발자가 XML 문서를 처리하기 위한 연속된 단계를 정의할 수 있도록 한다. 이 단계는 XSLT 변환, 문서 생성, 필터링, 반복(looping) 및 Java 클래스의 호출 등을 포함할 수 있다. 많은 경우에 복잡한 비즈니스 로직은 저수준(low-level) 언어로 된 코드의 생성 없이 문서에 대해서 수행될 수 있다. XForms 모델은 XForms와 비즈니스 로직 사이의 연결 코드의 필요성을 제거함으로써 XPL Pipeline에 직접 액션을 보낼 수 있다. XPL은 또한 더 복잡한 알고리즘이 요구되면 Java 클래스, EJB 및 웹서비스에 직접 호출하기 위한 후킹(hook)을 제공한다.

저장(Storage)

Thick Client 애플리케이션이 데이터를 저장하기 위한 여러 방법이 있으며, XML-관계형 매핑을 필요로 하는 Derby와 HSQLDB 같은 내장된 관계형 데이터베이스를 사용하는 방법도 포함된다. 매핑이 수행되면 XML 스키마와 데이터베이스 스키마는 반드시 동기가 맞아야 한다.

프리젠테이션 레이어와 비즈니스 레이어가 XML 문서를 직접 다루면 애플리케이션 데이터를 관계형 표현으로 변환하지 않고 XML로 저장하는 방법은 변환 레이어 전체를 사용할 필요가 없게 한다. eXist, XIndiceTamino와 같은 XML 데이터베이스는 문서를 XML로 저장하고 다시 이 문서를 XQuery이나 XPath 쿼리에 기반하여 검색할 수 있는 방법을 제공한다. XML 데이터베이스를 이용해서 데이터베이스의 스키마는 데이터베이스에 저장된 문서에 의해서 완벽히 주도된다. 따라서 새로운 구성요소가 프리젠테이션 레이어에 추가되어도 데이터베이스가 변화될 필요는 전혀 없다.

보안

분산된 애플리케이션에서 보안은 접근 보안과 데이터 보안에 집중된다.

접근 보안 또는 인증은 애플리케이션 컨테이너나 운영체제를 통해서 다루며, 이 문제는 대부분의 애플리케이션 디자인에서 중요하기는 하지만 본 기사에서는 깊이 다루지 않는다. 인증을 수행하는 가장 직접적인 방법은 JAAS를 사용하여 애플리케이션의 페이지를 보호하는 것이다. XML 데이터베이스의 로컬 스토리지와 결합하여 여러분은 사용자가 오프라인일 때 사용할 수 있도록 인증서를 안전하게 저장할 수 있다.

데이터 보안은 디스크에 저장된 데이터를 인증되지 않은 접근으로부터 막는 것이다. 애플리케이션이 프리젠테이션으로 XForms를 사용하고, 데이터의 저장을 위해서 XML 데이터베이스를 사용하면, 데이터의 암호화는 비즈니스 레이어와 스토리지 레이어 사이에서 수행되어야 한다. 비즈니스 레이어는 암호화된 데이터를 포함하는 XML 문서를 생성하고 소비한다. W3C XML 암호화 권고안(W3C XML Encryption Recommendation)은 암호화된 XML을 표준 컨테이너 내에서 표현하는 직접적인 방법을 명시하였다. 권장하는 방법은 문서의 인덱싱을 위한 약간의 부모 데이터 구성 요소를 텍스트 파일에 저장하고, 저장을 위해 암호화된 모든 비밀 정보를 자식 트리로 분리하는 것이다. XML 암호화 애플리케이션은 비즈니스 로직 다음의 파이프라인 단계에서 수행되면 된다.

장점

이러한 접근방식의 장점은 다음과 같다.
  • 애플리케이션의 유지 보수를 굉장히 쉽게 만든다. 최근 수행한 프로젝트에서 필자는 문서 내에서 100개가 넘는 TurboTax 스타일의 데이터 구성 요소 을 갖는 애플리케이션을 구축하였다. 필드가 새로 추가되거나 변경될 때 시스템에 있는 XSD, 모델 정의, 데이터가 수집되는 페이지의 3개의 파일만 영향을 받았다.
  • XForms의 모델 바인딩을 사용해서, 여러분은 JavaScript를 사용하거나 외부 JavaScript 라이브러리를 관리할 필요 없이 굉장히 다이내믹한 인터페이스를 만들 수 있다.
  • Thick Client 애플리케이션과 온라인 애플리케이션 사이의 재사용 수준을 높인다.
  • 동일한 애플리케이션이 네트워크 기반의 접근을 위한 웹 서버에서 실행될 수도 있고, Thick Client 형태의 접근을 위한 오프라인 실행파일의 형태로 배포될 수도 있다.
문제점

이러한 접근 방법의 문제는 다음과 같다.
  • Thick Client 애플리케이션의 크기가 꽤 커진다. 위에서 말한 100여개의 구성 요소를 갖는 애플리케이션의 크기는 70MB(JRE 및 인스톨러 포함) 정도가 된다. 하지만 추가적인 요소를 추가해도 그 크기가 크게 늘어나지는 않는다.
  • XForms 프로그래밍 모델이 많은 개발자들에게 익숙하지는 않다. 개발자들은 기존의 순차적 또는 이벤트 주도 모델과는 다른 상태 주도 프로그래밍 모델(state drive programming model)을 이해하는데 새로운 훈련을 필요로 할 것이다.
  • 프로그램이 비표준 OS 자원에 접근하는 경우에는 Windows 시스템에서 Java 환경을 사용하는 것도 쉽지 않다.
결론

독립적인 애플리케이션에 XForms를 사용하는 것은 온라인 및 오프라인 애플리케이션 모두에 유연하고 유지 보수가 쉬운 플랫폼을 제공한다. 여러분의 사용자가 요구사항을 표현하거나 정리하는데 어려움이 있다면 XForms 같은 유연한 시스템이 가장 좋은 선택이 될 수 있을 것이다.


역자 이철님은 대학시절 학회(HandS)에서 마이크로로봇을 통해 임베디드 시스템에 발을 들어놓았으며, (주)바이오스페이스에서 운좋게 의료기기의 개발부터 생산까지 두루 경험해보았습니다. 지금도 그렇지만 당시에는 H/W 및 Firmware 제작에 관심이 아주 많았습니다. 현재는 실무에서 약간 벗어나서 고려대학교 전자전기공학과 대학원에서 영상 신호처리를 공부하고 있습니다.
TAG :
댓글 입력
자료실