KR102332506B1 - 이벤트 기반 패키지 모듈 호출 방법 및 시스템 - Google Patents

이벤트 기반 패키지 모듈 호출 방법 및 시스템 Download PDF

Info

Publication number
KR102332506B1
KR102332506B1 KR1020170091709A KR20170091709A KR102332506B1 KR 102332506 B1 KR102332506 B1 KR 102332506B1 KR 1020170091709 A KR1020170091709 A KR 1020170091709A KR 20170091709 A KR20170091709 A KR 20170091709A KR 102332506 B1 KR102332506 B1 KR 102332506B1
Authority
KR
South Korea
Prior art keywords
event
module
message
function
package
Prior art date
Application number
KR1020170091709A
Other languages
English (en)
Other versions
KR20190009880A (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 KR1020170091709A priority Critical patent/KR102332506B1/ko
Priority to JP2018134255A priority patent/JP7231347B2/ja
Priority to US16/038,178 priority patent/US10866843B2/en
Publication of KR20190009880A publication Critical patent/KR20190009880A/ko
Application granted granted Critical
Publication of KR102332506B1 publication Critical patent/KR102332506B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

이벤트 기반 패키지 모듈 호출 방법 및 시스템이 개시된다. 이벤트 기반 패키지 모듈 호출 시스템은, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 모듈화부, 상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 분석부, 분석된 각 프로그램 패키지의 클래스(class) 및 이벤트 함수를 이벤트 별로 구조화하는 구조화부, 클라이언트로부터 특정 이벤트의 호출을 요청받는 정보 수신부, 및 구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하고, 생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 메시지 생성부를 포함할 수 있다.

Description

이벤트 기반 패키지 모듈 호출 방법 및 시스템{METHOD AND SYSTEM FOR INVOKING EVENT BASED PACKAGE MODULE}
아래의 설명은 이벤트(event)를 처리하는 기술에 관한 것으로, 게임, 온라인 쇼핑 등 다양한 서버 환경에서 특정 서비스를 제공하기 위한 이벤트를 처리하여 응답을 제공하는 기술에 관한 것이다.
기존의 게임 서버, 온라인 쇼핑몰 등의 다양한 서버 환경의 경우, 특정 이벤트를 시작점으로 하여 가변적인 1개 이상의 기능이 호출되며, 대부분의 시스템에서는 스크립트 기반 프로그래밍 언어(Script Language)를 사용하여 서버로부터 요청된 이벤트(예컨대, 로그인 시 공지사항 팝업, 연속 출석 포인트/보상, 미확인 메일/메시지관련 이벤트 등)를 처리한다. 예를 들어, 스크립트 기반의 프로그래밍 언어는, 루아(Lua), 자바 스크립트(Java Script), 파이슨(Python) 등을 포함한다.
스크립트 기반의 프로그래밍 언어를 사용하여 이벤트를 처리하는 경우, 런타임(runtime) 시 스크립트(script) 파일에 포함된 한 문장 한 문장을 읽어드려, 한 줄(line), 한 줄(line)씩 스크립트 엔진(예컨대, 자바 엔진 등)으로 넘겨서 처리하므로 컴파일드(compiled)되어 있는 언어와 비교할 때 이벤트 처리에 대한 응답 시간이 상대적으로 늦어지는 성능 저하가 존재한다.
그리고, 스크립트 기반의 프로그래밍 언어를 이용하는 경우에 디버깅(debugging) 시 스크립트 엔진을 통해 스크립트(script)를 호출하므로, 스크립트 엔진까지만 디버깅이 가능하고, 스크립트 내 디버깅이 어렵다. 다시 말해, 스크립트 파일 내에 뭐가 있는지 알기 어려운 한계가 존재한다.
또한, 스크립트 기반의 프로그래밍 언어의 경우, 기존 코드와 새로운 코드 간의 코드 쉐어(code share)가 어렵다. 즉, 이미 구현되어 있는 라이브러리(library)를 서버에서 사용하고 있는 경우, 외부에 있는 라이브러리를 데이터베이스에 껴 넣어 기존과 호환시키거나, 새로운 라이브러리를 만들어 사용하는 등 기존 코드와 새로운 코드 간의 코드 쉐어가 어렵다.
기존에 이벤트가 발생한 경우에 서버의 처리 로직은 이미 만들어진 서버 코드를 수정하여 새로운 기획(즉, 이벤트) 내용을 반영하거나, 업데이트된 기획(즉, 이벤트) 내용을 반영하는 방식으로 처리된다. 이때, 새로운 기획 내용을 반영하거나, 업데이트된 기획 내용을 반영 시 서버의 동작이 중단되어, 사용자의 이용이 제한되는 불편함이 존재한다. 예컨대, "2017년 07월01일 자정 12시부터 6시까지 서버 점검으로 인해 이용이 제한됩니다." 등의 공지가 클라이언트 단말로 제공되고, 클라이언트 단말은 해당 기간 동안 게임, 쇼핑, 인터넷 뱅킹 등의 서비스를 이용에 제한을 받게 된다.
한국공개특허 제 10-2009-0000651호는 온라인 게임을 위한 사용자 인터페이스 제공 장치 및 그 방법에 관한 것으로, 게임 엔진에 독립적으로 사용자 인터페이스 구성 요소들을 구성하여 재사용 가능하도록 하고, 스크립트(script)를 기반으로 게임 진행 관련 처리를 수행하는 기술을 개시하고 있다.
리플렉션(reflection) 기반의 프로그래밍 언어를 이용하여 게임, 온라인 쇼핑 등의 서비스를 제공하는 서버 환경에서, 플러그 인(plug in) 형식으로 소스 코드를 호출하여 클라이언트에서 요청한 이벤트를 처리하는 이벤트 기반 패키지 모듈 호출 방법 및 시스템을 제공한다.
컴퓨터에 의해 실행되는 이벤트 기반 패키지 모듈 호출 방법에 있어서, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계, 상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 단계, 분석된 각 프로그램 패키지의 클래스(class) 및 이벤트 함수를 이벤트 별로 구조화하는 단계, 클라이언트로부터 특정 이벤트의 호출을 요청받는 단계, 구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하는 단계, 및 생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 단계를 포함할 수 있다.
이벤트 기반 패키지 모듈 호출 시스템은, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 모듈화부, 상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 분석부, 분석된 각 프로그램 패키지의 클래스(class) 및 이벤트 함수를 이벤트 별로 구조화하는 구조화부, 클라이언트로부터 특정 이벤트의 호출을 요청받는 정보 수신부, 및 구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하고, 생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 메시지 생성부를 포함할 수 있다.
컴퓨터로 구현되는 서버 장치와 결합되어 이벤트 기반 패키지 모듈 호출 방법을 실행시키기 위해 기록매체에 저장된 컴퓨터 프로그램에 있어서, 상기 이벤트 기반 패키지 모듈 호출 방법은, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계, 상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 단계, 분석된 각 프로그램 패키지의 클래스(class) 및 이벤트 함수를 이벤트 별로 구조화하는 단계, 클라이언트로부터 특정 이벤트의 호출을 요청받는 단계, 구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하는 단계, 및 생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 단계를 포함할 수 있다.
리플렉션(reflection) 기반의 프로그래밍 언어를 이용하여 게임, 온라인 쇼핑 등의 서비스를 제공하는 서버 환경에서, 플러그 인(plug in) 형식으로 소스 코드를 호출하여 클라이언트에서 요청한 이벤트를 처리하고, 처리 결과를 클라이언트로 제공함으로써, 요청된 이벤트에 대한 응답 시간이 빨라질 수 있다. 즉, 성능이 향상될 수 있다.
또한, 이벤트와 관련된 기능들이 구현된 프로그램 패키지(program package)를 모듈화하고 모듈들을 구조화한 모듈 풀을 통해 이벤트를 처리함으로써, 새로운 이벤트 모듈의 추가 또는 기존 이벤트 모듈의 갱신 시 서버를 중단(stop)하지 않고도, 해당 모듈을 추가 또는 갱신(update)할 수 있다. 즉, 서버의 동작 상태를 중지하지 않고 유지한 채, 해당 모듈의 바이너리(binary)를 배포할 수 있다.
또한, 여러 모듈들 각각에 대해 발생하는 여러 응답 메시지들을 모아서 하나의 단일 응답 메시지 형태로 생성하여 클라이언트 단말로 제공함으로써, 클라이언트에서 요청한 이벤트에 대한 응답이 한 번에 처리될 수 있다. 즉, 클라이언트에서 자신이 요청한 이벤트와 관련하여 모든 응답이 수신될 때까지 기다리거나, 또는 특정 메시지를 수신한 이후 해당 메시지 다음 순서의 메시지가 수신될 때까지 기다리거나, 수신된 메시지들을 대상으로 해당 이벤트에 대한 응답을 사용자에게 제공하기 위해 구조화하지 않아도 되므로, 응답 속도(즉, 처리 속도)가 증가하고, 처리를 위해 불필요한 컴퓨팅 자원이 소모되는 것을 방지할 수 있다.
또한, 실제 서버 코드와 동일한 프로그래밍 언어(Programming Language)를 사용하므로, 개발자의 디버깅(debugging) 편의성을 높일 수 있다.
또한, 이벤트 모듈들 각각에서 서버에서 이미 만들어 놓은 함수(기생성된 함수)를 쉽게 재사용 가능하므로 모듈 코드가 간결해질 수 있다.
도 1은 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 시스템의 네트워크 환경을 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 리플렉션(reflection) 기반 프로그래밍 언어를 이용하여 이벤트가 처리되는 네트워크 환경을 도시한 개념도이다.
도 3은 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 방법을 도시한 흐름도이다.
도 4는 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 시스템의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 블록도이다.
도 5는 본 발명의 일실시예에 있어서, 각 프로그램 패키지를 대상으로 분석된 정보들을 이벤트 별로 구조화한 데이터 구조도의 예시도이다.
도 6은 본 발명의 일실시예에 있어서, 데이터 구조화 이후에 클라이언트로부터 요청된 이벤트에 대한 응답을 제공하는 동작을 도시한 흐름도이다.
도 7은 본 발명의 일실시예에 있어서, 이벤트 모듈 및 모듈 속성을 갱신 또는 추가하는 동작을 설명하기 위한 개념도이다.
도 8은 본 발명의 일실시예에 있어서, 이벤트 모듈을 기반으로 단일 응답 메시지를 제공하는 동작을 도시한 흐름도이다.
도 9는 본 발명의 다른 실시예에 있어서, 프로세서의 내부 구성을 도시한 블록도이다.
도 10은 본 발명의 일실시예에 있어서, 단일 응답 메시지를 생성하는 동작을 설명하기 위해 제공되는 개념도이다.
도 11은 본 발명의 일실시예에 있어서, 단일 응답 메시지의 구조를 도시한 도면이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
본 실시예들은 이벤트 기반 패키지 모듈 호출 방법 및 시스템에 관한 것으로서, 특히, 게임 서버, 온라인 쇼핑 등 다양한 서버 환경에서 스크립트(script) 기반 프로그래밍 언어가 아닌 (reflection)을 제공하는 프로그래밍 언어를 사용하여 이벤트를 처리하는 기술에 관한 것이다. 예를 들어, 리플렉션(reflection)을 제공하는 프로그래밍 언어는 자바(Java), C# 등을 포함할 수 있으며, 자바, C#을 이용하여 작성되어 컴파일된(compiled) 파일들 각각을 모듈화하여 메모리에 로딩(loading)해두었다가, 클라이언트로부터 특정 이벤트에 대한 호출이 요청되면 바로 해당 이벤트에 속하는 클래스(class) 또는 함수를 실행하고, 실행 결과를 응답으로 클라이언트 단말로 제공하는 기술에 관한 것이다.
본 실시예들에서, "이벤트"는 게임 서버, 온라인 쇼핑 등에서 제공되는 특정 기획을 나타내는 것으로서, 예를 들어, 출석 이벤트(예컨대, 연속 출석 시 보상/포인트 지급 이벤트 등), 상점 이벤트, 룰렛 이벤트(예컨대, 로그 인 시 룰렛을 돌려서 당첨된 게임 아이템/보상/ 포인트 등을 지급하는 이벤트 등), 크리스마스 이벤트(예컨대, 크리스마스 기간 동안 특정 게임 캐릭터/게임 아이템 무료 이용, 크리스마스 선물 이벤트 등), 친구 초대 이벤트, 무료 체험 이벤트 등과 같이 다양한 종류의 이벤트들을 포함할 수 있다.
본 실시예들에서, "이벤트 모듈"은 특정 이벤트와 관련된 복수의 기능들이 구현된 함수들이 포함된(즉, 함수들을 모아 놓은) 프로그램 패키지(program package)를 모듈화한 것으로서, 패키지 모듈로 표현될 수도 있다. 예를 들어, 특정 이벤트를 시작점으로 하여 가변적인 1개 이상의 기능이 모듈화될 수 있으며, 로그인 이벤트의 경우, 연속 출석 보상 지급, 공지사항 팝업 등이 해당 이벤트에 관련된 기능들에 속할 수 있으며, 해당 기능들을 제공하기 위해 구현된 함수들을 모아서 패키지 형태로 구성될 수 있다. 그리고, 특정 이벤트와 관련된 상기 기능들에 대한 결과를 응답으로 클라이언트 단말로 제공하기 위해, 즉, 데이터베이스 등의 저장 장치에서 스크립트 파일을 가져와서 분석하고 실행한 후 다시 가져다 넣고, 실행 결과를 응답으로 제공하지 않고, 이벤트 모듈을 통해 시스템 자체에서 해당 함수를 바로 실행하여 실행 결과가 응답으로서 제공되도록 프로그램 패키지가 이벤트 별로 모듈화될 수 있다.
본 실시예들에서, "클라이언트"는 사용자가 소지한 단말을 나타내는 것으로서, 예컨대, 스마트폰(smart phone), 태블릿(tablet), 노트북, 데스크탑 등을 나타낼 수 있다.
도 1은 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 시스템의 네트워크 환경을 도시한 도면이다.
도 1의 네트워크 환경은 전자 기기(110), 서버(120) 및 네트워크(130)를 포함하는 예를 나타내고 있다. 전자 기기(110)는 클라이언트 단말을 나타내고, 서버(120)는 이벤트 기반 패키지 모듈 호출 시스템을 나타낼 수 있다. 도 1에서는 서버(120)에 이벤트 기반 패키지 모듈 호출 시스템이 플랫폼 형태로 구현되는 경우를 설명하나, 이는 실시예에 해당되며, 이벤트 기반 패키지 모듈 호출 시스템은 서버(120)와 별도로 외부에 위치할 수 있다. 예컨대, 서버가 여러 개 존재하는 경우, 이벤트 기반 패키지 모듈 호출 시스템은 해당 서버들과 네트워크를 형성할 수 있으며, 서버들 각각에서 호출되는 이벤트에 대한 처리를 이벤트 모듈을 통해 수행할 수 있다.
전자 기기(110)는 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말로서, 전자 기기(110)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 전자 기기(110)는 무선 또는 유선 통신 방식을 이용하여 네트워크(130)를 통해 서버(120)와 통신할 수 있다.
서버(120)는 전자 기기(110)와 네트워크(130)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다.
도 1에 따르면, 서버(120)인 이벤트 기반 패키지 모듈 호출과 전자 기기(110)는 메모리(111, 121), 프로세서(112, 122), 통신 모듈(113, 123 그리고 입출력 인터페이스(114, 124)를 포함할 수 있다. 메모리(111, 121)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(111, 121)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기(110)에 설치되어 구동되는 브라우저나 패지지 모듈의 호출을 위한 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 드라이브 메커니즘(drive mechanism)을 이용하여 메모리(111, 121)와는 별도의 컴퓨터에서 판독 가능한 기록 매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록 매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록 매체가 아닌 통신 모듈(113, 123)을 통해 메모리(111, 121)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로 상술한 서버(120))이 네트워크(130)를 통해 제공하는 파일들에 의해 설치되는 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(111, 121)에 로딩될 수 있다.
프로세서(112, 122)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(111, 121) 또는 통신 모듈(113, 123)에 의해 프로세서(112, 122)로 제공될 수 있다. 예를 들어 프로세서(112, 122)는 메모리(111, 121)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 모듈(113, 123)은 네트워크(130)를 통해 클라이언트 단말인 전자 기기(110)와 이벤트 기반 패키지 모듈 호출 시스템인 서버(120)가 서로 통신하기 위한 기능을 제공할 수 있다. 일례로, 클라이언트 단말(110)의 프로세서(112)가 메모리(111)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청(일례로 로그인 등의 이벤트가 발생함에 따른 로그인 이벤트 호출을 위한 요청)이 통신 모듈(113)의 제어에 따라 네트워크(130)를 통해 서버인 이벤트 기반 패키지 모듈 호출 시스템(120)으로 전달될 수 있다. 역으로, 서버인 이벤트 기반 패키지 모듈 호출 시스템(120)의 프로세서(122)의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(123)과 네트워크(130)를 거쳐 전자 기기(110)의 통신 모듈(113)을 통해 전자 기기(110)로 수신될 수 있다. 예를 들어 통신 모듈(113)을 통해 수신된 서버(120)의 제어 신호나 명령 등은 프로세서(112)나 메모리(111)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기(110)가 더 포함할 수 있는 저장 매체로 저장될 수 있다.
입출력 인터페이스(114, 124)는 입출력 장치(115)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 어플리케이션의 통신 세션을 표시하기 위한 디스플레이와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(114)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 보다 구체적인 예로, 전자 기기(110)의 프로세서(112)는 메모리(111)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(120)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(114)를 통해 디스플레이에 표시될 수 있다.
또한, 다른 실시예들에서 클라이언트 단말인 전자 기기(110) 및 이벤트 기반 패키지 모듈 호출 시스템인 서버(120)는 도 1의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기(110)은 상술한 입출력 장치(115) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 전자 기기(110)가 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 전자 기기(110)에 더 포함되도록 구현될 수 있음을 알 수 있다.
그리고, 이벤트 기반 패키지 모듈 호출 시스템인 서버(120)에 데이터 베이스가 포함되거나 서버(120)와 별도로 외부에 데이터베이스가 존재할 수 있으며, 데이터베이스는 서버(120)에서 게임 또는 쇼핑몰 등의 웹사이트에 접속하거나, 어플리케이션을 통해 해당 서비스를 제공받기 위한 통신 세션이 설정된 여러 전자 기기들(즉, 클라이언트 단말들)에서 발생한 이벤트에 대한 호출 및 호출된 이벤트에 대한 응답을 제공하기 위한 다양한 정보들을 저장 및 관리할 수 있다. 예컨대, 데이터베이스는 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지들을 저장 및 관리하는 모듈 데이터베이스 및 복수의 이벤트 각각의 속성(configuration Items, 예컨대, config 파일)과 관련된 프로그램 패키지들을 저장 및 관리하는 속성 데이터베이스를 포함할 수 있다.
본 발명의 실시예들에 따른 이벤트 기반 패키지 모듈 호출 시스템은 서버(120)에 플랫폼(platform) 형태로 구현될 수 있다. 이후에서는 설명의 편의를 위해 전자 기기(110)에 서버(120)와 통신 세션을 설정하여 서버(120)에서 제공되는 서비스를 제공받기 위한 어플리케이션 또는 브라우저의 설치 및 구동을 위한 패키지 파일이 저장되고, 전자 기기(110)의 요청에 따라(즉, 전자 기기에서 이벤트가 발생하여 서버로 이벤트가 호출됨에 따라) 서버(120)에 구현되는 이벤트 기반 패키지 모듈 호출 시스템을 통해 호출된 이벤트를 처리하는 실시예를 설명한다.
도 2는 본 발명의 일실시예에 있어서, 리플렉션(reflection) 기반 프로그래밍 언어를 이용하여 이벤트가 처리되는 네트워크 환경을 도시한 개념도이다.
도 2를 참고하면, 클라이언트(201)는 전자 기기(110)에 설치된 모바일 앱 또는 웹브라우저 등을 나타낼 수 있으며, 클라이언트(201)에서 특정 이벤트(로그인 등의 이벤트 1)이 발생함에 따라, 서버(200)는 클라이언트(201)로부터 클라이언트(201)에 설치 및 구동된 어플리케이션 또는 웹브라우저를 통해 상기 발생한 이벤트의 호출을 요청받을 수 있다.
서버(200)는 클라이언트(201)에서 호출 요청한 이벤트(예컨대, 이벤트 1)를 확인하고, 해당하는 이벤트를 모듈 풀(210)에서 검색하여 실행하고, 실행 결과를 호출된 이벤트에 대한 응답으로서 상기 어플리케이션 또는 웹브라우저를 통해 클라이언트(201)로 전달할 수 있다. 즉, 호출된 이벤트와 관련된 기능들이 구현된 함수를 실행할 수 있다. 이때, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 이벤트를 처리하기 위해 서버인 이벤트 기반 패키지 모듈 호출 시스템(200)은 모듈 풀(210), 모듈 로더(220)를 포함할 수 있으며, 복수의 이벤트들 각각에 해당하는 복수의 기능들을 모아 놓은 프로그램 패키지들은 이벤트 모듈(230)로 모듈화되어 데이터베이스(즉, 모듈 데이터베이스 및 속성 데이터베이스)에 저장 및 유지될 수 있다. 도 2에서는 서버에 모듈 풀(210), 모듈 로더(220)이 포함되는 경우를 예로서 설명하나, 이는 실시예에 해당되며, 모듈 풀(210)은 메모리로서 서버와 별도로 외부에 위치할 수 있고, 모듈 로더(220)는 모듈 풀(210)의 동작을 제어하기 위해 서버 또는 서버와 별도의 전자 기기 등의 프로세서에 포함되는 구조로 구현될 수도 있다.
도 2에서, 이벤트 모듈들(230) 각각은 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 작성된/생성된 프로그램 패키지(예컨대, Java의 경우 JAR 파일, C#의 경우 DLL 파일 등)를 모듈화한 것으로서, JAR, DLL 등의 프로그램 패키지에서 사전에 미리 정의한 노테이션(notation, 예컨대, JAVA의 경우 Annotation, C#의 경우 Attribute 등)을 사용하여 구현될 수 있다. 여기서, 프로그램 패키지는 특정 이벤트와 관련된 기능들이 구현된 적어도 하나의 함수를 포함할 수 있으며, 해당 함수는 사전에 정의된 노테이션(notation, 즉, 표기 정보)와 연관시켜 프로그램 패키지에 정의될 수 있다. 예를 들어, 출석 이벤트와 관련된 기능들(예컨대, 출석 이벤트를 제공하는 웹페이지 또는 가상 공간으로의 입장, 출석 확인, 연속 출석에 따른 보상 지급, 출석 이벤트를 사용자에게 제공하는 웹페이지 또는 가상 공간에서의 퇴장 등의 액션에 따른 결과를 제공하기 위한 함수들)을 포함하는 프로그램 패키지에 특정 기능에 해당하는 함수 별로 미리 정의된 노테이션(notation)이 연관되어 포함될 수 있다. 여기서, 노테이션(notation)은 해당 기능이 특정 이벤트와 관련된 것임을 식별하기 위한 표기 정보를 나타낼 수 있다. 노테이션의 일례로서, @ModuleInterface가 이용될 수 있으며, @ 이외에 #, % 등의 다양한 기호가 이용될 수 있고, ModuleInterface 이외에 다른 문자(character)가 이용될 수 있다.
모듈 로더(220)는 리플렉션(Reflection)을 사용하여 프로그램 패키지(program package)들을 로딩(loading)하고, 로딩된 프로그램 패키지를 대상으로, 프로그램 패키지 내에 사전에 정의된 상기 노테이션에 기초하여 해당 이벤트와 관련하여 정의된 함수, 변수, 및 클래스(class) 정보 등을 분석할 수 있다. 이때, 프로그램 패키지가 하나의 이벤트 모듈로 모듈화됨에 따라, 모듈 로더(220)는 로딩된 프로그램 패키지(즉, 이벤트 모듈)이 어떤 클래스, 어떤 멤버 변수, 어떤 멤버 함수(예컨대, 이벤트 함수)로 구성되었는지 여부를 분석할 수 있다.
모듈 풀(pool, 210)은 모듈 로더(220)에서 분석된 프로그램 패키지에 해당하는 이벤트 모듈 별 클래스 정보, 함수 및 함수의 파라미터를 해시 함수를 이용하여 구조화할 수 있다. 예를 들어, 모듈 풀(210)은 메모리에 해당하는 것으로서, 모듈 로더를 통해 로딩된 각 프로그램 패키지의 클래스, 이벤트 함수, 함수의 파라미터 등을 해시(hash) 함수를 이용하여 이벤트 별로 구분하여 구조화할 수 있다. 즉, 특정 이벤트의 호출이 요청되는 경우, 호출 요청된 특정 이벤트에 대한 응답을 클라이언트 단말로 바로 제공하기 위해, 각 프로그램 패키지의 클래스, 이벤트 함수 등을 이벤트의 식별자 정보와 링크 연결하는 데이터 구조화가 수행될 수 있다. 그리고, 데이터 구조화까지의 전처리 과정이 완료된 이후, 클라이언트로부터 특정 이벤트에 대한 호출 요청이 수신되면, 모듈 풀을 대상으로 수신된 특정 이벤트와 관련된 이벤트 모듈에 대한 호출이 요청되어, 해당 함수가 실행될 수 있다. 이때, 이벤트 모듈에 대한 호출은 동기식, 비동기식으로 수행될 수 있다. 예컨대, 상황에 따라 서버의 실행 코드가 블록킹(blocking)되거나, 논블록킹(Non-blocking)되도록 하여 서버 개발의 유연성을 제공할 수 있다.
도 3은 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 방법을 도시한 흐름도이고, 도 4는 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 시스템의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 블록도이다.
도 4에 도시된 바와 같이 이벤트 기반 패키지 모듈 호출 시스템(120, 200)에 포함된 프로세서(122)는 구성요소들로서, 모듈화부(410), 분석부(420), 구조화부(430), 및 모듈 업데이트부(440)를 포함할 수 있다. 도 4에서, 분석부(420)는 도 2의 모듈 로더(220)에 해당하는 동작을 수행 또는 제어하고, 구조화부(430)는 도 2의 모듈 풀(210)에 해당하는 동작을 수행 또는 제어하기 위해 이용될 수 있다. 즉, 분석부(420)는 모듈 로더(220)의 동작 중 프로세서(122)에 의해 수행되는 일부 동작(예컨대, 메모리에 프로그램 패키지들이 로딩되도록 제어하고, 프로그램 패키지를 분석하는 동작 등)을 수행하며, 구조화부(430)는 모듈 풀(210)의 동작 중 프로세서(122)에 의해 수행되는 일부 동작(예컨대, 메모리에서 수행되는 동작들을 제외한 동작으로서, 모듈 풀에서 호출 요청된 이벤트에 해당하는 함수 등을 검색하여 실행하는 동작 등)을 수행할 수 있다.
그리고, 모듈화부(410), 분석부(420), 구조화부(430), 및 모듈 업데이트부(440)는 도3의 각 단계들(310 내지 350 단계)을 수행하기 위해 이용될 수 있다.
310 단계에서, 모듈화부(410)는 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화할 수 있다. 여기서, 복수의 이벤트들 각각을 이벤트 모듈로 모듈화하는 과정은 서버에서 제공하는 특정 서비스(예컨대, 게임 서비스, 온라인 쇼핑몰 서비스 등)를 제공하기 위해 실현되어야 할 기능들이 구현된 프로그램을 DLL 파일, JAR 파일 등으로 모듈화하여, 해당 이벤트가 발생 시 바로 실행하기 위한 전처리 과정에 해당할 수 있다. 즉, 해당 이벤트가 발생 시DB에서 해당 스크립트 파일을 가져오고 실행하고 다시 가져다 넣지 않고, 해당 이벤트관련 DLL 파일, JAR 파일을 바로 실행하여 응답 결과를 제공하는 전처리 과정에 해당할 수 있다.
일례로, 서버에서 게임 서비스를 클라이언트 단말로 제공하는 경우, 게임 서비스를 제공받을 때 발생되는 복수의 이벤트들(예컨대, 로그인 이벤트, 로그아웃 이벤트, 상점 이벤트, 출석 이벤트 등)과 관련된 액션들에 따른 결과를 제공하기 위한 적어도 하나의 함수(즉, 이벤트 함수)가 프로그램 패키지 내에 정의될 수 있다. 즉, 함수 내에 특정 이벤트를 실현시키기 위한 프로그램이 정의될 수 있으며, 게임 서비스에서 제공되는 복수의 이벤트 마다 해당 이벤트를 실현하기 위한 함수들이 프로그램 패키지로 구현될 수 있다. 예컨대, 상점 이벤트의 경우, 상점 이벤트를 실현하기 위한 함수들이 상점 이벤트 패키지에 포함되도록 구현될 수 있고, 출석 이벤트의 경우, 출선 이벤트를 실현하기 위한 함수들이 출석 이벤트 패키지에 포함되도록 구현될 수 있다.
이때, 프로그램 패키지를 이벤트 모듈로 모듈화하기 위해, 프로그램 패키지는 특정 이벤트와 관련된 복수의 기능들 각각을 사전에 미리 정의된 노테이션(notation)과 연관시켜 구현될 수 있다. 예컨대, 출석 이벤트 패키지는 출석 이벤트와 관련된 기능 1 및 기능 2에 해당하는 기능 1의 함수, 기능 2의 함수를 포함할 수 있으며, 상기 기능 1의 함수 및 상기 기능 2의 함수 각각은 상기 프로그램 패키지 내에 상기 노테이션(notation)과 연관되어 정의될 수 있다. 예를 들어, Java의 경우 Annotation, C#의 경우 Attribute를 이용하여 상기 노테이션을 해당 함수에 연관시켜 프로그램 패키지 내에 정의할 수 있다.
320 단계에서, 분석부(420)는 복수의 이벤트들 각각에 해당하는 프로그램 패키지를 메모리에 로딩(loading)할 수 있다. 여기서, 로딩하는 분석부(420)의 동작은 도 2의 모듈 로더(220)에 해당할 수 있다. 즉, 복수의 이벤트들 각각에 해당하는 프로그램 패키지들이 상기 노테이션에 기초하여 이벤트 모듈로 모듈화되면, 프로그램 패키지에 대한 분석을 위해 프로그램 패키지들이 메모리에 로딩될 수 있다.
330 단계에서, 분석부(420)는 프로그램 패키지를 구현한 프로그래밍 언어에서 지원하는 리플랙션(reflection)을 사용하여 로딩된 복수의 프로그램 패키지들 각각을 분석할 수 있다.
일례로, 분석부(420)는 자바, C# 등의 프로그래밍 언어에서 지원하는 리플렉션(reflection)을 사용하여 복수의 프로그램 패키지들을 읽어드리고, 복수의 프로그램 패키지들을 대상으로, 프로그램 패키지 내에서 사전에 정의된 노테이션에 기초하여 해당 노테이션과 연관하여 정의된 함수(즉, 이벤트 함수), 해당 함수의 클래스(class), 및 함수의 파라미터 등을 분석할 수 있다.
340 단계에서, 구조화부(430)는 분석된 프로그램 패키지의 클래스(class) 및 함수(즉, 이벤트 함수)를 이벤트 별로 구조화할 수 있다.
일례로, 구조화부(430)는 모듈 풀(pool)에서 특정 이벤트에 해당하는 클래스 또는 함수의 검색이 쉽고 빠르게 이루어지도록, 상기 분석된 각 프로그램 패키지의 클래스 및 함수를 해시(hash) 함수를 이용하여 구조화(즉, 데이터 구조화)할 수 있다. 이때, 구조화부(430)는 분석된 각 프로그램 패키지의 클래스 및 이벤트 함수를 이벤트 별로 구조화(즉, 데이터 구조화)할 수 있다. 이때, 클래스, 이벤트 함수 이외에 상기 분석된 함수의 파라미터(예컨대, 멤버 변수 등)도 해시 함수를 이용하여 상기 클래스, 이벤트 함수와 함께 구조화될 수 있다. 여기서, 분석된 정보들(클래스, 이벤트 함수 등)을 기반으로 데이터 구조화하는 자세한 동작은 아래의 도 5를 참고하여 후술하기로 한다.
350 단계에서, 갱신 또는 추가하고자 하는 이벤트 모듈이 존재하는 경우, 모듈 업데이트부(440)는 해당 이벤트 모듈의 호출에 대한 락(Lock)을 설정하고, 해당 모듈에 대한 갱신 또는 추가를 수행할 수 있다.
일례로, 클라이언트로부터 갱신 또는 추가하고자 하는 이벤트의 호출 요청이 수신된 경우, 모듈 업데이트부(440)는 일단 호출 요청을 받고 호출된 이벤트에 대한 처리를 대기할 수 있다. 예컨대, 호출 요청된 이벤트에 해당하는 이벤트 모듈의 갱신 또는 추가가 완료될 때까지 처리를 대기할 수 있다. 그리고, 모듈 업데이트부(440)는 갱신 또는 추가하고자 하는 이벤트 모듈에 해당하는 프로그램 패키지를 모듈 데이터베이스에 저장할 수 있다. 그러면, 추가 또는 갱신을 위해 모듈 데이터베이스에 저장된 프로그램 패키지에 해당하는 이벤트 모듈의 갱신 또는 추가를 위해 메모리로 해당 프로그램 패키지가 로딩될 수 있으며, 로딩된 프로그램 패키지를 분석하여 획득된 클래스, 함수 등을 기반으로 해당 프로그램 패키지(즉, 이벤트 모듈)관련하여 구조화된 정보들이 업데이트될 수 있다. 예컨대, 기존에 구조화된 특정 이벤트에 해당하는 프로그램 패키지의 클래스 및 함수가 상기 획득된 클래스, 함수를 나타내도록 업데이트될 수 있다.
이처럼, 업데이트가 완료되면 상기 호출에 설정된 락(Lock)이 해제될 수 있다. 여기서, 이벤트 모듈을 갱신 또는 추가하는 자세한 동작은 아래의 도 7을 참고하여 후술하기로 한다.
도 5는 본 발명의 일실시예에 있어서, 각 프로그램 패키지를 대상으로 분석된 정보들을 이벤트 별로 구조화한 데이터 구조도의 예시도이다.
도 5에서는 게임 서비스를 제공하는 경우에 상점 이벤트와 관련된 프로그램 패키지(상점 이벤트 package, 510)와 출석 이벤트와 관련된 프로그램 패키지(출석 이벤트 package, 520)가 각각 이벤트 모듈로 모듈화된 경우에, 해당 프로그램 패키지를 분석하여 데이터 구조화를 수행하는 경우를 예로 들어 설명하기로 한다. 도 5의 데이터 구조도는 실시예에 해당되며, 다양한 형태로 데이터 구조화가 수행될 수 있다. 도 5에서, 모듈 로더(530)는 도 4의 분석부(420)에 해당하고, 모듈 풀(pool, 540)은 도 4의 구조화부(430)에 해당할 수 있다.
도 5의 출석 이벤트 패키지(520)를 참고하면, 출석 이벤트와 관련된 기능들을 실현하기 위한 함수들(OnJoinRoom, OnLeaveRoom)은 사전에 미리 정의된 노테이션(@ModuleInterface)와 연관시켜 프로그램 패키지 내에 정의될 수 있다. 이처럼, 상기 노테이션이 정의된 출석 이벤트 패키지에 해당하는 DLL 또는 JAR 파일이 출석 이벤트에 해당하는 이벤트 모듈로 모듈화될 수 있다.
모듈 로더(530)는 각 프로그램 패키지를 대상으로, 패키지 내에 상기 노테이션(예컨대, @ModuleInterface)으로 정의된 함수(예컨대, 이벤트 함수)를 로딩(loading)할 수 있다. 함수를 로딩 시, 모듈 로더(530)는 리플렉션(reflection)을 이용하여 클래스, 함수 및 함수의 파라미터를 읽어드릴 수 있다.
그러면, 모듈 풀(540)은 빠른 검색을 위해 로딩된 정보(즉, 프로그램 패키지 별 클래스, 함수, 함수의 파라미터 등)를 해시 함수를 이용하여 구조화할 수 있다. 이때, 해당 이벤트를 실현시키기 위한 이벤트 함수를 기준으로 이벤트 별로 구조화가 수행될 수 있다. 예컨대, 이벤트 함수(OnJoinRoom)의 경우, 상점 이벤트, 출석 이벤트, 보관함 이벤트를 실현시키기 위해 공통으로 이용될 수 있으므로, 각 이벤트 별 프로그램 패키지에 상기 노테이션으로 정의될 수 있다. 이에 따라, OnJoinRoom을 기준으로 해당하는 이벤트인 상점 이벤트, 출성 이벤트, 보관함 이벤트가 가상의 링크 연결되도록 구조화가 수행될 수 있다. 즉, 특정 이벤트를 위해 해당 이벤트를 제공하는 가상 공간으로 들어가는 동작은 상점 이벤트, 출석 이벤트, 보관함 이벤트에서 공통되고, 해당 이벤트에서 제시하는 액션을 수행한 후 상기 가상 공간에서 빠져나오는 동작은 상점 이벤트, 출석 이벤트, 보관함 이벤트에서 공통되므로, OnLeaveRoom을 기준으로 해당하는 이벤트인 상점 이벤트, 출성 이벤트, 보관함 이벤트가 가상의 링크 연결되도록 구조화될 수 있다.
도 6은 본 발명의 일실시예에 있어서, 데이터 구조화 이후에 클라이언트로부터 요청된 이벤트에 대한 응답을 제공하는 동작을 도시한 흐름도이다.
도 6의 각 단계들(610 및 620 단계)은 도 4의 구조화부(430)에 의해 수행될 수 있다.
복수의 이벤트들을 실현시키기 위해 복수의 이벤트들 각각에 해당하는 프로그램 패키지가 이벤트 모듈로 모듈화되고, 이벤트 모듈 별(즉, 프로그램 패키지 별) 클래스, 함수, 및 함수의 파라미터 등이 구조화된 이후, 클라이언트에서 특정 이벤트에 대한 호출 요청이 발생할 수 있다. 예를 들어, 출석 이벤트에서 제공하는 연속 출석에 따른 보상을 지급받기 위해 클라이언트에서 출석 이벤트를 제공하는 가상 공간(예컨대, 출석 이벤트 팝업창 클릭, 로비 화면에서 출석 이벤트 항목 클릭 등)으로 진입하는 액션이 발생함에 따라, 서버인 이벤트 기반 패키지 모듈 호출 시스템(200)은 출석 이벤트에 대한 호출 요청이 클라이언트에서 구동된 어플리케이션 또는 웹브라우저를 통해 수신할 수 있다.
610 단계에서, 구조화부(430)은 호출 요청된 이벤트를 확인(즉, 이벤트의 식별자 정보에 기초하여 호출 요청된 이벤트 확인)하고, 확인된 이벤트에 해당하는 클래스 및 함수를 모듈 풀에서 검색할 수 있다. 그리고, 구조화부(430)는 검색된 클래스(예컨대, 출석 이벤트와 관련된 프로그램 패키지의 클래스)를 인스턴스(instance)화하고, 해당 함수(즉, 검색된 상기 클래스의 함수)를 실행시킬 수 있다. 이때, 한번 인스턴스화된 클래스는 바로 삭제되지 않고, 다음 번 호출에서 재사용되도록 유지될 수 있다.
일례로, 구조화부(430)는 클라이언트 1에서 출석 이벤트에 대한 호출 요청이 발생한 경우, 모듈 풀에서 검색된 출석 이벤트에 해당하는 클래스를 검색하여 인스턴스화할 수 있다. 이때, 클라이언트 1과 관련하여 생성된 인스턴스의 식별자 정보는 클라이언트 1의 식별자 정보와 매칭하여 저장될 수 있다. 그리고, 클라이언트 1이 출석 이벤트와 관련하여 연속 출석에 따른 보상을 지급받고 출석 이벤트에 해당하는 가상 공간을 나간 경우, 클라이언트 1과 관련하여 생성된 상기 인스턴스는 삭제되지 않고 재사용될 수 있다. 예컨대, 클라이언트 2에서 출석 이벤트에 대한 호출 요청이 발생한 경우, 클라이언트 1 때 생성된 상기 인스턴스가 재사용될 수 있다. 이처럼, 재사용되는 경우, 상기 인스턴스의 식별자 정보는 클라이언트 1의 식별자 정보에서 클라이언트 2의 식별자 정보로 수정될 수 있다. 여기서, 인스턴스는 서버에서 해당 인스턴스의 삭제를 요청할 때까지 제거되지 않고 재사용될 수 있다. 즉, 인스턴스 삭제 요청 시 제거될 수 있다.
다른 예로, 구조화부(430)는 출석 이벤트에 대한 호출이 발생하여 OnJoinRoom 함수의 실행이 요청된 경우, 모듈 풀에서 검색된 OnJoinRoom에 해당하는 상점 이벤트, 출석 이벤트, 및 보관함 이벤트와 관련하여 클래스(class)를 인스턴스화하고, OnJoinRoom 함수를 실행할 수 있다. 즉, 클라이언트 에서 출석 이벤트 이외에 상점 이벤트 또는 보관함 이벤트에 대한 호출이 요청된 경우, 생성된 상기 클래스의 인스턴스가 호출 요청된 보관함 이벤트, 상점 이벤트에 대한 응답을 제공하기 위해 재사용될 수 있다.
620 단계에서, 구조화부(430)는 클래스 및 함수의 실행 결과를 호출 요청된 특정 이벤트에 대한 응답으로서 해당 클라이언트로 전달할 수 있다. 이때, 프로그램 패키지(즉, 이벤트 모듈)의 이벤트 함수를 실행한 실행 결과로서 복수개의 응답이 존재하는 경우, 복수개의 응답들을 모아서 하나의 단일 응답 메시지가 클라이언트로 전달될 수 있다.
도 7은 본 발명의 일실시예에 있어서, 이벤트 모듈 및 모듈 속성을 갱신 또는 추가하는 동작을 설명하기 위한 개념도이다.
도 7에서, 모듈 레파지토리(740)는 모듈 데이터베이스에 해당하고, 모듈 속성 레파지토리(750)는 속성 데이터베이스에 해당할 수 있다. 도 7의 동작은 도 1의 프로세서(122)에 의해 수행될 수 있다. 예컨대, 프로세서(122)의 모듈 업데이트부(440)에 의해 수행될 수 있다.
서버(즉, 이벤트 기반 패키지 모듈 호출 시스템)는 모듈 관리 도구(730)를 통해 모듈 갱신 요청(710)을 수신할 수 있다. 예를 들어, 서버의 관리자 등으로부터 상기 모듈 갱신 요청(710)을 위한 표시 정보(버튼, 아이콘 등)가 선택되어 모듈 갱신 요청(710)이 수신될 수 있다.
이처럼, 모듈 갱신 요청이 수신되면, 프로세서(122)는 모듈 데이터베이스인 모듈 레파지토리(740)에 갱신 또는 추가 요청된 모듈에 해당하는 프로그램 패키지를 저장할 수 있다. 그리고, 프로세서(122)는 모듈 풀(760)을 대상으로 갱신 또는 추가 요청된 상기 이벤트 모듈의 갱신 또는 추가를 요청할 수 있다. 이때, 모듈 풀(760)에서 상기 저장된 프로그램 패키지에 해당하는 이벤트 모듈을 갱신하거나 또는 추가하기 이전에, 프로세서(122)는 모듈 풀(760)을 대상으로 갱신 또는 추가가 완료될 때까지 해당 이벤트와 관련된 이벤트 모듈의 호출에 대한 락(Lock)을 설정할 수 있다.
예를 들어, 출석 이벤트와 관련된 프로그램 패키지가 수정되어 해당 이벤트 모듈을 갱신하고자 하는 경우, 수정된 프로그램 패키지가 모듈 데이터베이스인 모듈 레파지토리(740)에 저장될 수 있다. 이때, 모듈 풀이 갱신되기 이전에 클라이언트로부터 출석 이벤트에 대한 호출 요청이 발생한 경우, 프로세서(122)는 해당 이벤트의 호출 요청을 수신한 이후 갱신이 완료될 때까지 일정 시간 동안 해당 이벤트의 처리를 대기시킬 수 있다. 즉, 출석 이벤트와 관련된 서비스의 접근 자체를 차단시키는 것이 아니라, 매우 짧은 시간에 갱신이 이루어지므로 출석 이벤트를 위한 가상 공간으로의 클라이언트 접근을 허용하면서 응답을 잠시 대기시킬 수 있다. 이를 위해, 프로세서(122)는 클라이언트로부터의 호출 요청은 수신하되, 해당 이벤트와 관련된 이벤트 모듈의 호출에 대해서는 락(Lock)을 설정할 수 있다. 그리고, 모듈 풀에서 상기 출석 이벤트관련 갱신이 완료되면, 프로세서(122)는 상기 락이 설정된 이벤트 모듈의 호출에 대한 락을 해제(Unlock)할 수 있다.
예를 들어, 상기 락(Lock)이 설정된 이후, 프로세서(122)는 모듈 레파지토리(740)에 저장된 갱신 요청된 출석 이벤트에 해당하는 프로그램 패키지를 메모리에 로딩할 수 있다. 그리고, 리플렉션(reflection)을 이용하여 로딩된 프로그램 패키지를 분석할 수 있으며, 분석을 통해 획득한 클래스, 함수, 함수의 파라미터 등을 기반으로 모듈 풀(750)에서 이미 구조화된 기존의 출석 이벤트관련 클래스, 함수, 함수의 파라미터를 갱신할 수 있다. 이에 따라, 갱신 요청된 출석 이벤트관련 이벤트 모듈의 갱신이 완료될 수 있으며, 갱신이 완료됨에 따라 프로세서(122)는 출석 이벤트와 관련하여 이벤트 모듈의 호출에 대한 락(Lock)을 해제(Unlock)할 수 있다. 이처럼, 이벤트 모듈을 추가 또는 갱신하고자 하는 경우, 서버를 셧다운(shutdown)시키지 않고, 무정지 상태로 모듈 배포가 진행될 수 있다.
이벤트 모듈의 갱신과 마찬가지로 이벤트 모듈의 속성(Configuration Items)이 갱신될 수 있으며, 이벤트 모듈의 속성 갱신 시에도 서버를 셧다운(shutdown)하지 않고, 무정지로 갱신된 속성 파일이 배포될 수 있다.
예를 들어, 프로세서(122)는 모듈 관리 도구(730)를 통해 모듈의 속성 갱신을 요청받을 수 있다(720). 그러면, 속성 데이터베이스인 모듈 속성 레파지토리(750)에 해당 프로그램 패키지가 저장될 수 있으며, 프로세서(122)는 모듈 풀(760)을 대상으로 이벤트 모듈의 갱신을 수행하기 위해 해당 이벤트 모듈에 대한 호출에 락(Lock)을 설정할 수 있다. 그리고, 요청된 이벤트 모듈의 속성 갱신이 완료되면 상기 락이 해제(Unlock)될 수 있다.
이처럼, 이벤트 처리를 모듈 풀 및 모듈 로더를 기반으로 수행함에 따라, 기존의 스크립트 기반 이벤트 처리 방식과 달리, 스크립트 파일을 DB(즉, repository) 에 저장 후 서버에 신호(signal)를 전송하여 리로드(reload)하지 않고, 서버가 모듈 풀에서 해당 이벤트를 검색하여 바로 함수를 실행할 수 있다.
도 8은 본 발명의 일실시예에 있어서, 이벤트 모듈을 기반으로 단일 응답 메시지를 제공하는 동작을 도시한 흐름도이고, 도 9는 본 발명의 다른 실시예에 있어서, 프로세서의 내부 구성을 도시한 블록도이다.
도 9에서 프로세서(900)는 도 2의 프로세서(122)에 해당할 수 있으며, 도 4의 프로세서(400)에 포함된 모듈 업데이트부(440) 대신 정보 수신부(940) 및 메시지 생성부(950)를 포함할 수 있다.
도 9에 따르면, 프로세서(900, 122)는 모듈화부(910), 분석부(920), 구조화부(930), 정보 수신부(940) 및 메시지 생성부(950)를 포함할 수 있으며, 모듈화부(910), 분석부(920), 구조화부(930)의 동작은 앞에서 설명한 도 4의 모듈화부(910), 분석부(920), 구조화부(930)와 동일하므로 중복되는 설명은 생략하기로 한다. 즉, 도 9에서, 모듈을 기반으로 이벤트를 처리하는 전처리 과정(모듈화, 리플렉션 기반 분석을 통한 구조화)는 도 3 및 도 4에서 이미 설명한 전처리 과정과 동일하며, 도 9에서는 전처리 과정 이후에 클라이언트에서 이벤트 호출 요청이 발생한 경우에, 해당 이벤트에 대한 응답을 클라이언트로 제공하는 경우의 처리를 설명하고자 한다. 이에 따라, 도 8의 810 단계 이전에 전처리를 위한 도 3의 각 단계들이 수행될 수 있으며, 도 8의 각 단계들(810 내지 830 단계)은 프로세서(122, 400)에 의해 수행될 수 있다.
810 단계에서, 정보 수신부(940)는 클라이언트로부터 특정 이벤트의 호출 요청을 수신할 수 있다. 예컨대, 정보 수신부(940)는 클라이언트에 설치 및 구동된 어플리케이션을 통해 출석 이벤트의 호출 요청을 수신할 수 있다.
820 단계에서, 메시지 생성부(950)는 구조화된 각 프로그램 패키지의 클래스 및 함수 중 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 하나의 단일 응답 메시지를 생성할 수 있다.
830 단계에서, 생성된 단일 응답 메시지가 클라이언트로 제공될 수 있다.
일례로, 모듈 풀을 대상으로 출석 이벤트에 해당하는 클래스 및 함수를 검색될 수 있으며, 메시지 생성부(950)는 검색된 클래스 및 함수를 실행함에 따라 실행 결과로서 획득되는 응답 메시지들을 취합하여 하나의 단일 응답 메시지를 생성할 수 있다. 여기서, 복수개의 응답 메시지들은 함수를 실행한 결과로서, 동시에 획득되는 것이 아니라, 동시에 획득되는 것도 있고, 시간 차를 두고 획득되는 메시지도 존재할 수 있다. 이에 따라, 메시지 생성부(950)는 클라이언트에서 호출 요청된 출석 이벤트에 대한 응답으로서, 응답 메시지들을 그때 그때 제공하는 것이 아니라, 하나로 취합하여 구조화한 이후 클라이언트로 제공할 수 있다. 여기서, 단일 응답 메시지를 생성하는 동작은 아래의 도 9를 참고하여 자세히 설명하기로 한다.
도 10은 본 발명의 일실시예에 있어서, 단일 응답 메시지를 생성하는 동작을 설명하기 위해 제공되는 개념도이고, 도 11은 본 발명의 일실시예에 있어서, 단일 응답 메시지의 구조를 도시한 도면이다.
도 10에서는 서버와 클라이언트 간 메시징의 라운드 트림(Roundtrip Trip)을 최소화하여 성능적 효과를 얻기 위해 복수개의 응답들을 모아 하나 응답으로 처리하는 경우를 예로 들어 설명하나, 이는 실시예에 해당되며, 이벤트 모듈들 각각에서 클라이언트로 직접 메시지를 전송할 수도 있다.
도 10의 1000을 참고하면, 클라이언트로부터 이벤트 1에 대한 호출이 요청되면, 프로세서(122, 900)는 해당 이벤트와 관련된 이벤트 모듈을 호출하고, 모듈 풀에서 검색된 클래스 및 함수를 실행함에 따라 발생하는 복수개의 전송할 메시지들(1010, 1020)을 취합하여 단일 응답 메시지(1030)를 생성할 수 있다. 그리고, 생성된 단일 응답 메시지(1030)를 클라이언트로 제공할 수 있다. 즉, 상기 복수개의 전송할 메시지들(예컨대, 도 10의 8개의 응답 메시지들) 각각이 발생할 때마다 바로 클라이언트로 전송하지 않고, 상기 8개의 응답 메시지들을 버퍼 등에 임시 보관하고 있다가 하나의 응답(즉, 단일 응답 메시지)으로 생성하여 클라이언트로 제공할 수 있다. 이때, 모든 이벤트 모듈의 호출이 끝난 이후에 클라이언트로 전송할 복수개의 메시지들이 취합되어 상기 단일 응답 메시지가 생성될 수 있다.
일례로, 프로세서(예컨대, 메시지 생성부)는 특정 이벤트(예컨대, 이벤트 1)와 관련된 이벤트 모듈들(이벤트 모듈 A, B)을 호출하여 해당 클래스 및 함수를 실행하고, 실행 결과로서 제공되는 복수개의 응답 메시지들 (1010, 1020)을 모아서 하나의 단일 응답 메시지를 생성할 수 있다. 이때, 메시지들은 경우에 따라 순서가 있는 메시지(즉, 순서에 유관한 메시지(Sequenced Message))를 포함할 수도 있고, 순서에 관계없는 메시지(즉, 순서에 무관한 메시지(Unified Message))를 포함할 수도 있다. 그러면, 프로세서(예컨대, 메시지 생성부)는 도 11과 같이 순서에 유관한 메시지(1120)와 순서에 무관한 메시지(1110)를 구분하여 단일 응답 메시지(1100)를 생성할 수 있다. 여기서, 순서에 유관한 메시지(1120)는 클라이언트에서 호출이 요청된 특정 이벤트에 해당하는 응답을 제공할 때의 제공 순서를 가지는 것으로 지정된 메시지(즉, 응답 메시지)를 나타낼 수 있다.
예를 들어, 특정 이벤트와 관련하여, 실행 결과로서 웰컴 메시지, 보상 메시지, 메일 확인 메시지 등이 단일 응답 메시지를 생성하기 위해 모아질 수 있다. 이때, 인증된 클라이언트와 관련하여(즉, 사용자가 로그인한 이후), 웰컴 메시지, 보상 메시지, 메일 확인 메시지가 순차적으로 클라이언트의 디스플레이에 표시되는 것으로 미리 지정된 경우, 순서가 지정된 메시지들은 각각 우선 순위 정보가 해당 메시지와 함께 연관되어 단일 응답 메시지 내에서 구성될 수 있다. 예컨대, 웰컴 메시지와 연관하여 우선 순위 1을 나타내는 정보, 보상 메시지와 연관하여 우선 순위 2를 나타내는 정보, 메일 확인 메시지와 연관하여 우선 순위 3을 나타내는 정보가 함께 단일 응답 메시지 내에 포함될 수 있다. 이때, 순서에 무관한 메시지가 존재하는 경우, 상기 단일 응답 메시지 내에 순서에 무관한 메시지가 함께 포함될 수 있다.
이처럼, 서버에서 클라이언트로부터 호출 요청된 이벤트와 관련하여 단일 응답 메시지를 제공함에 따라, 클라이언트는 구조화를 위한 모든 메시지가 도착할 때까지 기다릴 필요없이 구조화된 형태의 단일 응답 메시지를 제공받으므로, 클라이언트 단에서 상기 이벤트에 대한 응답을 한번에 처리할 수 있다.
도 10의 1050을 참고하면, 특정 이벤트와 관련하여 처리되는 이벤트 모듈(즉, 프로그램 패키지)의 함수를 실행하면서, 해당 함수를 공통적으로 이용하는 다른 이벤트 모듈(즉, 다른 프로그램 패키지)가 존재할 수 있다. 그러면, 프로세서(122, 900)는 상기 이벤트 모듈을 처리하면서 내부순환이벤트를 통해 다른 이벤트 모듈의 함수를 재사용함으로써, 모듈 간 중복 코드를 방지할 수 있다.
일례로, 특정 이벤트와 관련된 이벤트 모듈(예컨대, 이벤트 모듈 A, B, C)이 복수개인 경우, 프로세서(122, 900)는 내부순환이벤트(1051)를 통해 복수개의 이벤트 모듈 각각을 호출하여 해당 함수를 실행할 수 있다. 그리고, 모든 이벤트 모듈들(예컨대, 이벤트 모듈 A, B, C)관련 함수의 실행이 완료되면, 실행 결과로서 복수개의 응답 메시지들이 생성될 수 있다. 이때, 프로세서(122, 900)는 복수개의 응답 메시지들을 모아서 단일 응답 메시지로 생성할 수 있으며, 생성된 단일 응답 메시지를 클라이언트로 제공할 수 있다. 이때, 내부순환이벤트(1051)를 통해 다른 이벤트 모듈들을 호출하는 경우, 동기식 또는 비동기식으로 다른 이벤트 모듈이 호출되어 해당 이벤트관련 함수가 실행될 수 있다. 예컨대, 동기식으로 처리되는 경우, 서버의 실행코드가 블록킹(blocking)될 수 있다. 즉, 실행 결과에 대한 응답이 발생할 때까지 다음 코드를 실행하지 않고 대기할 수 있다. 그리고, 응답이 발생하면 다음 코드가 실행될 수 있다. 비동기식으로 처리되는 경우, 서버의 실행 코드가 논블록킹(Non-Blocking)될 수 있다. 예컨대, 응답이 오지 않았더라도 바로 다음 코드를 실행하고, 다음 코드 실행 중에 응답이 발생하면, 발생된 응답을 클라이언트로 제공하는 등의 처리가 수행될 수 있다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 컴퓨터에 의해 실행되는 이벤트 기반 패키지 모듈 호출 방법에 있어서,
    리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계;
    상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 단계;
    분석된 각 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 단계;
    클라이언트로부터 특정 이벤트의 호출을 요청받는 단계;
    구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하는 단계; 및
    생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 단계
    를 포함하고,
    상기 단일 응답 메시지를 생성하는 단계는,
    상기 복수개의 메시지들을 대상으로, 순서에 무관한 메시지(unified message)와 순서에 유관한 메시지(sequenced message)를 구분하여 상기 단일 응답 메시지를 생성하는 단계
    를 포함하는 이벤트 기반 패키지 모듈 호출 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 순서에 유관한 메시지는, 클라이언트에서 상기 호출이 요청된 특정 이벤트에 해당하는 응답을 제공할 때의 제공 순서를 가지는 것으로 지정된 메시지를 나타내는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
  4. 제1항에 있어서,
    상기 단일 응답 메시지를 생성하는 단계는,
    상기 순서에 유관한 메시지(sequenced message)가 복수개인 경우, 순서에 유관한 메시지 각각에 해당하는 우선 순위를 해당 메시지와 연관시켜 상기 단일 응답 메시지를 생성하는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
  5. 제1항에 있어서,
    상기 단일 응답 메시지를 생성하는 단계는,
    구조화된 이벤트 모듈들을 기반으로 호출 요청된 상기 특정 이벤트에 해당하는 적어도 하나의 이벤트 모듈의 함수를 실행함에 따라 생성된 실행 결과 별 메시지들을 취합하여 상기 단일 응답 메시지를 생성하는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
  6. 제5항에 있어서,
    상기 함수를 실행하는 단계는,
    상기 특정 이벤트와 관련된 이벤트 모듈이 복수개인 경우, 내부순환이벤트를 통해 복수개의 이벤트 모듈 각각을 호출하여 해당 함수를 실행하는 단계
    를 포함하는 이벤트 기반 패키지 모듈 호출 방법.
  7. 제5항에 있어서,
    상기 호출 요청된 상기 특정 이벤트에 해당하는 적어도 하나의 이벤트 모듈은 동기식 또는 비동기식으로 호출되는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
  8. 제1항에 있어서,
    상기 이벤트 모듈로 모듈화하는 단계는,
    상기 특정 이벤트와 관련된 복수의 기능들 각각을 미리 지정된 노테이션(notation)과 연관시켜 모듈화하는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
  9. 제1항에 있어서,
    상기 이벤트 별로 구조화하는 단계는,
    상기 각 프로그램 패키지의 클래스(class) 및 함수를 해시(Hash) 함수에 기초하여 구조화하는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
  10. 제1항에 있어서,
    상기 프로그램 패키지는 JAR 파일 또는 DLL 파일을 포함하는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
  11. 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 모듈화부;
    상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 분석부;
    분석된 각 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 구조화부;
    클라이언트로부터 특정 이벤트의 호출을 요청받는 정보 수신부; 및
    구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하고, 생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 메시지 생성부
    를 포함하고,
    상기 메시지 생성부는,
    상기 복수개의 메시지들을 대상으로, 순서에 무관한 메시지(unified message)와 순서에 유관한 메시지(sequenced message)를 구분하여 상기 단일 응답 메시지를 생성하는
    이벤트 기반 패키지 모듈 호출 시스템.
  12. 삭제
  13. 제11항에 있어서,
    상기 순서에 유관한 메시지는, 클라이언트에서 상기 호출이 요청된 특정 이벤트에 해당하는 응답을 제공할 때의 제공 순서를 가지는 것으로 지정된 메시지를 나타내는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
  14. 제11항에 있어서,
    상기 메시지 생성부는,
    상기 순서에 유관한 메시지(sequenced message)가 복수개인 경우, 순서에 유관한 메시지 각각에 해당하는 우선 순위를 해당 메시지와 연관시켜 상기 단일 응답 메시지를 생성하는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
  15. 제11항에 있어서,
    상기 구조화부는,
    구조화된 이벤트 모듈들을 기반으로 호출 요청된 상기 특정 이벤트에 해당하는 적어도 하나의 이벤트 모듈의 함수를 실행하고,
    상기 메시지 생성부는,
    상기 이벤트 모듈의 함수를 실행한 실행 결과 별 메시지들을 취합하여 상기 단일 응답 메시지를 생성하는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
  16. 제15항에 있어서,
    상기 구조화부는,
    상기 특정 이벤트와 관련된 이벤트 모듈이 복수개인 경우, 내부순환이벤트를 통해 복수개의 이벤트 모듈 각각을 호출하여 해당 함수를 실행하는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
  17. 제15항에 있어서,
    상기 호출 요청된 상기 특정 이벤트에 해당하는 적어도 하나의 이벤트 모듈은 동기식 또는 비동기식으로 호출되는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
  18. 제11항에 있어서,
    상기 모듈화부는,
    상기 특정 이벤트와 관련된 복수의 기능들 각각을 미리 지정된 노테이션(notation)과 연관시켜 모듈화하는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
  19. 제11항에 있어서,
    상기 구조화부는,
    상기 각 프로그램 패키지의 클래스(class) 및 함수를 해시(Hash) 함수에 기초하여 구조화하는 것
    을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
  20. 컴퓨터로 구현되는 서버 장치와 결합되어 이벤트 기반 패키지 모듈 호출 방법을 실행시키기 위해 기록매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 이벤트 기반 패키지 모듈 호출 방법은,
    리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계;
    상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 단계;
    분석된 각 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 단계;
    클라이언트로부터 특정 이벤트의 호출을 요청받는 단계;
    구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하는 단계; 및
    생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 단계
    를 포함하고,
    상기 단일 응답 메시지를 생성하는 단계는,
    상기 복수개의 메시지들을 대상으로, 순서에 무관한 메시지(unified message)와 순서에 유관한 메시지(sequenced message)를 구분하여 상기 단일 응답 메시지를 생성하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
KR1020170091709A 2017-07-19 2017-07-19 이벤트 기반 패키지 모듈 호출 방법 및 시스템 KR102332506B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170091709A KR102332506B1 (ko) 2017-07-19 2017-07-19 이벤트 기반 패키지 모듈 호출 방법 및 시스템
JP2018134255A JP7231347B2 (ja) 2017-07-19 2018-07-17 イベント基盤パッケージモジュールの呼び出し方法およびシステム
US16/038,178 US10866843B2 (en) 2017-07-19 2018-07-18 Method and system for invoking event-based package module

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170091709A KR102332506B1 (ko) 2017-07-19 2017-07-19 이벤트 기반 패키지 모듈 호출 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20190009880A KR20190009880A (ko) 2019-01-30
KR102332506B1 true KR102332506B1 (ko) 2021-12-01

Family

ID=65276911

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170091709A KR102332506B1 (ko) 2017-07-19 2017-07-19 이벤트 기반 패키지 모듈 호출 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR102332506B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111815090A (zh) * 2019-04-11 2020-10-23 上海拉扎斯信息科技有限公司 任务执行方法、装置、电子设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003501743A (ja) 1999-06-04 2003-01-14 ビスキュア・コーポレイション 同種のシステム間におけるプロトコル応答
US20120124555A1 (en) * 2010-11-11 2012-05-17 Codekko Software, Inc. Optimization of Compiled Control Objects
US20160217176A1 (en) * 2015-01-25 2016-07-28 Iguazio Systems Ltd. Application-centric object configuration

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130048904A (ko) * 2011-11-03 2013-05-13 (주)한성에스엠비솔루션 Nas 어플리케이션 패키지 설치 시스템 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003501743A (ja) 1999-06-04 2003-01-14 ビスキュア・コーポレイション 同種のシステム間におけるプロトコル応答
US20120124555A1 (en) * 2010-11-11 2012-05-17 Codekko Software, Inc. Optimization of Compiled Control Objects
US20160217176A1 (en) * 2015-01-25 2016-07-28 Iguazio Systems Ltd. Application-centric object configuration

Also Published As

Publication number Publication date
KR20190009880A (ko) 2019-01-30

Similar Documents

Publication Publication Date Title
US11216256B2 (en) Determining based on static compiler analysis that execution of compiler code would result in unacceptable program behavior
US10387171B2 (en) Configurable development platform integrating heterogeneous persistence systems
US6886170B1 (en) Method and apparatus in a data processing system for the issuance and delivery of lightweight requests to concurrent and multiple service providers
US7181686B1 (en) Selecting screens in a GUI using events generated by a set of view controllers
KR101854975B1 (ko) 패키지 파일에 대한 기능 확장 방법 및 시스템
JP7231347B2 (ja) イベント基盤パッケージモジュールの呼び出し方法およびシステム
CN111198730A (zh) 子应用程序启动的方法、装置、终端及计算机存储介质
US11960930B2 (en) Automated software robot creation for robotic process automation
US11782734B2 (en) Method and system for text extraction from an application window for robotic process automation
EP3508262A1 (en) Method and system for sharing user activity information
Rattanapoka et al. An MQTT-based IoT cloud platform with flow design by Node-RED
US11429509B2 (en) Smart span prioritization based on ingestion service backpressure
KR102332506B1 (ko) 이벤트 기반 패키지 모듈 호출 방법 및 시스템
Makarov Yii 1.1 Application Development Cookbook
KR102327927B1 (ko) 이벤트 기반 패키지 모듈 호출 방법 및 시스템
US20230050430A1 (en) Robotic process automation system for managing human and robotic tasks
CN110574033B (zh) 减少多媒体内容传递的远程过程调用
US11675802B1 (en) Graphical user interface and flexible architecture for a rule engine
KR20180048518A (ko) 패키지 파일에 대한 기능 확장 방법 및 시스템
Ramgir et al. Java 9 High Performance: Practical techniques and best practices for optimizing Java applications through concurrency, reactive programming, and more
Lin et al. SPADE: Scalable App Digging with Binary Instrumentation and Automated Execution
US12019534B2 (en) Out-of-the-box telemetry for rich-client application runtime frameworks
Loureiro Hybrid Smart Contracts in Ethereum
US20230046322A1 (en) Robotic process automation system for managing human, robotic and external tasks
Tricoire et al. KevoreeJS: Enabling dynamic software reconfigurations in the Browser

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant