KR101398959B1 - Interface method and apparatus by using plug-in - Google Patents

Interface method and apparatus by using plug-in Download PDF

Info

Publication number
KR101398959B1
KR101398959B1 KR1020120069908A KR20120069908A KR101398959B1 KR 101398959 B1 KR101398959 B1 KR 101398959B1 KR 1020120069908 A KR1020120069908 A KR 1020120069908A KR 20120069908 A KR20120069908 A KR 20120069908A KR 101398959 B1 KR101398959 B1 KR 101398959B1
Authority
KR
South Korea
Prior art keywords
message
meb
dll
mec
plug
Prior art date
Application number
KR1020120069908A
Other languages
Korean (ko)
Other versions
KR20140002930A (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 KR1020120069908A priority Critical patent/KR101398959B1/en
Publication of KR20140002930A publication Critical patent/KR20140002930A/en
Application granted granted Critical
Publication of KR101398959B1 publication Critical patent/KR101398959B1/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

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

본 발명은 플러그인 인터페이스 시스템을 구현하는 데 있어서 추상 인터페이스를 이용한 플러그인 인터페이스 방법 및 장치를 개시한다. 본 발명에 따른 인터페이스 방법은 메시지 교환 버스(MEB)에서 정의된 추상 인터페이스를 생성하는 단계, 생성된 추상 인터페이스를 이용하여 메시지 교환 컴포넌트(MEC)의 동적 링크 라이브러리(DLL)을 생성하는 단계, 생성된 DLL과 MEB를 연결하고, MEB에 저장된 데이터를 이용하여 데이터를 송수신하는 단계를 포함한다. 본 발명에 따르면, 별도의 플러그인 제공자가 없더라도 추상 인터페이스를 참조함으로써 컴파일 타임에 발생할 수 있는 프레임워크 객체 참조로 인한 종속성 문제를 해결할 수 있다. The present invention discloses a plug-in interface method and apparatus using an abstract interface in implementing a plug-in interface system. An interface method according to the present invention comprises the steps of creating an abstract interface defined in a message exchange bus (MEB), creating a dynamic link library (DLL) of a message exchange component (MEC) using the abstract interface created, Connecting the DLL and the MEB, and transmitting and receiving data using the data stored in the MEB. According to the present invention, even if there is no separate plug-in provider, it is possible to solve the dependency problem due to the reference of the framework object that may occur at compile time by referring to the abstract interface.

Description

플러그인을 이용한 인터페이스 방법 및 장치 {INTERFACE METHOD AND APPARATUS BY USING PLUG-IN}[0001] INTERFACE METHOD AND APPARATUS BY USING PLUG-IN [0002]

본 발명은 모델링 및 시뮬레이션 기술을 응용한 시뮬레이션 프레임워크를 개발하는 경우 플러그인을 이용한 인터페이스 방법 및 장치에 관한 것이다.The present invention relates to an interface method and apparatus using a plug-in when developing a simulation framework using modeling and simulation technology.

개발 시스템을 성공적으로 구축하기 위하여 적합한 소프트웨어 아키텍처 설계와 공통의 실행환경을 제공하는 프레임워크 개발이 필요하며, 개발 시스템은 사용자 요구사항 변경에 대한 용이성, 구성 요소의 신뢰성 및 재사용성을 높일 수 있는 구조를 제공해야 한다.In order to successfully build a development system, it is necessary to develop a software architecture design and a framework that provides a common execution environment. The development system is required to be easy to change user requirements, to increase the reliability and reusability of components .

따라서, 대규모 시스템 개발에 있어서, 시스템 일부 모듈의 수정 및 변경시 시스템 통합 문제 해결의 필요성이 있었으며, 이러한 문제점을 해결하기 위하여 플러그인 플레이(Plug & Play)방식의 아키텍쳐가 제시되었다.Therefore, in the development of a large-scale system, there is a need to solve the problem of system integration when modifying or modifying some of the system modules. To solve these problems, a plug-and-play architecture has been proposed.

그러나, 종래 플러그인 프레임워크들은 플러그인 대상과 플러그인 제공자 간 결합(Coupling)이 존재한다. 즉, 플러그인 대상이 플러그인 제공자의 객체(Instance)를 알아야 하는 문제점이 있었는바, 플러그인 모듈을 개발하는 시점에서 플러그인 기능을 제공하는 프레임워크의 인터페이스 구현을 접근할 수 없다는 문제점이 있었다.However, conventional plug-in frameworks have a coupling between a plug-in target and a plug-in provider. That is, there is a problem that the plug-in target needs to know the object of the plug-in provider. Thus, there is a problem that the interface implementation of the framework that provides the plug-in function can not be accessed at the time of developing the plug-in module.

종래 기술의 문제를 고려하여, 본 발명은 플러그인 제공자가 되는 프레임워크나 로더 등의 작동이 없더라도 즉, 플러그인 대상자의 실행 파일(DLL) 구현 시 플러그 인 기능을 제공하는 모듈의 널(Null)객체를 정의하여 플러그인 프레임워크와 독립적인 구현 환경을 제공할 수 있도록 메시지 객체의 인터페이스 방법을 제시하는 것을 목적으로 한다. 또한, DLL간의 교환 정보에 대한 라우팅 테이블을 동적으로 생성하여 상대방의 정보를 교환하지 아니하더라도 교환 데이터를 교환하는 것을 목적으로 한다.In consideration of the problems of the prior art, the present invention provides a method for managing a null object of a module providing a plug-in function in the implementation of an executable file (DLL) of a plug-in target person without the operation of a framework or a loader as a plug- The purpose of this paper is to propose an interface method of message objects to provide a plug-in framework independent implementation environment. It also aims to exchange the exchange data even if the other party's information is not exchanged by dynamically generating the routing table for the exchange information between the DLLs.

상술한 기술적 과제를 달성하기 위한 본 발명에 따른 플러그인 인터페이스 방법은 플러그인 시스템에 있어서, 실행 파일 생성을 위한 추상 인터페이스(Abstract Interface)를 생성하는 단계; 상기 추상 인터페이스를 참조하여 메시지 교환 컴포넌트(MEC: Message Exchanging Component)의 동적 링크 라이브러리(DLL: Dynamic Linking Library)를 생성하는 단계; 상기 MEC의 DLL과 메시지 교환 버스(MEB: Message Exchange Bus)를 연결하는 단계; 및 상기 MEC의 DLL과 상기 MEB 상호간 데이터를 송수신하는 단계를 포함하는 플러그인 인터페이스 설정 방법을 포함한다.According to another aspect of the present invention, there is provided a plug-in interface method comprising: generating an abstract interface for generating an executable file; Generating a dynamic linking library (DLL) of a message exchange component (MEC) by referring to the abstract interface; Connecting a DLL of the MEC with a message exchange bus (MEB); And transmitting and receiving data between the DLL and the MEB of the MEC.

상술한 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 플러그인 인터페이스 장치는 플러그인 컴포넌트(Plug-in Component)의 실행 파일을 생성하기 위한 추상 인터페이스(Abstract Interface); 상기 추상 인터페이스를 참조하여 플러그인 컴포넌트(Plug-in Component)의 동적 라이브러리(DLL: Dynamic Linking Library)를 생성하며 플러그인 프레임워크 (Plug-in Framework)에 연결되어 데이터를 송수신하는 메세지 교환 컴포넌트(MEC: Message Exchanging Component)모듈; 및 상기 MEC 모듈과 데이터 송수신하는 메세지 교환 버스(MEB: Message Exchange Bus)모듈을 포함하는 인터페이스 장치를 포함한다.According to another aspect of the present invention, there is provided a plug-in interface device including an abstract interface for generating an executable file of a plug-in component; A message exchange component (MEC) for generating a dynamic library (DLL: Dynamic Linking Library) of a plug-in component with reference to the abstract interface and connected to a plug-in framework to transmit / Exchanging Component) module; And an interface device including a Message Exchange Bus (MEB) module for transmitting and receiving data to and from the MEC module.

본 발명에 따르면 플러그인 대상자(DLL)의 구현시 프레임워크나 로더등의 별도의 플러그인 제공자가 없더라도 추상 인터페이스를 참조한다. 이러한 방식으로 컴파일 타임에 발생할 수 있는 프레임워크 객체 참조로 인한 종속성 문제를 해결할 수 있다. 또한 본 발명에 따르면 DLL 개발시에도 프레임워크 생성여부와 관계없이 자신의 기능 모듈만 구현할 수 있는 효과를 제공한다.According to the present invention, when implementing a plug-in target object (DLL), an abstract interface is referred to even if there is no separate plug-in provider such as a framework or a loader. In this way, you can solve dependency problems caused by references to framework objects that can occur at compile time. Also, according to the present invention, it is possible to implement only the function module of the DLL module regardless of whether the DLL module is created or not.

도 1은 본 발명의 일 실시예에 따른 플러그인 인터페이스 방법을 나타내는 순서도이다.
도 2는 추상 인터페이스의 예를 나타내는 참고도이다.
도 3은 본 발명의 일 실시예에 따른 플러그인 인터페이스 장치를 나타내는 블록도이다.
도 4는 메시지 교환 컴포넌트(MEC)의 구성을 나타내는 블록도이다.
1 is a flowchart illustrating a plug-in interface method according to an embodiment of the present invention.
2 is a reference diagram showing an example of an abstract interface.
3 is a block diagram illustrating a plug-in interface device according to an embodiment of the present invention.
4 is a block diagram illustrating a configuration of a message exchange component (MEC).

이하에서는 도면과 실시예를 참고하여 본 발명의 추상 인터페이스를 이용한 플러그인 인터페이스 방법 및 장치에 대하여 구체적으로 설명한다.Hereinafter, a plug-in interface method and apparatus using the abstract interface of the present invention will be described in detail with reference to the drawings and embodiments.

도1 은 본 발명의 일 실시예에 따른 추상 인터페이스를 이용한 플러그인 인터페이스 방법을 도시한 것이다. FIG. 1 illustrates a plug-in interface method using an abstract interface according to an embodiment of the present invention.

플러그인 시스템에 있어서, 실행 파일 생성을 위한 추상 인터페이스(Abstract Interface)를 생성하는 단계(S100)는 실행 코드를 컴파일하여 실행 파일을 생성하기 위한 추상 인터페이스를 생성하는 단계이다.In the plug-in system, step (S100) of creating an abstract interface for generating an executable file is a step of creating an abstract interface for compiling executable code to generate an executable file.

실행 코드는 사용자에 의하여 미리 작성된 컴퓨터에 의하여 판독 가능한 명령을 말한다. 실행 코드는 C++, JAVA와 같은 프로그래밍 언어와 같은 것을 이용하여 작성될 수 있다.An execution code is a command readable by a computer, which is prepared in advance by a user. Executable code can be written using the same programming language as C ++, JAVA, etc.

실행 파일은 동적 라이브러리 파일을 포함하며 동적 라이브러리 파일은 정적 링크 라이브러리 파일(Static Linked Library)과 *.DLL 확장자 형식의 동적 링크 라이브러리 파일로도 구분될 수 있다.Executable files include dynamic library files. Dynamic library files can also be classified as static link library files and dynamic link library files in the * .DLL extension format.

동적 링크 라이브러리 파일의 경우 링크에 필요한 최소한의 정보만을 실행 코드에 삽입하여 실행시간에 동작코드를 참조하는 방식으로 플러그인 시스템에서 수행된다. 따라서, 일반적으로 동적 라이브러리를 구현하고 컴파일하려면, 시스템간 링크에 필요한 최소한의 정보를 실행 바이너리 혹은 실행 코드에 삽입하여야 한다.In the case of a dynamic link library file, only a minimum amount of information required for a link is inserted into an execution code, and the operation code is referred to at execution time. Therefore, in order to implement and compile a dynamic library in general, you need to insert the minimum information needed for the inter-system link into the executable binary or executable code.

다만, 동적 링크 라이브러리의 경우에 링크시 에러를 방지할 필요가 있으므로 본 발명은 추상 인터페이스를 생성하여 DLL의 컴파일시 참조를 결정함으로써, 실행 파일의 컴파일시 링크시간 에러를 방지할 수 있다. However, in the case of the dynamic link library, since it is necessary to prevent an error in linking, the present invention can prevent link time error when compiling an executable file by generating an abstract interface and determining a reference when a DLL is compiled.

도2 를 참조하여 설명하면, 플러그인 프레임워크의 클라이언트 혹은 플러그인 프레임워크의 실행 파일인 메세지 교환 컴포넌트(MEC: Message Exchanging Component)와 MEB가 상호작용하기 위한 함수를 Null MEB 모듈의 추상 인터페이스로 구현하여 제공할 수 있다. 추상 인터페이스의 구현 예로, 메시지 교환 버스(MEB: Message Exchange Bus)로 구현되는 플러그인 프레임워크를 참조하여 MEB와 동일한 함수를 선언할 수 있다.Referring to FIG. 2, a function for interacting with a message exchange component (MEC: Message Exchanging Component), which is an executable file of a plug-in framework client or a plug-in framework, is implemented by implementing an abstract interface of a Null MEB module can do. As an implementation of the abstract interface, the same function as the MEB can be declared by referring to the plugin framework implemented in the Message Exchange Bus (MEB).

플러그인 프레임워크란 프로그램 개발 및 실행 환경을 말하며, 네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화할 수 있으며,가상 머신위에서 동작할 수있다. 플러그인 프레임워크는 플러그인 프로그램을 프레임워크에 연결함으로써 플러그인 프로그램이 별도의 조치가 없더라고 프레임워크와 연동하여 프로그램을 수행할 수 있는 시스템을 포함할 수 있다.The plug-in framework is a program development and execution environment. It can encapsulate many tasks such as network operations and interfaces, and can operate on virtual machines. The plug-in framework may include a system that allows a plug-in program to run a program in conjunction with the framework, without any action being taken, by connecting the plug-in program to the framework.

상호작용이란 MEC와 MEB가 함수를 이용하여 상호간에 데이터를 교환하며 상호간 데이터 교환에 따른 처리를 하는 작용을 말한다. 데이터는 핸들 값을 가질 수 있으며, MEC와 MEB는 핸들 값을 참조하여 데이터를 관리할 수 있도록 구현될 수 있다.Interaction refers to the function of the MEC and the MEB to exchange data with each other using a function and to perform processing according to mutual data exchange. Data can have handle values, and MEC and MEB can be implemented to manage data by referring to handle values.

추상 인터페이스를 참조하여 메시지 교환 컴포넌트(MEC: Message Exchanging Component)의 동적 링크 라이브러리(DLL: Dynamic Linking Library)를 생성하는 단계(S200)는 MEC를 컴파일하여 실행 파일을 생성하는 단계이다. 실행 파일은 동적 링크 라이브러리(DLL) 형식의 파일을 포함한다.Step S200 of creating a dynamic linking library (DLL) of a message exchange component (MEC) by referring to the abstract interface is a step of generating an executable file by compiling the MEC. The executable file contains a file in the form of a dynamic link library (DLL).

동적 링크 라이브러리의 구현 예로 추상 인터페이스의 함수를 실행 코드에 삽입하여 참조하며 DLL을 생성하도록 구현할 수 있다. MEC의 DLL을 생성하고자 할 때 MEB의 함수를 참조하는 것이 아닌 추상 인터페이스를 참조한다. 즉, 실행을 위한 링크시간까지 MEB를 참조하지 아니함으로써 프레임워크에 대한 의존성을 감소시킬 수 있다.An implementation of a dynamic link library can be implemented by creating a DLL by referencing a function of an abstract interface by inserting it into the executable code. When you want to create a DLL for the MEC, you refer to the abstract interface, not to the functions of the MEB. That is, the dependency on the framework can be reduced by not referring to the MEB until the link time for execution.

상기 MEC의 DLL과 메시지 교환 버스(MEB: Message Exchange Bus)를 연결하는 단계(S300)는 MEB와 MEC의 DLL을 연결하도록 시스템을 구현한다. MEC의 DLL은 MEB에 대하여 메시지를 송신하며, MEB는 MEC의 DLL이 송신하는 메시지를 수신한다. MEB는 MEC의 DLL로부터 수신된 메시지를 문장 분석(Parsing)하여 라우팅 정보와 객체 모델을 추출할 수 있다.A step S300 of connecting the DLL of the MEC and a message exchange bus (MEB) implements the system to connect the DLL of the MEB and the MEC. The DLL of the MEC sends a message to the MEB, which receives the message sent by the DLL of the MEC. MEB can extract routing information and object model by parsing the message received from MEC's DLL.

문장 분석(Parsing)이란 수신된 메시지를 분석하여 문장의 구문을 분석하는 것으로 메시지 송신자, 메시지 수신자, 객체 모델과 같은 정보를 구분할 수 있다.Parsing is the parsing of a sentence by analyzing the received message to distinguish the information such as the sender of the message, the message receiver, and the object model.

문장 분석을 통하여 추출된 정보 중 메시지 전송과 관련하여 송수신자를 식별할 수 있는 라우팅 정보는 라우팅 테이블에 저장한다. 플러그인 시스템에 있어서, MEB를 참조하지 아니하고 추상 인터페이스를 참조하여 DLL을 생성하였으므로, MEB에서는 메시지의 송수신 주체를 저장할 필요가 있다. Among the information extracted through sentence analysis, routing information that can identify the sender / receiver in relation to message transmission is stored in the routing table. In the plug-in system, since the DLL is created by referring to the abstract interface without referring to the MEB, the MEB needs to store the sender / receiver of the message.

또 다른 예로는 객체 모델에 대응되는 XML로 구성된 객체 모델을 생성하는 단계를 더 포함할 수 있다. 독립적으로 DLL을 개발한다는 것은 상대 DLL을 알 수 없는 문제점을 가지는 바 XML로 된 객체모델 즉, 교환정보를 클래스화시킨 XML을 이용하여, 플러그인 프레임워크인 MEB에 MEC가 플러그인이 된 경우 DLL간 정보를 교환할 수 있도록 기능한다.Yet another example may include creating an object model composed of XML corresponding to an object model. Independently developing a DLL has a problem that the relative DLL is not known. When the MEC is plugged in the plug-in framework MEB using the XML object model, that is, the exchange information classified as XML, To be exchanged.

예를 들어, 객체모델은 Sharing 정보를 가지고 있어 Publish 또는 Subscribe를 표시할 수 있다. 예를 들어, <Objectclass messageName="Missile" sharing "publish">는 Missile 정보를 송신하겠다는 의미를 선언하는 것이며, <Objectclass messageName="Missile" sharing "subscribe">는 Missile 정보를 수신하겠다는 의미를 선언한 것으로 판단할 수 있다.  For example, the object model has Sharing information and can display Publish or Subscribe. For example, <Objectclass messageName = "Missile" sharing "publish"> means to send Missile information and <Objectclass messageName = "Missile" sharing "subscribe"> means to receive Missile information .

MEC의 DLL과 MEB 상호간 데이터를 송수신하는 단계(S400)는 메시지 송신 객체에 대하여 송신 객체를 식별할 수 있는 정보를 저장하며, 메시지 수신 객체에 대한 라우팅 정보를 검색하고 메시지 라우팅 테이블에 저장한다.In step S400 of transmitting and receiving data between the DLL and MEB of the MEC, information for identifying a transmitting object is stored in the message transmitting object, and the routing information for the receiving object is retrieved and stored in the message routing table.

메시지 라우팅 테이블에 저장된 라우팅 정보를 이용하여 메시지 송신 객체로부터 메시지 수신 객체로 데이터를 송신할 수 있다. 식별할 수 있는 정보는 MEC의DLL, MEB를 식별할 수 있는 정보라면 특정 형태에 한정되지 아니한다.The routing information stored in the message routing table can be used to transmit data from the message transmission object to the message reception object. The information that can be identified is not limited to any particular form as long as it is information that can identify the DLL and MEB of the MEC.

도3은 본 발명의 일 실시예에 따른 추상 인터페이스를 이용한 플러그인 인터페이스 장치를 도시한 것이다. 플러그인 인터페이스 장치는 추상 인터페이스(100), 메시지 교환 컴포넌트(200), 메시지 교환 버스(300)을 포함할 수 있다.FIG. 3 illustrates a plug-in interface device using an abstract interface according to an embodiment of the present invention. The plug-in interface device may include an abstract interface 100, a message exchange component 200, and a message exchange bus 300.

추상 인터페이스(Abstract Interface)(100)는 사용자에 의하여 미리 설정되고, MEB(300)의 함수와 동일한 함수의 이름을 선언할 수 있다. MEB 모듈(300)의 함수를 참조하여 MEB 모듈(300)과 MEC 모듈(300)에 상호 작용할 수 있는 인터페이스를 제공하는 것을 특징으로 할 수 있다. The Abstract Interface 100 may be preconfigured by the user and may declare the same function name as the function of the MEB 300. The MEB module 300 and the MEC module 300 may be interfaced with each other by referring to a function of the MEB module 300.

메시지 교환 컴포넌트(200)는 추상 인터페이스(100)을 이용하여 플러그인 컴포넌트(Plug-in Component)인 MEC 모듈(200)의 실행 파일을 생성한다. 즉, 플러그인 프레임워크인 MEB(300)를 직접 참조하는 것이 아니라 추상 인터페이스를 이용하여 실행 파일을 생성한다. 실행 파일은 동적 라이브러리를 포함하며, 동적 라이브러리는 정적 링크 라이브러리와 동적 링크 라이브러리를 포함한다.The message exchange component 200 uses the abstract interface 100 to generate an executable file of the MEC module 200, which is a plug-in component. That is, instead of directly referring to the MEB 300 as a plug-in framework, an executable file is generated using an abstract interface. The executable file contains dynamic libraries, and dynamic libraries include static link libraries and dynamic link libraries.

플러그인 실행 모듈인 메시지 교환 컴포넌트(MEC: Message Exchanging Component)(200)는 플러그인 프레임워크 (Plug-in Framework)인 MEB(300)에 연결되어 데이터를 송수신한다.A message exchange component (MEC) 200, which is a plug-in execution module, is connected to the MEB 300, which is a plug-in framework, to transmit and receive data.

도4를 참조하면, MEC(200) 는 사용자 정의 관리 모듈(User Defined Manager)(210)을 통하여 메시지 통지 모듈(Message Informer)(230)및 MEC 대리인(Surrogate)(250)를 생성할 수 있다. Referring to FIG. 4, the MEC 200 may generate a message notification module 230 and an MEC agent (Surrogate) 250 through a user defined management module 210.

메시지 통지 모듈(Message Informer)(230)은 MEB 모듈로부터 메시지를 수신하고, 상기 수신된 메시지에 기초하여 MEC의 DLL에 메시지를 전송한다.A message informer 230 receives a message from the MEB module and sends a message to the MEC's DLL based on the received message.

MEC 대리인(Surrogte)(250)는 MEB 및 다른 MEC와의 통신에 있어서 데이터 송신을 수행한다. 예를 들어, 송신자의 경우에는 MEC Publisher이라는 모듈을 설정하여 데이터를 전송할 수 있으며, 수신자의 경우에는 MEC Subscriber이라는 모듈을 설정하여 데이터를 전송할 수 있다.MEC agent (Surrogte) 250 performs data transmission in communication with the MEB and other MECs. For example, in the case of a sender, a module called MEC Publisher can be set up to transmit data, and in the case of a receiver, a module called MEC Subscriber can be set to transmit data.

메시지 교환 버스(MEB)(300)는 MEB 모듈의 서브 모듈을 관리하며, MEC 모듈과 상호작용하며, MEC 모듈과 DLL을 관리하는 MEC가 수신한 메시지의 메타 정보를 처리하고 상기 메시지를 정의하며, 래퍼(Wrapper)클래스를 생성한다.A message exchange bus (MEB) 300 manages sub-modules of the MEB module, interacts with the MEC module, processes meta information of a message received by the MEC managing the MEC module and the DLL, defines the message, Creates a wrapper class.

메타 정보란 메시지 교환 버스가 메시지를 문장 분석(Parsing)하여 추출해낸 송신자 정보, 수신자 정보와 같은 데이터를 말한다.Meta information refers to data such as sender information and recipient information extracted by message exchange bus parsing a message.

MEB 모듈(300)은 MEB 컴포넌트, MEB 메시지 분배 모듈, MEB 처리 관리 모듈, MEB 메시지 처리 모듈, MEB 메시지 처리 모듈을 포함할 수 있다.The MEB module 300 may include a MEB component, a MEB message distribution module, a MEB processing management module, a MEB message processing module, and a MEB message processing module.

MEB 컴포넌트(MEB Component)는 MEB 모듈에 포함된 서브 모듈을 관리하며, MEC의 DLL이 플러그인 되도록 하는 것을 특징으로 한다.The MEB component (MEB Component) manages the submodules included in the MEB module, and allows the DLL of the MEC to be plugged in.

MEB 메시지 분배 모듈(MEB Dispatcher)은 MEC 모듈로부터 수신된 메시지를 분석하여 메시지 라우팅 테이블을 생성하고, 상기 메시지 라우팅 테이블을 참조하여 메시지 교환 서비스를 제공하며, MEC 모듈과 상호작용하는 것을 특징으로 한다.The MEB message dispatching module analyzes a message received from the MEC module to generate a message routing table, provides a message exchange service with reference to the message routing table, and interacts with the MEC module.

MEB 처리 관리 모듈(MEB Handle Manager)은 메시지 통지 모듈(Message Informer)인터페이스를 구현한 DLL 객체를 생성 및 삭제할 수 있도록 메모리를 관리하며, MEC의DLL이 플러그인되면 메시지 통보를 받을 수 있도록 알림 서비스(Notification Service)에 등록한다.The MEB Handle Manager manages the memory to create and delete DLL objects that implements the Message Informer interface. When the MEC DLL is plugged in, a notification service (Notification Service).

알림 서비스(Notification Service)는 MEB와 MEC의 DLL이 연결되었음을 사용자에게 알리는 서비스를 제공할 수 있다.The Notification Service can provide a service to notify the user that the MEB and the MEC DLL are connected.

MEC의DLL 객체가 플러그인되는 경우 MEC의 DLL에 식별 번호를 부여하고 플러그 해제시 식별번호를 참조할 수 있다. If the DLL object of the MEC is plugged in, the identification number of the MEC can be given to the DLL and the identification number can be referred to when the plug is released.

메시지 알림 서비스 등록시, 송신자와 수신자를 구분해서 저장할 수 있다. 예를 들어, 송신자의 경우 Publisher라는 테이블 값을 가질 수 있으며, 수신자의 경우에는 Subscriber라는 테이블 값을 가질 수 있다.When registering the message notification service, the sender and receiver can be stored separately. For example, a sender can have a table value called Publisher, and a recipient can have a table value called Subscriber.

MEB 메시지 처리 모듈(MEB Message Processor)은 다른 DLL과 상호작용하기 위해서 작성된 XML 메시지를 해석하고 각 메시지의 메타 정보를 관리하는 저장 클래스를 생성하며, DLL은 메시지를 사용하기 위해 저장 클래스로부터 객체 생성을 요청하는 것을 특징으로 한다.The MEB Message Processor creates a storage class that parses the XML message created to interact with other DLLs and manages the meta information of each message. The DLL creates an object from the storage class to use the message. .

MEB 메시지 처리 모듈(MEB Message Processor)은 메시지를 정의할 수 있는 기본 타입 및 복합 타입에 대한 래퍼(Wrapper)클래스를 구현하는 것을 특징으로 한다.The MEB message processing module implements a wrapper class for a basic type and a complex type that can define a message.

래퍼(Wrapper) 클래스란 기본형 데이터를 객체 단위로 처리할 수 있도록 해주는 클래스로 기본형 데이터를 객체로 만들어주는 클래스를 말한다.A wrapper class is a class that allows basic data to be processed on an object-by-object basis. It is a class that creates basic data as objects.

이제까지 본 발명에 대하여 바람직한 실시예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명을 구현할 수 있음을 이해할 것이다. 그러므로, 상기 개시된 실시예 들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 한다.The present invention has been described above with reference to preferred embodiments. It will be understood by those skilled in the art that the present invention may be embodied in various other forms without departing from the spirit or essential characteristics thereof. Therefore, the above-described embodiments should be considered in an illustrative rather than a restrictive sense. The scope of the present invention is indicated by the appended claims rather than by the foregoing description, and all differences within the scope of equivalents thereof should be construed as being included in the present invention.

Claims (15)

플러그인 시스템에 있어서,
컴퓨터에 의하여 판독 가능한 명령인 실행 코드를 컴파일하여 생성되는 실행 파일에 링크되어 포함될 동적 링크 라이브러리(DLL: Dynamic Linking Library)의 링크 에러를 방지하기 위해 상기 DLL의 참조를 결정하는 추상 인터페이스(Abstract Interface)를 생성하는 단계;
상기 추상 인터페이스를 참조하여 플러그인 프레임워크의 상기 실행 파일인 메시지 교환 컴포넌트(MEC: Message Exchanging Component)에 포함될 상기 DLL을 생성하는 단계;
상기 플러그인 프레임워크인 메시지 교환 버스(MEB: Message Exchange Bus)가 상기 MEC의 DLL로부터 메시지를 수신하고, 수신된 상기 메시지로부터 메시지 송신 객체 및 메시지 수신 객체에 대한 라우팅 정보와 객체 모델을 추출하여 상기 MEC의 DLL과 MEB가 상호 메시지를 전송할 수 있도록 연결하는 단계; 및
상기 MEB가 상기 라우팅 정보 및 상기 객체 모델을 이용하여 상기 메시지 수신 객체인 상기 MEC가 필요로 하는 데이터를 상기 메시지 송신 객체인 상기 MEC의 DLL로부터 수신하여 상기 MEC로 송신하는 단계;를 포함하는 플러그인 인터페이스 방법.
In a plug-in system,
An abstract interface that determines a reference of the DLL to prevent a link error of a dynamic link library (DLL) to be included in an executable file generated by compiling executable code that is a command readable by a computer, &Lt; / RTI &gt;
Generating the DLL to be included in a message exchange component (MEC), which is the executable file of the plug-in framework, with reference to the abstract interface;
The message exchange bus (MEB), which is a plug-in framework, receives a message from the DLL of the MEC, extracts routing information and an object model for the message transmission object and the message reception object from the received message, Connecting the DLL and the MEB to transmit the mutual message; And
And receiving, by the MEB, data required by the MEC, which is the message receiving object, from the DLL of the MEC, which is the message transmitting object, using the routing information and the object model, and transmitting the received data to the MEC Way.
제1 항에 있어서, 상기 추상 인터페이스를 생성하는 단계는
상기 MEB를 기초로 상기 MEB내에 설정된 함수와 동일한 함수로서 상기 MEB와 상기 MEC 간 상호 작용할 수 있는 함수를 선언하는 것을 특징으로 하는 플러그인 인터페이스 설정 방법.
2. The method of claim 1, wherein generating the abstract interface comprises:
And declaring a function capable of interacting between the MEB and the MEC as a function identical to a function set in the MEB based on the MEB.
제1 항에 있어서, 상기 DLL을 생성하는 단계는
상기 추상 인터페이스에서 정의된 함수를 상기 MEC의 실행 코드에 참조하여 컴파일시 상기 DLL의 링크 오류를 방지하는 것을 특징으로 하는 플러그인 인터페이스 방법.
2. The method of claim 1, wherein generating the DLL comprises:
And a function defined in the abstract interface is referred to an executable code of the MEC to prevent a link error of the DLL at compile time.
제1 항에 있어서, 상기 연결하는 단계는
상기 MEB가 상기 MEC의 DLL로부터 메시지를 수신하는 단계;
상기 MEB가 수신한 메시지를 문장 분석(Parsing)하여 상기 메시지 송신 객체 및 상기 메시지 수신 객체 각각에 대한 상기 라우팅 정보와 상기 객체 모델을 추출하는 단계; 및
상기 라우팅 정보를 라우팅 테이블에 저장하는 단계;
를 포함하는 플러그인 인터페이스 방법.
2. The method of claim 1,
The MEB receiving a message from a DLL of the MEC;
Extracting the routing information and the object model for each of the message transmission object and the message reception object by parsing a message received by the MEB; And
Storing the routing information in a routing table;
Lt; / RTI &gt;
제4 항에 있어서, 상기 연결하는 단계는
상기 추출된 객체 모델에 대응되는 XML로 구성된 객체 모델을 생성하는 단계를 더 포함하는 플러그인 인터페이스 방법.
5. The method of claim 4, wherein the connecting step
And generating an object model composed of XML corresponding to the extracted object model.
삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020120069908A 2012-06-28 2012-06-28 Interface method and apparatus by using plug-in KR101398959B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120069908A KR101398959B1 (en) 2012-06-28 2012-06-28 Interface method and apparatus by using plug-in

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120069908A KR101398959B1 (en) 2012-06-28 2012-06-28 Interface method and apparatus by using plug-in

Publications (2)

Publication Number Publication Date
KR20140002930A KR20140002930A (en) 2014-01-09
KR101398959B1 true KR101398959B1 (en) 2014-05-27

Family

ID=50139648

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120069908A KR101398959B1 (en) 2012-06-28 2012-06-28 Interface method and apparatus by using plug-in

Country Status (1)

Country Link
KR (1) KR101398959B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752242A (en) * 2020-06-03 2020-10-09 深圳前海禾盈科技有限公司 Equipment connection method for automatic production

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000025625A (en) * 1998-10-13 2000-05-06 정선종 Method for introducing new service logic plug-in version in service logic execution environment of service control system
JP2005522787A (en) 2002-04-08 2005-07-28 オラクル・インターナショナル・コーポレイション Persistent key-value repository with pluggable architecture abstracting physical storage
JP2009505300A (en) 2005-08-19 2009-02-05 グーグル インク. Software architecture for displaying information content from plug-in modules in the user interface
KR20100094009A (en) * 2009-02-18 2010-08-26 (주)시뮬레이션연구소 Integrated robot software platform with framework module

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000025625A (en) * 1998-10-13 2000-05-06 정선종 Method for introducing new service logic plug-in version in service logic execution environment of service control system
JP2005522787A (en) 2002-04-08 2005-07-28 オラクル・インターナショナル・コーポレイション Persistent key-value repository with pluggable architecture abstracting physical storage
JP2009505300A (en) 2005-08-19 2009-02-05 グーグル インク. Software architecture for displaying information content from plug-in modules in the user interface
KR20100094009A (en) * 2009-02-18 2010-08-26 (주)시뮬레이션연구소 Integrated robot software platform with framework module

Also Published As

Publication number Publication date
KR20140002930A (en) 2014-01-09

Similar Documents

Publication Publication Date Title
KR102354717B1 (en) Code service for language-independent dispatch
Morin et al. An aspect-oriented and model-driven approach for managing dynamic variability
CN102736919B (en) The method and system of description and development behavior behavior application system
US20060265469A1 (en) XML based scripting framework, and methods of providing automated interactions with remote systems
KR20080084966A (en) Conforming web services to an updated contract
Lagaillardie et al. Implementing multiparty session types in rust
CN110806945B (en) Interface docking method, device and computer readable medium
US10089084B2 (en) System and method for reusing JavaScript code available in a SOA middleware environment from a process defined by a process execution language
CN112906206B (en) Digital twin model construction method and device
US20150082322A1 (en) Data Upgrade Framework for Distributed Systems
KR101398959B1 (en) Interface method and apparatus by using plug-in
Fortier et al. Dyninka: a FaaS framework for distributed dataflow applications
Simonsen et al. Generating protocol software from cpn models annotated with pragmatics
US20160292003A1 (en) System and method for supporting object notation variables in a process defined by a process execution language for execution in a soa middleware environment
US20160291941A1 (en) System and method for supporting javascript as an expression language in a process defined by a process execution language for execution in a soa middleware environment
WO2006089387A1 (en) Extending access to local software of a wireless device
CN115934093A (en) Applet cross-terminal application method, related device and computer storage medium
CN115658140A (en) SDK packaging method, device, terminal and storage medium
KR101660028B1 (en) Method and apparatus for creating bridging component between hla-dds
US7743386B2 (en) Context objects for accessing message content
Canal et al. Stability-based adaptation of asynchronously communicating software
CN112363708B (en) Context protection method and system under Eclipse supporting tool
CN114398082B (en) Compatible operation method and device for frame type block chain application
CN117093286B (en) Plug-in generation method, device, equipment and computer readable storage medium
CN117076160B (en) Component calling method, device, equipment and storage medium

Legal Events

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

Payment date: 20170403

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190409

Year of fee payment: 6