KR102189417B1 - 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템 - Google Patents

다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템 Download PDF

Info

Publication number
KR102189417B1
KR102189417B1 KR1020130120643A KR20130120643A KR102189417B1 KR 102189417 B1 KR102189417 B1 KR 102189417B1 KR 1020130120643 A KR1020130120643 A KR 1020130120643A KR 20130120643 A KR20130120643 A KR 20130120643A KR 102189417 B1 KR102189417 B1 KR 102189417B1
Authority
KR
South Korea
Prior art keywords
packet
data
unit
processing
definition unit
Prior art date
Application number
KR1020130120643A
Other languages
English (en)
Other versions
KR20150041983A (ko
Inventor
최형준
김갑성
Original Assignee
쉬프트정보통신 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 쉬프트정보통신 주식회사 filed Critical 쉬프트정보통신 주식회사
Priority to KR1020130120643A priority Critical patent/KR102189417B1/ko
Publication of KR20150041983A publication Critical patent/KR20150041983A/ko
Application granted granted Critical
Publication of KR102189417B1 publication Critical patent/KR102189417B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템은 네트워크상의 패킷을 받아 클라이언트 측에서 이용 가능한 형태의 데이터 형태로 수집 및 가공하거나 서버 측 데이터 서비스에서 처리 가능한 형태의 업로드용 패킷을 만들어 전송하는 어댑터 시스템에 있어서, XML을 이용하여 다양한 프로토콜을 통해 송수신되는 패킷에 대한 데이터 수집 및 가공방법과 서버로 업로드 할 패킷 생성 방법 등을 정의할 수 있는 패킷정의 XML 문서(이하, 패킷 정의부), 패킷 정의부에서 정의한 실행 계획에 따라 패킷을 전송받는 데이터 수신부, 서버 측으로 데이터 패킷을 전송하는 송신부, 상기 패킷 정의부에서는 전문 바이너리 형태의 패킷 처리를 정의하는 부분과 XML 형태의 패킷 처리를 정의하는 부분(이하, XML 매퍼)으로 나뉘어 작성되며 이러한 패킷 처리 방식이 정의된 XML 문서의 내용에 따라 패킷을 송수신할 실행 계획을 세우고, 여러 프로토콜을 사용하여 패킷을 받아들이는 동시에 패킷 송수신 실행 계획을 실제로 수행하는 플랙서블 어댑터(Flexible Adapter)를 포함하여 전체 시스템이 구성된다. 따라서 상기와 같이 XML을 통하여 송수신 패킷의 처리방식을 정의하도록 구성하여 여러 통신 환경을 지원하도록 마련함으로써, 버전의 변경이나 컨트롤의 수정 없이 다양한 통신 환경에 적용 가능한 플랙서블 어댑터를 제공할 수 있다.

Description

다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템{Flexible adaptor system for transmitting data between various protocol}
본 발명은 XML을 통하여 송수신 패킷에 대한 데이터 처리가 수행되도록 구성하여 다양한 통신 환경에 적용 가능한 패킷 전송 플랙서블 어댑터 시스템에 관한 것이다.
최근, 정보통신 분야의 기술이 급격한 발전을 이루면서, 인터넷의 활용이 보편화되고 있고, 이러한 인터넷의 보편화 추세에 맞추어, 수많은 인터넷 웹사이트들이 폭 넓게 개설되고 있으며, 이에 따라, 각 인터넷 웹사이트들을 관리하는 웹 운영 시스템의 중요성 또한 점차 증대되는 추세에 있다.
이러한 흐름은 인터넷 사용의 대중화 시대를 넘어 IT 인프라의 고도화를 기반으로 한 웹을 통한 다양한 서비스 및 비즈니스 분야가 민간은 물론 기업, 정부 차원에서까지 모든 분야에 걸쳐 다양한 형태로 실현되고 있다.
과거 웹 1.0 시대에는 소프트웨어의 안정적인 성능이 가장 우선시 되었지만, 참여와 공유를 표방하는 웹 2.0 시대가 도래하면서 사용자의 편의성을 강조하기 때문에 유저 인터페이스(User interface)의 중요성이 초유의 관심사가 되고 있다.
이에 따라, 갈수록 다양해지는 통신환경에 따른 네트워크 데이터, 즉, HTTP, TCP, UDP, FILE 등 다양한 프로토콜을 통해 전송되는 패킷에 대한 통합적인 제어기술이 요구되고 있다.
이러한 요구에 부응하기 위하여 네트워크상의 패킷데이터를 다양한 전송 프로토콜에 대응하여 처리할 수 있는 어댑터 시스템이 개발되어 왔다.
그러나 종래의 어댑터 시스템은 갈수록 다양해지는 주변의 통신환경과 포멧으로 인하여 발생하는 빈번한 컨트롤 수정과 다수의 전용 컨트롤 출연으로 복잡도가 증가할 뿐만 아니라 관리의 어려움으로 유지보수 활동 및 신규 사이트에 적용 시 많은 리소스의 낭비를 가져오는 문제점이 있었다.
상기 문제점을 해결하고자 본 발명은, XML을 통하여 송수신 패킷의 처리방식을 정의하도록 구성하여 여러 통신 환경을 지원하도록 마련함으로써, 버전의 변경이나 컨트롤의 수정 없이 다양한 통신 환경에 적용 가능한 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템을 제공하는 데 있다.
상기 목적은 본 발명에 따라, 네트워크상의 패킷을 제어하는 어댑터 시스템에 있어서, XML을 이용하여 다양한 프로토콜을 통해 송수신되는 패킷에 대한 데이터 수집 및 가공방법과 서버로 업로드 할 패킷 생성 방법 등을 정의할 수 있는 패킷 정의부, 패킷 정의부에서 정의한 실행 계획에 따라 패킷을 전송받는 데이터 수신부, 서버 측으로 데이터 패킷을 전송하는 송신부, 상기 패킷 정의부에서는 전문 바이너리 형태의 패킷 처리를 정의하는 부분과 XML 형태의 패킷 처리를 정의하는 XML 매퍼로 나뉘어 작성되며 이러한 패킷 처리 방식이 정의된 XML 문서의 내용에 따라 패킷을 송수신할 실행 계획을 세우고, 여러 프로토콜을 사용하여 패킷을 받아들이는 동시에 패킷 송수신 실행 계획을 실제로 수행하는 플랙서블 어댑터(Flexible Adapter)를 포함하여 어댑터 시스템에 대한 별도의 버전 변경이나 수정 없이 다양한 통신 환경에 적용 가능한 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템에 의해 달성된다.
여기서, 상기 패킷 정의부는 변수들을 선언하는 엘리먼트가 구성된 변수 정의부([0010] define)와, 수신된 패킷(Packet)을 분석 처리하는 부분을 기술하는 엘리먼트가 구성된 수신부(receive) 와, 상기 처리된 데이터의 송신을 위해서 기술하는 엘리먼트가 구성된 송신부(send)를 포함할 수 있다.
바람직하게는, 상기 패킷 정의부는 변수 정의부와, 수신부와, 송신부에 구성된 엘리먼트가 트리구조로 형성될 수 있다.
또한, 상기 패킷은 상기 변수 정의부에 구성된 엘리먼트와 대응되는 세그먼트들이 포함된 헤드(Head)와, 하나 이상의 데이터 세트가 포함된 바디(Body)를 포함할 수 있다.
또한, 상기 플랙서블 어댑터는 외부 XML 또는 다양한 패킷을 전송받아 데이터 처리를 요청하는 패킷 관리부와, 상기 패킷관리부로부터 전송받은 데이터를 상기 패킷 정의부에서 정의된 규칙에 따라 처리하는 패킷 처리부와, 패킷 정의부에서 정의된 규칙을 상기 패킷 관리부 또는 패킷 처리부로 전송하는 패킷 처리 정의부와, 패킷 정의부에서 정의된 변수가 등록되며 등록된 변수 규칙을 상기 패킷 처리부로 전송하는 상기 패킷 변수 정의부를 포함할 수 있다.
또한, 상기 플랙서블 어댑터는 상기 패킷 처리부에서 자주 처리되는 명령어를 저장하는 명령어 저장부와, 데이터 처리 과정을 수행하는 중에 처리가 용이한 패킷이 들어오면 수행중인 이전 패킷을 임시로 저장하는 임시 패킷 저장부를 추가로 포함하여, 데이터 처리 수행 성능을 향상시키도록 마련될 수 있다.
따라서 본 발명은, XML을 통하여 송수신 패킷의 처리방식을 정의하도록 구성하여 여러 통신 환경을 지원하도록 마련함으로써, 버전의 변경이나 컨트롤의 수정 없이 다양한 통신 환경에 적용 가능한 장점이 있다.
도 1은 본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템의 전체적인 구성도,
도 2는 본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템의 패킷 정의부의 트리구조를 도시한 도면,
도 3은 도 3은 본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템의 실시예에 따른 패킷의 구성도,
도 4는 본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템의 플랙서블 어댑터의 개념적 구조를 나타낸 블록도,
도 5는 본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템의 플랙서블 어댑터의 패킷 처리과정을 도시한 구조도이다.
이하, 첨부된 도면을 참조하여, 본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템에 대하여 상세히 설명하기로 한다.
도 1은 본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템의 전체적인 구성도이다.
도 1은 참조하면, 본 발명에 따른 플랙서블 어댑터 시스템은 다양한 프로토콜(10)에서 전송받은 패킷(20)에서 입·출력되는 데이터에 대한 가공방법을 정의한 패킷 정의부(100)와, 상기 패킷 정의부 내부에 전송 받은 XML 형태의 패킷 데이터에서 특정한 데이터를 획득하기 위해서 XPATH 형태로 데이터 획득 경로를 지정하는 방법과 특정한 구조를 지닌 데이터 세트로 가공하는 방법을 정의한 XML매퍼(200)와, 상기 패킷 정의부에 정의된 실행 계획에 따라 다양한 패킷(20)을 전송되는 프로토콜(10)에 적합하게 가공하는 플랙서블 어댑터(300)를 포함하여 구성된다.
참고적으로, 본 발명의 이해를 돕기 위하여 상기 Xpath와, 플랙서블 어댑터에 대하여 설명하자면, Xpath란 상기 데이터에 대한 가공방법을 정의한 구조체에서 특정한 구조를 지정하는 문자열로서 일례로 '/gform/components/model/@text '와 같은 형태로 표현된다.
플랙서블 어댑터(Flexible Adapter)란, 다양한 패킷(Gauce Packet, User Packet, Soap, RSS, CSV 등등)을 여러 프로토콜(HTTP, TCP, UDP, FILE)을 통하여 원하는 데이터를 받아 데이터 셋을 구성할 뿐만 아니라, 필요에 따라 데이터를 재구성한 다음 전송하는 구성요소이다.
상기 플랙서블 어댑터(300)는 상기 패킷 정의부(100) 또는 XML매퍼(200)에 의해서 상기 데이터를 재구성한다.
여기서, 상기 XML매퍼(200)는 상기 패킷 정의부(100)와 동일한 엘리먼트로 구성되며, 패킷 정의부(100)와의 차이점은 정의되는 엘리먼트 중에서 상기 Xpath에 대한 속성인 'xmlpath'가 기술되는 차이점이 있다.
상기 'xmlpath'는 이하 후술되는 패킷 정의부(100)의 엘리먼트 중에서 'treat' 항목에서 기술된다.
패킷 정의부(100)는 상기 플랙서블 어댑터(300)를 통해 상기 패킷(20)에서 입·출력되는 데이터에 대한 가공방법을 정의한 부분으로, 각각 구성되는 엘리먼트가 트리구조를 통해 이루어진다.
도 2는 패킷 정의부의 트리구조를 도시한 도면으로, 도 2를 참조하면, 상기 패킷 정의부(100)는 패킷 정의부(100)에서 설정되는 변수들을 선언하는 정의부(define)(110)와, 수신된 패킷(Packet)을 분석 처리하는 부분을 기술하는 수신부(receive)(120)와, 상기 처리된 데이터의 송신을 위해서 기술하는 송신부(send)(130)를 포함하여 구성된다.
여기서, 상기 패킷 정의부(100)는 루트 엘리먼트(Root Element)로 'packet'(101)을 가지며, 변수타입은 패킷(20)의 종류를 설정하는 것으로 값으로는 바이너리(binary), 확장성 생성 언어(XML), 텍스트(text)로 설정 가능하다.
정의부는 상기 패킷 정의부(100)의 루트 엘리먼트인 'packet'(101)에서 설정되는 변수들을 선언하며, 구분 엘리먼트(Element)로는 'define'(110)이 있다.
'define'의 하위 엘리먼트로는 'value'(115)가 있으며, 상기 'value'(115)는 각종 변수의 이름과 변수 형을 설정하는 것으로 상위 엘리먼트인 'packet'(101)의 변수 속성에 따라 동작 특성이 달라진다.
만일 상위 엘리먼트인 'packet'(101)이 'variable'일 경우에는 블록 내의 변수로서 사용되지만, 'httphead'가 상위 엘리먼트일 경우는 통신 방식을 HTTP 프로토콜로 사용해야만 하며, 'http request head'에 설정된 내용이 포함되어 전송된다.
상기 'value'(115)의 정보를 포함하는 속성으로는 'name' 'type' 'value'가 있다.
상기 'name'은 변수의 이름을 지정하는 것으로 중복되어서는 안되며, 'httphead' 내에서 기술되어 졌을 경우는 HTTP 헤드(150)에 대한 이름이 된다.
상기 'type'은 변수 형을 기술하는 것으로 아래 [표 1]과 같은 타입의 변수가 사용되며, 'httphead'내에서는 기술할 필요가 없으며, 이 경우에는 무조건 string type으로 설정된다.
변수 타입 정 의
string 분자열을 가지는 변수
int8 8bit(1byte)형의 정수
int16 16bit(2byte)형의 정수
int32 32bit(4byte)형의 정수
int64 64bit(8byte)형의 정수
uint8 8bit(1byte)형의 양의 정수
uint16 16bit(2byte)형의 양의 정수
uint32 32bit(4byte)형의 양의 정수
uint64 64bit(8byte)형의 양의 정수
double 소수점을 가지는 변수
bool true(1)/false(0)의 불린(Boolean)형 변수
unknown void*형의 데이터 형 변수, 이미지 등의 데이터 변수
상기 'value'(115)는 변수에 지정할 값으로 'httphead'내에서 기술시에는 http head의 값이 되며, 'variable' 내에서는 기술하지 않아도 된다.
'httphead'는 HTTP Protocol을 사용할 시에만 유효한 엘리먼트로 Http Request시에 head에 포함되는 내용을 기술하기 위한 구분 엘리먼트이다.
수신부(receive)(120)는 수신된 패킷(20)(Packet)을 분석 처리하는 부분으로 기술하는 구분 엘리먼트로는 'receive'가 있으며, 하위 속성으로는 'default-start'가 있다.
상기 'default-start'는 수신시 별다른 설정이 없다면 여기에 설정된 블록으로부터 패킷(20)을 해석해 나간다.
'block'(105)은 패킷 정의부(100)의 블록을 나타내는 루트 엘리먼트로 패킷([0038] 20)의 종류를 설정하는 것으로 값으로 binary, xml, text가 설정 가능하다.
'data'(122)는 수신된 Packet데이터를 설정된 상황에 맞게 잘라 보관하며, 하위 속성으로는 'id'와 'type', 'size', 'convtype', 'netnumber', 'treat'이 있다.
'id'는 데이터의 식별유형을 나타내며 'block' 내에서 유일하게 ID문자열로 기술하여야 한다.
'type'은 저장되는 데이터형으로 상기 [표 1]을 참조한다.
'size'는 type이 string이나 unknown으로 설정되었을 경우에만 유효하며 문자열이나 바이너리 데이터를 설정된 크기만큼 읽어 들인다.
'convtype'은 읽혀진 데이터의 형을 변환 시켜주며, 데이터형으로 상기 [표 1]을 참조한다.
'netnumber'는 'type'이 정수 형일 경우 해당 값은 역전되어 전송되므로 이를 보정하여 준다.
'treat'은 항목을 기술하지 않으며 기본적으로 normal형으로 취급하며, 'static'으로 설정되었을 경우, '<data>입력될 값</data>'와 같이 수신된 패킷(20)에서 데이터를 받는 것이 아니라, <data>의 텍스트를 해당 데이터의 값으로 받아들인다.
또한, 상기 'treat'은 'eod'로 설정되었을 경우에는 다음과 같이 데이터의 텍스트가 ','로 설정되어져 있을 경우, ','를 구분자로 해서 패킷(20)의 데이터를 잘라 낸다.
예를들면, 상기 'data'의 하부 속성인 'treat'이 'eod'로 설정되었을 경우, '<data id= "samp01" type = "string" threat = "eod">, </data>'와 같이 나타낼 수 있다.
또한, 상기 'treat'이 'eof'로 설정되었을 경우에는 모든 패킷(20)의 수신이 완료될때까지를 나타내는 것이다.
만일, 패킷(20)의 타입이 xml로 설정되어 있을 경우에는 'treat'이 'xmlpath'로 설정되어서 데이터의 xml path를 기술하도록 되어져 있다.
이 경우 상기 패킷 정의부(100)는 xml mapper로써 작용을 하게 된다.
'repeat'은 수신된 데이터가 동일한 형식으로 반복해서 들어오는 종류라면 반복해서 간단하게 데이터를 받아 들일 수 있도록 하며, 하위 속성으로는 'id'와 'condition', 'array'가 있다.
'id'는 block내에서 유일한 ID문자열로 일반적으로 생략 가능하다.
'condition'은 특정 조건문을 입력할 수 있으며 결과값이 참인 동안에는 'repeat'구문 내에 있는 모든 엘리먼트를 계속 반복하도록 수행하면서 데이터를 받아들인다.
'array'는 데이터를 반혹하여 받아들이는 경우, 상기 데이터를 배열(array)형태로 저장하기 위한 옵션으로 'true' 또는 'false'의 값이 들어갈 수 있다.
'if'(124)는 구문내에 들어가는 해당 조건문이 참일 경우에만 'if'구문 내에 있는 엘리먼트들을 수행하며, 하위 속성으로는 'condition'이 있다.
'condition'은 조건문이 입력되는 곳으로 결과가 참일 때만 하위 엘리먼트를 수행한다.
'elif'(125a)는 이전의 구문에 기재된 조건이 거짓일 경우에만 'elif'의 조건문을 실행하도록 되어져 있으며, 이전에 반드시 'if'구문이나 'elif' 기술되어져 있어야 한다.
상기 'elif'(125a)의 하위 속성으로는 'condition'이 있으며, 'condition'은 조건문이 입력되는 곳으로 결과가 참일 때만 하위 엘리먼트를 수행한다.
'else'(125b)는 'if'와 'elif'등의 조건 엘리먼트의 조건문이 모두 거짓일 때 'else'의 구문 내의 엘리먼트들이 실행된다.
'next'(123)는 블록 내의 임의의 장소에서 다른 블록을 호출하는 기능을 수행하며, 하위 속성으로는 'goto'가 있으며, 'goto'는 호출할 블록의 ID문자열을 나타낸다.
'return'(128)은 블록 내의 임의의 장소에서 자신을 호출한 블록으로 되돌아가도록 하며, 이때 오류 코드와 메시지 등을 전달할 수 있다.
하위 속성으로는 [0062] 'code'와 'mag'가 있다.
'code'는 'return'구문에서 전달할 오류 코드를 나타내며, 'msg'는 'return'에서 전달할 오류 메시지를 나타낸다.
'operator'(127)는 플랙서블 어댑터(300)의 인터페이스(Interface) 함수를 호출하며, 만일 호출한 결과값이 존재할 경우에는 그 ID에 해당하는 값이 저장된다.
하위 속성으로는 'name'과 'id'가 있으며, 'name'는 호출할 함수명을 나타내고, 'id'는 블록 내의 유일한 ID문자열을 나타낸다.
'dataset'(126)은 'dataset'에 기재된 인터페이스(interface)함수를 호출하며, 만일 호출한 결과값이 존재할 경우에는 그 ID에 해당하는 값이 저장된다.
하위 속성으로는 'name'과 'id'가 있으며, 'name'는 호출할 함수명을 나타내고, 'id'는 블록 내의 유일한 ID문자열을 나타낸다.
'param'은 상기 'operator'와 'dataset'에서 함수를 호출하는 경우 해당 함수의 파라미터(parameter)를 기술하며, 함수의 파라미터 순서는 'param'의 엘리먼트의 기술순서와 동일하다.
하위 속성으로는 'type'와 'value'가 있으며, 'type'은 파라미터의 데이터 형을 나타내며, 저장되는 데이터형으로 상기 [표 1]을 참조한다.
송신부(send)(130)는 상기 처리된 데이터의 송신을 위해서 기술하는 부분으로 구분 엘리먼트로는 'send'가 있으며, 하위 속성으로는 'default-start'가 있다.
'default-start'는 시작 블록의 ID문자열을 나타낸다.
'write'(131)는 상위 엘리먼트가 'send'인 블록 내에서만 사용가능하며 적재된 데이터를 송신한다.
도 3은 본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템의 실시예에 따른 패킷의 구성도이다.
도 3을 참조하면, 상기 패킷(20)은 상기 패킷 정의부(100)에 구성된 엘리먼트와 대응되는 세그먼트들이 포함된
헤드(150)와, 하나 이상의 데이터 세트가 포함된 바디(160)로 구성된다.
도 3(a)는 본 발명의 일실시예인 특정구간의 데이터를 주어진 조건에 의해서 반복적으로 접근하도록 구현된 패킷에 대한 구성을 나타낸 도면으로, 여기서 상기 헤드(150)는 오류검출 세그먼트(151), 네임크기인식 세그먼트(152), 패킷네임 세그먼트(153), 문자열 세그먼트(154)를 포함하며, 바디(160)는 데이터 반복 세그먼트(161)와 데이터 세그먼트(162)를 포함한다.
이하 기술된 프로그램은 도 3(a)에 도시된 특정구간의 데이터를 주어진 조건에 의해서 반복적으로 접근하도록 구현된 패킷에 대한 패킷 정의부의 XML프로그램 예제이다.
<packet [0077] type="binary">
<define/>
<receive>
<block id="head">
<data id="ident" size="2" type="string"/>
<if condition=":ident != 'HZ'">
<return code="-1" msg="ident error"/>
</if>
<data id="namesz" type="int4" netnumber="true"/>
<data id="name" type="string" size=":namesz"/>
<data id="flag" type="string" size="1"/>
<next goto="body"/>
<return code="$result_code" msg="$result_msg"/>
</block>
<block id="body">
<repeat condition="$EOF" id="loop01">
<data id="size" type="string" size="2" convert="int4"/>
<data id="data" type="string" size=":size" />
</repeat>
<return code="0" msg="ok"/>
</block>
</receive>
<send/>
</packet>
상기 오류검출 세그먼트(151)는 패킷의 오류를 검출하는 세그먼트로 상기 예제에 기술된 HZ를 크기 2만큼 문자열 형태로 받은 다음 아래의 if문에 의해서 해당 값이 정상적인지 검사하고 정상적인 값이 아닐 경우 오류를 리턴한다.
네임크기인식 세그먼트(152)는 패킷네임을 어느 정도의 크기로 읽어야 할지 정하는 세그먼트로 패킷네임의 크기를 읽고 네트워크 바이트형을 역변환하며, 만일 상기 예제에 기술된 'netnumber'가 'send'에서 사용되어지면 네트워크 바이트로 변환한다.
패킷네임 세그먼트(153)는 패킷네임을 문자열 형태로 상기 네임크기인식 세그먼트(152)에서 받은 크기만큼 데이터를 읽는다.
문자열 세그먼트(154)는 저장된 세그먼트의 값을 문자열 1의 크기로 읽는다.
데이터 반복 세그먼트(161)는 상기 바디(160)에 포함된 데이터 세트(Data1, Data2, Data3, Data4)에서 각 해당 데이터 부분을 반복해서 읽기 위해 반복구문(repeat)이 설정되어 있으며 문자열의 데이터를 숫자형으로 변환하여 해당 데이터를 읽는다.
데이터 세그먼트(162)는 데이터가 저장된 세그먼트로, 상기 데이터 반복 세그먼트(161)에서 얻은 크기값만큼 다음 해당 데이터를 읽는다.
도 3(b)는 본 발명의 다른 실시예인 데이터 세트와 연동 가능하도록 구현된 패킷(20)에 대한 구성을 나타낸 도면으로, 여기서 상기 헤드(150)는 변수타입 세그먼트(155), 네임크기인식 세그먼트(152), 패킷네임 세그먼트(153)를 포함하며, 바디(160)는 데이터 반복 세그먼트(161)와 데이터 세그먼트(162)를 포함한다.
이하 기술된 프로그램은 도 3(b)에 데이터 세트와 연동 가능하도록 구현된 패킷에 대한 패킷 정의부의 XML프로그램 예제이다.
<packet [0086] type="binary">
<define>
<value name="typename" type="string"/>
</define>
<receive>
<block id="head">
<data id="type" type="int1"/>
<if condition=":type == 1" then="$typename='string'"/>
<else then="typename='int4'"/>
<data id="size" type="int4" netnumber="true"/>
<data id="name" type="string" size=":size"/>
<dataset name="addhead" parameter=":name, $typename,0,0"/>
<next goto="body"/>
<return code="$result_code" msg="$result_msg"/>
</block>
<block id="body">
<repeat condition="$EOF" id="loop01">
<data id="size" type="string" size="2" convert="int4"/>
<data id="data" type="string" size=":size" />
<dataset id="rowidx" name="addrow" />
<dataset name="putrowdata" parameter=":rowidx, 0, :data"/>
</repeat>
<return code="0" msg="ok"/>
</block>
</receive>
<send/>
</packet>
변수타입 세그먼트(155)는 읽어온 변수타입이 숫자일 경우 문자열로 변환하여 정의부(define)에 정의된 변수에 넣어 준다.
패킷네임 세그먼트(153)는 데이터 세트(Data1, Data2, Data3, Data4)에서 사용하는 인터페이스의 이름이며 파라미터에 필요한 데이터를 채워서 데이터 세트의 헤드(150)를 구성한다.
데이터 반복 세그먼트(161)는 상기 바디(160)에 포함된 데이터 세트(Data1, Data2, Data3, Data4)에서 각 해당 데이터 부분을 반복해서 읽기 위해 반복구문(repeat)이 설정되어 있으며 문자열의 데이터를 숫자형으로 변환하여 해당 데이터를 읽는다.
데이터 세그먼트(162)는 데이터가 저장된 세그먼트로, 상기 반복 세그먼트에서 얻은 크기값만큼 다음 해당 데이터를 읽는다.
여기서, 상기 데이터 세그먼트(162)는 데이터 세트에 ID가 지정된 경우 해당 인터페이스 실행 후 결과값을 받아올 수 있으며 데이터 세트의 이름이 'addrow'인 경우 추가된 열의 인덱스를 리턴하고 그 밑에 기술된 'dataset'의 'parameter'에서는 그 인덱스를 이용하여 데이터를 넣어 주고 있다.
도 4는 본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템의 플랙서블 어댑터의 개념적 구조를 나타낸 블록도이며, 도 5는 본 발명에 따른 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템의 플랙서블 어댑터의 패킷 처리과정을 도시한 구조도이다.
도 4를 참조하면, 상기 플랙서블 어댑터(300)는 프로토콜을 통해 데이터를 주고받는 플러그인에서부터 외부 XML이나, 다양한 패킷(20)을 전송받아 데이터를 재구성하기 위하여 전송받은 패킷(20)을 처리하는 패킷 처리부(310) 및 패킷 관리부(320)를 포함한다.
또한, 상기 플랙서블 어댑터(300)는 패킷(20)을 처리하는 규칙을 정의하는 패킷 처리 정의부(360)와 패킷 변수 정의부(350)를 포함하며, 명령어 또는 패킷(20)을 임시로 저장하는 명령어 저장부(330)와 임시 패킷 저장부(340) 등의 저장공간 또한 구성된다.
패킷 관리부(320)는 여려 프로토콜로 이루어진 다양한 플러그인으로부터 XML데이터나 패킷(20)을 송신받아 패킷 처리부(310)로 전송하여 데이터의 처리를 요청한다.
여기서, 상기 데이터 처리는 상기 기술한 패킷 정의부(100)에서 정의된 규칙에 따라 진행되며, 이러한 규칙은 패킷 처리 정의부(360)에 의해 상기 패킷 관리부(320) 또는 패킷 처리부(310)로 전송된다.
또한, 상기 데이터 처리 과정에서 변수에 대한 처리는 상기 패킷(20) 변수 정의부에서 전송받은 규칙을 통해 이루어지며, 패킷(20) 변수 정의부는 상기 패킷 처리부(310)에 저정의된 변수 규칙들이 등록되어 있다.
상기 플랙서블 어댑터(300)는 신속하고 원활한 데이터 처리를 위해 임시 저장공간이 마련되는데, 그 중 하나인 명령어 저장부(330)는 데이터 처리 수행 성능을 향상시키기 위해서 자주 처리되는 명령어를 저장한다.
그리고, 임시 패킷 저장부(340)는 데이터 처리 과정을 수행하는 중에 처리가 용이한 패킷이 들어오면 수행중인 이전 패킷을 임시로 저장하여 처리성능을 향상시킨다.
상기와 같이 구성된 플랙서블 어댑터(300)는 도 5를 참조하면, 패킷 처리부(310)에서 다음과 같은 자료 구조를 통하여 데이터를 처리한다.
우선, 다양한 프로토콜로부터 패킷(20)을 패킷정의 자료 모듈(420)로 전송한다.
다음으로 상기 데이터는 패킷정의 자료 모듈(420)에서 정의된 구문에 따라 조건문을 판단하여 처리될 준비가 갖추어지는데, 상기 조건문 판단은 조건문 판단 모듈(425)을 통해 이루어진다.
여기서, 상기 데이터에 기록된 인자 중에서 조건문에 사용할 인자를 큐에 채워서 패킷정의 자료 모듈(420)에서 정의된 조건문과 같이 조건문 판단 모듈(425)로 전송한 다음, 조건문 중에서 'repeat', 'if', 'else', 'elif' 구문의 경우 조건문을 판단하여 그 결과값을 참/거짓(true/false) 형태로 패킷정의 자료 모듈(420)로 전송한다.
다음으로, 상기 데이터는 패킷정의 자료 모듈(420)에서 정의된 조건문에 따라 데이터가 정리된 후 데이터에 기재된 'next', 'elif', 'else', 'dataset', 'operator' 등의 조건문은 삭제된 데이터 자료구조만으로 정리되어 패킷데이터 자료 모듈(430)로 전송된다.
다음으로, 데이터 자료구조로 정리된 상기 데이터는 패킷 데이터 자료 모듈(430)에서 동적 어레이 모듈에 의해 재배열된다.
상기 본 명세서에 기재된 내용 및 청구범위에 사용된 용어는 사전적인 의미로 한정 해석되어서는 아니되며, 발명자는 자신의 발명을 최선의 방법으로 설명하기 위해 용어의 개념을 적절히 정의할 수 있다는 원칙에 입각하여, 본 발명의 기술적 사상에 부합되는 의미와 개념으로 해석되어야 한다.
따라서, 본 명세서에 기재된 실시예 뿐만 아니라 도면에 도시된 형상 및 구성은 본 발명의 본 발명의 기술적 사상을 모두 표현하는 것은 아니므로, 본 발명의 출원시점에 있어 이들을 대체할 수 있는 다양한 균등물과 변형예들이 존재할 수 있음을 이해하여야 한다.
10 : 프로토콜 20 : 패킷
100 : 패킷 정의부 200 : XML매퍼
300 : 플랙서블 어댑터

Claims (6)

  1. 네트워크상의 패킷을 제어하는 어댑터 시스템에 있어서,
    XML을 통하여 프로토콜에서 전송받은 패킷에서 입·출력되는 데이터에 대한 처리방법을 정의한 패킷 정의부;
    상기의 데이터 중 XML형태의 패킷 데이터에서 특정한 데이터 부분만을 획득하기 위해서 XPATH 형태로 데이터 획득 경로를 지정하는 방법과 특정한 구조를 지닌 데이터 세트로 가공하는 방법을 정의한 XML매퍼; 및
    상기 패킷 정의부에 따라 패킷이 전송되는 프로토콜에 따라 가공하는 플랙서블 어댑터(Flexible Adapter);를 포함하여 어댑터 시스템에 대한 버전 변경이나 수정 없이 통신 환경에 적용 가능한 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템.
  2. 제 1항에 있어서,
    상기 패킷 정의부는 상기 패킷 정의부에서 설정되는 변수들을 선언하는 엘리먼트가 구성된 변수 정의부(define);
    수신된 패킷(Packet)을 분석 처리하는 부분을 기술하는 엘리먼트가 구성된 수신부(receive); 및
    상기 처리된 데이터의 송신을 위해서 기술하는 엘리먼트가 구성된 송신부(send);를 포함하는 것을 특징으로 하는 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템.
  3. 제 2항에 있어서,
    상기 패킷 정의부는 상기 변수 정의부와, 수신부와, 송신부에 구성된 엘리먼트가 트리구조로 형성되는 것을 특징으로 하는 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 패킷은 상기 패킷 정의부에 구성된 엘리먼트와 대응되는 세그먼트들이 포함된 헤드(Head)와, 하나 이상의 데이터 세트가 포함된 바디(Body)를 포함하는 것을 특징으로 하는 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템.
  5. 제 1항에 있어서,
    상기 플랙서블 어댑터는,
    XML 또는 패킷을 전송받아 데이터 처리를 요청하는 패킷 관리부;
    상기 패킷 관리부로부터 전송받은 데이터를 상기 패킷 정의부에서 정의된 규칙에 따라 처리하는 패킷 처리부;
    상기 패킷 정의부에서 정의된 규칙을 상기 패킷 관리부 또는 상기 패킷 처리부로 전송하는 패킷 처리 정의부; 및
    상기 패킷 정의부에서 정의된 변수가 등록되며 등록된 변수 규칙을 상기 패킷 처리부로 전송하는 패킷 변수 정의부;를 포함하는 것을 특징으로 하는 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템.
  6. 제 5항에 있어서,
    상기 플랙서블 어댑터는 상기 패킷 처리부에서 처리되는 명령어를 저장하는 명령어 저장부; 및
    데이터 처리 과정을 수행하는 중에 이전 패킷을 임시로 저장하는 임시 패킷 저장부;를 추가로 포함하여, 데이터 처리 수행 성능을 향상시키도록 마련되는 것을 특징으로 하는 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템.
KR1020130120643A 2013-10-10 2013-10-10 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템 KR102189417B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130120643A KR102189417B1 (ko) 2013-10-10 2013-10-10 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130120643A KR102189417B1 (ko) 2013-10-10 2013-10-10 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템

Publications (2)

Publication Number Publication Date
KR20150041983A KR20150041983A (ko) 2015-04-20
KR102189417B1 true KR102189417B1 (ko) 2020-12-11

Family

ID=53035255

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130120643A KR102189417B1 (ko) 2013-10-10 2013-10-10 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템

Country Status (1)

Country Link
KR (1) KR102189417B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004519755A (ja) 2000-09-07 2004-07-02 オラクル・インターナショナル・コーポレイション Xmlデータ記憶、クエリー再書込、ビジュアライゼーション、マッピング、および参照のための方法および装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100900514B1 (ko) * 2006-12-04 2009-06-02 한국전자통신연구원 Xml 공통 형식을 이용한 이기종 센서 데이터 스트림처리 시스템 및 방법
KR101075173B1 (ko) * 2009-11-04 2011-10-20 주식회사 휴먼앤소프트웨어 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템.

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004519755A (ja) 2000-09-07 2004-07-02 オラクル・インターナショナル・コーポレイション Xmlデータ記憶、クエリー再書込、ビジュアライゼーション、マッピング、および参照のための方法および装置

Also Published As

Publication number Publication date
KR20150041983A (ko) 2015-04-20

Similar Documents

Publication Publication Date Title
US20220035600A1 (en) API Specification Generation
US11086671B2 (en) Commanded message-based job flow cancellation in container-supported many task computing
Cavalieri et al. Integrating OPC UA with web technologies to enhance interoperability
CN111209004B (zh) 代码转换方法及装置
US11144293B2 (en) Automated message-based job flow resource management in container-supported many task computing
US11169788B2 (en) Per task routine distributed resolver
US20140068047A1 (en) System and Method for Validating Documentation of Representational State Transfer (Rest) Services
US11455190B2 (en) Implicit status in many task computing
CN111654542B (zh) 代理服务器、执行服务器、接收设备以及任务执行方法
US11552868B1 (en) Collect and forward
CN115080826A (zh) 一种搜索查询方法、中间件、设备及存储介质
Bonnarel et al. IVOA server-side operations for data access Version 1.0
CN114168149A (zh) 一种数据转换方法及装置
CN114490889A (zh) 配置信息处理方法、装置、设备、介质及程序产品
CN112650529B (zh) 可配置生成移动端app代码的系统及方法
CN113726762A (zh) 基于配置文件的物联网设备协议解析方法
KR102189417B1 (ko) 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템
CN106933549B (zh) 基于流计算引擎的可定制化模块开发系统及方法
CN109408577B (zh) Oracle数据库json解析方法、系统、装置及可存储介质
KR101075173B1 (ko) 다양한 프로토콜 간의 데이터 전송을 위한 플랙서블 어댑터 시스템.
CN114780800A (zh) 一种多链路路由管理方法和装置
CN107590256A (zh) 异构数据库同步方法和装置
CN111984976A (zh) 一种生成安全扫描插件的方法及装置
Du Opaque response generation enabling automatic creation of virtual services for service virtualisation
US11972357B2 (en) Application programming interface enablement of consistent ontology model instantiation

Legal Events

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