KR102327927B1 - 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
KR102327927B1
KR102327927B1 KR1020170091705A KR20170091705A KR102327927B1 KR 102327927 B1 KR102327927 B1 KR 102327927B1 KR 1020170091705 A KR1020170091705 A KR 1020170091705A KR 20170091705 A KR20170091705 A KR 20170091705A KR 102327927 B1 KR102327927 B1 KR 102327927B1
Authority
KR
South Korea
Prior art keywords
event
module
function
package
program package
Prior art date
Application number
KR1020170091705A
Other languages
Korean (ko)
Other versions
KR20190009878A (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 KR1020170091705A priority Critical patent/KR102327927B1/en
Priority to JP2018134255A priority patent/JP7231347B2/en
Priority to US16/038,178 priority patent/US10866843B2/en
Publication of KR20190009878A publication Critical patent/KR20190009878A/en
Application granted granted Critical
Publication of KR102327927B1 publication Critical patent/KR102327927B1/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

Landscapes

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

Abstract

이벤트 기반 패키지 모듈 호출 방법 및 시스템이 개시된다. 컴퓨터에 의해 실행되는 이벤트 기반 패키지 모듈 호출 방법에 있어서, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계, 복수의 이벤트 별 상기 프로그램 패키지를 로딩(loading)하는 단계, 상기 리플렉션(reflection)을 사용하여 로딩된 상기 프로그램 패키지를 분석하는 단계, 및 분석된 상기 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 단계를 포함할 수 있다.A method and system for invoking an event-based package module are disclosed. A method for calling an event-based package module executed by a computer, comprising: modularizing a program package in which a plurality of functions related to a specific event are implemented into an event module using a reflection-based programming language; Loading the program package for each event, analyzing the loaded program package using the reflection, and structuring classes and functions of the analyzed program package for each event may include.

Figure R1020170091705
Figure R1020170091705

Description

이벤트 기반 패키지 모듈 호출 방법 및 시스템{METHOD AND SYSTEM FOR INVOKING EVENT BASED PACKAGE MODULE}Method and system for calling event-based package module

아래의 설명은 이벤트(event)를 처리하는 기술에 관한 것으로, 게임, 온라인 쇼핑 등 다양한 서버 환경에서 특정 서비스를 제공하기 위한 이벤트를 처리하여 응답을 제공하는 기술에 관한 것이다.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 games and online shopping.

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

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

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

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

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

한국공개특허 제 10-2009-0000651호는 온라인 게임을 위한 사용자 인터페이스 제공 장치 및 그 방법에 관한 것으로, 게임 엔진에 독립적으로 사용자 인터페이스 구성 요소들을 구성하여 재사용 가능하도록 하고, 스크립트(script)를 기반으로 게임 진행 관련 처리를 수행하는 기술을 개시하고 있다.Korean Patent Application Laid-Open No. 10-2009-0000651 relates to an apparatus and method for providing a user interface for an online game, and configures user interface components independently of a game engine so that they can be reused, and based on a script Disclosed is a technique for performing game progress-related processing.

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

컴퓨터에 의해 실행되는 이벤트 기반 패키지 모듈 호출 방법에 있어서, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계, 복수의 이벤트 별 상기 프로그램 패키지를 로딩(loading)하는 단계, 상기 리플렉션(reflection)을 사용하여 로딩된 상기 프로그램 패키지를 분석하는 단계, 및 분석된 상기 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 단계를 포함할 수 있다.A method for calling an event-based package module executed by a computer, comprising: modularizing a program package in which a plurality of functions related to a specific event are implemented into an event module using a reflection-based programming language; Loading the program package for each event, analyzing the loaded program package using the reflection, and structuring classes and functions of the analyzed program package for each event may include.

일측면에 따르면, 상기 이벤트 별로 구조화된 클래스 및 함수가 갱신을 위해 로딩된 상기 이벤트 모듈에 해당하는 프로그램 패키지를 대상으로 분석된 클래스 및 함수를 나타내도록 갱신하는 단계를 더 포함할 수 있다.According to one aspect, the method may further include updating the class and function structured for each event to indicate the analyzed class and function for a program package corresponding to the event module loaded for updating.

이벤트 기반 패키지 모듈 호출 시스템은, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들을 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 모듈화부, 복수의 이벤트 별 상기 프로그램 패키지를 로딩(loading)하고, 상기 리플렉션(reflection)을 사용하여 로딩된 상기 프로그램 패키지를 분석하는 분석부, 및 분석된 상기 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 구조화부를 포함할 수 있다.The event-based package module calling system includes a modularization unit for modularizing a program package implementing a plurality of functions related to a specific event into an event module using a reflection-based programming language, the program package for each event It may include an analysis unit that loads and analyzes the loaded program package using the reflection, and a structuring unit that structures classes and functions of the analyzed program package for each event. .

일측면에 따르면, 상기 프로그램 패키지에 해당하는 이벤트 모듈을 갱신하고자 하는 경우, 갱신하고자 하는 이벤트 모듈의 호출에 대한 락(Lock)을 설정하고, 갱신하고자 하는 이벤트 모듈에 해당하는 프로그램 패키지를 모듈 데이터베이스에서 로딩하는 모듈 업데이트부를 더 포함할 수 있다.According to one aspect, when it is desired to update the event module corresponding to the program package, a lock is set for the call of the event module to be updated, and the program package corresponding to the event module to be updated is stored in the module database. It may further include a module update unit for loading.

컴퓨터로 구현되는 서버 장치와 결합되어 이벤트 기반 패키지 모듈 호출 방법을 실행시키기 위해 기록매체에 저장된 컴퓨터 프로그램에 있어서, 상기 이벤트 기반 패키지 모듈 호출 방법은, 리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계, 복수의 이벤트 별 상기 프로그램 패키지를 로딩(loading)하는 단계, 상기 리플렉션(reflection)을 사용하여 로딩된 상기 프로그램 패키지를 분석하는 단계, 및 분석된 상기 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 단계를 포함할 수 있다.In the computer program stored in the recording medium in combination with a server device implemented as a computer to execute an event-based package module calling method, the event-based package module calling method includes a specific event using a reflection-based programming language Modularizing a program package in which a plurality of related functions are implemented into an event module, loading the program package for each of a plurality of events, and the program package loaded using the reflection It may include analyzing, and structuring classes and functions of the analyzed program package for each event.

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

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

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

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

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

도 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 call system according to an embodiment of the present invention.
2 is a conceptual diagram illustrating a network environment in which an event is processed using a reflection-based programming language according to an embodiment of the present invention.
3 is a flowchart illustrating a method for calling an event-based package module according to an embodiment of the present invention.
4 is a block diagram illustrating an example of components that a processor of an event-based package module call system may include according to an embodiment of the present invention.
5 is an exemplary diagram of a data structure diagram in which information analyzed for each program package is structured for each event according to an embodiment of the present invention.
6 is a flowchart illustrating an operation of providing a response to an event requested from a client after data is structured according to an embodiment of the present invention.
7 is a conceptual diagram for explaining an operation of updating or adding an event module and module properties according to an embodiment of the present invention.
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.
9 is a block diagram illustrating an internal configuration of a processor according to another embodiment of the present invention.
10 is a conceptual diagram provided to explain an operation of generating a single response message according to an embodiment of the present invention.
11 is a diagram illustrating the structure of a single response message according to 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 embodiments relate to a method and system for calling an event-based package module, in particular, using a programming language that provides a script-based programming language (reflection) in various server environments such as game servers and online shopping. It's about processing technology. For example, a programming language that provides reflection may include Java, C#, etc., and modularize each of the compiled files written using Java and C# and load them into memory ( loading), when a call for a specific event is requested from the client, a class or function belonging to the event is executed immediately, and the execution result is provided to the client terminal as a response.

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

본 실시예들에서, "이벤트 모듈"은 특정 이벤트와 관련된 복수의 기능들이 구현된 함수들이 포함된(즉, 함수들을 모아 놓은) 프로그램 패키지(program package)를 모듈화한 것으로서, 패키지 모듈로 표현될 수도 있다. 예를 들어, 특정 이벤트를 시작점으로 하여 가변적인 1개 이상의 기능이 모듈화될 수 있으며, 로그인 이벤트의 경우, 연속 출석 보상 지급, 공지사항 팝업 등이 해당 이벤트에 관련된 기능들에 속할 수 있으며, 해당 기능들을 제공하기 위해 구현된 함수들을 모아서 패키지 형태로 구성될 수 있다. 그리고, 특정 이벤트와 관련된 상기 기능들에 대한 결과를 응답으로 클라이언트 단말로 제공하기 위해, 즉, 데이터베이스 등의 저장 장치에서 스크립트 파일을 가져와서 분석하고 실행한 후 다시 가져다 넣고, 실행 결과를 응답으로 제공하지 않고, 이벤트 모듈을 통해 시스템 자체에서 해당 함수를 바로 실행하여 실행 결과가 응답으로서 제공되도록 프로그램 패키지가 이벤트 별로 모듈화될 수 있다. In the present embodiments, the “event module” is a modularized program package including functions in which a plurality of functions related to a specific event are implemented (that is, a collection of functions), and may be expressed as a package module. have. For example, one or more variable functions may be modularized with a specific event as the starting point, and in the case of a login event, continuous attendance compensation payment, notice pop-up, etc. may belong to the functions related to the event, and the corresponding function It can be configured in package form by collecting the implemented functions to provide them. And, in order to provide the results of the above functions related to a specific event to the client terminal as a response, that is, take a script file from a storage device such as a database, analyze and execute it, then put it back in, and provide the execution result as a response Instead, 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, "client" refers to a terminal possessed by a user, and may indicate, for example, a smart phone, a tablet, a notebook computer, or a desktop.

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

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

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

서버(120)는 전자 기기(110)와 네트워크(130)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다.The server 120 may be implemented as a computer device or a plurality of computer devices that communicates with the electronic device 110 and 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)에 로딩될 수 있다.Referring to FIG. 1 , an event-based package module call and electronic device 110 that is a server 120 includes memories 111 and 121 , processors 112 and 122 , communication modules 113 and 123 , and input/output interfaces 114 and 124 . The memories 111 and 121 are computer-readable recording media, and are non-volatile mass storage devices such as random access memory (RAM), read only memory (ROM), and disk drives. In addition, in the memories 111 and 121 , an operating system and at least one program code (eg, a code for a browser installed and driven in the electronic device 110 or an application for calling a package module) These software components may be loaded from a computer-readable recording medium separate from the memories 111 and 121 using a drive mechanism. Such a separate computer-readable recording medium 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, the software components include a communication module ( It may be loaded into the memories 111 and 121 through 113 and 123. For example, at least one program is a file distribution system that distributes installation files of developers or applications (eg, the server 120 described above). It may be loaded into the memories 111 and 121 based on a program (eg, the above-described application) installed by files provided through the network 130 .

프로세서(112, 122)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(111, 121) 또는 통신 모듈(113, 123)에 의해 프로세서(112, 122)로 제공될 수 있다. 예를 들어 프로세서(112, 122)는 메모리(111, 121)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.The processors 112 and 122 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input/output operations. Commands may be provided to the processors 112 and 122 by the memories 111 and 121 or the communication modules 113 and 123 . For example, the processors 112 and 122 may be configured to execute received instructions according to program codes stored in a recording device such as the memories 111 and 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 communication between the electronic device 110 as a client terminal and the server 120 as an event-based package module calling system through the network 130 . As an example, a request generated by the processor 112 of the client terminal 110 according to a program code stored in a recording device such as the memory 111 (eg, a request for calling a login event according to an event such as login occurs) is It may be transmitted to the event-based package module call system 120 that is a server through the network 130 under the control of the communication module 113 . Conversely, a control signal, command, content, file, etc. provided under the control of the processor 122 of the event-based package module calling system 120 that is a server passes through the communication module 123 and the network 130 to the electronic device ( It may be received by the electronic device 110 through the communication module 113 of the 110 . For example, a control signal or command of the server 120 received through the communication module 113 may be transmitted to the processor 112 or the memory 111 , and the electronic device 110 may further transmit content or files. It may be stored in a storage medium that may include.

입출력 인터페이스(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 mouse, and the output device may include a device such as a display for displaying a communication session of an application. As another example, the input/output interface 114 may be a means for an interface with a device in which functions for input and output are integrated into one, such as a touch screen. As a more specific example, when the processor 112 of the electronic device 110 processes a command of a computer program loaded in the memory 111 , a service screen or content configured using data provided by the server 120 is an input/output interface It may be displayed on the display through 114 .

또한, 다른 실시예들에서 클라이언트 단말인 전자 기기(110) 및 이벤트 기반 패키지 모듈 호출 시스템인 서버(120)는 도 1의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기(110)은 상술한 입출력 장치(115) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 전자 기기(110)가 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 전자 기기(110)에 더 포함되도록 구현될 수 있음을 알 수 있다.In addition, in other embodiments, the electronic device 110 as a client terminal and the server 120 as an event-based package module calling system may include more components than those of FIG. 1 . However, there is no need to clearly show most of the prior art components. For example, the electronic device 110 is implemented to include at least a portion of the above-described input/output device 115 or other components such as a transceiver, a global positioning system (GPS) module, a camera, various sensors, and a database. may include more. As a more specific example, when the electronic device 110 is a smartphone, an acceleration sensor or a gyro sensor, a camera, various physical buttons, a button using a touch panel, an input/output port, a vibrator for vibration, etc. generally included in the smartphone It can be seen that various components of can 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 externally separately from the server 120 , and the database may be accessed from the server 120 to a website such as a game or a shopping mall, or , It is possible to store and manage various information for providing a call to an event that occurred in various electronic devices (ie, client terminals) in which a communication session for receiving a corresponding service is established through an application and a response to the called event. have. For example, the database includes a module database for storing and managing program packages corresponding to each of a plurality of event modules and a property database for storing and managing program packages related to a plurality of event properties (configuration Items, for example, config file) of each of the plurality of events. may include

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

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

도 2를 참고하면, 클라이언트(201)는 전자 기기(110)에 설치된 모바일 앱 또는 웹브라우저 등을 나타낼 수 있으며, 클라이언트(201)에서 특정 이벤트(로그인 등의 이벤트 1)이 발생함에 따라, 서버(200)는 클라이언트(201)로부터 클라이언트(201)에 설치 및 구동된 어플리케이션 또는 웹브라우저를 통해 상기 발생한 이벤트의 호출을 요청받을 수 있다.Referring to FIG. 2 , the client 201 may represent a mobile app or a web browser installed in the electronic device 110 , and as a specific event (event 1 such as login) occurs in the client 201, the server ( 200 ) may receive a request from the client 201 to call the generated event through an application installed and driven in the client 201 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 (eg, event 1) requested by the client 201, searches for the corresponding event in the module pool 210 and executes it, and uses the execution result as a response to the called event. Alternatively, it may be transmitted to the client 201 through a web browser. That is, a function in which functions related to the called event are implemented can be executed. At this time, the event-based package module call system 200 that is a server in order to process an event using a reflection-based programming language may include a module pool 210 and a module loader 220, and a plurality of events Program packages that collect a plurality of functions corresponding to each may be modularized into the event module 230 and stored and maintained in a database (ie, a module database and an attribute database). In FIG. 2, a case in which the server includes the module pool 210 and the module loader 220 is described as an example, but this corresponds to the embodiment, and the module pool 210 is a memory and may be located outside the server separately from the server. , the module loader 220 may be implemented in a structure included in a server or a processor such as an electronic device separate from 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 modularized program package (eg, a JAR file in the case of Java, a DLL file in the case of C#, etc.) written/generated using a reflection-based programming language, the JAR , DLL, etc., may be implemented using a predefined notation (eg, Annotation in the case of JAVA, Attribute in the case of C#, etc.). Here, the program package may include at least one function in which functions related to a specific event are implemented, and the corresponding function may be defined in the program package in association with a predefined notation (that is, notation information). For example, functions related to the attendance event (eg, entry to a web page or virtual space that provide an attendance event, check attendance, payment of compensation according to continuous attendance, a web page or virtual space that provides an attendance event to a user Functions for providing a result according to an action such as exit of the user) may be associated with a predefined notation for each function corresponding to a specific function. Here, the notation may indicate notation information for identifying that the corresponding function is related to a specific event. As an example of the notation, @ModuleInterface may be used, various symbols such as # and % may be used in addition to @, and other characters may be used in addition to ModuleInterface.

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

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

도 3은 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 방법을 도시한 흐름도이고, 도 4는 본 발명의 일실시예에 있어서, 이벤트 기반 패키지 모듈 호출 시스템의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 블록도이다.3 is a flowchart illustrating an event-based package module calling method according to an embodiment of the present invention, and FIG. 4 is a configuration that the processor of the event-based package module calling system may include in an embodiment of the present invention. It 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)에 의해 수행되는 일부 동작(예컨대, 메모리에서 수행되는 동작들을 제외한 동작으로서, 모듈 풀에서 호출 요청된 이벤트에 해당하는 함수 등을 검색하여 실행하는 동작 등)을 수행할 수 있다.As shown in FIG. 4 , the processor 122 included in the event-based package module calling system 120 and 200 is a component, and includes a modularization unit 410 , an analysis unit 420 , a structuring unit 430 , and a module. An update unit 440 may be included. In FIG. 4 , the analysis unit 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. 2 . can be used to That is, the analysis unit 420 performs some operations performed by the processor 122 during the operation of the module loader 220 (eg, controlling program packages to be loaded into a memory, an operation of analyzing the program packages, etc.) , the structuring unit 430 is an operation excluding some operations performed by the processor 122 during the operation of the module pool 210 (eg, operations performed in the memory, functions corresponding to the event requested in the module pool, etc.) operation to search for and execute, etc.).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

일례로, 구조화부(430)는 클라이언트 1에서 출석 이벤트에 대한 호출 요청이 발생한 경우, 모듈 풀에서 검색된 출석 이벤트에 해당하는 클래스를 검색하여 인스턴스화할 수 있다. 이때, 클라이언트 1과 관련하여 생성된 인스턴스의 식별자 정보는 클라이언트 1의 식별자 정보와 매칭하여 저장될 수 있다. 그리고, 클라이언트 1이 출석 이벤트와 관련하여 연속 출석에 따른 보상을 지급받고 출석 이벤트에 해당하는 가상 공간을 나간 경우, 클라이언트 1과 관련하여 생성된 상기 인스턴스는 삭제되지 않고 재사용될 수 있다. 예컨대, 클라이언트 2에서 출석 이벤트에 대한 호출 요청이 발생한 경우, 클라이언트 1 때 생성된 상기 인스턴스가 재사용될 수 있다. 이처럼, 재사용되는 경우, 상기 인스턴스의 식별자 정보는 클라이언트 1의 식별자 정보에서 클라이언트 2의 식별자 정보로 수정될 수 있다. 여기서, 인스턴스는 서버에서 해당 인스턴스의 삭제를 요청할 때까지 제거되지 않고 재사용될 수 있다. 즉, 인스턴스 삭제 요청 시 제거될 수 있다.As an example, when a call request for an attendance event occurs from client 1, the structuring unit 430 may search for and instantiate a class corresponding to the attendance event found in the module pool. In this case, the identifier information of the instance created in relation to the client 1 may be stored by matching the identifier information of the client 1. In addition, when the client 1 receives a reward for continuous attendance in relation to the attendance event and leaves the virtual space corresponding to the attendance event, the instance created in relation to the client 1 may be reused without being deleted. For example, when a call request for an attendance event occurs at client 2, the instance created at client 1 may be reused. In this way, when reused, the identifier information of the instance may be modified from the identifier information of the client 1 to the identifier information of the client 2. Here, the instance may 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 a call to an attendance event occurs and the execution of the OnJoinRoom function is requested, the structuring unit 430 performs a store event, attendance event, and storage event corresponding to OnJoinRoom found in the module pool. Class (class) can be instantiated and the OnJoinRoom function can be executed. That is, when a call is requested for a store event or a store event in addition to the attendance event from the client, the generated instance of the class may be reused to provide a response to the call-requested store event and store event.

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

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

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

서버(즉, 이벤트 기반 패키지 모듈 호출 시스템)는 모듈 관리 도구(730)를 통해 모듈 갱신 요청(710)을 수신할 수 있다. 예를 들어, 서버의 관리자 등으로부터 상기 모듈 갱신 요청(710)을 위한 표시 정보(버튼, 아이콘 등)가 선택되어 모듈 갱신 요청(710)이 수신될 수 있다.The server (ie, the event-based package module calling system) may receive the module update request 710 through the module management tool 730 . For example, the display information (button, icon, etc.) for the module update request 710 may be selected from the administrator of the server, and the 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 a program package corresponding to the module requested to be updated or added in the module repository 740 which is the module database. In addition, the processor 122 may request the update or addition of the event module requested to be updated or added to the module pool 760 . At this time, before updating or adding the event module corresponding to the stored program package in the module pool 760 , the processor 122 performs the event and the event until the update or addition is completed for the module pool 760 . You can set a lock for the call of the related event module.

예를 들어, 출석 이벤트와 관련된 프로그램 패키지가 수정되어 해당 이벤트 모듈을 갱신하고자 하는 경우, 수정된 프로그램 패키지가 모듈 데이터베이스인 모듈 레파지토리(740)에 저장될 수 있다. 이때, 모듈 풀이 갱신되기 이전에 클라이언트로부터 출석 이벤트에 대한 호출 요청이 발생한 경우, 프로세서(122)는 해당 이벤트의 호출 요청을 수신한 이후 갱신이 완료될 때까지 일정 시간 동안 해당 이벤트의 처리를 대기시킬 수 있다. 즉, 출석 이벤트와 관련된 서비스의 접근 자체를 차단시키는 것이 아니라, 매우 짧은 시간에 갱신이 이루어지므로 출석 이벤트를 위한 가상 공간으로의 클라이언트 접근을 허용하면서 응답을 잠시 대기시킬 수 있다. 이를 위해, 프로세서(122)는 클라이언트로부터의 호출 요청은 수신하되, 해당 이벤트와 관련된 이벤트 모듈의 호출에 대해서는 락(Lock)을 설정할 수 있다. 그리고, 모듈 풀에서 상기 출석 이벤트관련 갱신이 완료되면, 프로세서(122)는 상기 락이 설정된 이벤트 모듈의 호출에 대한 락을 해제(Unlock)할 수 있다.For example, when a program package related to an attendance event is modified and a corresponding event module is to be updated, the modified program package may be stored in the module repository 740 serving as 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 the processing of the event for a certain time after receiving the call request of the event until the update is completed. can That is, it does not block the access of the service related to the attendance event itself, but because the update is made in a very short time, it is possible to wait for a response 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 the client, but may set a lock on the call of the event module related to the corresponding event. And, when the update related to the attendance event in the module pool is completed, the processor 122 may unlock the lock for the call of 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 a program package corresponding to an 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 class, function, and function parameters obtained through analysis. , functions, and function parameters can be updated. Accordingly, the update of the event module related to the attendance event requested to be updated may be completed, and as the update is completed, the processor 122 unlocks the lock on the call of the event module related to the attendance event. can As such, when it is desired to add or update an event module, the module distribution may proceed in a non-stop state without shutting down the server.

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

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

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

도 8은 본 발명의 일실시예에 있어서, 이벤트 모듈을 기반으로 단일 응답 메시지를 제공하는 동작을 도시한 흐름도이고, 도 9는 본 발명의 다른 실시예에 있어서, 프로세서의 내부 구성을 도시한 블록도이다.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, and FIG. 9 is a block diagram illustrating an internal configuration of a processor according to another embodiment of the present invention. It is also

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

도 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)에 의해 수행될 수 있다.Referring to FIG. 9 , the processors 900 and 122 may include a modularizing unit 910 , an analyzing unit 920 , a structuring unit 930 , an information receiving unit 940 , and a message generating unit 950 , and the modularizing unit Operations of the 910 , the analyzer 920 , and the structuring unit 930 are the same as the above-described modularizing unit 910 , the analyzing unit 920 , and the structuring unit 930 of FIG. 4 , and thus overlapping descriptions will be omitted. do. That is, in FIG. 9, the preprocessing process (modularization, structuring through reflection-based analysis) of processing an event based on a module is the same as the preprocessing process already described in FIGS. 3 and 4, and in FIG. 9, after the preprocessing process, in the client In the event that an event call request occurs, the processing of providing a response to the event to the client will be described. Accordingly, each step of FIG. 3 for preprocessing may be performed before step 810 of FIG. 8 , and each step (steps 810 to 830 ) of FIG. 8 may be performed by the processors 122 and 400 .

810 단계에서, 정보 수신부(940)는 클라이언트로부터 특정 이벤트의 호출 요청을 수신할 수 있다. 예컨대, 정보 수신부(940)는 클라이언트에 설치 및 구동된 어플리케이션을 통해 출석 이벤트의 호출 요청을 수신할 수 있다.In operation 810, the information receiver 940 may receive a call request of a specific event from the client. For example, the information receiving unit 940 may receive a call request 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 based on the class and function related to the event module corresponding to the specific event for which the call is requested among the classes and functions of each structured program package to form one single message. You can create a response message.

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

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

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

도 10에서는 서버와 클라이언트 간 메시징의 라운드 트림(Roundtrip Trip)을 최소화하여 성능적 효과를 얻기 위해 복수개의 응답들을 모아 하나 응답으로 처리하는 경우를 예로 들어 설명하나, 이는 실시예에 해당되며, 이벤트 모듈들 각각에서 클라이언트로 직접 메시지를 전송할 수도 있다. In FIG. 10, a case in which a plurality of responses are collected and processed as one response in order to obtain a performance effect by minimizing a roundtrip trip of messaging between the server and the client is described as an example, but this corresponds to the embodiment, and the event module It is also possible to send messages directly to the client from each of them.

도 10의 1000을 참고하면, 클라이언트로부터 이벤트 1에 대한 호출이 요청되면, 프로세서(122, 900)는 해당 이벤트와 관련된 이벤트 모듈을 호출하고, 모듈 풀에서 검색된 클래스 및 함수를 실행함에 따라 발생하는 복수개의 전송할 메시지들(1010, 1020)을 취합하여 단일 응답 메시지(1030)를 생성할 수 있다. 그리고, 생성된 단일 응답 메시지(1030)를 클라이언트로 제공할 수 있다. 즉, 상기 복수개의 전송할 메시지들(예컨대, 도 10의 8개의 응답 메시지들) 각각이 발생할 때마다 바로 클라이언트로 전송하지 않고, 상기 8개의 응답 메시지들을 버퍼 등에 임시 보관하고 있다가 하나의 응답(즉, 단일 응답 메시지)으로 생성하여 클라이언트로 제공할 수 있다. 이때, 모든 이벤트 모듈의 호출이 끝난 이후에 클라이언트로 전송할 복수개의 메시지들이 취합되어 상기 단일 응답 메시지가 생성될 수 있다.Referring to 1000 of FIG. 10 , when a call for event 1 is requested from a client, the processors 122 and 900 call an event module related to the corresponding event, and a plurality of generated classes and functions are executed in the module pool. A single response message 1030 may be generated by collecting the messages 1010 and 1020 to be transmitted. In addition, the generated single response message 1030 may be provided to the client. That is, each of the plurality of messages to be transmitted (eg, the 8 response messages of FIG. 10 ) is not transmitted to the client immediately whenever each occurrence, but the 8 response messages are temporarily stored in a buffer, etc. , a single response message) can be generated and provided to the client. In this case, a plurality of messages to be transmitted to the client may be aggregated to generate the single response message after all event modules are called.

일례로, 프로세서(예컨대, 메시지 생성부)는 특정 이벤트(예컨대, 이벤트 1)와 관련된 이벤트 모듈들(이벤트 모듈 A, B)을 호출하여 해당 클래스 및 함수를 실행하고, 실행 결과로서 제공되는 복수개의 응답 메시지들 (1010, 1020)을 모아서 하나의 단일 응답 메시지를 생성할 수 있다. 이때, 메시지들은 경우에 따라 순서가 있는 메시지(즉, 순서에 유관한 메시지(Sequenced Message))를 포함할 수도 있고, 순서에 관계없는 메시지(즉, 순서에 무관한 메시지(Unified Message))를 포함할 수도 있다. 그러면, 프로세서(예컨대, 메시지 생성부)는 도 11과 같이 순서에 유관한 메시지(1120)와 순서에 무관한 메시지(1110)를 구분하여 단일 응답 메시지(1100)를 생성할 수 있다. 여기서, 순서에 유관한 메시지(1120)는 클라이언트에서 호출이 요청된 특정 이벤트에 해당하는 응답을 제공할 때의 제공 순서를 가지는 것으로 지정된 메시지(즉, 응답 메시지)를 나타낼 수 있다.For example, the processor (eg, the message generator) executes the corresponding class and function by calling the event modules (event modules A and B) related to a specific event (eg, event 1), and provides a plurality of execution results. One single response message may be generated by collecting the response messages 1010 and 1020 . In this case, the messages may include an ordered message in some cases (ie, a sequenced message), and may include a message out of order (ie, a message regardless of the sequence (Unified Message)). You may. Then, the processor (eg, the message generator) may generate a single response message 1100 by distinguishing the message 1120 related to the order and the message 1110 irrelevant to the order as shown in FIG. 11 . Here, the order-related message 1120 may indicate a message (ie, a response message) designated as having a provision order when the client provides a response corresponding to a specific event for which a call is requested.

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

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

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

일례로, 특정 이벤트와 관련된 이벤트 모듈(예컨대, 이벤트 모듈 A, B, C)이 복수개인 경우, 프로세서(122, 900)는 내부순환이벤트(1051)를 통해 복수개의 이벤트 모듈 각각을 호출하여 해당 함수를 실행할 수 있다. 그리고, 모든 이벤트 모듈들(예컨대, 이벤트 모듈 A, B, C)관련 함수의 실행이 완료되면, 실행 결과로서 복수개의 응답 메시지들이 생성될 수 있다. 이때, 프로세서(122, 900)는 복수개의 응답 메시지들을 모아서 단일 응답 메시지로 생성할 수 있으며, 생성된 단일 응답 메시지를 클라이언트로 제공할 수 있다. 이때, 내부순환이벤트(1051)를 통해 다른 이벤트 모듈들을 호출하는 경우, 동기식 또는 비동기식으로 다른 이벤트 모듈이 호출되어 해당 이벤트관련 함수가 실행될 수 있다. 예컨대, 동기식으로 처리되는 경우, 서버의 실행코드가 블록킹(blocking)될 수 있다. 즉, 실행 결과에 대한 응답이 발생할 때까지 다음 코드를 실행하지 않고 대기할 수 있다. 그리고, 응답이 발생하면 다음 코드가 실행될 수 있다. 비동기식으로 처리되는 경우, 서버의 실행 코드가 논블록킹(Non-Blocking)될 수 있다. 예컨대, 응답이 오지 않았더라도 바로 다음 코드를 실행하고, 다음 코드 실행 중에 응답이 발생하면, 발생된 응답을 클라이언트로 제공하는 등의 처리가 수행될 수 있다.For example, when there are a plurality of event modules (eg, event modules A, B, and C) related to a specific event, the processors 122 and 900 call each of the plurality of event modules through the internal circulation event 1051 to function can run And, when the execution of all event modules (eg, event modules A, B, and C) related functions is completed, a plurality of response messages may be generated as a result of execution. In this case, the processors 122 and 900 may collect a plurality of response messages to generate a single response message, and may provide the generated single response message to the client. In this case, when other event modules are called through the internal cycle event 1051, other event modules are called synchronously or asynchronously, and a corresponding event-related function may be executed. For example, in the case of synchronous processing, 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. And, when a response occurs, the following code can be executed. In the case of asynchronous processing, the server's executable code may be non-blocking. For example, even if there is no response, the next code is immediately executed, and if a response occurs during the execution of the next code, processing such as providing the generated response to the client may 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 device described above may be implemented as a hardware component, a software component, or a combination of a hardware component and a software component. For example, devices and components described in the embodiments may include, 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, may be implemented using one or more general purpose or special purpose computers. 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 convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that can include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.

소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may be distributed over networked computer systems, and stored or executed in a distributed manner. Software and data may be stored in 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 the embodiment may be implemented in the form of program instructions 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, etc. alone or in combination. The program instructions recorded on the medium may be specially designed and configured for the embodiment, or may be known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic such as floppy disks. - includes magneto-optical media, and hardware devices specially configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with reference to the limited embodiments and drawings, various modifications and variations are possible from the above description by those skilled in the art. For example, the described techniques are performed in a different order than the described method, and/or the described components of the system, structure, apparatus, circuit, etc. are combined or combined in a different form than the described method, or other components Or substituted or substituted by equivalents may achieve an appropriate result.

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

Claims (20)

컴퓨터에 의해 실행되는 이벤트 기반 패키지 모듈 호출 방법에 있어서,
리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계;
복수의 이벤트 별 상기 프로그램 패키지를 로딩(loading)하는 단계;
상기 리플렉션(reflection)을 사용하여 로딩된 상기 프로그램 패키지를 분석하는 단계; 및
분석된 상기 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 단계
를 포함하고,
상기 이벤트 모듈로 모듈화하는 단계는,
상기 특정 이벤트와 관련된 복수의 기능들 각각을 미리 지정된 노테이션(notation)과 연관시켜 모듈화하는 단계
를 포함하고,
상기 로딩하는 단계는,
상기 프로그램 패키지에서 상기 미리 지정된 노테이션을 사용하여 상기 특정 이벤트와 관련된 이벤트 함수를 로딩하는 단계
를 포함하고,
상기 분석하는 단계는,
상기 이벤트 함수 로딩 시 상기 특정 이벤트와 관련하여 정의된 함수, 변수, 클래스 정보를 분석하는 단계
를 포함하고,
상기 이벤트 별로 구조화하는 단계는,
상기 프로그램 패키지의 클래스(class) 및 함수를 해시(Hash) 함수에 기초하여 이벤트 별로 구조화하고, 상기 구조화된 이벤트 별 클래스(class) 및 함수에 기초하여, 클라이언트로부터 호출 요청된 특정 이벤트에 해당하는 클래스 또는 함수를 실행하고, 상기 클래스 또는 함수를 실행한 실행 결과를 호출된 상기 특정 이벤트에 대한 응답으로 상기 클라이언트로 전달하는 단계
를 포함하는 이벤트 기반 패키지 모듈 호출 방법.
A method for calling an event-based package module executed by a computer, the method comprising:
modularizing a program package in which a plurality of functions related to a specific event are implemented into an event module using a reflection-based programming language;
loading the program package for each of a plurality of events;
parsing the loaded program package using the reflection; and
Structuring classes and functions of the analyzed program package for each event
including,
The step of modularizing into the event module,
Modularizing each of a plurality of functions related to the specific event by associating it with a predetermined notation
including,
The loading step is
loading an event function related to the specific event using the predetermined notation in the program package;
including,
The analyzing step is
Analyzing function, variable, and class information defined in relation to the specific event when loading the event function
including,
The step of structuring for each event is
The class and function of the program package are structured for each event based on a hash function, and a class corresponding to a specific event requested by the client based on the structured class and function for each event. or executing a function, and transmitting an execution result of executing the class or function to the client in response to the called specific event
How to call an event-based package module containing
삭제delete 제1항에 있어서,
상기 특정 이벤트와 관련된 클래스 또는 함수를 실행하기 위한 이벤트 모듈은 동기식 또는 비동기식으로 호출되는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
According to claim 1,
An event module for executing a class or function related to the specific event is called synchronously or asynchronously
An event-based package module invocation method, characterized by
삭제delete 삭제delete 제1항에 있어서,
상기 프로그램 패키지에 해당하는 이벤트 모듈을 갱신하고자 하는 경우, 갱신하고자 하는 이벤트 모듈의 호출에 대한 락(Lock)이 설정되는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
According to claim 1,
When the event module corresponding to the program package is to be updated, a lock is set for the call of the event module to be updated.
An event-based package module invocation method, characterized by
제6항에 있어서,
상기 이벤트 별로 구조화된 클래스 및 함수가 갱신을 위해 로딩된 상기 이벤트 모듈에 해당하는 프로그램 패키지를 대상으로 분석된 클래스 및 함수를 나타내도록 갱신하는 단계
를 더 포함하는 이벤트 기반 패키지 모듈 호출 방법.
7. The method of claim 6,
updating the class and function structured for each event to indicate the analyzed class and function for the program package corresponding to the event module loaded for update;
An event-based package module invocation method further comprising a.
제6항에 있어서,
상기 프로그램 패키지와 관련된 이벤트의 호출에 대해 설정된 락(Lock)은 상기 갱신이 완료됨에 따라 해제되는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
7. The method of claim 6,
The lock set for the invocation of the event related to the program package is released as the update is completed.
An event-based package module invocation method, characterized by
제6항에 있어서,
상기 프로그램 패키지에 해당하는 이벤트 모듈의 속성(configuration Items)을 갱신하고자 하는 경우, 상기 속성의 갱신이 완료될 때까지 갱신하고자 하는 상기 속성과 관련된 이벤트 모듈의 호출에 대한 락(Lock)이 설정되는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
7. The method of claim 6,
When it is desired to update the properties (configuration items) of the event module corresponding to the program package, a lock is set for the call of the event module related to the property to be updated until the update of the properties is completed
An event-based package module invocation method, characterized by
제1항에 있어서,
상기 프로그램 패키지는 JAR 파일 또는 DLL 파일을 나타내는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 방법.
According to claim 1,
The above program package would represent a JAR file or a DLL file
An event-based package module invocation method, characterized by
리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들을 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 모듈화부;
복수의 이벤트 별 상기 프로그램 패키지를 로딩(loading)하고, 상기 리플렉션(reflection)을 사용하여 로딩된 상기 프로그램 패키지를 분석하는 분석부; 및
분석된 상기 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 구조화부
를 포함하고,
상기 모듈화부는,
상기 특정 이벤트와 관련된 복수의 기능들 각각을 미리 지정된 노테이션(notation)과 연관시켜 모듈화하는 것을 포함하고,
상기 분석부는,
상기 프로그램 패키지에서 상기 미리 지정된 노테이션을 사용하여 상기 특정 이벤트와 관련된 이벤트 함수를 로딩하고, 상기 이벤트 함수 로딩 시 상기 특정 이벤트와 관련하여 정의된 함수, 변수, 클래스 정보를 분석하는 것을 포함하고,
상기 구조화부는,
상기 프로그램 패키지의 클래스(class) 및 함수 해시(Hash) 함수에 기초하여 이벤트 별로 구조화하고, 상기 구조화된 이벤트 별 클래스(class) 및 함수에 기초하여, 클라이언트로부터 호출 요청된 특정 이벤트에 해당하는 클래스 또는 함수를 실행하고, 상기 클래스 또는 함수를 실행한 실행 결과를 호출된 상기 특정 이벤트에 대한 응답으로 상기 클라이언트로 전달하는
이벤트 기반 패키지 모듈 호출 시스템.
a module module for modularizing a program package in which a plurality of functions related to a specific event are implemented into an event module using a reflection-based programming language;
an analysis unit that loads the program package for each of a plurality of events and analyzes the loaded program package using the reflection; and
A structuring unit for structuring classes and functions of the analyzed program package for each event
including,
The modularization unit,
Including modularizing each of a plurality of functions related to the specific event by associating it with a predetermined notation,
The analysis unit,
Loading an event function related to the specific event by using the predetermined notation in the program package, and analyzing function, variable, and class information defined in relation to the specific event when the event function is loaded,
The structuring unit,
Structured for each event based on the class and function hash function of the program package, and based on the structured event-specific class and function, a class corresponding to a specific event requested by the client or Executes a function and delivers the execution result of executing the class or function to the client in response to the called specific event
Event-based package module invocation system.
삭제delete 제11항에 있어서,
상기 특정 이벤트와 관련된 클래스 또는 함수를 실행하기 위한 이벤트 모듈은 동기식 또는 비동기식으로 호출되는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
12. The method of claim 11,
An event module for executing a class or function related to the specific event is called synchronously or asynchronously
An event-based package module invocation system, characterized by
삭제delete 삭제delete 제11항에 있어서,
상기 프로그램 패키지에 해당하는 이벤트 모듈을 갱신하고자 하는 경우, 갱신하고자 하는 이벤트 모듈의 호출에 대한 락(Lock)을 설정하고, 갱신하고자 하는 이벤트 모듈에 해당하는 프로그램 패키지를 모듈 데이터베이스에서 로딩하는 모듈 업데이트부
를 더 포함하는 이벤트 기반 패키지 모듈 호출 시스템.
12. The method of claim 11,
When an event module corresponding to the program package is to be updated, a module update unit that sets a lock for the call of the event module to be updated and loads the program package corresponding to the event module to be updated from the module database
An event-based package module invocation system further comprising a.
제16항에 있어서,
상기 모듈 업데이트부는,
상기 이벤트 별로 구조화된 클래스 및 함수가 상기 분석된 클래스 및 함수를 나타내도록 갱신하는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
17. The method of claim 16,
The module update unit,
Updating the structured class and function for each event to indicate the analyzed class and function
An event-based package module invocation system, characterized by
제16항에 있어서,
상기 프로그램 패키지와 관련된 이벤트의 호출에 대해 설정된 락(Lock)은 상기 갱신이 완료됨에 따라 해제되는 것
을 특징으로 하는 이벤트 기반 패키지 모듈 호출 시스템.
17. The method of claim 16,
A lock set for invocation of an event related to the program package is released as the update is completed.
An event-based package module invocation system, characterized by
컴퓨터로 구현되는 서버 장치와 결합되어 이벤트 기반 패키지 모듈 호출 방법을 실행시키기 위해 기록매체에 저장된 컴퓨터 프로그램에 있어서,
상기 이벤트 기반 패키지 모듈 호출 방법은,
리플렉션(reflection) 기반 프로그래밍 언어를 사용하여 특정 이벤트와 관련된 복수의 기능들이 구현된 프로그램 패키지(program package)를 이벤트 모듈로 모듈화하는 단계;
복수의 이벤트 별 상기 프로그램 패키지를 로딩(loading)하는 단계;
상기 리플렉션(reflection)을 사용하여 로딩된 상기 프로그램 패키지를 분석하는 단계; 및
분석된 상기 프로그램 패키지의 클래스(class) 및 함수를 이벤트 별로 구조화하는 단계
를 포함하고,
상기 이벤트 모듈로 모듈화하는 단계는,
상기 특정 이벤트와 관련된 복수의 기능들 각각을 미리 지정된 노테이션(notation)과 연관시켜 모듈화하는 단계
를 포함하고,
상기 로딩하는 단계는,
상기 프로그램 패키지에서 상기 미리 지정된 노테이션을 사용하여 상기 특정 이벤트와 관련된 이벤트 함수를 로딩하는 단계
를 포함하고,
상기 분석하는 단계는,
상기 이벤트 함수 로딩 시 상기 특정 이벤트와 관련하여 정의된 함수, 변수, 클래스 정보를 분석하는 단계
를 포함하고,
상기 이벤트 별로 구조화하는 단계는,
상기 프로그램 패키지의 클래스(class) 및 함수를 해시(Hash) 함수에 기초하여 이벤트 별로 구조화하고, 상기 구조화된 이벤트 별 클래스(class) 및 함수에 기초하여, 클라이언트로부터 호출 요청된 특정 이벤트에 해당하는 클래스 또는 함수를 실행하고, 상기 클래스 또는 함수를 실행한 실행 결과를 호출된 상기 특정 이벤트에 대한 응답으로 상기 클라이언트로 전달하는 단계
를 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
In the computer program stored in the recording medium to execute the event-based package module calling method in combination with a server device implemented as a computer,
The event-based package module calling method is
modularizing a program package in which a plurality of functions related to a specific event are implemented into an event module using a reflection-based programming language;
loading the program package for each of a plurality of events;
parsing the loaded program package using the reflection; and
Structuring classes and functions of the analyzed program package for each event
including,
The step of modularizing into the event module,
Modularizing each of a plurality of functions related to the specific event by associating it with a predetermined notation
including,
The loading step is
loading an event function related to the specific event using the predetermined notation in the program package;
including,
The analyzing step is
Analyzing function, variable, and class information defined in relation to the specific event when the event function is loaded
including,
The step of structuring for each event is
The class and function of the program package are structured for each event based on a hash function, and a class corresponding to a specific event requested by the client based on the structured class and function for each event. or executing a function, and transmitting an execution result of executing the class or function to the client in response to the called specific event
A computer program comprising a.
삭제delete
KR1020170091705A 2017-07-19 2017-07-19 Method and system for invoking event based package module KR102327927B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170091705A KR102327927B1 (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
KR1020170091705A KR102327927B1 (en) 2017-07-19 2017-07-19 Method and system for invoking event based package module

Publications (2)

Publication Number Publication Date
KR20190009878A KR20190009878A (en) 2019-01-30
KR102327927B1 true KR102327927B1 (en) 2021-11-19

Family

ID=65276893

Family Applications (1)

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

Country Status (1)

Country Link
KR (1) KR102327927B1 (en)

Citations (3)

* 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
US20160217176A1 (en) * 2015-01-25 2016-07-28 Iguazio Systems Ltd. Application-centric object configuration

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130048904A (en) * 2011-11-03 2013-05-13 (주)한성에스엠비솔루션 System for instolling network attached storate application package and method thereof

Patent Citations (3)

* 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
US20160217176A1 (en) * 2015-01-25 2016-07-28 Iguazio Systems Ltd. Application-centric object configuration

Also Published As

Publication number Publication date
KR20190009878A (en) 2019-01-30

Similar Documents

Publication Publication Date Title
US11216256B2 (en) Determining based on static compiler analysis that execution of compiler code would result in unacceptable program behavior
US7181686B1 (en) Selecting screens in a GUI using events generated by a set of view controllers
Taivalsaari et al. Web browser as an application platform
US6880126B1 (en) Controlling presentation of a GUI, using view controllers created by an application mediator, by identifying a destination to access a target to retrieve data
US6292933B1 (en) Method and apparatus in a data processing system for systematically serializing complex data structures
US6779177B1 (en) Mechanism for cross channel multi-server multi-protocol multi-data model thin clients
CN111198730B (en) Method, device, terminal and computer storage medium for starting sub-application program
JP7231347B2 (en) Method and system for calling event-based package module
KR101854975B1 (en) Method and system for extending function of package file
US11960930B2 (en) Automated software robot creation for robotic process automation
US11782734B2 (en) Method and system for text extraction from an application window for robotic process automation
CN111309620B (en) Game protocol testing method and device, electronic equipment and storage medium
US20220032457A1 (en) Robotic Process Automation with Resilient Playback of Recordings
US6862686B1 (en) Method and apparatus in a data processing system for the separation of role-based permissions specification from its corresponding implementation of its semantic behavior
KR102332506B1 (en) Method and system for invoking event based package module
JP2023542646A (en) Smart span prioritization based on plug-in service backpressure
KR102327927B1 (en) Method and system for invoking event based package module
US20230050430A1 (en) Robotic process automation system for managing human and robotic tasks
US11675802B1 (en) Graphical user interface and flexible architecture for a rule engine
KR20180048518A (en) Method and system for extending function of package file
Ramgir et al. Java 9 High Performance: Practical techniques and best practices for optimizing Java applications through concurrency, reactive programming, and more
Lin et al. SPADE: Scalable App Digging with Binary Instrumentation and Automated Execution
Tricoire et al. KevoreeJS: Enabling dynamic software reconfigurations in the Browser
US20230046322A1 (en) Robotic process automation system for managing human, robotic and external tasks
US20030051072A1 (en) Application program interface for a computer program

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