KR20190009880A - Method and system for invoking event based package module - Google Patents

Method and system for invoking event based package module Download PDF

Info

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

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

Abstract

Disclosed are an event based package module calling method and a system thereof. The event based package module calling system comprises a modularizing unit, an analyzing unit, a structuralizing unit, an information receiving unit, and a massage generating unit. The modularizing unit uses a reflection based programming language to modularize a program package, in which a plurality of functions related to a specific event are implemented, in an event module. The analyzing unit analyzes each program package corresponding to a plurality of event modules by using the reflection. The structuralizing unit structuralizes a class and event function of each analyzed program package for each event. The information receiving unit receives a call of the specific event from a client. The massage generating unit generates a single response massage by collecting a plurality of massages generated based on a class and function related to an event module corresponding to a specific event, to which the call is requested, among the classes and functions of each structuralized program package, and provides the generated single response massage to the client. The present invention can prevent consumption of computing resources.

Description

이벤트 기반 패키지 모듈 호출 방법 및 시스템{METHOD AND SYSTEM FOR INVOKING EVENT BASED PACKAGE MODULE}[0001] METHOD AND SYSTEM FOR INVOKING EVENT BASED PACKAGE MODULE [0002]

아래의 설명은 이벤트(event)를 처리하는 기술에 관한 것으로, 게임, 온라인 쇼핑 등 다양한 서버 환경에서 특정 서비스를 제공하기 위한 이벤트를 처리하여 응답을 제공하는 기술에 관한 것이다.Description of the Related Art [0002] The following description relates to a technology for processing an event, and relates to a technology for providing a response by processing an event for providing a specific service in various server environments such as a game and an online shopping.

기존의 게임 서버, 온라인 쇼핑몰 등의 다양한 서버 환경의 경우, 특정 이벤트를 시작점으로 하여 가변적인 1개 이상의 기능이 호출되며, 대부분의 시스템에서는 스크립트 기반 프로그래밍 언어(Script Language)를 사용하여 서버로부터 요청된 이벤트(예컨대, 로그인 시 공지사항 팝업, 연속 출석 포인트/보상, 미확인 메일/메시지관련 이벤트 등)를 처리한다. 예를 들어, 스크립트 기반의 프로그래밍 언어는, 루아(Lua), 자바 스크립트(Java Script), 파이슨(Python) 등을 포함한다.In a variety of server environments such as existing game servers and online shopping malls, one or more variable functions are called starting from specific events. In most systems, a script-based programming language (Script Language) Events (e.g., announcement popups at login, consecutive attendance points / rewards, unidentified mail / message related events, etc.). For example, script-based programming languages include Lua, JavaScript, Python, and so on.

스크립트 기반의 프로그래밍 언어를 사용하여 이벤트를 처리하는 경우, 런타임(runtime) 시 스크립트(script) 파일에 포함된 한 문장 한 문장을 읽어드려, 한 줄(line), 한 줄(line)씩 스크립트 엔진(예컨대, 자바 엔진 등)으로 넘겨서 처리하므로 컴파일드(compiled)되어 있는 언어와 비교할 때 이벤트 처리에 대한 응답 시간이 상대적으로 늦어지는 성능 저하가 존재한다.When processing an event using a script-based programming language, at runtime, a single sentence in the script file is read, and the script engine (line) or line (line) Java engine, etc.), there is a performance degradation in which response time to event processing is relatively slow as compared with a compiled language.

그리고, 스크립트 기반의 프로그래밍 언어를 이용하는 경우에 디버깅(debugging) 시 스크립트 엔진을 통해 스크립트(script)를 호출하므로, 스크립트 엔진까지만 디버깅이 가능하고, 스크립트 내 디버깅이 어렵다. 다시 말해, 스크립트 파일 내에 뭐가 있는지 알기 어려운 한계가 존재한다. When a script-based programming language is used, a script is called through a script engine when debugging, so that only a script engine can be debugged and debugging in a script is difficult. In other words, there is a limit to know what is in the script file.

또한, 스크립트 기반의 프로그래밍 언어의 경우, 기존 코드와 새로운 코드 간의 코드 쉐어(code share)가 어렵다. 즉, 이미 구현되어 있는 라이브러리(library)를 서버에서 사용하고 있는 경우, 외부에 있는 라이브러리를 데이터베이스에 껴 넣어 기존과 호환시키거나, 새로운 라이브러리를 만들어 사용하는 등 기존 코드와 새로운 코드 간의 코드 쉐어가 어렵다. Also, for a script-based programming language, code sharing between existing and new code is difficult. In other words, if the server is using a library that is already implemented, it is difficult to share the code between the existing code and the new code by embedding an external library into the database and making it compatible with the existing one, or by using a new library .

기존에 이벤트가 발생한 경우에 서버의 처리 로직은 이미 만들어진 서버 코드를 수정하여 새로운 기획(즉, 이벤트) 내용을 반영하거나, 업데이트된 기획(즉, 이벤트) 내용을 반영하는 방식으로 처리된다. 이때, 새로운 기획 내용을 반영하거나, 업데이트된 기획 내용을 반영 시 서버의 동작이 중단되어, 사용자의 이용이 제한되는 불편함이 존재한다. 예컨대, "2017년 07월01일 자정 12시부터 6시까지 서버 점검으로 인해 이용이 제한됩니다." 등의 공지가 클라이언트 단말로 제공되고, 클라이언트 단말은 해당 기간 동안 게임, 쇼핑, 인터넷 뱅킹 등의 서비스를 이용에 제한을 받게 된다.When an event occurs in the past, the processing logic of the server is modified in such a manner as to reflect the contents of the new plan (i.e., event) or the updated plan (i.e., event) by modifying the already created server code. At this time, there is an inconvenience that the operation of the server is interrupted when the new plan contents are reflected or the updated plan contents are reflected, and the use of the user is restricted. For example, "Your usage will be limited due to server check from 12:00 am to 6:00 pm on July 01, 2017." Are provided to the client terminal, and the client terminal is restricted from using services such as games, shopping, and Internet banking during the period.

한국공개특허 제 10-2009-0000651호는 온라인 게임을 위한 사용자 인터페이스 제공 장치 및 그 방법에 관한 것으로, 게임 엔진에 독립적으로 사용자 인터페이스 구성 요소들을 구성하여 재사용 가능하도록 하고, 스크립트(script)를 기반으로 게임 진행 관련 처리를 수행하는 기술을 개시하고 있다.Korean Patent Laid-Open Publication No. 10-2009-0000651 relates to an apparatus and method for providing a user interface for an on-line game, in which user interface elements are independently configured to be reusable in a game engine, And a game progress process.

리플렉션(reflection) 기반의 프로그래밍 언어를 이용하여 게임, 온라인 쇼핑 등의 서비스를 제공하는 서버 환경에서, 플러그 인(plug in) 형식으로 소스 코드를 호출하여 클라이언트에서 요청한 이벤트를 처리하는 이벤트 기반 패키지 모듈 호출 방법 및 시스템을 제공한다. An event-based package module call that calls source code in a plug-in format to process events requested by the client in a server environment that provides services such as games and online shopping using a programming language based on reflection Method and system.

컴퓨터에 의해 실행되는 이벤트 기반 패키지 모듈 호출 방법에 있어서, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계, 상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 단계, 분석된 각 프로그램 패키지의 클래스(class) 및 이벤트 함수를 이벤트 별로 구조화하는 단계, 클라이언트로부터 특정 이벤트의 호출을 요청받는 단계, 구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하는 단계, 및 생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 단계를 포함할 수 있다.CLAIMS 1. A method for invoking an event-based package module executed by a computer, the method comprising: modulating a program package with a plurality of functions associated with a specific event into an event module using a reflection-based programming language; analyzing a program package corresponding to each of the plurality of event modules using reflection, structuring a class and an event function of each program package analyzed for each event, requesting a call of a specific event from a client Collecting a plurality of messages generated based on event module related classes and functions of the structured program package and corresponding to the specific event for which the call is requested, and generating a single response message; RTI ID = 0.0 > It may comprise providing a client group.

이벤트 기반 패키지 모듈 호출 시스템은, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 모듈화부, 상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 분석부, 분석된 각 프로그램 패키지의 클래스(class) 및 이벤트 함수를 이벤트 별로 구조화하는 구조화부, 클라이언트로부터 특정 이벤트의 호출을 요청받는 정보 수신부, 및 구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하고, 생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 메시지 생성부를 포함할 수 있다.The event-based package module calling system includes: a modulator for modulating a program package into a plurality of event modules related to a specific event by using a reflection-based programming language; An analyzing unit analyzing a program package corresponding to each of the plurality of event modules, a structuring unit structuring a class and an event function of each analyzed program package for each event, an information receiving unit And a plurality of messages generated on the basis of event module related classes and functions corresponding to specific events requested by the call among the classes and functions of each structured program package to generate a single response message, And transmits a response message to the client Generating a message for providing may include a.

컴퓨터로 구현되는 서버 장치와 결합되어 이벤트 기반 패키지 모듈 호출 방법을 실행시키기 위해 기록매체에 저장된 컴퓨터 프로그램에 있어서, 상기 이벤트 기반 패키지 모듈 호출 방법은, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계, 상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 단계, 분석된 각 프로그램 패키지의 클래스(class) 및 이벤트 함수를 이벤트 별로 구조화하는 단계, 클라이언트로부터 특정 이벤트의 호출을 요청받는 단계, 구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하는 단계, 및 생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 단계를 포함할 수 있다.A computer program stored on a storage medium for executing an event-based package module invocation method in combination with a computer-implemented server device, the event-based package module invocation method comprising: using a reflection- Comprising the steps of: modulating a program package implemented with a plurality of related functions into an event module; analyzing a program package corresponding to each of the plurality of event modules using the reflection; A class of an event module corresponding to a specific event of the structured program package among the classes and functions of the structured program package; And function Collecting a plurality of messages that are generated by may include the step of providing the step of generating a single response message, and generates the single response message to the client.

리플렉션(reflection) 기반의 프로그래밍 언어를 이용하여 게임, 온라인 쇼핑 등의 서비스를 제공하는 서버 환경에서, 플러그 인(plug in) 형식으로 소스 코드를 호출하여 클라이언트에서 요청한 이벤트를 처리하고, 처리 결과를 클라이언트로 제공함으로써, 요청된 이벤트에 대한 응답 시간이 빨라질 수 있다. 즉, 성능이 향상될 수 있다.In a server environment that provides services such as games and online shopping using a programming language based on reflection, a source code is called in a plug-in format to process an event requested by a client, The response time for the requested event can be accelerated. That is, performance can be improved.

또한, 이벤트와 관련된 기능들이 구현된 프로그램 패키지(program package)를 모듈화하고 모듈들을 구조화한 모듈 풀을 통해 이벤트를 처리함으로써, 새로운 이벤트 모듈의 추가 또는 기존 이벤트 모듈의 갱신 시 서버를 중단(stop)하지 않고도, 해당 모듈을 추가 또는 갱신(update)할 수 있다. 즉, 서버의 동작 상태를 중지하지 않고 유지한 채, 해당 모듈의 바이너리(binary)를 배포할 수 있다.In addition, a program package implemented with functions related to an event is modularized and an event is processed through a module pool in which modules are structured, thereby stopping the server upon adding a new event module or updating an existing event module It is possible to add or update the corresponding module without having to do so. That is, the binary of the module can be distributed while the operation state of the server is maintained without stopping.

또한, 여러 모듈들 각각에 대해 발생하는 여러 응답 메시지들을 모아서 하나의 단일 응답 메시지 형태로 생성하여 클라이언트 단말로 제공함으로써, 클라이언트에서 요청한 이벤트에 대한 응답이 한 번에 처리될 수 있다. 즉, 클라이언트에서 자신이 요청한 이벤트와 관련하여 모든 응답이 수신될 때까지 기다리거나, 또는 특정 메시지를 수신한 이후 해당 메시지 다음 순서의 메시지가 수신될 때까지 기다리거나, 수신된 메시지들을 대상으로 해당 이벤트에 대한 응답을 사용자에게 제공하기 위해 구조화하지 않아도 되므로, 응답 속도(즉, 처리 속도)가 증가하고, 처리를 위해 불필요한 컴퓨팅 자원이 소모되는 것을 방지할 수 있다.In addition, a plurality of response messages generated for each of the plurality of modules are collected and generated in the form of a single response message, and provided to the client terminal, so that a response to an event requested by the client can be processed at one time. That is, the client waits until all the responses are received in association with the event requested by the client, or waits until a message of the next order is received after receiving the specific message, (I.e., processing speed) increases, and it is possible to prevent unnecessary computing resources from being consumed for processing.

또한, 실제 서버 코드와 동일한 프로그래밍 언어(Programming Language)를 사용하므로, 개발자의 디버깅(debugging) 편의성을 높일 수 있다.In addition, since the same programming language as the actual server code is used, debugging convenience of the developer can be improved.

또한, 이벤트 모듈들 각각에서 서버에서 이미 만들어 놓은 함수(기생성된 함수)를 쉽게 재사용 가능하므로 모듈 코드가 간결해질 수 있다.In addition, module codes can be simplified because the functions (pre-generated functions) already created in the server in each of the event modules can be easily reused.

도 1은 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 시스템의 네트워크 환경을 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 리플렉션(reflection) 기반 프로그래밍 언어를 이용하여 이벤트가 처리되는 네트워크 환경을 도시한 개념도이다.
도 3은 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 방법을 도시한 흐름도이다.
도 4는 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 시스템의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 블록도이다.
도 5는 본 발명의 일실시예에 있어서, 각 프로그램 패키지를 대상으로 분석된 정보들을 이벤트 별로 구조화한 데이터 구조도의 예시도이다.
도 6은 본 발명의 일실시예에 있어서, 데이터 구조화 이후에 클라이언트로부터 요청된 이벤트에 대한 응답을 제공하는 동작을 도시한 흐름도이다.
도 7은 본 발명의 일실시예에 있어서, 이벤트 모듈 및 모듈 속성을 갱신 또는 추가하는 동작을 설명하기 위한 개념도이다.
도 8은 본 발명의 일실시예에 있어서, 이벤트 모듈을 기반으로 단일 응답 메시지를 제공하는 동작을 도시한 흐름도이다.
도 9는 본 발명의 다른 실시예에 있어서, 프로세서의 내부 구성을 도시한 블록도이다.
도 10은 본 발명의 일실시예에 있어서, 단일 응답 메시지를 생성하는 동작을 설명하기 위해 제공되는 개념도이다.
도 11은 본 발명의 일실시예에 있어서, 단일 응답 메시지의 구조를 도시한 도면이다.
1 is a diagram illustrating a network environment of an event-based package module calling system according to an embodiment of the present invention.
FIG. 2 is a conceptual diagram illustrating a network environment in which events are processed using a reflection-based programming language, according to an embodiment of the present invention.
3 is a flow diagram illustrating an event-based package module invocation method in one embodiment of the present invention.
4 is a block diagram illustrating an example of components that a processor of an event-based package module calling system may include, in an embodiment of the invention.
FIG. 5 is an exemplary diagram illustrating a data structure diagram structured by information analyzed for each program package according to an exemplary embodiment of the present invention. FIG.
Figure 6 is a flow diagram illustrating an operation for providing a response to a requested event from a client after data structure, in an embodiment of the present invention.
7 is a conceptual diagram for explaining an operation of updating or adding an event module and a module attribute in an embodiment of the present invention.
8 is a flowchart illustrating an operation of providing a single response message based on an event module, in an embodiment of the present invention.
9 is a block diagram showing an internal configuration of a processor in another embodiment of the present invention.
10 is a conceptual diagram provided for explaining an operation of generating a single response message, in an embodiment of the present invention.
11 is a diagram illustrating a structure of a single response message in an embodiment of the present invention.

이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings.

본 실시예들은 이벤트 기반 패키지 모듈 호출 방법 및 시스템에 관한 것으로서, 특히, 게임 서버, 온라인 쇼핑 등 다양한 서버 환경에서 스크립트(script) 기반 프로그래밍 언어가 아닌 (reflection)을 제공하는 프로그래밍 언어를 사용하여 이벤트를 처리하는 기술에 관한 것이다. 예를 들어, 리플렉션(reflection)을 제공하는 프로그래밍 언어는 자바(Java), C# 등을 포함할 수 있으며, 자바, C#을 이용하여 작성되어 컴파일된(compiled) 파일들 각각을 모듈화하여 메모리에 로딩(loading)해두었다가, 클라이언트로부터 특정 이벤트에 대한 호출이 요청되면 바로 해당 이벤트에 속하는 클래스(class) 또는 함수를 실행하고, 실행 결과를 응답으로 클라이언트 단말로 제공하는 기술에 관한 것이다.The present invention relates to a method and system for invoking an event-based package module, and more particularly, to a method and system for invoking an event using a programming language that provides a non-script-based programming language in various server environments such as a game server, ≪ / RTI > For example, a programming language that provides reflection can include Java, C #, etc., and each of the files compiled and created using Java and C # are modularized and loaded into memory loading a class or a function belonging to the event when a call for a specific event is requested by the client and providing the execution result to the client terminal in response to the class or function.

본 실시예들에서, "이벤트"는 게임 서버, 온라인 쇼핑 등에서 제공되는 특정 기획을 나타내는 것으로서, 예를 들어, 출석 이벤트(예컨대, 연속 출석 시 보상/포인트 지급 이벤트 등), 상점 이벤트, 룰렛 이벤트(예컨대, 로그 인 시 룰렛을 돌려서 당첨된 게임 아이템/보상/ 포인트 등을 지급하는 이벤트 등), 크리스마스 이벤트(예컨대, 크리스마스 기간 동안 특정 게임 캐릭터/게임 아이템 무료 이용, 크리스마스 선물 이벤트 등), 친구 초대 이벤트, 무료 체험 이벤트 등과 같이 다양한 종류의 이벤트들을 포함할 수 있다.In the present embodiment, the term "event" represents a specific plan provided by a game server, online shopping, etc., and may include, for example, attendance events (e.g., reward / (For example, freeing of a specific game character / game item during a Christmas period, a Christmas gift event, etc.), a friend invitation event (for example, , Free trial events, and the like.

본 실시예들에서, "이벤트 모듈"은 특정 이벤트와 관련된 복수의 기능들이 구현된 함수들이 포함된(즉, 함수들을 모아 놓은) 프로그램 패키지(program package)를 모듈화한 것으로서, 패키지 모듈로 표현될 수도 있다. 예를 들어, 특정 이벤트를 시작점으로 하여 가변적인 1개 이상의 기능이 모듈화될 수 있으며, 로그인 이벤트의 경우, 연속 출석 보상 지급, 공지사항 팝업 등이 해당 이벤트에 관련된 기능들에 속할 수 있으며, 해당 기능들을 제공하기 위해 구현된 함수들을 모아서 패키지 형태로 구성될 수 있다. 그리고, 특정 이벤트와 관련된 상기 기능들에 대한 결과를 응답으로 클라이언트 단말로 제공하기 위해, 즉, 데이터베이스 등의 저장 장치에서 스크립트 파일을 가져와서 분석하고 실행한 후 다시 가져다 넣고, 실행 결과를 응답으로 제공하지 않고, 이벤트 모듈을 통해 시스템 자체에서 해당 함수를 바로 실행하여 실행 결과가 응답으로서 제공되도록 프로그램 패키지가 이벤트 별로 모듈화될 수 있다. In the present embodiment, an "event module" is a module package of a program package including functions in which a plurality of functions related to a specific event are implemented (i.e., a collection of functions) have. For example, one or more functions that are variable with a specific event as a starting point may be modularized. In the case of a login event, continuous attendance compensation payment, announcement pop-up, etc. may belong to functions related to the event. The functions can be assembled in a package form. In order to provide a result of the functions related to a specific event to the client terminal in response to the request, that is, a script file is fetched from a storage device such as a database, analyzed, executed, The program package can be modularized for each event so that the function is directly executed in the system itself through the event module and the execution result is provided as a response.

본 실시예들에서, "클라이언트"는 사용자가 소지한 단말을 나타내는 것으로서, 예컨대, 스마트폰(smart phone), 태블릿(tablet), 노트북, 데스크탑 등을 나타낼 수 있다.In the present embodiments, the term "client" refers to a terminal carried by a user, and may represent, for example, a smart phone, a tablet, a notebook, a desktop,

도 1은 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 시스템의 네트워크 환경을 도시한 도면이다.1 is a diagram illustrating a network environment of an event-based package module calling system according to an embodiment of the present invention.

도 1의 네트워크 환경은 전자 기기(110), 서버(120) 및 네트워크(130)를 포함하는 예를 나타내고 있다. 전자 기기(110)는 클라이언트 단말을 나타내고, 서버(120)는 이벤트 기반 패키지 모듈 호출 시스템을 나타낼 수 있다. 도 1에서는 서버(120)에 이벤트 기반 패키지 모듈 호출 시스템이 플랫폼 형태로 구현되는 경우를 설명하나, 이는 실시예에 해당되며, 이벤트 기반 패키지 모듈 호출 시스템은 서버(120)와 별도로 외부에 위치할 수 있다. 예컨대, 서버가 여러 개 존재하는 경우, 이벤트 기반 패키지 모듈 호출 시스템은 해당 서버들과 네트워크를 형성할 수 있으며, 서버들 각각에서 호출되는 이벤트에 대한 처리를 이벤트 모듈을 통해 수행할 수 있다.1 shows an example in which the network environment includes the electronic device 110, the server 120, and the network 130. [ The electronic device 110 may represent a client terminal and the server 120 may represent an event based package module calling system. 1 illustrates a case where the event-based package module calling system is implemented in the form of a platform in the server 120, which corresponds to the embodiment, and the event-based package module calling system may be located outside the server 120 have. For example, when there are a plurality of servers, the event-based package module calling system can form a network with corresponding servers, and can perform processing for an event called in each of the servers through an event module.

전자 기기(110)는 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말로서, 전자 기기(110)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 전자 기기(110)는 무선 또는 유선 통신 방식을 이용하여 네트워크(130)를 통해 서버(120)와 통신할 수 있다.The electronic device 110 may be a fixed type mobile terminal implemented as a computer device or a portable type mobile terminal such as a smart phone, a mobile phone, a navigation device, a computer, a notebook, Digital Assistants), Portable Multimedia Player (PMP), and Tablet PC. For example, the electronic device 110 may communicate with the server 120 via the network 130 using a wireless or wired communication scheme.

서버(120)는 전자 기기(110)와 네트워크(130)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다.The server 120 may be implemented as a computer device or a plurality of computer devices that communicate with the electronic device 110 through the network 130 to provide commands, codes, files, contents, services, and the like.

도 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)에 로딩될 수 있다.1, an event-based package module call, which is a server 120, and an electronic device 110 include memories 111 and 121, processors 112 and 122, communication modules 113 and 123, and input / output interfaces 114 and 124, The memory 111 and 121 may be a computer-readable recording medium and may be a permanent mass storage device such as a random access memory (RAM), a read only memory (ROM), and a disk drive, The memory 111 and 121 may be provided with an operating system and at least one program code (for example, a code for an application for calling a browser or a losing module installed in and operated on the electronic device 110) Etc. These software components may be loaded from a computer readable recording medium separate from the memories 111 and 121 using a drive mechanism. Readable recording medium of the computer 100 may include a computer readable recording medium such as a floppy drive, a disk, a tape, a DVD / CD-ROM drive, a memory card, etc. In another embodiment, May be loaded into the memories 111 and 121 via the communication modules 113 and 123 instead of the recording medium 100. For example, at least one program may be a file distribution system for distributing installation files of developers or applications (Such as the server 120 described above) may be loaded into the memory 111, 121 based on a program (for example, the application described above) installed by the files provided through the network 130. [

프로세서(112, 122)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(111, 121) 또는 통신 모듈(113, 123)에 의해 프로세서(112, 122)로 제공될 수 있다. 예를 들어 프로세서(112, 122)는 메모리(111, 121)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.Processors 112 and 122 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and I / O operations. An instruction may be provided to the processors 112, 122 by the memory 111, 121 or the communication module 113, 123. For example, the processor 112, 122 may be configured to execute a command received in accordance with a program code stored in a recording device, such as the memory 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)가 더 포함할 수 있는 저장 매체로 저장될 수 있다.The communication modules 113 and 123 may provide a function for the electronic appliance 110 serving as a client terminal and the server 120 serving as an event-based package module calling system to communicate with each other through the network 130. For example, when the processor 112 of the client terminal 110 receives a request generated based on the program code stored in the recording device such as the memory 111 (for example, a request for a login event call when an event such as login occurs) Based package module calling system 120 that is a server through the network 130 under the control of the communication module 113. [ Conversely, control signals, commands, contents, files, and the like provided under the control of the processor 122 of the event-based package module calling system 120 as a server are transmitted to the electronic device 110 may be received by the electronic device 110 via the communication module 113 of the mobile terminal 110. [ For example, control signals and commands of the server 120 received through the communication module 113 may be transmitted to the processor 112 or the memory 111, And may be stored as a storage medium that can contain it.

입출력 인터페이스(114, 124)는 입출력 장치(115)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 어플리케이션의 통신 세션을 표시하기 위한 디스플레이와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(114)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 보다 구체적인 예로, 전자 기기(110)의 프로세서(112)는 메모리(111)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(120)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(114)를 통해 디스플레이에 표시될 수 있다.The input / output interfaces 114 and 124 may be means for interfacing with the input / output device 115. For example, the input device may include a device such as a keyboard or a mouse, and the output device may include a device such as a display for displaying a communication session of the application. As another example, the input / output interface 114 may be a means for interfacing with a device having integrated functions for input and output, such as a touch screen. The processor 112 of the electronic device 110 may process a command of a computer program loaded in the memory 111 and may include a service screen or contents configured using data provided by the server 120, May be displayed on the display via the display 114.

또한, 다른 실시예들에서 클라이언트 단말인 전자 기기(110) 및 이벤트 기반 패키지 모듈 호출 시스템인 서버(120)는 도 1의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기(110)은 상술한 입출력 장치(115) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 전자 기기(110)가 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 전자 기기(110)에 더 포함되도록 구현될 수 있음을 알 수 있다.Also, in other embodiments, the electronic device 110, which is a client terminal, and the server 120, which is an event-based package module calling system, may include more components than the components of FIG. However, there is no need to clearly illustrate most prior art components. For example, the electronic device 110 may be implemented to include at least some of the input / output devices 115 described above, or may include other components such as a transceiver, a Global Positioning System (GPS) module, a camera, As shown in FIG. More specifically, when the electronic device 110 is a smart phone, an acceleration sensor, a gyro sensor, a camera, various physical buttons, a button using a touch panel, an input / output port, a vibrator for vibrating It will be appreciated that various components of the electronic device 110 may be implemented to be further included in the electronic device 110.

그리고, 이벤트 기반 패키지 모듈 호출 시스템인 서버(120)에 데이터 베이스가 포함되거나 서버(120)와 별도로 외부에 데이터베이스가 존재할 수 있으며, 데이터베이스는 서버(120)에서 게임 또는 쇼핑몰 등의 웹사이트에 접속하거나, 어플리케이션을 통해 해당 서비스를 제공받기 위한 통신 세션이 설정된 여러 전자 기기들(즉, 클라이언트 단말들)에서 발생한 이벤트에 대한 호출 및 호출된 이벤트에 대한 응답을 제공하기 위한 다양한 정보들을 저장 및 관리할 수 있다. 예컨대, 데이터베이스는 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지들을 저장 및 관리하는 모듈 데이터베이스 및 복수의 이벤트 각각의 속성(configuration Items, 예컨대, config 파일)과 관련된 프로그램 패키지들을 저장 및 관리하는 속성 데이터베이스를 포함할 수 있다.In addition, a database may be included in the server 120, which is an event-based package module calling system, or a database may exist separately from the server 120. The database may be accessed by a server 120 from a web site such as a game or a shopping mall , Various information for providing a call for an event and a response to a called event occurring in various electronic devices (i.e., client terminals) having a communication session established for receiving a corresponding service through an application can be stored and managed have. For example, the database may include a module database for storing and managing program packages corresponding to each of a plurality of event modules, and an attribute database for storing and managing program packages related to attributes (configuration Items (e.g., config files) .

본 발명의 실시예들에 따른 이벤트 기반 패키지 모듈 호출 시스템은 서버(120)에 플랫폼(platform) 형태로 구현될 수 있다. 이후에서는 설명의 편의를 위해 전자 기기(110)에 서버(120)와 통신 세션을 설정하여 서버(120)에서 제공되는 서비스를 제공받기 위한 어플리케이션 또는 브라우저의 설치 및 구동을 위한 패키지 파일이 저장되고, 전자 기기(110)의 요청에 따라(즉, 전자 기기에서 이벤트가 발생하여 서버로 이벤트가 호출됨에 따라) 서버(120)에 구현되는 이벤트 기반 패키지 모듈 호출 시스템을 통해 호출된 이벤트를 처리하는 실시예를 설명한다.The event-based package module calling system according to the embodiments of the present invention may be implemented in a form of a platform in the server 120. Hereinafter, for convenience of explanation, a package file for installing and running an application or a browser for receiving a service provided by the server 120 by establishing a communication session with the server 120 is stored in the electronic device 110, An embodiment that processes an event called through an event-based package module calling system implemented on the server 120 upon request of the electronic device 110 (i.e., an event occurs at the electronic device and an event is called to the server) .

도 2는 본 발명의 일실시예에 있어서, 리플렉션(reflection) 기반 프로그래밍 언어를 이용하여 이벤트가 처리되는 네트워크 환경을 도시한 개념도이다.FIG. 2 is a conceptual diagram illustrating a network environment in which events are processed using a reflection-based programming language, according to an embodiment of the present invention.

도 2를 참고하면, 클라이언트(201)는 전자 기기(110)에 설치된 모바일 앱 또는 웹브라우저 등을 나타낼 수 있으며, 클라이언트(201)에서 특정 이벤트(로그인 등의 이벤트 1)이 발생함에 따라, 서버(200)는 클라이언트(201)로부터 클라이언트(201)에 설치 및 구동된 어플리케이션 또는 웹브라우저를 통해 상기 발생한 이벤트의 호출을 요청받을 수 있다.2, the client 201 may represent a mobile application installed on the electronic device 110 or a web browser. When a specific event (event 1 such as login) occurs in the client 201, the server 201 200 may be requested by the client 201 to invoke the generated event through an application installed in the client 201 or a web browser or a web browser.

서버(200)는 클라이언트(201)에서 호출 요청한 이벤트(예컨대, 이벤트 1)를 확인하고, 해당하는 이벤트를 모듈 풀(210)에서 검색하여 실행하고, 실행 결과를 호출된 이벤트에 대한 응답으로서 상기 어플리케이션 또는 웹브라우저를 통해 클라이언트(201)로 전달할 수 있다. 즉, 호출된 이벤트와 관련된 기능들이 구현된 함수를 실행할 수 있다. 이때, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 이벤트를 처리하기 위해 서버인 이벤트 기반 패키지 모듈 호출 시스템(200)은 모듈 풀(210), 모듈 로더(220)를 포함할 수 있으며, 복수의 이벤트들 각각에 해당하는 복수의 기능들을 모아 놓은 프로그램 패키지들은 이벤트 모듈(230)로 모듈화되어 데이터베이스(즉, 모듈 데이터베이스 및 속성 데이터베이스)에 저장 및 유지될 수 있다. 도 2에서는 서버에 모듈 풀(210), 모듈 로더(220)이 포함되는 경우를 예로서 설명하나, 이는 실시예에 해당되며, 모듈 풀(210)은 메모리로서 서버와 별도로 외부에 위치할 수 있고, 모듈 로더(220)는 모듈 풀(210)의 동작을 제어하기 위해 서버 또는 서버와 별도의 전자 기기 등의 프로세서에 포함되는 구조로 구현될 수도 있다.The server 200 checks the event (for example, event 1) requested by the client 201 and searches for and executes the corresponding event in the module pool 210 and outputs the execution result to the application 200 Or may be delivered to the client 201 via a web browser. That is, you can execute a function that implements the functions associated with the called event. At this time, the event-based package module calling system 200, which is a server for processing events using a reflection-based programming language, may include a module pool 210, a module loader 220, The program packages including a plurality of functions corresponding to the respective functions may be modularized into an event module 230 and stored and maintained in a database (i.e., a module database and an attribute database). 2, the module pool 210 and the module loader 220 are included in the server. However, the module pool 210 corresponds to the embodiment, and the module pool 210 may be located outside the server as a memory The module loader 220 may be implemented in a structure including a processor such as an electronic device separate from the server or the server in order to control the operation of the module pool 210. [

도 2에서, 이벤트 모듈들(230) 각각은 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 작성된/생성된 프로그램 패키지(예컨대, Java의 경우 JAR 파일, C#의 경우 DLL 파일 등)를 모듈화한 것으로서, JAR, DLL 등의 프로그램 패키지에서 사전에 미리 정의한 노테이션(notation, 예컨대, JAVA의 경우 Annotation, C#의 경우 Attribute 등)을 사용하여 구현될 수 있다. 여기서, 프로그램 패키지는 특정 이벤트와 관련된 기능들이 구현된 적어도 하나의 함수를 포함할 수 있으며, 해당 함수는 사전에 정의된 노테이션(notation, 즉, 표기 정보)와 연관시켜 프로그램 패키지에 정의될 수 있다. 예를 들어, 출석 이벤트와 관련된 기능들(예컨대, 출석 이벤트를 제공하는 웹페이지 또는 가상 공간으로의 입장, 출석 확인, 연속 출석에 따른 보상 지급, 출석 이벤트를 사용자에게 제공하는 웹페이지 또는 가상 공간에서의 퇴장 등의 액션에 따른 결과를 제공하기 위한 함수들)을 포함하는 프로그램 패키지에 특정 기능에 해당하는 함수 별로 미리 정의된 노테이션(notation)이 연관되어 포함될 수 있다. 여기서, 노테이션(notation)은 해당 기능이 특정 이벤트와 관련된 것임을 식별하기 위한 표기 정보를 나타낼 수 있다. 노테이션의 일례로서, @ModuleInterface가 이용될 수 있으며, @ 이외에 #, % 등의 다양한 기호가 이용될 수 있고, ModuleInterface 이외에 다른 문자(character)가 이용될 수 있다. In FIG. 2, each of the event modules 230 is a module of a program package (for example, JAR file for Java, DLL file for C #) created / generated using a reflection-based programming language, , Notation (for example, annotation in the case of JAVA, attribute in the case of C #), which are predefined in advance by a program package such as a DLL. Here, the program package may include at least one function in which functions related to a specific event are implemented, and the function may be defined in the program package in association with a notation (pre-defined notation). For example, it may be desirable to provide a user with access to information related to an attendance event (e.g., a web page or virtual space that provides a user with access to a web page or virtual space providing an attendance event, attendance confirmation, reimbursement due to continuous attendance, And a function for providing a result according to an action such as an exit of the program) may be associated with a notation previously defined for each function corresponding to a specific function. Here, the notation may indicate notation information for identifying that the function is related to a specific event. As an example of notation, @ModuleInterface can be used, and various symbols such as # and% can be used in addition to @, and other characters besides ModuleInterface can be used.

모듈 로더(220)는 리플렉션(Reflection)을 사용하여 프로그램 패키지(program package)들을 로딩(loading)하고, 로딩된 프로그램 패키지를 대상으로, 프로그램 패키지 내에 사전에 정의된 상기 노테이션에 기초하여 해당 이벤트와 관련하여 정의된 함수, 변수, 및 클래스(class) 정보 등을 분석할 수 있다. 이때, 프로그램 패키지가 하나의 이벤트 모듈로 모듈화됨에 따라, 모듈 로더(220)는 로딩된 프로그램 패키지(즉, 이벤트 모듈)이 어떤 클래스, 어떤 멤버 변수, 어떤 멤버 함수(예컨대, 이벤트 함수)로 구성되었는지 여부를 분석할 수 있다.The module loader 220 loads the program packages using Reflection and loads the loaded program package into the program package based on the notation previously defined in the program package And analyze the defined functions, variables, and class information. At this time, as the program package is modulated into one event module, the module loader 220 determines whether the loaded program package (i.e., event module) is composed of a certain class, a certain member variable, a certain member function Can be analyzed.

모듈 풀(pool, 210)은 모듈 로더(220)에서 분석된 프로그램 패키지에 해당하는 이벤트 모듈 별 클래스 정보, 함수 및 함수의 파라미터를 해시 함수를 이용하여 구조화할 수 있다. 예를 들어, 모듈 풀(210)은 메모리에 해당하는 것으로서, 모듈 로더를 통해 로딩된 각 프로그램 패키지의 클래스, 이벤트 함수, 함수의 파라미터 등을 해시(hash) 함수를 이용하여 이벤트 별로 구분하여 구조화할 수 있다. 즉, 특정 이벤트의 호출이 요청되는 경우, 호출 요청된 특정 이벤트에 대한 응답을 클라이언트 단말로 바로 제공하기 위해, 각 프로그램 패키지의 클래스, 이벤트 함수 등을 이벤트의 식별자 정보와 링크 연결하는 데이터 구조화가 수행될 수 있다. 그리고, 데이터 구조화까지의 전처리 과정이 완료된 이후, 클라이언트로부터 특정 이벤트에 대한 호출 요청이 수신되면, 모듈 풀을 대상으로 수신된 특정 이벤트와 관련된 이벤트 모듈에 대한 호출이 요청되어, 해당 함수가 실행될 수 있다. 이때, 이벤트 모듈에 대한 호출은 동기식, 비동기식으로 수행될 수 있다. 예컨대, 상황에 따라 서버의 실행 코드가 블록킹(blocking)되거나, 논블록킹(Non-blocking)되도록 하여 서버 개발의 유연성을 제공할 수 있다. The module pool 210 can classify class information, function, and function parameters of each event module corresponding to the analyzed program package in the module loader 220, using a hash function. For example, the module pool 210 corresponds to a memory, and is structured by classifying each program package class, event function, and function parameter loaded through the module loader by a hash function using an event . That is, when a call for a specific event is requested, data structuring for linking the class, event function, and the like of each program package with the identifier information of the event is performed in order to provide a response to the specific event immediately requested to the client terminal . When a call request for a specific event is received from the client after the preprocessing process to the data structure is completed, a call to the event module related to the specific event received for the module pool is requested, and the corresponding function can be executed . At this time, the call to the event module can be performed synchronously or asynchronously. For example, the execution code of the server may be blocked or non-blocked depending on the situation, thereby providing the flexibility of server development.

도 3은 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 방법을 도시한 흐름도이고, 도 4는 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 시스템의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 블록도이다.FIG. 3 is a flowchart illustrating a method of calling an event-based package module according to an embodiment of the present invention. FIG. 4 is a flow chart illustrating a configuration Is a block diagram showing an example of an element.

도 4에 도시된 바와 같이 이벤트 기반 패키지 모듈 호출 시스템(120, 200)에 포함된 프로세서(122)는 구성요소들로서, 모듈화부(410), 분석부(420), 구조화부(430), 및 모듈 업데이트부(440)를 포함할 수 있다. 도 4에서, 분석부(420)는 도 2의 모듈 로더(220)에 해당하는 동작을 수행 또는 제어하고, 구조화부(430)는 도 2의 모듈 풀(210)에 해당하는 동작을 수행 또는 제어하기 위해 이용될 수 있다. 즉, 분석부(420)는 모듈 로더(220)의 동작 중 프로세서(122)에 의해 수행되는 일부 동작(예컨대, 메모리에 프로그램 패키지들이 로딩되도록 제어하고, 프로그램 패키지를 분석하는 동작 등)을 수행하며, 구조화부(430)는 모듈 풀(210)의 동작 중 프로세서(122)에 의해 수행되는 일부 동작(예컨대, 메모리에서 수행되는 동작들을 제외한 동작으로서, 모듈 풀에서 호출 요청된 이벤트에 해당하는 함수 등을 검색하여 실행하는 동작 등)을 수행할 수 있다.4, the processor 122 included in the event-based package module calling system 120, 200 includes the modular unit 410, the analysis unit 420, the structured unit 430, And an update unit 440. 4, the analyzer 420 performs or controls an operation corresponding to the module loader 220 of FIG. 2, and the structuring unit 430 performs or controls an operation corresponding to the module pool 210 of FIG. . ≪ / RTI > That is, the analyzing unit 420 performs some operations performed by the processor 122 during the operation of the module loader 220 (e.g., controlling the program packages to be loaded into the memory, analyzing the program package, etc.) , The structuring unit 430 may perform a part of operations performed by the processor 122 during the operation of the module pool 210 (for example, operations excluding operations performed in the memory, And performing an operation to search for and execute it).

그리고, 모듈화부(410), 분석부(420), 구조화부(430), 및 모듈 업데이트부(440)는 도3의 각 단계들(310 내지 350 단계)을 수행하기 위해 이용될 수 있다.The modulating unit 410, the analyzing unit 420, the structuring unit 430, and the module updating unit 440 may be used to perform the respective steps (steps 310 to 350) of FIG.

310 단계에서, 모듈화부(410)는 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화할 수 있다. 여기서, 복수의 이벤트들 각각을 이벤트 모듈로 모듈화하는 과정은 서버에서 제공하는 특정 서비스(예컨대, 게임 서비스, 온라인 쇼핑몰 서비스 등)를 제공하기 위해 실현되어야 할 기능들이 구현된 프로그램을 DLL 파일, JAR 파일 등으로 모듈화하여, 해당 이벤트가 발생 시 바로 실행하기 위한 전처리 과정에 해당할 수 있다. 즉, 해당 이벤트가 발생 시DB에서 해당 스크립트 파일을 가져오고 실행하고 다시 가져다 넣지 않고, 해당 이벤트관련 DLL 파일, JAR 파일을 바로 실행하여 응답 결과를 제공하는 전처리 과정에 해당할 수 있다.In step 310, the modulator 410 may modularize a program package into which the plurality of functions related to a specific event are implemented, as an event module, using a reflection-based programming language. Here, the process of modularizing each of the plurality of events into an event module may be performed by a DLL file, a JAR file (e.g., a JAR file), a program having functions implemented to provide a specific service (e.g., a game service, Or the like, and corresponds to a preprocessing process for executing the event immediately upon occurrence of the event. That is, it can correspond to a preprocessing process of immediately executing a corresponding DLL file or JAR file and providing a response result, without importing, executing, and re-importing the corresponding script file from the DB when the event occurs.

일례로, 서버에서 게임 서비스를 클라이언트 단말로 제공하는 경우, 게임 서비스를 제공받을 때 발생되는 복수의 이벤트들(예컨대, 로그인 이벤트, 로그아웃 이벤트, 상점 이벤트, 출석 이벤트 등)과 관련된 액션들에 따른 결과를 제공하기 위한 적어도 하나의 함수(즉, 이벤트 함수)가 프로그램 패키지 내에 정의될 수 있다. 즉, 함수 내에 특정 이벤트를 실현시키기 위한 프로그램이 정의될 수 있으며, 게임 서비스에서 제공되는 복수의 이벤트 마다 해당 이벤트를 실현하기 위한 함수들이 프로그램 패키지로 구현될 수 있다. 예컨대, 상점 이벤트의 경우, 상점 이벤트를 실현하기 위한 함수들이 상점 이벤트 패키지에 포함되도록 구현될 수 있고, 출석 이벤트의 경우, 출선 이벤트를 실현하기 위한 함수들이 출석 이벤트 패키지에 포함되도록 구현될 수 있다. For example, when a server provides a game service to a client terminal, the game service may be associated with a plurality of events (e.g., a login event, a logout event, a store event, a attendance event, etc.) At least one function (i.e., event function) for providing a result can be defined in the program package. That is, a program for realizing a specific event in the function can be defined, and functions for realizing the event for each of a plurality of events provided in the game service can be implemented as a program package. For example, in the case of a store event, functions for realizing the store event may be implemented so as to be included in the store event package, and in the case of the attendance event, functions for realizing the exit event may be included in the attendance event package.

이때, 프로그램 패키지를 이벤트 모듈로 모듈화하기 위해, 프로그램 패키지는 특정 이벤트와 관련된 복수의 기능들 각각을 사전에 미리 정의된 노테이션(notation)과 연관시켜 구현될 수 있다. 예컨대, 출석 이벤트 패키지는 출석 이벤트와 관련된 기능 1 및 기능 2에 해당하는 기능 1의 함수, 기능 2의 함수를 포함할 수 있으며, 상기 기능 1의 함수 및 상기 기능 2의 함수 각각은 상기 프로그램 패키지 내에 상기 노테이션(notation)과 연관되어 정의될 수 있다. 예를 들어, Java의 경우 Annotation, C#의 경우 Attribute를 이용하여 상기 노테이션을 해당 함수에 연관시켜 프로그램 패키지 내에 정의할 수 있다.At this time, in order to modularize the program package into an event module, the program package can be implemented by associating each of a plurality of functions related to a specific event with a predefined notation. For example, the attendance event package may include a function of function 1, function 2, corresponding to function 1 and function 2, associated with an attendance event, and each function of function 1 and function 2, May be defined in association with the notation. For example, Annotation for Java and Attribute for C # can be defined in the program package by associating the notation with the corresponding function.

320 단계에서, 분석부(420)는 복수의 이벤트들 각각에 해당하는 프로그램 패키지를 메모리에 로딩(loading)할 수 있다. 여기서, 로딩하는 분석부(420)의 동작은 도 2의 모듈 로더(220)에 해당할 수 있다. 즉, 복수의 이벤트들 각각에 해당하는 프로그램 패키지들이 상기 노테이션에 기초하여 이벤트 모듈로 모듈화되면, 프로그램 패키지에 대한 분석을 위해 프로그램 패키지들이 메모리에 로딩될 수 있다.In step 320, the analyzer 420 may load a program package corresponding to each of a plurality of events into a memory. Here, the operation of the analyzing unit 420 to be loaded may correspond to the module loader 220 of FIG. That is, if the program packages corresponding to each of the plurality of events are modularized into the event module based on the notation, the program packages may be loaded into the memory for analysis on the program package.

330 단계에서, 분석부(420)는 프로그램 패키지를 구현한 프로그래밍 언어에서 지원하는 리플랙션(reflection)을 사용하여 로딩된 복수의 프로그램 패키지들 각각을 분석할 수 있다.In operation 330, the analysis unit 420 may analyze each of the plurality of program packages loaded using reflection supported by a programming language implementing the program package.

일례로, 분석부(420)는 자바, C# 등의 프로그래밍 언어에서 지원하는 리플렉션(reflection)을 사용하여 복수의 프로그램 패키지들을 읽어드리고, 복수의 프로그램 패키지들을 대상으로, 프로그램 패키지 내에서 사전에 정의된 노테이션에 기초하여 해당 노테이션과 연관하여 정의된 함수(즉, 이벤트 함수), 해당 함수의 클래스(class), 및 함수의 파라미터 등을 분석할 수 있다.For example, the analysis unit 420 may read a plurality of program packages using reflection supported by a programming language such as Java or C #, and may use a plurality of program packages, A function defined in association with the notation (i.e., an event function), a class of the corresponding function, and a parameter of the function can be analyzed based on the notation.

340 단계에서, 구조화부(430)는 분석된 프로그램 패키지의 클래스(class) 및 함수(즉, 이벤트 함수)를 이벤트 별로 구조화할 수 있다.In operation 340, the structuring unit 430 may classify classes and functions (i.e., event functions) of the analyzed program package on an event-by-event basis.

일례로, 구조화부(430)는 모듈 풀(pool)에서 특정 이벤트에 해당하는 클래스 또는 함수의 검색이 쉽고 빠르게 이루어지도록, 상기 분석된 각 프로그램 패키지의 클래스 및 함수를 해시(hash) 함수를 이용하여 구조화(즉, 데이터 구조화)할 수 있다. 이때, 구조화부(430)는 분석된 각 프로그램 패키지의 클래스 및 이벤트 함수를 이벤트 별로 구조화(즉, 데이터 구조화)할 수 있다. 이때, 클래스, 이벤트 함수 이외에 상기 분석된 함수의 파라미터(예컨대, 멤버 변수 등)도 해시 함수를 이용하여 상기 클래스, 이벤트 함수와 함께 구조화될 수 있다. 여기서, 분석된 정보들(클래스, 이벤트 함수 등)을 기반으로 데이터 구조화하는 자세한 동작은 아래의 도 5를 참고하여 후술하기로 한다.For example, the structuring unit 430 may use a hash function to classify and classify each analyzed program package so that a class or function corresponding to a specific event can be easily and quickly retrieved from the module pool. Can be structured (i.e., data structured). At this time, the structuring unit 430 can structure (i.e., data structure) classes and event functions of each analyzed program package for each event. At this time, parameters (for example, member variables, etc.) of the analyzed function in addition to the class and event function can be structured together with the class and event function using a hash function. Here, the detailed operation of data structure based on the analyzed information (class, event function, etc.) will be described later with reference to FIG. 5 below.

350 단계에서, 갱신 또는 추가하고자 하는 이벤트 모듈이 존재하는 경우, 모듈 업데이트부(440)는 해당 이벤트 모듈의 호출에 대한 락(Lock)을 설정하고, 해당 모듈에 대한 갱신 또는 추가를 수행할 수 있다.If there is an event module to be updated or added in step 350, the module update unit 440 sets a lock for the call of the corresponding event module, and performs update or addition to the corresponding module .

일례로, 클라이언트로부터 갱신 또는 추가하고자 하는 이벤트의 호출 요청이 수신된 경우, 모듈 업데이트부(440)는 일단 호출 요청을 받고 호출된 이벤트에 대한 처리를 대기할 수 있다. 예컨대, 호출 요청된 이벤트에 해당하는 이벤트 모듈의 갱신 또는 추가가 완료될 때까지 처리를 대기할 수 있다. 그리고, 모듈 업데이트부(440)는 갱신 또는 추가하고자 하는 이벤트 모듈에 해당하는 프로그램 패키지를 모듈 데이터베이스에 저장할 수 있다. 그러면, 추가 또는 갱신을 위해 모듈 데이터베이스에 저장된 프로그램 패키지에 해당하는 이벤트 모듈의 갱신 또는 추가를 위해 메모리로 해당 프로그램 패키지가 로딩될 수 있으며, 로딩된 프로그램 패키지를 분석하여 획득된 클래스, 함수 등을 기반으로 해당 프로그램 패키지(즉, 이벤트 모듈)관련하여 구조화된 정보들이 업데이트될 수 있다. 예컨대, 기존에 구조화된 특정 이벤트에 해당하는 프로그램 패키지의 클래스 및 함수가 상기 획득된 클래스, 함수를 나타내도록 업데이트될 수 있다.For example, when a call request for an event to be updated or added is received from the client, the module update unit 440 may once receive the call request and wait for processing of the called event. For example, the process can wait until the update or addition of the event module corresponding to the event requested to be called is completed. The module update unit 440 may store the program package corresponding to the event module to be updated or added in the module database. Then, the program package may be loaded into the memory for updating or adding an event module corresponding to the program package stored in the module database for addition or update, and the loaded program package may be analyzed and the obtained class, The structured information associated with the program package (i.e., event module) may be updated. For example, a class and a function of a program package corresponding to an existing structured specific event may be updated to indicate the obtained class, function.

이처럼, 업데이트가 완료되면 상기 호출에 설정된 락(Lock)이 해제될 수 있다. 여기서, 이벤트 모듈을 갱신 또는 추가하는 자세한 동작은 아래의 도 7을 참고하여 후술하기로 한다.As such, when the update is completed, the lock set in the call can be released. Here, the detailed operation of updating or adding the event module will be described later with reference to FIG. 7 below.

도 5는 본 발명의 일실시예에 있어서, 각 프로그램 패키지를 대상으로 분석된 정보들을 이벤트 별로 구조화한 데이터 구조도의 예시도이다.FIG. 5 is an exemplary diagram illustrating a data structure diagram structured by information analyzed for each program package according to an exemplary embodiment of the present invention. FIG.

도 5에서는 게임 서비스를 제공하는 경우에 상점 이벤트와 관련된 프로그램 패키지(상점 이벤트 package, 510)와 출석 이벤트와 관련된 프로그램 패키지(출석 이벤트 package, 520)가 각각 이벤트 모듈로 모듈화된 경우에, 해당 프로그램 패키지를 분석하여 데이터 구조화를 수행하는 경우를 예로 들어 설명하기로 한다. 도 5의 데이터 구조도는 실시예에 해당되며, 다양한 형태로 데이터 구조화가 수행될 수 있다. 도 5에서, 모듈 로더(530)는 도 4의 분석부(420)에 해당하고, 모듈 풀(pool, 540)은 도 4의 구조화부(430)에 해당할 수 있다. 5, when providing a game service, when a program package (store event package 510) related to a store event and a program package (attendance event package 520) associated with an attendance event are modularized into an event module, A description will be given of an example in which the data structure is analyzed. The data structure diagram of FIG. 5 corresponds to the embodiment, and data structuring can be performed in various forms. In FIG. 5, the module loader 530 corresponds to the analyzing unit 420 in FIG. 4, and the module pool 540 corresponds to the structuring unit 430 in FIG.

도 5의 출석 이벤트 패키지(520)를 참고하면, 출석 이벤트와 관련된 기능들을 실현하기 위한 함수들(OnJoinRoom, OnLeaveRoom)은 사전에 미리 정의된 노테이션(@ModuleInterface)와 연관시켜 프로그램 패키지 내에 정의될 수 있다. 이처럼, 상기 노테이션이 정의된 출석 이벤트 패키지에 해당하는 DLL 또는 JAR 파일이 출석 이벤트에 해당하는 이벤트 모듈로 모듈화될 수 있다.5, the functions (OnJoinRoom, OnLeaveRoom) for realizing the functions related to the attendance event can be defined in the program package in association with the predefined notation (@ModuleInterface) . As described above, a DLL or JAR file corresponding to the attendance event package in which the notation is defined can be modularized into an event module corresponding to an attendance event.

모듈 로더(530)는 각 프로그램 패키지를 대상으로, 패키지 내에 상기 노테이션(예컨대, @ModuleInterface)으로 정의된 함수(예컨대, 이벤트 함수)를 로딩(loading)할 수 있다. 함수를 로딩 시, 모듈 로더(530)는 리플렉션(reflection)을 이용하여 클래스, 함수 및 함수의 파라미터를 읽어드릴 수 있다.The module loader 530 can load a function (e.g., an event function) defined in the package as the notation (e.g., @ ModuleInterface) for each program package. When loading a function, the module loader 530 can read the parameters of the class, function, and function using reflection.

그러면, 모듈 풀(540)은 빠른 검색을 위해 로딩된 정보(즉, 프로그램 패키지 별 클래스, 함수, 함수의 파라미터 등)를 해시 함수를 이용하여 구조화할 수 있다. 이때, 해당 이벤트를 실현시키기 위한 이벤트 함수를 기준으로 이벤트 별로 구조화가 수행될 수 있다. 예컨대, 이벤트 함수(OnJoinRoom)의 경우, 상점 이벤트, 출석 이벤트, 보관함 이벤트를 실현시키기 위해 공통으로 이용될 수 있으므로, 각 이벤트 별 프로그램 패키지에 상기 노테이션으로 정의될 수 있다. 이에 따라, OnJoinRoom을 기준으로 해당하는 이벤트인 상점 이벤트, 출성 이벤트, 보관함 이벤트가 가상의 링크 연결되도록 구조화가 수행될 수 있다. 즉, 특정 이벤트를 위해 해당 이벤트를 제공하는 가상 공간으로 들어가는 동작은 상점 이벤트, 출석 이벤트, 보관함 이벤트에서 공통되고, 해당 이벤트에서 제시하는 액션을 수행한 후 상기 가상 공간에서 빠져나오는 동작은 상점 이벤트, 출석 이벤트, 보관함 이벤트에서 공통되므로, OnLeaveRoom을 기준으로 해당하는 이벤트인 상점 이벤트, 출성 이벤트, 보관함 이벤트가 가상의 링크 연결되도록 구조화될 수 있다.The module pool 540 may then structure the loaded information (i.e., class, function, function parameters, etc.) for the quick search using a hash function. At this time, structuring may be performed for each event on the basis of an event function for realizing the event. For example, in the case of the event function (OnJoinRoom), it can be commonly used for realizing the store event, the attendance event, and the archive event, and thus can be defined as the notation in the program package for each event. Accordingly, a structuring can be performed so that a corresponding event such as a store event, an emergence event, and a repository event is linked to a virtual link based on OnJoinRoom. That is, an operation for entering a virtual space providing a corresponding event for a specific event is common to store events, attendance events, and archive events, and an action to exit from the virtual space after performing an action presented by the corresponding event, Attendance event, and archive event, it can be structured so that corresponding events based on OnLeaveRoom, such as store event, emergence event, and archive event, are virtually linked.

도 6은 본 발명의 일실시예에 있어서, 데이터 구조화 이후에 클라이언트로부터 요청된 이벤트에 대한 응답을 제공하는 동작을 도시한 흐름도이다.Figure 6 is a flow diagram illustrating an operation for providing a response to a requested event from a client after data structure, in an embodiment of the present invention.

도 6의 각 단계들(610 및 620 단계)은 도 4의 구조화부(430)에 의해 수행될 수 있다.The steps 610 and 620 of FIG. 6 may be performed by the structuring unit 430 of FIG.

복수의 이벤트들을 실현시키기 위해 복수의 이벤트들 각각에 해당하는 프로그램 패키지가 이벤트 모듈로 모듈화되고, 이벤트 모듈 별(즉, 프로그램 패키지 별) 클래스, 함수, 및 함수의 파라미터 등이 구조화된 이후, 클라이언트에서 특정 이벤트에 대한 호출 요청이 발생할 수 있다. 예를 들어, 출석 이벤트에서 제공하는 연속 출석에 따른 보상을 지급받기 위해 클라이언트에서 출석 이벤트를 제공하는 가상 공간(예컨대, 출석 이벤트 팝업창 클릭, 로비 화면에서 출석 이벤트 항목 클릭 등)으로 진입하는 액션이 발생함에 따라, 서버인 이벤트 기반 패키지 모듈 호출 시스템(200)은 출석 이벤트에 대한 호출 요청이 클라이언트에서 구동된 어플리케이션 또는 웹브라우저를 통해 수신할 수 있다.In order to realize a plurality of events, a program package corresponding to each of a plurality of events is modularized into an event module, and after a class, a function, and a parameter of a function are structured according to each event module (i.e., program package) A call request for a specific event may occur. For example, an action to enter a virtual space (for example, clicking on a attendance event pop-up window, clicking on an attendance event item on the lobby screen, etc.) occurs in the client to receive an attendance event at the client in order to receive compensation for continuous attendance provided in the attendance event The event-based package module calling system 200, which is a server, can receive a call request for an attendance event through an application or a web browser operated by the client.

610 단계에서, 구조화부(430)은 호출 요청된 이벤트를 확인(즉, 이벤트의 식별자 정보에 기초하여 호출 요청된 이벤트 확인)하고, 확인된 이벤트에 해당하는 클래스 및 함수를 모듈 풀에서 검색할 수 있다. 그리고, 구조화부(430)는 검색된 클래스(예컨대, 출석 이벤트와 관련된 프로그램 패키지의 클래스)를 인스턴스(instance)화하고, 해당 함수(즉, 검색된 상기 클래스의 함수)를 실행시킬 수 있다. 이때, 한번 인스턴스화된 클래스는 바로 삭제되지 않고, 다음 번 호출에서 재사용되도록 유지될 수 있다. In step 610, the structuring unit 430 can check the event requested to be called (i.e., check the event requested to be called based on the identifier information of the event), and search the module pool for the class and function corresponding to the checked event have. The structuring unit 430 may instantiate the retrieved class (e.g., the class of the program package associated with the attendance event) and execute the corresponding function (i.e., the function of the retrieved class). At this time, the once instantiated class is not deleted immediately but can be maintained to be reused in the next call.

일례로, 구조화부(430)는 클라이언트 1에서 출석 이벤트에 대한 호출 요청이 발생한 경우, 모듈 풀에서 검색된 출석 이벤트에 해당하는 클래스를 검색하여 인스턴스화할 수 있다. 이때, 클라이언트 1과 관련하여 생성된 인스턴스의 식별자 정보는 클라이언트 1의 식별자 정보와 매칭하여 저장될 수 있다. 그리고, 클라이언트 1이 출석 이벤트와 관련하여 연속 출석에 따른 보상을 지급받고 출석 이벤트에 해당하는 가상 공간을 나간 경우, 클라이언트 1과 관련하여 생성된 상기 인스턴스는 삭제되지 않고 재사용될 수 있다. 예컨대, 클라이언트 2에서 출석 이벤트에 대한 호출 요청이 발생한 경우, 클라이언트 1 때 생성된 상기 인스턴스가 재사용될 수 있다. 이처럼, 재사용되는 경우, 상기 인스턴스의 식별자 정보는 클라이언트 1의 식별자 정보에서 클라이언트 2의 식별자 정보로 수정될 수 있다. 여기서, 인스턴스는 서버에서 해당 인스턴스의 삭제를 요청할 때까지 제거되지 않고 재사용될 수 있다. 즉, 인스턴스 삭제 요청 시 제거될 수 있다.For example, if a call request for an attendance event occurs in the client 1, the structuring unit 430 can search for and instantiate a class corresponding to the attendance event retrieved from the module pool. At this time, the identifier information of the instance created with respect to the client 1 can be stored by matching with the identifier information of the client 1. And, if the client 1 receives compensation for continuous attendance in connection with the attendance event and leaves the virtual space corresponding to the attendance event, the instance generated in association with the client 1 can be reused without being deleted. For example, when a call request for an attendance event occurs in the client 2, the instance generated in the client 1 can be reused. In this way, when reused, the identifier information of the instance can be modified from the identifier information of the client 1 to the identifier information of the client 2. Here, the instance can be reused without being removed until the server requests deletion of the instance. That is, it can be removed when an instance deletion request is made.

다른 예로, 구조화부(430)는 출석 이벤트에 대한 호출이 발생하여 OnJoinRoom 함수의 실행이 요청된 경우, 모듈 풀에서 검색된 OnJoinRoom에 해당하는 상점 이벤트, 출석 이벤트, 및 보관함 이벤트와 관련하여 클래스(class)를 인스턴스화하고, OnJoinRoom 함수를 실행할 수 있다. 즉, 클라이언트 에서 출석 이벤트 이외에 상점 이벤트 또는 보관함 이벤트에 대한 호출이 요청된 경우, 생성된 상기 클래스의 인스턴스가 호출 요청된 보관함 이벤트, 상점 이벤트에 대한 응답을 제공하기 위해 재사용될 수 있다.As another example, when the invocation of the attendance event occurs and the execution of the OnJoinRoom function is requested, the structuring unit 430 may classify the store event, attendance event, and archive event corresponding to OnJoinRoom retrieved from the module pool, , And execute the OnJoinRoom function. That is, if a call to a store event or a library event is requested at a client other than an attendance event, an instance of the generated class can be reused to provide a response to a store event, a store event, which is requested to be invoked.

620 단계에서, 구조화부(430)는 클래스 및 함수의 실행 결과를 호출 요청된 특정 이벤트에 대한 응답으로서 해당 클라이언트로 전달할 수 있다. 이때, 프로그램 패키지(즉, 이벤트 모듈)의 이벤트 함수를 실행한 실행 결과로서 복수개의 응답이 존재하는 경우, 복수개의 응답들을 모아서 하나의 단일 응답 메시지가 클라이언트로 전달될 수 있다. In operation 620, the structuring unit 430 may transmit the execution result of the class and the function to the client as a response to the specific event requested to be called. At this time, if there are a plurality of responses as a result of executing the event function of the program package (i.e., event module), a plurality of responses may be collected and a single response message may be transmitted to the client.

도 7은 본 발명의 일실시예에 있어서, 이벤트 모듈 및 모듈 속성을 갱신 또는 추가하는 동작을 설명하기 위한 개념도이다. 7 is a conceptual diagram for explaining an operation of updating or adding an event module and a module attribute in an embodiment of the present invention.

도 7에서, 모듈 레파지토리(740)는 모듈 데이터베이스에 해당하고, 모듈 속성 레파지토리(750)는 속성 데이터베이스에 해당할 수 있다. 도 7의 동작은 도 1의 프로세서(122)에 의해 수행될 수 있다. 예컨대, 프로세서(122)의 모듈 업데이트부(440)에 의해 수행될 수 있다.In FIG. 7, the module repository 740 corresponds to a module database, and the module property repository 750 corresponds to an attribute database. The operation of FIG. 7 may be performed by the processor 122 of FIG. For example, by the module update unit 440 of the processor 122.

서버(즉, 이벤트 기반 패키지 모듈 호출 시스템)는 모듈 관리 도구(730)를 통해 모듈 갱신 요청(710)을 수신할 수 있다. 예를 들어, 서버의 관리자 등으로부터 상기 모듈 갱신 요청(710)을 위한 표시 정보(버튼, 아이콘 등)가 선택되어 모듈 갱신 요청(710)이 수신될 수 있다.The server (i.e., the event-based package module calling system) may receive the module update request 710 via the module management tool 730. For example, display information (button, icon, etc.) for the module update request 710 may be selected from a manager of the server or the like and a module update request 710 may be received.

이처럼, 모듈 갱신 요청이 수신되면, 프로세서(122)는 모듈 데이터베이스인 모듈 레파지토리(740)에 갱신 또는 추가 요청된 모듈에 해당하는 프로그램 패키지를 저장할 수 있다. 그리고, 프로세서(122)는 모듈 풀(760)을 대상으로 갱신 또는 추가 요청된 상기 이벤트 모듈의 갱신 또는 추가를 요청할 수 있다. 이때, 모듈 풀(760)에서 상기 저장된 프로그램 패키지에 해당하는 이벤트 모듈을 갱신하거나 또는 추가하기 이전에, 프로세서(122)는 모듈 풀(760)을 대상으로 갱신 또는 추가가 완료될 때까지 해당 이벤트와 관련된 이벤트 모듈의 호출에 대한 락(Lock)을 설정할 수 있다.As such, when the module update request is received, the processor 122 may store the program package corresponding to the module requested to be updated or added to the module repository 740, which is a module database. The processor 122 may then request the update or addition of the event module that is requested to update or add to the module pool 760. In this case, before the event module corresponding to the stored program package is updated or added in the module pool 760, the processor 122 updates the module pool 760 with the corresponding event You can set a lock on a call to a related event module.

예를 들어, 출석 이벤트와 관련된 프로그램 패키지가 수정되어 해당 이벤트 모듈을 갱신하고자 하는 경우, 수정된 프로그램 패키지가 모듈 데이터베이스인 모듈 레파지토리(740)에 저장될 수 있다. 이때, 모듈 풀이 갱신되기 이전에 클라이언트로부터 출석 이벤트에 대한 호출 요청이 발생한 경우, 프로세서(122)는 해당 이벤트의 호출 요청을 수신한 이후 갱신이 완료될 때까지 일정 시간 동안 해당 이벤트의 처리를 대기시킬 수 있다. 즉, 출석 이벤트와 관련된 서비스의 접근 자체를 차단시키는 것이 아니라, 매우 짧은 시간에 갱신이 이루어지므로 출석 이벤트를 위한 가상 공간으로의 클라이언트 접근을 허용하면서 응답을 잠시 대기시킬 수 있다. 이를 위해, 프로세서(122)는 클라이언트로부터의 호출 요청은 수신하되, 해당 이벤트와 관련된 이벤트 모듈의 호출에 대해서는 락(Lock)을 설정할 수 있다. 그리고, 모듈 풀에서 상기 출석 이벤트관련 갱신이 완료되면, 프로세서(122)는 상기 락이 설정된 이벤트 모듈의 호출에 대한 락을 해제(Unlock)할 수 있다.For example, if a program package associated with an attendance event is modified to update the corresponding event module, the modified program package may be stored in the module repository 740, which is a module database. At this time, if a call request for the attendance event occurs from the client before the module pool is updated, the processor 122 waits for processing of the event for a predetermined time until the update is completed after receiving the call request of the event . That is, rather than blocking the access of the service related to the attendance event, since the update is performed in a very short time, the response can be paused while allowing the client access to the virtual space for the attendance event. To this end, the processor 122 may receive a call request from a client, but may lock a call to an event module associated with the event. When the attendance event related update is completed in the module pool, the processor 122 can unlock the call for the event module in which the lock is set.

예를 들어, 상기 락(Lock)이 설정된 이후, 프로세서(122)는 모듈 레파지토리(740)에 저장된 갱신 요청된 출석 이벤트에 해당하는 프로그램 패키지를 메모리에 로딩할 수 있다. 그리고, 리플렉션(reflection)을 이용하여 로딩된 프로그램 패키지를 분석할 수 있으며, 분석을 통해 획득한 클래스, 함수, 함수의 파라미터 등을 기반으로 모듈 풀(750)에서 이미 구조화된 기존의 출석 이벤트관련 클래스, 함수, 함수의 파라미터를 갱신할 수 있다. 이에 따라, 갱신 요청된 출석 이벤트관련 이벤트 모듈의 갱신이 완료될 수 있으며, 갱신이 완료됨에 따라 프로세서(122)는 출석 이벤트와 관련하여 이벤트 모듈의 호출에 대한 락(Lock)을 해제(Unlock)할 수 있다. 이처럼, 이벤트 모듈을 추가 또는 갱신하고자 하는 경우, 서버를 셧다운(shutdown)시키지 않고, 무정지 상태로 모듈 배포가 진행될 수 있다.For example, after the lock is set, the processor 122 may load the program package corresponding to the update requested attendance event stored in the module repository 740 into the memory. In addition, the loaded program package can be analyzed using reflection, and the existing attendance event related class already structured in the module pool 750 based on the acquired class, function, , Function, and function parameters. Accordingly, the update of the attendance event related event module requested to be updated may be completed, and upon completion of the update, the processor 122 may unlock the invitation of the event module in association with the attendance event . In this way, when an event module is to be added or updated, the module distribution can be performed in an uninterrupted state without shutting down the server.

이벤트 모듈의 갱신과 마찬가지로 이벤트 모듈의 속성(Configuration Items)이 갱신될 수 있으며, 이벤트 모듈의 속성 갱신 시에도 서버를 셧다운(shutdown)하지 않고, 무정지로 갱신된 속성 파일이 배포될 수 있다.The configuration items of the event module can be updated in the same manner as the update of the event module and the updated attribute file can be distributed without shutting down the server even when the attribute of the event module is updated.

예를 들어, 프로세서(122)는 모듈 관리 도구(730)를 통해 모듈의 속성 갱신을 요청받을 수 있다(720). 그러면, 속성 데이터베이스인 모듈 속성 레파지토리(750)에 해당 프로그램 패키지가 저장될 수 있으며, 프로세서(122)는 모듈 풀(760)을 대상으로 이벤트 모듈의 갱신을 수행하기 위해 해당 이벤트 모듈에 대한 호출에 락(Lock)을 설정할 수 있다. 그리고, 요청된 이벤트 모듈의 속성 갱신이 완료되면 상기 락이 해제(Unlock)될 수 있다.For example, the processor 122 may be requested 720 to update the attributes of the module via the module management tool 730. Then, the corresponding program package may be stored in the module property repository 750, which is an attribute database, and the processor 122 may lock the call to the event module to update the event module to the module pool 760 (Lock) can be set. When the attribute update of the requested event module is completed, the lock can be unlocked.

이처럼, 이벤트 처리를 모듈 풀 및 모듈 로더를 기반으로 수행함에 따라, 기존의 스크립트 기반 이벤트 처리 방식과 달리, 스크립트 파일을 DB(즉, repository) 에 저장 후 서버에 신호(signal)를 전송하여 리로드(reload)하지 않고, 서버가 모듈 풀에서 해당 이벤트를 검색하여 바로 함수를 실행할 수 있다.In this way, unlike the existing script-based event handling method, event processing is performed based on the module pool and module loader, the script file is stored in the DB (that is, the repository) Without reloading, the server can retrieve the event from the module pool and execute the function immediately.

도 8은 본 발명의 일실시예에 있어서, 이벤트 모듈을 기반으로 단일 응답 메시지를 제공하는 동작을 도시한 흐름도이고, 도 9는 본 발명의 다른 실시예에 있어서, 프로세서의 내부 구성을 도시한 블록도이다.FIG. 8 is a flowchart illustrating an operation of providing a single response message based on an event module according to an embodiment of the present invention. FIG. 9 is a block diagram illustrating an internal structure of a processor according to another embodiment of the present invention. .

도 9에서 프로세서(900)는 도 2의 프로세서(122)에 해당할 수 있으며, 도 4의 프로세서(400)에 포함된 모듈 업데이트부(440) 대신 정보 수신부(940) 및 메시지 생성부(950)를 포함할 수 있다. 9, the processor 900 may correspond to the processor 122 of FIG. 2 and may include an information receiving unit 940 and a message generating unit 950 instead of the module updating unit 440 included in the processor 400 of FIG. . ≪ / RTI >

도 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)에 의해 수행될 수 있다.9, the processors 900 and 122 may include a modulating unit 910, an analyzing unit 920, a structuring unit 930, an information receiving unit 940, and a message generating unit 950, The analyzing unit 910, the analyzing unit 920 and the structuring unit 930 are the same as those of the modulating unit 910, the analyzing unit 920 and the structuring unit 930 shown in FIG. 4 described above, do. 9, a preprocessing process (modularization, structuring through reflection-based analysis) for processing an event based on a module is the same as the preprocessing process already described with reference to FIGS. 3 and 4. In FIG. 9, A case where a response to the event is provided to the client when an event call request is generated will be described. 3 may be performed prior to step 810 of FIG. 8, and steps 810 through 830 of FIG. 8 may be performed by the processors 122 and 400.

810 단계에서, 정보 수신부(940)는 클라이언트로부터 특정 이벤트의 호출 요청을 수신할 수 있다. 예컨대, 정보 수신부(940)는 클라이언트에 설치 및 구동된 어플리케이션을 통해 출석 이벤트의 호출 요청을 수신할 수 있다.In step 810, the information receiving unit 940 may receive a call request for a specific event from the client. For example, the information receiving unit 940 can receive a request for invitation of an attendance event through an application installed and driven in the client.

820 단계에서, 메시지 생성부(950)는 구조화된 각 프로그램 패키지의 클래스 및 함수 중 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 하나의 단일 응답 메시지를 생성할 수 있다.In step 820, the message generator 950 collects a plurality of messages generated on the basis of the classes and functions of the structured program packages and the event modules related to the specific events requested to be called, A response message can be generated.

830 단계에서, 생성된 단일 응답 메시지가 클라이언트로 제공될 수 있다.In step 830, the generated single response message may be provided to the client.

일례로, 모듈 풀을 대상으로 출석 이벤트에 해당하는 클래스 및 함수를 검색될 수 있으며, 메시지 생성부(950)는 검색된 클래스 및 함수를 실행함에 따라 실행 결과로서 획득되는 응답 메시지들을 취합하여 하나의 단일 응답 메시지를 생성할 수 있다. 여기서, 복수개의 응답 메시지들은 함수를 실행한 결과로서, 동시에 획득되는 것이 아니라, 동시에 획득되는 것도 있고, 시간 차를 두고 획득되는 메시지도 존재할 수 있다. 이에 따라, 메시지 생성부(950)는 클라이언트에서 호출 요청된 출석 이벤트에 대한 응답으로서, 응답 메시지들을 그때 그때 제공하는 것이 아니라, 하나로 취합하여 구조화한 이후 클라이언트로 제공할 수 있다. 여기서, 단일 응답 메시지를 생성하는 동작은 아래의 도 9를 참고하여 자세히 설명하기로 한다.For example, the class and function corresponding to the attendance event can be searched for the module pool, and the message generating unit 950 can collect the response messages obtained as the execution result by executing the searched class and function, A response message can be generated. Here, a plurality of response messages may be acquired at the same time, not simultaneously, as a result of executing the function, and there may be messages obtained with a time difference. Accordingly, the message generation unit 950 can collect the response messages as a response to the attendance event requested by the client, and provide the response messages to the client after structuring them. Here, the operation of generating a single response message will be described in detail with reference to FIG. 9 below.

도 10은 본 발명의 일실시예에 있어서, 단일 응답 메시지를 생성하는 동작을 설명하기 위해 제공되는 개념도이고, 도 11은 본 발명의 일실시예에 있어서, 단일 응답 메시지의 구조를 도시한 도면이다.FIG. 10 is a conceptual diagram provided for explaining an operation of generating a single response message according to an embodiment of the present invention, and FIG. 11 is a diagram illustrating a structure of a single response message in an embodiment of the present invention .

도 10에서는 서버와 클라이언트 간 메시징의 라운드 트림(Roundtrip Trip)을 최소화하여 성능적 효과를 얻기 위해 복수개의 응답들을 모아 하나 응답으로 처리하는 경우를 예로 들어 설명하나, 이는 실시예에 해당되며, 이벤트 모듈들 각각에서 클라이언트로 직접 메시지를 전송할 수도 있다. In FIG. 10, a roundtrip trip of messaging between a server and a client is minimized, and a plurality of responses are collected and processed as a response to obtain a performance effect. Each of which may send a message directly to the client.

도 10의 1000을 참고하면, 클라이언트로부터 이벤트 1에 대한 호출이 요청되면, 프로세서(122, 900)는 해당 이벤트와 관련된 이벤트 모듈을 호출하고, 모듈 풀에서 검색된 클래스 및 함수를 실행함에 따라 발생하는 복수개의 전송할 메시지들(1010, 1020)을 취합하여 단일 응답 메시지(1030)를 생성할 수 있다. 그리고, 생성된 단일 응답 메시지(1030)를 클라이언트로 제공할 수 있다. 즉, 상기 복수개의 전송할 메시지들(예컨대, 도 10의 8개의 응답 메시지들) 각각이 발생할 때마다 바로 클라이언트로 전송하지 않고, 상기 8개의 응답 메시지들을 버퍼 등에 임시 보관하고 있다가 하나의 응답(즉, 단일 응답 메시지)으로 생성하여 클라이언트로 제공할 수 있다. 이때, 모든 이벤트 모듈의 호출이 끝난 이후에 클라이언트로 전송할 복수개의 메시지들이 취합되어 상기 단일 응답 메시지가 생성될 수 있다.Referring to FIG. 10, when a call is requested from the client to the event 1, the processor 122, 900 calls an event module associated with the event, and a plurality Messages 1010 and 1020 to be transmitted may be aggregated to generate a single response message 1030. [ The generated single response message 1030 can be provided to the client. That is, each time a plurality of messages to be transmitted (e.g., eight response messages in FIG. 10) are generated, the eight response messages are temporarily stored in a buffer or the like, , A single response message) and provide it to the client. At this time, a plurality of messages to be transmitted to the client may be collected after the call of all the event modules is completed, so that the single response message may be generated.

일례로, 프로세서(예컨대, 메시지 생성부)는 특정 이벤트(예컨대, 이벤트 1)와 관련된 이벤트 모듈들(이벤트 모듈 A, B)을 호출하여 해당 클래스 및 함수를 실행하고, 실행 결과로서 제공되는 복수개의 응답 메시지들 (1010, 1020)을 모아서 하나의 단일 응답 메시지를 생성할 수 있다. 이때, 메시지들은 경우에 따라 순서가 있는 메시지(즉, 순서에 유관한 메시지(Sequenced Message))를 포함할 수도 있고, 순서에 관계없는 메시지(즉, 순서에 무관한 메시지(Unified Message))를 포함할 수도 있다. 그러면, 프로세서(예컨대, 메시지 생성부)는 도 11과 같이 순서에 유관한 메시지(1120)와 순서에 무관한 메시지(1110)를 구분하여 단일 응답 메시지(1100)를 생성할 수 있다. 여기서, 순서에 유관한 메시지(1120)는 클라이언트에서 호출이 요청된 특정 이벤트에 해당하는 응답을 제공할 때의 제공 순서를 가지는 것으로 지정된 메시지(즉, 응답 메시지)를 나타낼 수 있다.For example, a processor (e.g., a message generator) may invoke event modules A and B associated with a particular event (e.g., Event 1) to execute the corresponding class and function, The response messages 1010 and 1020 may be collected to generate a single response message. At this time, the messages may include an ordered message (i.e., a Sequenced Message), and may include a sequence unrelated message (i.e., a message unrelated to the order (Unified Message)). You may. Then, the processor (e.g., message generating unit) can generate a single response message 1100 by separating the message 1120 related to the order and the message 1110 related to the order, as shown in FIG. Here, the message 1120 related to the order may indicate a message (i.e., a response message) designated as having a providing order when a response corresponding to a specific event requested by the client is requested.

예를 들어, 특정 이벤트와 관련하여, 실행 결과로서 웰컴 메시지, 보상 메시지, 메일 확인 메시지 등이 단일 응답 메시지를 생성하기 위해 모아질 수 있다. 이때, 인증된 클라이언트와 관련하여(즉, 사용자가 로그인한 이후), 웰컴 메시지, 보상 메시지, 메일 확인 메시지가 순차적으로 클라이언트의 디스플레이에 표시되는 것으로 미리 지정된 경우, 순서가 지정된 메시지들은 각각 우선 순위 정보가 해당 메시지와 함께 연관되어 단일 응답 메시지 내에서 구성될 수 있다. 예컨대, 웰컴 메시지와 연관하여 우선 순위 1을 나타내는 정보, 보상 메시지와 연관하여 우선 순위 2를 나타내는 정보, 메일 확인 메시지와 연관하여 우선 순위 3을 나타내는 정보가 함께 단일 응답 메시지 내에 포함될 수 있다. 이때, 순서에 무관한 메시지가 존재하는 경우, 상기 단일 응답 메시지 내에 순서에 무관한 메시지가 함께 포함될 수 있다.For example, in connection with a particular event, a welcome message, a reward message, a mail confirmation message, etc., as a result of execution may be collected to generate a single response message. At this time, if the welcome message, the reward message, and the mail confirmation message are sequentially designated to be displayed on the display of the client with respect to the authenticated client (i.e., after the user logs in) May be associated with the message and configured in a single response message. For example, information indicating priority 1 in association with a welcome message, information indicating priority 2 in association with a reward message, and information indicating priority 3 in association with a mail confirmation message may be included together in a single response message. In this case, if there is a message irrelevant to the order, a message irrelevant to the order may be included in the single response message.

이처럼, 서버에서 클라이언트로부터 호출 요청된 이벤트와 관련하여 단일 응답 메시지를 제공함에 따라, 클라이언트는 구조화를 위한 모든 메시지가 도착할 때까지 기다릴 필요없이 구조화된 형태의 단일 응답 메시지를 제공받으므로, 클라이언트 단에서 상기 이벤트에 대한 응답을 한번에 처리할 수 있다.Thus, since the server provides a single response message with respect to the event requested to be called from the client, the client receives a single response message in a structured form without having to wait for all the messages for the structuring to arrive, A response to the event can be processed at one time.

도 10의 1050을 참고하면, 특정 이벤트와 관련하여 처리되는 이벤트 모듈(즉, 프로그램 패키지)의 함수를 실행하면서, 해당 함수를 공통적으로 이용하는 다른 이벤트 모듈(즉, 다른 프로그램 패키지)가 존재할 수 있다. 그러면, 프로세서(122, 900)는 상기 이벤트 모듈을 처리하면서 내부순환이벤트를 통해 다른 이벤트 모듈의 함수를 재사용함으로써, 모듈 간 중복 코드를 방지할 수 있다. Referring to 1050 of FIG. 10, there may be another event module (that is, another program package) that commonly uses a function of an event module (i.e., program package) to be processed in association with a specific event. Then, the processors 122 and 900 can reuse the functions of the other event modules through the internal circulation event while processing the event modules, thereby preventing overlapping codes between the modules.

일례로, 특정 이벤트와 관련된 이벤트 모듈(예컨대, 이벤트 모듈 A, B, C)이 복수개인 경우, 프로세서(122, 900)는 내부순환이벤트(1051)를 통해 복수개의 이벤트 모듈 각각을 호출하여 해당 함수를 실행할 수 있다. 그리고, 모든 이벤트 모듈들(예컨대, 이벤트 모듈 A, B, C)관련 함수의 실행이 완료되면, 실행 결과로서 복수개의 응답 메시지들이 생성될 수 있다. 이때, 프로세서(122, 900)는 복수개의 응답 메시지들을 모아서 단일 응답 메시지로 생성할 수 있으며, 생성된 단일 응답 메시지를 클라이언트로 제공할 수 있다. 이때, 내부순환이벤트(1051)를 통해 다른 이벤트 모듈들을 호출하는 경우, 동기식 또는 비동기식으로 다른 이벤트 모듈이 호출되어 해당 이벤트관련 함수가 실행될 수 있다. 예컨대, 동기식으로 처리되는 경우, 서버의 실행코드가 블록킹(blocking)될 수 있다. 즉, 실행 결과에 대한 응답이 발생할 때까지 다음 코드를 실행하지 않고 대기할 수 있다. 그리고, 응답이 발생하면 다음 코드가 실행될 수 있다. 비동기식으로 처리되는 경우, 서버의 실행 코드가 논블록킹(Non-Blocking)될 수 있다. 예컨대, 응답이 오지 않았더라도 바로 다음 코드를 실행하고, 다음 코드 실행 중에 응답이 발생하면, 발생된 응답을 클라이언트로 제공하는 등의 처리가 수행될 수 있다.For example, if there are a plurality of event modules (e.g., event modules A, B, and C) associated with a particular event, the processors 122 and 900 call each of the plurality of event modules through an internal circular event 1051, . When execution of all the event modules (e.g., event modules A, B, and C) is completed, a plurality of response messages may be generated as the execution result. At this time, the processors 122 and 900 can collect a plurality of response messages to generate a single response message, and provide the generated single response message to the client. At this time, when calling other event modules through the internal circulation event 1051, another event module may be called synchronously or asynchronously so that the event related function can be executed. For example, when processed synchronously, the execution code of the server may be blocked. That is, it can wait without executing the next code until a response to the execution result occurs. Then, when a response occurs, the following code can be executed. When processed asynchronously, the executable code of the server may be non-blocking. For example, even if no response has come, the next code is immediately executed, and if a response occurs during execution of the next code, processing such as providing the generated response to the client can be performed.

이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The system or apparatus described above may be implemented as a hardware component, a software component or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA) , A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (20)

컴퓨터에 의해 실행되는 이벤트 기반 패키지 모듈 호출 방법에 있어서,
리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계;
상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 단계;
분석된 각 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 단계;
클라이언트로부터 특정 이벤트의 호출을 요청받는 단계;
구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하는 단계; 및
생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 단계
를 포함하는 이벤트 기반 패키지 모듈 호출 방법.
CLAIMS 1. A method for invoking an event based package module executed by a computer,
Modularizing a program package having a plurality of functions related to a specific event into an event module using a reflection-based programming language;
Analyzing a program package corresponding to each of the plurality of event modules using the reflection;
Structuring classes and functions of each analyzed program package by event;
Receiving a request for a specific event from a client;
Collecting a plurality of messages generated based on an event module related class and a corresponding function corresponding to a specific event among the classes and functions of each structured program package to generate a single response message; And
Providing the generated single response message to the client
Based package module.
제1항에 있어서,
상기 단일 응답 메시지를 생성하는 단계는,
상기 복수개의 메시지들을 대상으로, 순서에 무관한 메시지(unified message)와 순서에 유관한 메시지(sequenced message)를 구분하여 상기 단일 응답 메시지를 생성하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
The method according to claim 1,
Wherein the generating the single response message comprises:
Generating the single response message by distinguishing a unified message and a sequenced message from the plurality of messages,
Lt; RTI ID = 0.0 > of: < / RTI >
제2항에 있어서,
상기 순서에 유관한 메시지는, 클라이언트에서 상기 호출이 요청된 특정 이벤트에 해당하는 응답을 제공할 때의 제공 순서를 가지는 것으로 지정된 메시지를 나타내는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
3. The method of claim 2,
The message related to the above sequence indicates a message designated as having a providing order when a client provides a response corresponding to a specific event for which the call is requested
Lt; RTI ID = 0.0 > of: < / RTI >
제2항에 있어서,
상기 단일 응답 메시지를 생성하는 단계는,
상기 순서에 유관한 메시지(sequenced message)가 복수개인 경우, 순서에 유관한 메시지 각각에 해당하는 우선 순위를 해당 메시지와 연관시켜 상기 단일 응답 메시지를 생성하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
3. The method of claim 2,
Wherein the generating the single response message comprises:
And generating a single response message by associating a priority corresponding to each sequence with a corresponding message when there are a plurality of sequenced messages in the sequence
Lt; RTI ID = 0.0 > of: < / RTI >
제1항에 있어서,
상기 단일 응답 메시지를 생성하는 단계는,
구조화된 이벤트 모듈들을 기반으로 호출 요청된 상기 특정 이벤트에 해당하는 적어도 하나의 이벤트 모듈의 함수를 실행함에 따라 생성된 실행 결과 별 메시지들을 취합하여 상기 단일 응답 메시지를 생성하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
The method according to claim 1,
Wherein the generating the single response message comprises:
And generating the single response message by collecting the generated messages according to the execution of the function of at least one event module corresponding to the specific event requested based on the structured event modules
Lt; RTI ID = 0.0 > of: < / RTI >
제5항에 있어서,
상기 함수를 실행하는 단계는,
상기 특정 이벤트와 관련된 이벤트 모듈이 복수개인 경우, 내부순환이벤트를 통해 복수개의 이벤트 모듈 각각을 호출하여 해당 함수를 실행하는 단계
를 포함하는 이벤트 기반 패키지 모듈 호출 방법.
6. The method of claim 5,
Wherein the step of performing the function comprises:
When a plurality of event modules are associated with the specific event, calling each of the plurality of event modules through an internal circulation event and executing the corresponding function
Based package module.
제5항에 있어서,
상기 호출 요청된 상기 특정 이벤트에 해당하는 적어도 하나의 이벤트 모듈은 동기식 또는 비동기식으로 호출되는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
6. The method of claim 5,
At least one event module corresponding to the specific event requested to be called is called as synchronous or asynchronous
Lt; RTI ID = 0.0 > of: < / RTI >
제1항에 있어서,
상기 이벤트 모듈로 모듈화하는 단계는,
상기 특정 이벤트와 관련된 복수의 기능들 각각을 미리 지정된 노테이션(notation)과 연관시켜 모듈화하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
The method according to claim 1,
Wherein modularizing the event module comprises:
Modularizing each of a plurality of functions associated with the specific event in association with a predetermined notation
Lt; RTI ID = 0.0 > of: < / RTI >
제1항에 있어서,
상기 이벤트 별로 구조화하는 단계는,
상기 각 프로그램 패키지의 클래스(class) 및 함수를 해시(Hash) 함수에 기초하여 구조화하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
The method according to claim 1,
Wherein the structuring for each event comprises:
Structuring a class and a function of each program package based on a hash function
Lt; RTI ID = 0.0 > of: < / RTI >
제1항에 있어서,
상기 프로그램 패키지는 JAR 파일 또는 DLL 파일을 포함하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
The method according to claim 1,
The program package includes a JAR file or a DLL file
Lt; RTI ID = 0.0 > of: < / RTI >
리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 모듈화부;
상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 분석부;
분석된 각 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 구조화부;
클라이언트로부터 특정 이벤트의 호출을 요청받는 정보 수신부; 및
구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하고, 생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 메시지 생성부
를 포함하는 이벤트 기반 패키지 모듈 호출 시스템.
A modulator for modulating a program package implemented with a plurality of functions related to a specific event into an event module using a reflection based programming language;
An analysis unit for analyzing a program package corresponding to each of the plurality of event modules using the reflection;
A structuring unit structuring a class and a function of each analyzed program package for each event;
An information receiving unit for receiving a request for a specific event from a client; And
A plurality of messages generated based on an event module related class and function corresponding to a specific event requested by the call among the classes and functions of each structured program package to generate a single response message, To the client,
The event-based package module calling system comprising:
제11항에 있어서,
상기 메시지 생성부는,
상기 복수개의 메시지들을 대상으로, 순서에 무관한 메시지(unified message)와 순서에 유관한 메시지(sequenced message)를 구분하여 상기 단일 응답 메시지를 생성하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
12. The method of claim 11,
Wherein the message generator comprises:
Generating the single response message by distinguishing a unified message and a sequenced message from the plurality of messages,
The event-based package module calling system.
제12항에 있어서,
상기 순서에 유관한 메시지는, 클라이언트에서 상기 호출이 요청된 특정 이벤트에 해당하는 응답을 제공할 때의 제공 순서를 가지는 것으로 지정된 메시지를 나타내는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
13. The method of claim 12,
The message related to the above sequence indicates a message designated as having a providing order when a client provides a response corresponding to a specific event for which the call is requested
The event-based package module calling system.
제12항에 있어서,
상기 메시지 생성부는,
상기 순서에 유관한 메시지(sequenced message)가 복수개인 경우, 순서에 유관한 메시지 각각에 해당하는 우선 순위를 해당 메시지와 연관시켜 상기 단일 응답 메시지를 생성하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
13. The method of claim 12,
Wherein the message generator comprises:
And generating a single response message by associating a priority corresponding to each sequence with a corresponding message when there are a plurality of sequenced messages in the sequence
The event-based package module calling system.
제11항에 있어서,
상기 구조화부는,
구조화된 이벤트 모듈들을 기반으로 호출 요청된 상기 특정 이벤트에 해당하는 적어도 하나의 이벤트 모듈의 함수를 실행하고,
상기 메시지 생성부는,
상기 이벤트 함수를 실행한 실행 결과 별 메시지들을 취합하여 상기 단일 응답 메시지를 생성하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
12. The method of claim 11,
The structuring unit includes:
Executing a function of at least one event module corresponding to the specific event requested to be called based on the structured event modules,
Wherein the message generator comprises:
Generating the single response message by collecting messages for each execution result that executed the event function
The event-based package module calling system.
제15항에 있어서,
상기 구조화부는,
상기 특정 이벤트와 관련된 이벤트 모듈이 복수개인 경우, 내부순환이벤트를 통해 복수개의 이벤트 모듈 각각을 호출하여 해당 함수를 실행하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
16. The method of claim 15,
The structuring unit includes:
When a plurality of event modules related to the specific event are present, each of the plurality of event modules is called through an internal circulation event to execute the corresponding function
The event-based package module calling system.
제15항에 있어서,
상기 호출 요청된 상기 특정 이벤트에 해당하는 적어도 하나의 이벤트 모듈은 동기식 또는 비동기식으로 호출되는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
16. The method of claim 15,
At least one event module corresponding to the specific event requested to be called is called as synchronous or asynchronous
The event-based package module calling system.
제11항에 있어서,
상기 모듈화부는,
상기 특정 이벤트와 관련된 복수의 기능들 각각을 미리 지정된 노테이션(notation)과 연관시켜 모듈화하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
12. The method of claim 11,
Wherein the modulating unit comprises:
Modularizing each of a plurality of functions associated with the specific event in association with a predetermined notation
The event-based package module calling system.
제11항에 있어서,
상기 구조화부는,
상기 각 프로그램 패키지의 클래스(class) 및 함수를 해시(Hash) 함수에 기초하여 구조화하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
12. The method of claim 11,
The structuring unit includes:
Structuring a class and a function of each program package based on a hash function
The event-based package module calling system.
컴퓨터로 구현되는 서버 장치와 결합되어 이벤트 기반 패키지 모듈 호출 방법을 실행시키기 위해 기록매체에 저장된 컴퓨터 프로그램에 있어서,
상기 이벤트 기반 패키지 모듈 호출 방법은,
리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계;
상기 리플렉션(reflection)을 사용하여 복수의 이벤트 모듈들 각각에 해당하는 프로그램 패키지를 분석하는 단계;
분석된 각 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 단계;
클라이언트로부터 특정 이벤트의 호출을 요청받는 단계;
구조화된 각 프로그램 패키지의 클래스 및 함수 중 상기 호출이 요청된 특정 이벤트에 해당하는 이벤트 모듈 관련 클래스 및 함수에 기초하여 발생된 복수개의 메시지들을 취합하여 단일 응답 메시지를 생성하는 단계; 및
생성된 상기 단일 응답 메시지를 상기 클라이언트로 제공하는 단계
를 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
A computer program stored on a recording medium for executing an event-based package module calling method in combination with a computer-implemented server device,
The event-based package module calling method includes:
Modularizing a program package having a plurality of functions related to a specific event into an event module using a reflection-based programming language;
Analyzing a program package corresponding to each of the plurality of event modules using the reflection;
Structuring classes and functions of each analyzed program package by event;
Receiving a request for a specific event from a client;
Collecting a plurality of messages generated based on an event module related class and a corresponding function corresponding to a specific event among the classes and functions of each structured program package to generate a single response message; And
Providing the generated single response message to the client
And a computer program product.
KR1020170091709A 2017-07-19 2017-07-19 Method and system for invoking event based package module KR102332506B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170091709A KR102332506B1 (en) 2017-07-19 2017-07-19 Method and system for invoking event based package module
JP2018134255A JP7231347B2 (en) 2017-07-19 2018-07-17 Method and system for calling event-based package module
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 (en) 2017-07-19 2017-07-19 Method and system for invoking event based package module

Publications (2)

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

Family

ID=65276911

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170091709A KR102332506B1 (en) 2017-07-19 2017-07-19 Method and system for invoking event based package module

Country Status (1)

Country Link
KR (1) KR102332506B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111815090A (en) * 2019-04-11 2020-10-23 上海拉扎斯信息科技有限公司 Task execution method and device, electronic equipment and computer readable storage medium

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003501743A (en) * 1999-06-04 2003-01-14 ビスキュア・コーポレイション Protocol response between similar systems
US20120124555A1 (en) * 2010-11-11 2012-05-17 Codekko Software, Inc. Optimization of Compiled Control Objects
KR20130048904A (en) * 2011-11-03 2013-05-13 (주)한성에스엠비솔루션 System for instolling network attached storate application package and method thereof
US20160217176A1 (en) * 2015-01-25 2016-07-28 Iguazio Systems Ltd. Application-centric object configuration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003501743A (en) * 1999-06-04 2003-01-14 ビスキュア・コーポレイション Protocol response between similar systems
US20120124555A1 (en) * 2010-11-11 2012-05-17 Codekko Software, Inc. Optimization of Compiled Control Objects
KR20130048904A (en) * 2011-11-03 2013-05-13 (주)한성에스엠비솔루션 System for instolling network attached storate application package and method thereof
US20160217176A1 (en) * 2015-01-25 2016-07-28 Iguazio Systems Ltd. Application-centric object configuration

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111815090A (en) * 2019-04-11 2020-10-23 上海拉扎斯信息科技有限公司 Task execution method and device, electronic equipment and computer readable storage medium

Also Published As

Publication number Publication date
KR102332506B1 (en) 2021-12-01

Similar Documents

Publication Publication Date Title
US20220108108A1 (en) Method and system for extraction of data from documents for robotic process automation
Komatineni et al. Pro Android 4
JP7231347B2 (en) Method and system for calling event-based package module
KR101854975B1 (en) Method and system for extending function of package file
EP3992800B1 (en) Program test method and apparatus, computer device, and storage medium
US20080301629A1 (en) Integrating aspect oriented programming into the application server
CN111198730A (en) Method, device, terminal and computer storage medium for starting sub-application program
US20230052190A1 (en) Repeating pattern detection within usage recordings of robotic process automation to facilitate representation thereof
KR101745808B1 (en) Method and system for processing module modulization of server-side logic
US20230385104A1 (en) Automated software robot creation for robotic process automation
EP3508262A1 (en) Method and system for sharing user activity information
US20080301627A1 (en) Providing extensive ability for describing a management interface
US20020174161A1 (en) Java startup wrapper
Rattanapoka et al. An MQTT-based IoT cloud platform with flow design by Node-RED
US9009699B2 (en) Providing a POJO-based microcontainer for an application server
CN111580883B (en) Application program starting method, device, computer system and medium
KR102332506B1 (en) Method and system for invoking event based package module
JP2023152695A (en) System and method for using browser to design robotic process automation (rpa) robot
KR102327927B1 (en) Method and system for invoking event based package module
US20230050430A1 (en) Robotic process automation system for managing human and robotic tasks
Buechi Safe language mechanisms for modularization and concurrency
Russell et al. Developing Android applications using agent-oriented programming
Ramgir et al. Java 9 High Performance: Practical techniques and best practices for optimizing Java applications through concurrency, reactive programming, and more
CN117056317B (en) Data processing method, device, equipment and computer readable storage medium
CN113542429B (en) Platform residence processing method, device, equipment and medium

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