KR101552914B1 - 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체 - Google Patents

웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체 Download PDF

Info

Publication number
KR101552914B1
KR101552914B1 KR1020070009553A KR20070009553A KR101552914B1 KR 101552914 B1 KR101552914 B1 KR 101552914B1 KR 1020070009553 A KR1020070009553 A KR 1020070009553A KR 20070009553 A KR20070009553 A KR 20070009553A KR 101552914 B1 KR101552914 B1 KR 101552914B1
Authority
KR
South Korea
Prior art keywords
template
management unit
file
environment
query
Prior art date
Application number
KR1020070009553A
Other languages
English (en)
Other versions
KR20090000199A (ko
Inventor
신종훈
김동우
정의정
신동민
남기훈
김태영
이지웅
강혜진
Original Assignee
에스케이커뮤니케이션즈 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이커뮤니케이션즈 주식회사 filed Critical 에스케이커뮤니케이션즈 주식회사
Priority to KR1020070009553A priority Critical patent/KR101552914B1/ko
Publication of KR20090000199A publication Critical patent/KR20090000199A/ko
Application granted granted Critical
Publication of KR101552914B1 publication Critical patent/KR101552914B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services

Landscapes

  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 외부 설정 파일들을 효과적으로 활용하고, 범용적 템플릿 구조를 유지하도록 하여 개발 용이성 및 개발자의 접근성을 개선하도록 한 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체에 관한 것으로, 이를 위해 프레임워크를 구성하는 복수의 컴포넌트에 대한 환경 및 컨트롤 설정 정보를 중앙에서 범용 형식의 파일을 통해 일괄 관리하도록 하고, 상기 환경 설정에 따라 로딩되지 않은 클래스를 자동적으로 파악하여 로딩하도록 함으로써, 개별 컴포넌트나 컨트롤에 대한 분산된 환경설정이나 구체적인 클래스 위치 지정 없이도 용이하게 프레임워크를 사용할 수 있어 개발 시간이 단축되고, 어플리케이션 효율이 높아지는 효과가 있다. 또한, 템플릿 파일 구조를 범용적인 XHTML을 확장하여 사용하도록 하고, 기본 태그를 커스텀화 할 수 있도록 하여 동일한 태그에 대한 작업을 반복적으로 실시하지 않도록 함으로써, 관점지향 프로그래밍을 지원하여 특정 부분에 대한 일괄적 처리가 가능하여 개발, 유지 및 보수 시간을 단축하고 다양한 효과를 더 제공할 수 있는 효과가 있다.

Description

웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체{WEB SERVER APPLICATION FRAMEWORK, WEB APPLICATION PROCESSING METHOD USING THE FRAMEWORK AND COMPUTER READABLE MEDIUM PROCESSING THE METHOD}
도 1은 일반적인 웹 서버 어플리케이션의 구성을 보인 구성도.
도 2는 일반적인 MVC(모델-뷰-콘트롤러) 방법론의 개념도.
도 3은 본 발명 일 실시예의 아키텍쳐.
도 4는 본 발명 일 실시예의 뷰-콘트롤러 구성도.
도 5는 본 발명 일 실시예의 모델 구성도.
도 6은 본 발명 일 실시예를 수행하기 위한 장치의 블록도.
** 도면의 주요 부분에 대한 부호의 설명 **
30: 시스템 관리부 31: 인스톨러
32: 클래스 로딩부 33: 환경설정 관리부
34: 예외처리부 40: 콘트롤러
41: 제어부 42: 브로커부
50: 모델 51: 데이터 억세스부
52: 데이터베이스 관리부 53: 쿼리 관리부
60: 뷰 61: 템플릿 관리부
62: 메세지 관리부 63: 이미지 관리부
본 발명은 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법에 관한 것으로, 특히 외부 설정 파일들을 효과적으로 활용하고, 범용적 템플릿 구조를 유지하도록 하여 개발 용이성 및 개발자의 접근성을 개선하도록 한 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체에 관한 것이다.
점차 일상화되어가는 인터넷 문화는 더 방대하고 더 빠르게 진화하는 웹 어플리케이션을 끊임없이 요구하고 있다. 이러한 웹 어플리케이션의 개발 방향은 새로운 요구에 맞춘 혁신적인 프로그래밍 언어나 코딩 기법을 연구하는 것과, 현재 사용되고 있는 프로그래밍 언어나 코딩 기법을 더욱 효과적으로 활용할 수 있도록 하는 방법을 연구하는 것으로 나눌 수 있다. 또한, 이러한 웹 어플리케이션의 개발 동향 역시 웹 서버측에서 수행되는 스크립트 언어를 이용하는 방식과 웹 클라이언트 측에서 독립적으로 수행되는 스크립트 언어를 이용하는 방식으로 나뉘어 발전하고있다.
일반적으로 웹 클라이언트 측에서 독립적으로 수행되는 스크립트 언어는 널 리 알려진 바와 같은 자바 스크립트나 비주얼 베이직 스크립트 등이 있으며 이들은 보다 방대한 웹 어플리케이션을 웹 클라이언트 측에서 웹 브라우저를 이용하여 자체적으로 수행하도록 함으로써 데스크탑 어플리케이션에 버금가는 효율을 얻고자 하는 방향으로 개선이 진행중이다.
그리고, 실질적으로 다양한 데이터베이스를 이용하여 사용자가 원하는 정보를 웹 클라이언트 측에서 확인할 수 있도록 웹 데이터로 가공하여 제공하는 서버측스크립트 언어는 이를 보다 효과적으로 활용하여 쉽고 간단하게 웹 어플리케이션을 개발하고자 하는 방향으로 개선이 진행 중이다. 상기 서버측 스크립트 언어는 PHP(Professional HTML Preprocessor), 자바 스크립트, 비주얼 베이직 스크립트 등이 있으며, 이 중에서 데이터베이스 관리 기능이 뛰어난 PHP의 활용이 두드러진다.
도 1은 일반적인 PHP 적용 시스템의 구성을 보인 것으로, 도시한 바와 같이 웹 서버(10)의 웹서버 프로그램(11)은 상기 클라이언트(1)의 요청을 PHP 모듈(12)에 제공하고, 상기 요청을 받은 PHP 모듈(12)은 데이터베이스(13)로부터 해당 요청에 대한 결과를 획득하여 상기 클라이언트(1)에 제공할 수 있도록 구성된다. 상기 클라이언트(1)로부터의 요구에 따라 데이터베이스 쿼리를 생성하고, 이를 통해 데이터베이스(13)로부터 원하는 정보를 얻은 후 그 정보를 상기 클라이언트(1), 즉 클라이언트측 웹 브라우저가 표현할 수 있는 정보 형태로 가공하여 제공하는 역할은 PHP 모듈(12)이 실시하게 되며, 이러한 PHP 모듈(12)의 역할이 웹 어플리케이션이 된다.
일반적으로 디자인 코드와 논리 코드를 용이하게 결합하여 사용할 수 있도록 개발된 웹 서버용 스크립트 언어는 디자인 코드와 논리 코드의 용이한 결합 특성에 의해 하나의 웹 페이지를 디자이너와 프로그래머가 동시에 코딩해야 하는 상황이 발생할 수 있으며, 소규모 어플리케이션에서는 이러한 방식을 이용하기도 한다. 하지만, 방대한 어플리케이션 개발을 위해 복수의 개발자들이 자신의 영역을 분업화하여 독자 개발하는 경우에는 각 개발자들이 자신의 담당 영역만을 개발한 후 이들을 결합하여 어플리케이션을 완성하기 때문에 디자인 코드와 논리 코드를 분리하기 위한 설계와 구현방법의 기준을 정한 후 각 개발자들이 해당 기준에 대해 숙지해야 할 뿐만 아니라, 이러한 담당 영역들을 효과적으로 분리하고 그 결과로 얻어지는 코드들을 결합하여 해당 웹 어플리케이션이 원활하게 동작할 수 있도록 전체적인 시스템을 설계할 수 있는 능력도 요구되게 된다.
따라서, 짧은 개발 기간과 낮은 비용을 투입하여 방대한 웹 어플리케이션을 생산해야하는 시대적 요구를 만족시키기 위해서는 전체적인 어플리케이션의 틀과 함께 디자인 코드와 논리 코드를 분리하기 위한 설계 기준이 자동적으로 제공되는 라이브러리나 미들웨어를 활용해야하며, 이러한 목적으로 프레임워크의 도입이 일반화되고 있다. 프레임워크란 "입출력", "화면간 이동", "디자인과 로직의 분리", "인증과 세션관리" 등의 기본적인 기능을 제공하는 어플리케이션을 위한 토대 또는 틀이라고 할 수 있다. 따라서 프레임워크의 도입으로 자주 사용하는 기능을 개발자가 일일이 구현하는 수고를 덜 수가 있으며, 프로젝트 기획자도 상세한 부분까지 프로젝트 기획을 할 필요가 없어지게 된다. 물론 프로젝트 기간도 단축되게 된다. 뿐만 아니라 자주 사용되는 기능을 위한 코드가 어플리케이션 내에 중복되어 산재 하게 되는 상황을 피할 수 있게 된다.
그리고 개발자는 프레임워크의 기능을 사용함으로써 자연스럽게 프레임워크 즉, 정형화된 틀 속에서의 개발이 가능해 지므로 같은 처리를 하는 코드를 누가 작성하더라도 동일한 코드가 되기 때문에 애플리케이션의 품질을 일정하게 유지할 수 있게 되는 부가적인 효과도 얻을 수 있다.
하지만, 다양한 종류의 프레임워크의 등장으로 인하여 개발자는 자신이 선택한 프레임워크에 대해서 실제 서버 스크립트 언어를 배울 때보다 더 많은 노력을 기울여 그 기능과 사용 방법 및 각종 설정 방식을 공부해야만 하는 문제점에 직면하게 되었다. 예를 들어, 상기 PHP의 경우 수십종에 이르는 프레임워크들이 존재하며, 각각은 서로 상이한 사용방법과 접근 방식을 가지고 있다.
특히, 객체지향 프로그래밍의 추세에 따라 다양한 클래스 관련 기능과 컴포넌트 관련 기능을 구비한 일반적인 프레임워크의 경우 컴포넌트 단위로 해당 컴포넌트의 환경이나 컨트롤 설정을 관리하도록 구성되기 때문에 복잡한 설정이 필수적이다. 예를 들어, 종래의 프레임워크는 복수 컴포넌트들 각각의 환경설정을 해당 컴포넌트들이 관리했기 때문에 특정 컴포넌트의 환경설정정보가 변경된 경우 프로그램 개발자는 해당 컴포넌트 및 그 컴포넌트를 참조한 컴포넌트들을 일일이 찾아가며 해당 설정정보를 변경해야 했다. 따라서, 프로그램 개발의 생산성이 낮아지고, 프로그램의 유지 보수 및 버전 관리가 어렵다.
또한, 실질적으로 이용자에게 결과를 제공하기 위해 구현되는 템플릿의 경우 함수 요청 형태로 사용되고 있어 관리가 어렵고 객체지향 특성이 낮으며 불필요한 리소스의 점유가 있을 뿐만 아니라 무엇보다도 새로운 형식으로 템플릿을 정의하여 사용하기 때문에 템플릿을 이용하기 위해서 또다시 새로운 형식을 익혀야만 하는 부담이 발생한다. 즉, 이 역시 개발자가 용이하게 프레임워크를 교체하거나 도입하기 어렵게 만들고 프로그램 개발의 생산성을 낮추는 요인이 된다.
상기와 같은 서버측 스트립트 언어용 프레임워크에 대한 개발자 접근성과 생산성을 개선하기 위해서 새롭게 제안하는 본 발명 실시예들의 목적은 프레임워크를 구성하는 복수의 컴포넌트에 대한 환경 및 컨트롤 설정 정보를 중앙에서 범용 형식의 파일을 통해 일괄 관리하도록 하고, 상기 환경 설정에 따라 로딩되지 않은 클래스를 자동적으로 파악하여 로딩하도록 함으로써, 개별 컴포넌트나 컨트롤에 대한 분산된 환경설정이나 구체적인 클래스 위치 지정 없이도 용이하게 프레임워크를 사용할 수 있도록 한 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 것이다.
본 발명 실시예들의 다른 목적은 템플릿을 객체화하여 프로그램 개발자들이 템플릿 사용을 용이하게 하고, 그 형식을 범용적인 표준 기술방법(예를 들어 XHTML)에 따르도록 함으로써, 개발자가 용이하게 템플릿을 활용할 수 있도록 한 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 것이다.
본 발명 실시예들의 또 다른 목적은 템플릿 파일 구조를 범용적인 XHTML을 확장하여 사용하도록 하고, 기본 태그를 커스텀화 할 수 있도록 하여 동일한 태그에 대한 작업을 반복적으로 실시하지 않도록 함으로써, 관점지향 프로그래밍을 지원할 수 있도록 한 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 것이다.
본 발명 실시예들의 또 다른 목적은 DB 쿼리 문장과 파라메터를 분리하여 DB 쿼리 문장은 별도의 범용 형식 파일로 관리하고, 파라메터는 목적 코드에 제공하도록 함으로써, 상기 파라메터에 대한 보안성을 높이고, 복수 문자세트에 대한 자동 변경 기능등을 지원할 수 있도록 한 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 것이다.
본 발명 실시예들의 또 다른 목적은 템플릿을 통해 제공할 메세지를 범용적인 포멧의 파일로 관리하도록 함으로써, 다중 언어에 대응하는 메세지를 용이하게 선택하여 제공할 수 있도록 한 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 것이다.
본 발명의 목적은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어질 수 있을 것이다.
상기와 같은 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 프레임워크는, 모델-뷰-콘트롤 구조를 통해 데이터베이스를 연동하는 기능을 제공하는 웹 서버 어플리케이션 프레임워크에 있어서, 다수의 컴포넌트 각각의 환경 및 컨트롤 설정 정보를 통합 관리하는 환경정보 관리부와; 클래스 사용시 해당 클래스가 정의된 파일의 위치를 상기 환경정보 관리부에 설정된 정보를 근거로 파악하여 자동적으로 로드하는 클래스 로딩부와; 상기 환경정보 관리부에 저장된 정보에 의거하여 상기 프레임 워크를 구성하는 다수의 컴포넌트들의 동작 및 연결 관계를 제어하는 제어부와; 상기 제어부의 제어에 의거하여 객체화된 템플릿을 처리하는 템플릿 관리부를 포함하는 것을 특징으로 한다.
상기 환경정보 관리부는 상기 복수 컴포넌트의 환경 및 컨트롤 설정 정보들을 프로그래밍 언어와 상관없이 사용할 수 있는 파일 형태로 저장하는 것을 특징으로 한다.
상기 클래스 로딩부는 상기 환경정보 관리부에 설정된 정보를 근거로 로딩되지 않은 클래스가 정의된 파일이 위치한 폴더에 존재하는 파일들로부터 원하는 클래스를 검색하여 로딩하는 것을 특징으로 한다.
상기 템플릿 관리부는 태그 구조의 템플릿 객체를 생성하며, 상기 태그 구조를 사용자가 임의로 변경하거나 새롭게 정의할 수 있도록 하는 것을 특징으로 한다.
상기 제어부가 제공하는 쿼리에서 쿼리 문장과 파라메터를 분리하고 상기 쿼 리 문장을 별도 파일로 관리하며, 상기 파라메터는 직접 데이터베이스에 제공하는 데이터베이스 관리부를 더 포함하는 것을 특징으로 한다.
또한, 본 발명의 다른 실시예에 따른 프레임워크는, 모델-뷰-콘트롤 구조를 통해 데이터베이스를 연동하는 기능을 제공하는 웹 서버 어플리케이션 프레임워크에 있어서, 다수의 컴포넌트 각각의 환경 및 컨트롤 설정 정보를 통합 관리하는 환경정보 관리부와; 범용 태그 구조의 형식을 가지는 템플릿을 객체로 생성하는 템플릿 처리부와; 상기 템플릿 처리부가 생성한 템플릿에 표시될 메세지를 관리하는 메세지 관리부와; 쿼리에 따라 데이터베이스를 선택하여 그 결과를 수신하는 데이터베이스 관리부와; 요청된 쿼리를 상기 데이터베이스 관리부에 제공하고 그 결과를 수신하여 상기 메세지 관리부에 제공하는 브로커와; 상기 환경정보 관리부에 저장된 정보에 의거하여 상기 프레임 워크를 구성하는 다수의 컴포넌트들의 동작 및 연결 관계를 제어하고, 사용자로부터 쿼리를 요청 받아 상기 브로커에 제공하며, 상기 템플릿 처리부에 템플릿 생성을 지시하고, 상기 메세지 관리부에 표시할 메세지를 선택하는 제어기를 포함하는 것을 특징으로 한다.
또한, 본 발명의 또 다른 실시예에 따른 모델-뷰-콘트롤 구조를 통해 데이터베이스를 연동하는 기능을 제공하는 웹 서버 어플리케이션 프레임워크를 이용한 웹 어플리케이션 수행 방법에 있어서, 다수의 컴포넌트 각각의 환경 및 컨트롤 설정 정보를 범용 구조 파일로 설정하는 환경설정 단계와; 상기 모델-뷰-콘트롤을 포함하는 각 모듈에 대한 어플리케이션 스크립트 코드를 해석하여 쿼리에 대한 결과를 제공하는 과정을 수행하는 수행 단계와; 상기 수행 단계에서 클래스 사용시 해당 클래스가 정의된 파일의 위치를 상기 환경정보 관리부에 설정된 정보를 근거로 파악하여 자동적으로 로드하는 자동 로드 단계와; 상기 수행 단계에서 템플릿을 정의할 경우 범용 태그 구조의 형식을 가지는 템플릿을 객체로 생성하는 템플릿 관리 단계와; 상기 수행 단계에서, 상기 쿼리에 대한 결과를 데이터베이스로부터 획득하는 쿼리 처리 단계와; 상기 쿼리 처리 단계에서 얻은 쿼리에 대한 결과를 상기 템플릿 객체를 통해 표현하는 단계를 포함하는 것을 특징으로 한다.
상기 쿼리 처리 단계는 쿼리 문장과 파라메터를 분리하고 상기 쿼리 문장을 별도 파일로 관리하며, 상기 파라메터는 직접 데이터베이스에 제공하는 단계를 더 포함하는 것을 특징으로 한다.
상기 환경설정 단계는 상기 복수 컴포넌트의 환경 및 컨트롤 설정 정보들을 프로그래밍 언어와 상관없이 사용할 수 있는 파일 형태로 저장하는 단계를 포함하는 것을 특징으로 한다.
상기 자동 로드 단계는 상기 환경 설정 단계에서 설정된 정보를 근거로 로딩되지 않은 클래스가 정의된 파일이 위치한 폴더에 존재하는 파일들로부터 원하는 클래스를 검색하여 로딩하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 본 발명의 또 다른 실시예에 따른 기록 매체는 전술한 웹 서버 어플리케이션 프레임워크를 이용하여 웹 어플리케이션을 수행하는 프로그램이 수록된다.
이러한 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있도록 프로그램 및 데이터가 저장되는 모든 종류의 기록매체를 포함한다. 그 예로는, 롬(Read Only Memory), 램(Random Access Memory), CD(Compact Disk), DVD( Digital Video Disk)-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한 케리어 웨이브(예를 들면, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함된다. 또한, 이러한 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
상기한 바와 같은 본 발명을 첨부된 도면들과 실시예들을 통해 상세히 설명하도록 한다.
도 2는 일반적인 모델-뷰-콘트롤러(이하, MVC라 칭함) 디자인 패턴 방식에 대한 개념을 보인 도면으로, 객체지향 프로그래밍에서 사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련시키기 위한 방법론 또는 설계 방식 중 하나이다. 이러한 MVC는 도시한 바와 같은 콘트롤러(21), 뷰(22) 및 모델(23)과 같은 3개의 역할 단위, 혹은 병렬적 계층으로 이루어진다.
상기 모델(model)(23)은 일명 비지니스 프로세스층이라 불리며 소프트웨어 응용과 그와 관련된 고급 클래스 내의 논리적 데이터 기반 구조를 표현하기 위한 것이다. 좀 더 구체적으로는 데이터베이스 쿼리를 수행하고, 비지니스 프로세스를 연산하며 지시에 대한 수행을 실시한 후 그 결과를 얻는다. 이때, 상기 모델(23)은 사용자 인터페이스에 관한 어떠한 정보도 가지지 않으며, 단순히 뷰(22)에 상태가 변경되었다는 정도의 정보만을 전달한다.
상기 뷰(view)(22)는 사용자 인터페이스 내의 구성요소들을 표현하는 클래스들의 집합(예컨대, 누름단추, 표시 상자 등과 같이 사용자(25)가 화면상에서 보고 응답할 수 있는 모든 것들)으로서, 일명 프리젠테이션층이라 불리기도 한다. 상기 뷰(22)는 클라이언트의 종류(예를 들어, 클라이언트의 언어, 위치, 상태 등)에 따라 정보를 표시하고, 상기 모델(23)의 결과를 표시한다. 하지만, 그 정보의 출처에 대하서는 고려하지 않는다.
상기 콘트롤러(Controller)(21)는 상기 모델(23)과 뷰(22)를 연결하고 있는 클래스들을 대표하며, 모형과 뷰 내의 클래스들 간의 통신을 담당한다. 즉, 도시된 바와 같이 상기 뷰(22)를 통한 사용자(25)의 동작(요청, 각종 인터페이스 조작)을 감지하고, 상기 뷰(22)에 표시할 다양한 내용들(예를 들어 메세지) 중 하나를 선택한다. 다시 말해서, 요청에 대한 핸들링 방법과 제공(return)할 정보가 무엇인지를 결정하는 역할을 수행한다.
상기 MVC 디자인 패턴의 장점은 목적 코드의 재사용성을 높인다는 것 외에도 기능을 역할 단위로, 독립성이 강한 상태로 나눔으로써 개발상의 분업을 용이하게 해준다는 점이다. 예를 들어 프로그래머는 모델 개발에 전념하고, 디자이너는 뷰 개발에 전념할 수 있는 구조를 제공할 수 있다.
하지만, 이러한 MVC 구조는 가상적인 역할 단위를 의미하는 것이며, 실질적인 컴포넌트 단위의 구분은 아니라는 것에 주의한다. 예를 들어 하나의 컴포넌트가 콘트롤러의 기능을 수행함과 아울러 모델의 기능을 수행할 수도 있고, 어떠한 컴포넌트는 콘트롤러의 기능을 수행함과 아울러 뷰의 기능을 수행할 수도 있다.
도 3은 본 발명 일 실시예의 아키텍쳐를 보인 것으로, 상기 설명한 MVC 역할 단위로 구분한 것이다. 하지만, 이 역시 실질적인 컴포넌트 단위 구분은 아니라는 것에 주의한다.
먼저, 콘트롤러(40)는 제어부(41)와 브로커부(42)를 포함하고, 모델(40)은 데이터 억세스부(51)와 데이터베이스 관리부(52) 및 쿼리 관리부(53)를 포함하며, 뷰(60)는 템플릿 관리부(61), 메시지 관리부(62) 및 이미지 관리부(63)를 포함한다. 그리고, 전역 요소인 시스템 관리부(30)로서 인스톨러(31), 클래스 로딩부(32), 환경정보 관리부(33) 및 예외 처리부(34) 등이 구성된다.
상기 각 구성들은 설계에 따라 변경되거나 첨삭될 수 있으며, 여기서는 예시적으로 본 실시예가 적용된 기본적인 프레임워크를 설명하기 위해 구성한 것이다.
우선, 전역적 요소인 시스템 관리부(30)의 구성을 보면, 프레임워크를 서버에 인스톨하는 과정을 관리하는 인스톨러(31)를 포함하고 있다. 상기 인스톨러(31)를 통해 하나의 서버에서 여러 개발자가 프로그램을 개발할 수 있게 된다. 상기 인스톨러(31)는 각 프로그램 개발자에 맞는 환경을 자동으로 설정하여 각자의 원본 소스를 별도로 관리하는 기능을 수행한다.
그리고, 상기 환경정보 관리부(33)는 상기 프레임워크에 포함되거나, 사용자가 직접 생성한 각각의 컴포넌트 환경 및 컨트롤 설정 정보를 통합 관리하도록 구성한다. 이때 상기 환경정보 관리부(33)는 상기 환경 및 컨트롤 설정 정보들을 프로그래밍 언어와 상관없이 사용할 수 있는 범용적인 구조를 가지는 파일 형태로 저장하고 관리한다. 즉, 기존의 프레임워크에서 컴포넌트별로 해당 설정 정보를 각각 개별적으로 관리해주도록 하는 방식과는 달리 본발명의 실시예에서는 모든 컴포넌트들에 대한 설정 정보를 한 곳으로 일원화하여 통합적으로 관리할 수 있도록 함으로써, 개발자가 컴포넌트 설정을 용이하게 변경하여 해당 변경이 일괄적으로 반영 되도록 할 수 있고, 새로운 컴포넌트를 추가할 경우에도 큰 부담없이 알려진 범용적 구조에 맞추어 설정 내용을 추가할 수 있다.
상기 범용적인 구조를 가지는 파일은 다양한 종류의 구조적 문서 형태가 가능하지만, XML과 같은 구성이나, 플레인 텍스트로 이루어진 .INI 파일 형태도 가능하다. 여기서, .INI 파일은 일반적으로 어플리케이션의 초기화 정보를 관리하기 위해 서용되는 것으로 마이크로 소프트 윈도우즈의 초기화 정보를 관리하는데 적용됨으로써 널리 알려져 이제는 표준과 같이 사용되고 있다.
상기 .INI 형식의 예는 다음과 같이 간단한 구분자와 설정 내용의 나열로 이루어진다.
[className]
configName = value
한편, 상기 환경정보 관리부(33)는 상기 예로 든 것과 같은 개별 설정 형태는 물론이고 배열을 이용한 설정 형태, 구조체를 이용한 설정 형태를 지원할 수 있도록 하며 동일한 설정 형태의 다른 컴포넌트의 환경 및 컨트롤 설정 정보 값을 참조할 수 있도록 하는 것이 바람직하다.
예를 들어, 컴포넌트의 환경 및 컨트롤 설정 정보를 상기 INI 파일에서 배열로 관리하기 위해서, 다음과 같은 방식으로 기재할 수 있다.
configArray[] = value 1
configArray[] = value 2
configArray[] = value 3
또한 다음과 같이, 다른 환경 및 컨트롤 설정값을 참조하기 위한 기재 방법을 이용할 수도 있다.
configReference = {$className.configName}
상기 클래스 로딩부(32)는 클래스 사용시 그 클래스의 로딩 여부를 자체적으로 결정한 후 로딩되지 않은 클래스의 위치정보를 읽어 와서 해당 클래스를 자동으로 로딩하는 기능을 수행한다. 즉, 상기 클래스 로딩부(32)는 특정 클래스가 사용되는 시점에 해당 클래스를 자동으로 로딩해 주는데, 이는 해당 클래스가 정의된 파일을 사용자가 수동으로 로딩해야 하는 종래의 프레임 워크와 비교하여 본 발명의 실시예에서 구성되는 클래스 로딩부(32)가 그 성능면에서 우수한 특징을 가지도록 해 준다. 예를 들어 클래스의 로딩을 위한 개발자의 수고를 덜어줌으로써 개발 생산성을 향상시키고, 클래스의 사용 시점에 해당 클래스를 로딩함으로써 쓸모없는 파일을 로드하는 경우를 줄이며 이로 인해 프로그램의 성능을 향상시킬 수 있다. 이때 상기 자동으로 로딩할 클래스의 위치 정보는 상기 환경정보 관리부(33)에 저장되어야하며, 상기 클래스 로딩부(32)는 상기 환경정보 관리부(33)로부터 해당 클래스의 위치정보를 읽어와서 그 클래스를 자동으로 로딩한다. 여기서, 상기 클래스의 위치정보는 구체적으로 해당 클래스에 대한 정의가 포함된 파일명 만을 의미하는 것이 아니라 해당 클래스에 대한 정의가 포함된 파일이 위치하는 폴더의 위치 정보일 수도 있으며, 상기 클래스 로딩부(32)는 폴더 위치가 지정된 경우 해당 폴더에서 원하는 클래스를 검색한 후 해당 클래스의 정의가 포함된 파일을 선택하여 로드할 수 있다.
상기 예외 처리부(34)는 일반적인 프레임워크에 포함되는 기능으로서, 스크립트 언어를 해석하는 과정에서 발생되는 각종 예외적인 상황을 감지하고, 그에 대한 처리를 수행한다. 도시되지는 않았지만 부가적으로 오류 처리부나 이러한 각종 예외적 상황에 대한 기록을 관리하는 로그 관리부를 더 구성하여 개발 효율을 더 높일 수 있다.
이제, 보다 구체적인 MVC 구조를 이루는 각 기능부를 설명하도록 한다.
먼저, 모델(50)의 구성을 보면, 데이터베이스(71, 72)에 저장된 데이터를 얻기 위한 데이터 억세스부(51)와, 데이터베이스 쿼리 문장을 관리하기 위한 데이터베이스 관리부(52) 및 상기 쿼리를 보다 효과적으로 관리하기 위해 별도의 문서 파일을 생성하고 처리하는 쿼리 관리부(53)를 포함하여 이루어진다.
상기 모델(50)로 데이터베이스 쿼리가 제공되면, 상기 모델의 데이터 억세스부(51)는 데이터베이스(71, 72)에 대한 검색 권한을 얻어 상기 쿼리를 검색 권한을 얻은 데이터베이스(71, 72)에 제공하게 되는데, 본 발명 일 실시예의 데이터베이스 관리부(52)에서는 상기 제공되는 쿼리의 종류에 따라 어떠한 데이터베이스(71, 72)를 이용할 것인지를 검출하여, 그 쿼리 문장의 문자 세트 변환이나 파라메터 보안등에 관련된 내용도 관리한다. 특히, 본 실시예에서는 상기 쿼리를 보다 효과적으로 관리하기 위해서 별도의 쿼리 관리부(53)를 추가하여 상기 데이터베이스 관리부(53)가 제공하는 쿼리 문장을 별도의 범용 구성 문서로 저장하고, 해당 문서를 관리하는 기능을 수행하도록 한다. 이때, 상기 데이터베이스 관리부(53)는 상기 쿼리 문장외의 쿼리 파라메터를 소스코드를 통해 전달하며, 이때 해당 파라메터에 포 함된 해킹 가능한 문자열을 무의미한 내용으로 치환하여 보안성을 높일 수 있다.
다음은 상기 데이터베이스 관리부(53)에서 데이터베이스 쿼리를 전달하는 방식을 보인 것이다.
$db -> query(‘query_id’, array(‘param1’=>1, ‘param2’=>2));
상기 데이터베이스 관리부(53)는 상기 언급한 바와 같이 자동적인 쿼리 문장의 문자 세트 변환 기능도 제공하는데, 예를 들어 제1 데이터베이스(예를 들어 MySQL)(71)에 대한 검색 권한이 허용된 상태에서 제2 데이터베이스(예를 들어 MS-SQL)(72)에 대한 검색 형태의 문자셋이 입력될 경우 상기 문자셋을 제1 데이터베이스(71)의 검색 형태로 자동 변환하도록 할 수 있다. 이러한 기능을 통해 복수의 데이터베이스에 대한 처리가 용이해져 개발 시간을 단축할 수 있게 된다.
도시되지는 않았지만, 타 서비스에서 제공하는 데이터를 얻기 위해 프록시가 더 구성될 수 있고, 데이터베이스의 데이터를 얻어오는 미들웨어에 접근하기 위한 SEAL(simple and efficient AAL)이 더 구성될 수도 있다.
상기 모델(50)로부터 데이터베이스 쿼리 결과를 얻어 사용자에게 표시하는 뷰(60)의 구성을 살펴보면, 결과 표시를 위한 템플릿을 생성하는 템플릿 관리부(61)와 상기 생성된 템플릿에 표시될 각종 메세지들을 관리하는 메세지 관리부(62) 및 이미지들(이미지 주소)을 관리하는 이미지 관리부(63)를 포함한다.
상기 템플릿 관리부(61)는 뷰의 역할을 수행하기 위해 사용자 인터페이스를 제공하는 기능과 함께 템플릿의 생성을 관리하는데, 본 발명의 일 실시예에서는 상기 템플릿 관리부(61)가 템플릿을 객체처럼 생성하도록 구성한다. 기존의 프레임워 크에서는 템플릿을 함수 요청 형식을 통해 템플릿을 생성하였기 때문에 이러한 템플릿을 생성하거나 관리하기 어려웠다.
다음은 본 실시예에서 사용되는 템플릿 생성 방법을 보인 것이다.
$tpl = new tpl_common_nameUI;
$tpl -> id = ‘a0000001’;
$tpl -> name = ‘cyworld’;
$tpl -> display();
예를 들어 ‘tpl_common_nameUI’을 사용하고자 할 경우 상기와 같이 객체를 생성하는 것과 동일한 방식으로 템플릿을 생성할 수 있으므로 일관성있는 템플릿 관리가 용이해진다.
또한, 기존의 프레임워크에서는 생소한 형식의 구조로 템플릿 파일을 이용해야 하기 때문에 이러한 새로운 형식의 사용을 별도로 익혀야 했으나, 본 실시예에서는 일반적으로 알려진 태그 구조를 이용하도록 하여 별도로 템플릿 파일의 구성을 익히지 않아도 사용할 수 있도록 한다. 예를 들어, 본 실시예에서는 템플릿 파일의 구성으로 널리 알려진 XHTML을 확장하여 사용하도록 한다.
예를 들어, 템플릿에 if 문을 사용하고자 할 경우 본 실시예의 프레임 워크에서는 다음과 같은 일반적인 XHTML 형식을 따르면 된다.
<div cyt:if = “$this -> isBool”> contents </div>
하지만, 기존 프레임워크에서는 다음과 같은 생소한 구성을 이용해야만 하므로 이러한 형식을 다시 익혀야만 한다.
{if $this -> isBool} <div> contents </div> {end if}
상기와 같은 템플릿 관리부(61)의 뛰어난 개선 외에도, 본 실시예에서는 추가적으로 템플릿 관리부(61)가 태그를 재 정의할 수 있는 기능을 제공한다. 이를 통해서 XHTML의 기본 태그 사용시 출력하는 값을 일괄적으로 수정할 수 있어 관점 지향 프로그래밍(AOP)의 기능을 일부 지원하도록 할 수 있다.
예를 들어, 모든 <img> 태그에 border = 0을 삽입하고 싶을 경우 본 실시예에서는 다음과 같이 기본 태그의 기능을 수정하도록 함으로써, 해당 정의 내용으로 현재 템플릿에 적용된 대응 태그에 대한 구조를 일괄 변경할 수 있게 된다.
<tags prefix = “_default_” >
<tag name = “img”>
<code> <img {%ATTR_LIST%} border=1 /> </code>
</tag>
</tags>
즉, 이와 같은 태그의 재정의를 통해서 상기 템플릿 관리부(61)는 태그에 동일한 작업을 반복하는 경우를 줄여 개발 시간을 크게 줄일 수 있고, 보다 다양한 효과를 제공할 수 있다.
또한, 개발자가 원하는 태그(커스텀 태그)를 직접 만들어서 사용할 수 있는데, 예를 들어 사용자 이름을 클릭하면 이름 인터페이스가 나타나도록 하고 싶을 경우 다음과 같이 쉽게 적용할 수 있도록 한다.
<c2 : name id = “a0000001”name = “cyworld”/>
상기 메세지 관리부(62)는 상기 모델(50)로부터 제공되는 표시 내용들을 관리한다. 즉, 상기 메세지 관리부(62)는 모델(50)로부터 제공되는 수 많은 메세지들을 관리하며, 이들 중 어떠한 메세지를 상기 생성된 템플릿들 중 어떠한 템플릿에 제공할 것인지는 콘트롤러(40)가 결정한다. 예를 들어, 상기 메세지 관리부(62)는 복수의 언어로 작성된 메세지들을 수신한 경우 이들을 각각 분리하여 관리한다. 이러한 관리를 용이하게 하기 위해서 상기 메세지 관리부(62)는 해당 메세지를 구조적 문서(예를 들어, XML)로 변환하여 저장 및 관리할 수 있다.
이제, 콘트롤러(40)의 구성을 보면, 크게 제어부(41)와 브로커부(42)를 포함하여 이루어져 있으며, 여기서 상기 제어부(41)는 상기 환경정보 관리부(33)에 저장된 환경 및 컨트롤 설정정보에 의거하여 해당 프레임워크를 구성하는 컴포넌트들의 동작 및 연결 관계를 제어한다. 특히 상기 제어부(41)는 상기 브로커부(42)를 이용하여 쿼리를 모델(50)에 제공하고, 표시할 내용을 결정하는 신호를 상기 뷰(60)에 제공하여 템플릿과 메세지를 결정한다. 이때, 상기 브로커부(42)는 실질적으로 상기 콘트롤러(40), 모델(50) 및 뷰(60)에 대한 연결관계의 통로 역할을 하게 되며, 이는 후속하여 상세히 설명하도록 한다.
이상과 같이 본 발명 일 실시예의 프레임워크를 구성하는 개별적인 구성 요소들에 관해 설명하였다. 이제, 도 4 및 도 5를 참조하여 상기 설명한 각 구성요소들의 기능을 고려하면서 보다 유기적인 동작 관계의 예를 설명하도록 한다.
도 4는 콘트롤러와 뷰에 대응되는 컴포넌트의 구성을 보인 것으로, 상기 도 3의 아키텍쳐를 이루는 구성부에 가능한 대응되는 컴포넌트로 구성한 것이다. 하지 만, 이러한 컴포넌트들이 가상적인 콘트롤과 뷰를 구성하는 아키텍쳐 상의 구성부와 일대일로 완전하게 대응되는 것은 아닐 수 있음에 주의한다.
예를 들어, 도시된 제어기(91)는 도 3에 도시된 콘트롤러(40)의 제어부(41)에 대응되는 기능을 수행하기도 하지만, 뷰에서 처리해야 하는 사용자 인터페이스 제공과 그에 따른 템플릿 생성등의 기능을 수행하기도 하는 컴포넌트이다. 또한, 도시된 템플릿 처리부(81)는 도 3에 도시된 뷰(60)의 템플릿 관리부(61)에서 사용자 인터페이스 기능이 제외된 템플릿 생성 및 관리 기능을 제공하는 컴포넌트이다.
그 외 도시된 각 컴포넌트들의 기능은 이미 앞서 설명한 바와 같으므로 개별적인 설명은 생략하고 전체적인 동작 방식만을 설명하도록 한다.
우선, 상기 제어기(91)가 쿼리 요청을 받아 이를 브로커(92)에 제공하면, 상기 브로커(92)는 해당 쿼리를 모델을 구성하는 컴포넌트(예를 들어, 전술한 데이터 억세스부나 프록시)로 제공한다. 상기 모델은 그 역할과 같이 데이터베이스를 검색하여 그 결과를 상기 브로커(92)에 제공하고, 상기 브로커(92)는 해당 검색 결과를 도시된 메세지 관리부(83)에 제공한다. 상기 메세지 관리부(83)는 수신된 메세지를 메시지 XML 파일(84)로 만들어 저장한다. 이때, 상기 뷰를 이루는 템플릿 처리부(81)와 메세지 관리부(83)는 상기 모델을 통해 제공되는 쿼리 요청에 대한 응답(return) 결과를 스스로 반영하지는 않고, 단지 메세지 관리부(83)를 통해 상기 브로커(92)가 제공하는 메세지들을 XML 파일로 저장한다. 이때, 상기 메세지는 동일 내용을 복수의 언어로 제공한 내용들일 수 있으며, 상기 메세지 관리부(83)는 이러한 복수의 언어로 작성된 메세지들을 각각의 XML 파일로 저장할 수 있다.
상기 제어기(91)는 콘트롤러의 기능인 어떤 정보를 어떠한 뷰를 통해 제공할 것인지를 결정해야 하며, 이는 요청한 쿼리와 사용자 인터페이스를 통한 사용자의 특징(사용자의 사용 언어, 사용자의 위치 등)을 이용하여 어떤 메세지를 어떤 템플릿 개체를 통해 제공할 것인지를 결정한다. 한편, 상기 제어기(91)는 상기 템플릿 처리부(81)에 템플릿 생성을 요구하여 원하는 템플릿들을 준비해 둘 수 있다. 예를 들어, 현재 사용자가 한국어를 사용하며, 한국에 위치하고 있다면 상기 메세지 관리부(83)를 통해 저장된 메세지 XML 파일(84)들 중에서 한글 메세지를 저장한 메세지 XML 파일을 선택하여 한국어를 위해 준비한 템플릿을 통해서 사용자에게 제공할 수 있다.
도 5는 모델에 대응되는 컴포넌트의 구성과 브로커 컴포넌트의 연결 구성을 보인 것으로, 이 역시 상기 도 3의 아키텍쳐를 이루는 구성부에 가능한 대응되는 컴포넌트로 구성한 것이다.
도시된 바와 같이 콘트롤러로부터 제공되는 데이터베이스 쿼리가 브로커(92)를 통해 모델을 이루는 데이터 억세스부(101)에 제공되면, 상기 데이터 억세스부(101)는 제 1 또는 제 2데이터베이스(111, 112) 중 하나에 대한 검색 권한을 얻어 해당 데이터베이스 쿼리를 데이터베이스 관리부(102)에 제공한다. 상기 데이터베이스 관리부(102)는 해당 데이터베이스 쿼리에서 쿼리 문장을 추출하여 쿼리 관리부(103)에 제공하여 XML 파일(104)(혹은 INI 파일(105))로 저장하도록 하고, 파라메터를 암호화하여 소스에서 직접 데이터베이스(111,112)로 전달한다. 이때, 상기 데이터베이스 관리부(102)는 문자 세트를 변경할 수 있으며, 이를 위해 상기 구 조적 문서로 저장된 쿼리 XML 파일(104)을 이용할 수 있다.
도 6은 상기 도 5와 도 6을 포함하는 전체 프레임워크를 보다 실질적인 컴포넌트들로 구성한 경우를 보인 예로서, 상기 각 컴포넌트의 기능에 관해서는 이미 언급한 바가 있으므로, 생략하도록 한다. 여기서, 본 발명 일 실시예에 따른 전체 프레임워크를 구성하는 각 컴포넌트들은 각각 라이브러리 파일, 설정 파일 또는 정보 파일이거나 이들의 조합일 수 있다.
상기 도시된 전체적인 프레임워크 구성에서, 일반적인 프레임워크와 상이한 본 발명 일 실시예의 기술적 구성 부분을 보면, 우선 다수의 컴포넌트 각각의 환경 및 컨트롤 설정 정보를 통합 관리하는 환경정보 관리부(208), 상기 환경정보 관리부(208)에 설정된 정보를 근거로 클래스를 자동적으로 로드하는 클래스 로딩부(204), 객체화된 XHTML 템플릿을 생성하고 커스텀 태그를 지원하는 템플릿 처리부(220), 메세지를 XML 파일로 관리하는 메세지 관리부(224), 쿼리 문장과 파라메터를 분리하여 처리하는 데이터베이스 관리부(236) 및 쿼리 문장을 XML 파일로 관리하는 SQL 쿼리 관리부(238) 등이 대표적이며, 그 외에 개발자의 편의를 위해서 오류나 예외 내용을 로그로 관리해 주도록 구성한 부분(예외 처리부(210), 오류 처리부(212) 및 로그 관리부(214))이나 브로커(222)와 데이터 억세스부(232) 및 프록시(234) 사이의 데이터 교환을 위한 전처리기(230)의 구성 등도 본 발명 일 실시예에 따라 개선된 구성이 이용되거나 새롭게 추가될 수 있다. 그외에 언급하지 않은 요청 관리부(216), 디버그 관리부(206)나 이미지 관리부(226), 두 종류의 데이터베이스(244, 246) 및 상기 데이터베이스에 대한 접근에 요구되는 SEAL(242)은 일반적 인 프레임워크 구성과 유사하므로 구체적인 설명은 생략하도록 한다.
이상에서는 본 발명에서 특정의 바람직한 실시 예에 대하여 도시하고 또한 설명하였다. 그러나 본 발명은 상술한 실시 예에 한정되지 아니하며, 특허 청구의 범위에서 첨부하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능할 것이다.
이상에서 상술한 바와 같이, 본 발명의 실시예에 따른 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체는 프레임워크를 구성하는 복수의 컴포넌트에 대한 환경 및 컨트롤 설정 정보를 중앙에서 범용 형식의 파일을 통해 일괄 관리하도록 하고, 상기 환경 설정에 따라 로딩되지 않은 클래스를 자동적으로 파악하여 로딩하도록 함으로써, 개별 컴포넌트나 컨트롤에 대한 분산된 환경설정이나 구체적인 클래스 위치 지정 없이도 용이하게 프레임워크를 사용할 수 있어 개발 시간이 단축되고, 어플리케이션 효율이 높아지는 효과가 있다.
본 발명의 실시예에 따른 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체는 템플릿을 객체화하여 프로그램 개발자들이 템플릿 사용을 용이하게 하고, 그 형식을 범용적인 표준 기술방법에 따르도록 함으로써, 개발자가 용이하고 손쉽게 객체지향적 방식으로 템플릿을 관리할 수 있는 효과가 있다.
본 발명의 실시예에 따른 웹 서버 어플리케이션 프레임워크와 상기 프레임워 크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체는 템플릿 파일 구조를 범용적인 XHTML을 확장하여 사용하도록 하고, 기본 태그를 커스텀화 할 수 있도록 하여 동일한 태그에 대한 작업을 반복적으로 실시하지 않도록 함으로써, 관점지향 프로그래밍을 지원하여 특정 부분에 대한 일괄적 처리가 가능하여 개발, 유지 및 보수 시간을 단축하고 다양한 효과를 더 제공할 수 있는 효과가 있다.
본 발명의 실시예에 따른 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체는 DB 쿼리 문장과 파라메터를 분리하여 DB 쿼리 문장은 별도의 범용 형식 파일로 관리하고, 파라메터는 목적 코드에 제공하도록 함으로써, 상기 파라메터에 대한 보안성을 높이고, 복수 문자세트에 대한 자동 변경 기능등을 지원하여 개발자의 편의를 높일 수 있는 효과가 있다.
본 발명의 실시예에 따른 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체는 템플릿을 통해 제공할 메세지를 범용적인 포멧의 파일로 관리하도록 함으로써, 다중 언어에 대응하는 메세지를 처리할 경우에도 이를 용이하게 구현할 수 있어 개발 용이성을 높이는 효과가 있다.

Claims (29)

  1. 모델-뷰-콘트롤 구조를 통해 데이터베이스를 연동하는 기능을 제공하는 웹 서버 어플리케이션 프레임워크 장치에 있어서,
    다수의 컴포넌트 각각의 환경 및 컨트롤 설정 정보를 통합 관리하는 환경정보 관리부와;
    클래스 사용시 해당 클래스가 정의된 파일의 위치를 상기 환경정보 관리부에 설정된 정보를 근거로 파악하여 자동적으로 로드하는 클래스 로딩부와;
    상기 환경정보 관리부에 저장된 정보에 의거하여 상기 프레임 워크를 구성하는 다수의 컴포넌트들의 동작 및 연결 관계를 제어하는 제어부와;
    상기 제어부의 제어에 의거하여 객체화된 템플릿을 처리하는 템플릿 관리부와;
    상기 제어부가 제공하는 쿼리에서 쿼리 문장과 파라메터를 분리하고 상기 쿼리 문장을 별도 파일로 관리하며, 상기 파라메터는 직접 데이터베이스에 제공하는 데이터베이스 관리부를 포함하고,
    상기 환경정보 관리부는 상기 복수 컴포넌트의 환경 및 컨트롤 설정 정보들을 프로그래밍 언어와 상관없이 사용할 수 있는 파일 형태로 저장하며,
    상기 클래스 로딩부는 상기 환경정보 관리부에 설정된 정보를 근거로 로딩되지 않은 클래스가 정의된 파일이 위치한 폴더에서 해당 클래스를 검색하여 로딩하고,
    상기 템플릿 관리부는 태그 구조의 템플릿 객체를 생성하며, 상기 태그 구조를 사용자가 임의로 변경하거나 새롭게 정의할 수 있도록 하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  2. 삭제
  3. 제 1항에 있어서, 상기 복수 컴포넌트의 환경 및 컨트롤 설정 정보들을 포함하는 파일은 단일 파일인 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  4. 제 1항에 있어서, 상기 파일 형태로 저장되는 상기 각 컴포넌트의 환경 및 컨트롤 설정 정보는 각각 구분자를 통해 구분되며, 다른 컴포넌트의 환경 및 컨트롤 설정 정보 값을 참조할 수 있는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  5. 제 1항에 있어서, 상기 파일 형태로 저장되는 상기 각 컴포넌트의 환경 및 컨트롤 설정 정보는 개별 설정 형태, 배열을 이용한 설정 형태, 구조체를 이용한 설정 형태를 포함하며, 동일한 설정 형태의 다른 컴포넌트의 환경 및 컨트롤 설정 정보 값을 참조할 수 있는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  6. 삭제
  7. 제 1항에 있어서, 상기 템플릿 관리부는 XHTML 파일 구조의 템플릿 객체를 생성하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  8. 삭제
  9. 제 1항에 있어서, 상기 템플릿 관리부는 현재 적용된 태그 구조에 대한 변경에 대한 정의를 제공받아 선택되는 템플릿에 적용된 대응 태그에 대한 구조를 일괄 변경하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  10. 제 1항에 있어서, 상기 템플릿 관리부는 제공할 메세지를 복수 언어로 된 범용 구조의 파일들로 별도 저장하고, 제어기의 선택에 따라 선택된 언어로 작성된 메세지를 상기 템플릿에 적용하는 메세지 관리부를 더 포함하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  11. 삭제
  12. 제 1항에 있어서, 상기 데이터베이스 관리부는 파라메터에서 해킹할 여지가 있는 문자 정보를 인식하고, 해킹할 여지가 있는 문자를 자동으로 치환하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  13. 제 1항에 있어서, 상기 데이터베이스 관리부는 상기 쿼리 문장의 문자셋을 검색 허용된 데이터베이스의 검색 형태에 맞추어 자동 변환하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  14. 모델-뷰-콘트롤 구조를 통해 데이터베이스를 연동하는 기능을 제공하는 웹 서버 어플리케이션 프레임워크 장치에 있어서,
    다수의 컴포넌트 각각의 환경 및 컨트롤 설정 정보를 통합 관리하는 환경정보 관리부와;
    클래스 사용시 해당 클래스가 정의된 파일의 위치를 상기 환경정보 관리부에 설정된 정보를 근거로 파악하여 자동적으로 로드하는 클래스 로딩부와;
    범용 태그 구조의 형식을 가지는 템플릿을 객체로 생성하는 템플릿 처리부와;
    상기 템플릿 처리부가 생성한 템플릿에 표시될 메세지를 관리하는 메세지 관리부와;
    쿼리에 따라 데이터베이스를 선택하여 그 결과를 수신하는 데이터베이스 관리부와;
    요청된 쿼리를 상기 데이터베이스 관리부에 제공하고 그 결과를 수신하여 상기 메세지 관리부에 제공하는 브로커와;
    상기 환경정보 관리부에 저장된 정보에 의거하여 상기 프레임 워크를 구성하는 다수의 컴포넌트들의 동작 및 연결 관계를 제어하고, 사용자로부터 쿼리를 요청 받아 상기 브로커에 제공하며, 상기 템플릿 처리부에 템플릿 생성을 지시하고, 상기 메세지 관리부에 표시할 메세지를 선택하는 제어기를 포함하고,
    상기 환경정보 관리부는 상기 복수 컴포넌트의 환경 및 컨트롤 설정 정보들을 프로그래밍 언어와 상관없이 사용할 수 있는 파일 형태로 저장하며,
    상기 템플릿 처리부는 태그 구조의 템플릿 객체를 생성하며, 상기 태그 구조를 사용자가 임의로 변경하거나 새롭게 정의할 수 있도록 하고,
    상기 데이터베이스 관리부는 제어부가 제공하는 쿼리에서 쿼리 문장과 파라메터를 분리하고 상기 쿼리 문장을 별도 파일로 관리하며, 상기 파라메터는 직접 데이터베이스에 제공하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  15. 삭제
  16. 제 14항에 있어서, 상기 메세지 관리부는 메세지를 별도의 XML 파일로 관리하며, 복수 언어에 대해서는 복수의 파일들로 관리하고, 상기 제어기의 제어에 따라 상기 복수의 파일들 중 하나를 선택하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  17. 삭제
  18. 제 14항에 있어서, 상기 데이터베이스 관리부는 상기 쿼리 문장을 별도의 XML 혹은 INI 파일로 저장하고 관리하는 쿼리 관리부를 더 포함하며, 상기 저장된 쿼리 문장을 복수의 문자 세트 중 하나로 변경하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크 장치.
  19. 모델-뷰-콘트롤 구조를 통해 데이터베이스를 연동하는 기능을 제공하는 웹 서버 어플리케이션 프레임워크를 이용한 웹 어플리케이션 수행 방법에 있어서,
    다수의 컴포넌트 각각의 환경 및 컨트롤 설정 정보를 범용 구조 파일로 설정하는 환경설정 단계와;
    상기 모델-뷰-콘트롤을 포함하는 각 모듈에 대한 어플리케이션 스크립트 코드를 해석하여 쿼리에 대한 결과를 제공하는 과정을 수행하는 수행 단계와;
    상기 수행 단계에서 클래스 사용시 해당 클래스가 정의된 파일의 위치를 환경정보 관리부에 설정된 정보를 근거로 파악하여 자동적으로 로드하는 자동 로드 단계와;
    상기 수행 단계에서 템플릿을 정의할 경우 범용 태그 구조의 형식을 가지는 템플릿을 객체로 생성하는 템플릿 관리 단계와;
    상기 수행 단계에서, 상기 쿼리에 대한 결과를 데이터베이스로부터 획득하는 쿼리 처리 단계와;
    상기 쿼리 처리 단계에서 얻은 쿼리에 대한 결과를 상기 템플릿 객체를 통해 표현하는 단계를 포함하되,
    상기 환경설정 단계는 상기 복수 컴포넌트의 환경 및 컨트롤 설정 정보들을 프로그래밍 언어와 상관없이 사용할 수 있는 파일 형태로 저장하는 단계를 포함하고,
    상기 자동 로드 단계는 상기 환경 설정 단계에서 설정된 정보를 근거로 로딩되지 않은 클래스가 정의된 파일이 위치한 폴더에 존재하는 파일들로부터 원하는 클래스를 검색하여 로딩하는 단계를 포함하며,
    상기 템플릿 관리 단계는 태그 구조의 템플릿 객체를 생성하며, 상기 태그 구조를 사용자가 임의로 변경하거나 새롭게 정의한 경우 해당 정의 내용으로 선택되는 템플릿에 적용된 대응 태그에 대한 구조를 일괄 변경하는 단계를 포함하고,
    상기 쿼리 처리 단계는 쿼리 문장과 파라메터를 분리하고 상기 쿼리 문장을 별도 파일로 관리하여 문자세트를 자동 변환하며, 상기 파라메터는 직접 데이터베이스에 제공하는 단계를 더 포함하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크를 이용한 웹 어플리케이션 처리 방법.
  20. 삭제
  21. 제 19항에 있어서, 상기 쿼리 처리 단계는 상기 파라메터에서 해킹할 여지가 있는 문자 정보를 인식하고, 상기 파라메터를 자동으로 치환하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크를 이용한 웹 어플리케이션 처리 방법.
  22. 삭제
  23. 제 19항에 있어서, 상기 환경설정 단계는 각 컴포넌트의 환경 및 컨트롤 설정 정보를 개별 설정 형태, 배열을 이용한 설정 형태, 구조체를 이용한 설정 형태 중 하나로 설정하며, 동일한 설정 형태의 다른 컴포넌트의 환경 및 컨트롤 설정 정보 값을 참조하도록 설정하는 단계를 더 포함하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크를 이용한 웹 어플리케이션 처리 방법.
  24. 제 19항에 있어서, 상기 수행단계는 상기 환경설정 단계에서 저장된 파일로부터 상기 복수 컴포넌트의 환경 및 컨트롤 설정 정보들을 획득하는 단계를 포함하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크를 이용한 웹 어플리케이 션 처리 방법.
  25. 삭제
  26. 제 19항에 있어서, 상기 템플릿 관리 단계는 템플릿 생성시 XHTML 파일 구조의 템플릿 객체를 생성하는 것을 특징으로 하는 웹 서버 어플리케이션 프레임워크를 이용한 웹 어플리케이션 처리 방법.
  27. 삭제
  28. 제 19항에 있어서, 상기 템플릿 관리 단계는 제공할 메세지를 복수 언어로 된 범용 구조의 파일들로 별도 저장하고, 선택된 언어로 작성된 메세지를 상기 템플릿에 적용하는 단계를 포함하는 것을 특징으로 하는 웹 서버 어플리케이션 프레 임워크를 이용한 웹 어플리케이션 처리 방법.
  29. 제 19항, 제 21항, 제 23항, 제 24항, 제 26항, 제 28항 중의 어느 한 항의 방법을 수행할 수 있는 프로그램이 수록된 컴퓨터로 읽을 수 있는 기록 매체.
KR1020070009553A 2007-01-30 2007-01-30 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체 KR101552914B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070009553A KR101552914B1 (ko) 2007-01-30 2007-01-30 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070009553A KR101552914B1 (ko) 2007-01-30 2007-01-30 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체

Publications (2)

Publication Number Publication Date
KR20090000199A KR20090000199A (ko) 2009-01-07
KR101552914B1 true KR101552914B1 (ko) 2015-10-01

Family

ID=40483415

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070009553A KR101552914B1 (ko) 2007-01-30 2007-01-30 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체

Country Status (1)

Country Link
KR (1) KR101552914B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110209049A1 (en) * 2010-02-23 2011-08-25 Microsoft Corporation Data binding for a web-based visual representation of a structured data solution
KR100982732B1 (ko) * 2010-06-08 2010-09-20 이에스이 주식회사 XForms 기반의 클라이언트 페이지 자동 생성 시스템 및 클라이언트 페이지 자동 생성 방법
KR101243015B1 (ko) * 2011-03-16 2013-03-12 엔에이치엔비즈니스플랫폼 주식회사 별개의 서비스들을 결합하여 제공하는 서비스 제공 시스템 및 서비스 제공 방법
KR101078227B1 (ko) * 2011-06-29 2011-11-01 (주)토마토시스템 사용자별로 특화된 로직을 제공하는 방법 및 서버시스템
KR20180060191A (ko) * 2016-11-28 2018-06-07 주식회사 마인케이 플랫폼의 제약 없이 선언적으로 정의된 무목적성 모델을 공유하는 방법 및 장치
KR20240103526A (ko) * 2022-12-27 2024-07-04 쿠팡 주식회사 웹 애플리케이션 빌드 방법
CN115934043B (zh) * 2023-01-04 2024-03-15 广州佰瑞医药有限公司 一种基于php的高效率mvc框架

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000030817A (ko) * 2000-03-20 2000-06-05 유영환 엠브이씨 모델에 기반을 둔 웹 페이지 저작을 위한 뷰우컨텐츠의 분리 및 실시간 적용 서버 콤포넌트
JP2001166937A (ja) * 1999-09-29 2001-06-22 Toshiba Corp サービス提供システムの構築方法、サービス提供システム、並びにサービス提供システム用プログラムおよびサービス提供システム向けフレームワークを記録したコンピュータ読み取り可能な記録媒体
US20020046240A1 (en) * 2000-08-31 2002-04-18 Scott Graham Web server framework
JP2004110415A (ja) * 2002-09-18 2004-04-08 Toshiba Solutions Corp ソフトウェア開発支援装置とコンピュータプログラム
KR100519453B1 (ko) * 2002-12-20 2005-10-06 유징테크주식회사 객체지향 응용프로그램에서 사용되는 데이터베이스 작업제어장치 및 방법
KR20060079690A (ko) * 2005-01-03 2006-07-06 아토정보기술 주식회사 템플릿과 패턴을 이용한 컴포넌트 기반의 프로그래밍 자동화 방법
KR20060084519A (ko) * 2005-01-20 2006-07-25 (주)에프아이티씨 소프트웨어 표준 코드템플릿 자동배포에 의한 소프트웨어 프로그램 코드 자동 생성 및 검증 방법
KR20060114517A (ko) * 2005-05-02 2006-11-07 (주)이포넷 웹 애플리케이션 구축용 프레임워크 및 그 웹 서버
KR20060114871A (ko) * 2005-05-03 2006-11-08 (주)콘텐츠와이즈 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001166937A (ja) * 1999-09-29 2001-06-22 Toshiba Corp サービス提供システムの構築方法、サービス提供システム、並びにサービス提供システム用プログラムおよびサービス提供システム向けフレームワークを記録したコンピュータ読み取り可能な記録媒体
KR20000030817A (ko) * 2000-03-20 2000-06-05 유영환 엠브이씨 모델에 기반을 둔 웹 페이지 저작을 위한 뷰우컨텐츠의 분리 및 실시간 적용 서버 콤포넌트
US20020046240A1 (en) * 2000-08-31 2002-04-18 Scott Graham Web server framework
JP2004110415A (ja) * 2002-09-18 2004-04-08 Toshiba Solutions Corp ソフトウェア開発支援装置とコンピュータプログラム
KR100519453B1 (ko) * 2002-12-20 2005-10-06 유징테크주식회사 객체지향 응용프로그램에서 사용되는 데이터베이스 작업제어장치 및 방법
KR20060079690A (ko) * 2005-01-03 2006-07-06 아토정보기술 주식회사 템플릿과 패턴을 이용한 컴포넌트 기반의 프로그래밍 자동화 방법
KR20060084519A (ko) * 2005-01-20 2006-07-25 (주)에프아이티씨 소프트웨어 표준 코드템플릿 자동배포에 의한 소프트웨어 프로그램 코드 자동 생성 및 검증 방법
KR20060114517A (ko) * 2005-05-02 2006-11-07 (주)이포넷 웹 애플리케이션 구축용 프레임워크 및 그 웹 서버
KR20060114871A (ko) * 2005-05-03 2006-11-08 (주)콘텐츠와이즈 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법

Also Published As

Publication number Publication date
KR20090000199A (ko) 2009-01-07

Similar Documents

Publication Publication Date Title
CN109918607B (zh) 页面搭建方法及装置、介质和计算设备
CN111241454B (zh) 一种生成网页代码的方法、系统和装置
US9465590B2 (en) Code generation framework for application program interface for model
RU2365978C2 (ru) Интерфейс программирования для компьютерной платформы
US11366676B2 (en) Embedded user assistance for software applications
US9652441B2 (en) System and method for creation of templates
CN110020307B (zh) 一种客户端视图的绘制方法和装置
CN114035773B (zh) 一种基于配置的低代码开发表单方法、系统及装置
CN113076096B (zh) 一种桌面应用程序开发方法、装置、设备及存储介质
JP2016224923A (ja) ユーザフォームインタフェースの自動生成の方法およびシステム
KR101552914B1 (ko) 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체
US9817811B2 (en) Web server system, dictionary system, dictionary call method, screen control display method, and demonstration application generation method
JPWO2006137565A1 (ja) 文書処理装置及び文書処理方法
CA2686367A1 (en) Dynamic native editor code view facade
US11604662B2 (en) System and method for accelerating modernization of user interfaces in a computing environment
CN116028062A (zh) 目标代码的生成方法、npu指令的显示方法及装置
JP4686117B2 (ja) ソースコード変換装置、ソースコード変換方法、およびプログラム
CN113296759B (zh) 用户界面处理方法、用户界面处理系统、设备及存储介质
US20230060787A1 (en) System and Method for Real-Time, Dynamic Creation, Delivery, and Use of Customizable Web Applications
JP7148804B2 (ja) ソースファイル生成プログラム、ソースファイル生成方法、および情報処理装置
JP2004342061A (ja) 画面とコンポーネント間のリンクを使用したウェブアプリケーションの開発方法および開発支援装置
bin Uzayr Mastering Vue. js: A Beginner's Guide
CN113608726B (zh) 代码生成方法、装置、电子设备及存储介质
CN116595284B (zh) 网页系统运行方法、装置、设备、存储介质和程序
CN111367515B (zh) 页面卡片的开发方法、装置、计算设备和存储介质

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20131129

Effective date: 20150323

Free format text: TRIAL NUMBER: 2013101008498; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20131129

Effective date: 20150323

S901 Examination by remand of revocation
E902 Notification of reason for refusal
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180905

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190910

Year of fee payment: 5