KR100679865B1 - 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템 - Google Patents

유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템 Download PDF

Info

Publication number
KR100679865B1
KR100679865B1 KR1020050018715A KR20050018715A KR100679865B1 KR 100679865 B1 KR100679865 B1 KR 100679865B1 KR 1020050018715 A KR1020050018715 A KR 1020050018715A KR 20050018715 A KR20050018715 A KR 20050018715A KR 100679865 B1 KR100679865 B1 KR 100679865B1
Authority
KR
South Korea
Prior art keywords
message
broker
adapter
port
subsystem
Prior art date
Application number
KR1020050018715A
Other languages
English (en)
Other versions
KR20060098780A (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 KR1020050018715A priority Critical patent/KR100679865B1/ko
Priority to US11/817,253 priority patent/US8015569B2/en
Priority to PCT/KR2006/000310 priority patent/WO2006107137A1/en
Publication of KR20060098780A publication Critical patent/KR20060098780A/ko
Application granted granted Critical
Publication of KR100679865B1 publication Critical patent/KR100679865B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F03MACHINES OR ENGINES FOR LIQUIDS; WIND, SPRING, OR WEIGHT MOTORS; PRODUCING MECHANICAL POWER OR A REACTIVE PROPULSIVE THRUST, NOT OTHERWISE PROVIDED FOR
    • F03BMACHINES OR ENGINES FOR LIQUIDS
    • F03B13/00Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates
    • F03B13/12Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy
    • F03B13/26Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using tide energy
    • F03B13/264Adaptations of machines or engines for special use; Combinations of machines or engines with driving or driven apparatus; Power stations or aggregates characterised by using wave or tide energy using tide energy using the horizontal flow of water resulting from tide movement
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F03MACHINES OR ENGINES FOR LIQUIDS; WIND, SPRING, OR WEIGHT MOTORS; PRODUCING MECHANICAL POWER OR A REACTIVE PROPULSIVE THRUST, NOT OTHERWISE PROVIDED FOR
    • F03BMACHINES OR ENGINES FOR LIQUIDS
    • F03B17/00Other machines or engines
    • F03B17/02Other machines or engines using hydrostatic thrust
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F03MACHINES OR ENGINES FOR LIQUIDS; WIND, SPRING, OR WEIGHT MOTORS; PRODUCING MECHANICAL POWER OR A REACTIVE PROPULSIVE THRUST, NOT OTHERWISE PROVIDED FOR
    • F03BMACHINES OR ENGINES FOR LIQUIDS
    • F03B3/00Machines or engines of reaction type; Parts or details peculiar thereto
    • F03B3/12Blades; Blade-carrying rotors
    • F03B3/14Rotors having adjustable blades
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F05INDEXING SCHEMES RELATING TO ENGINES OR PUMPS IN VARIOUS SUBCLASSES OF CLASSES F01-F04
    • F05BINDEXING SCHEME RELATING TO WIND, SPRING, WEIGHT, INERTIA OR LIKE MOTORS, TO MACHINES OR ENGINES FOR LIQUIDS COVERED BY SUBCLASSES F03B, F03D AND F03G
    • F05B2220/00Application
    • F05B2220/30Application in turbines
    • F05B2220/32Application in turbines in water turbines
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F05INDEXING SCHEMES RELATING TO ENGINES OR PUMPS IN VARIOUS SUBCLASSES OF CLASSES F01-F04
    • F05BINDEXING SCHEME RELATING TO WIND, SPRING, WEIGHT, INERTIA OR LIKE MOTORS, TO MACHINES OR ENGINES FOR LIQUIDS COVERED BY SUBCLASSES F03B, F03D AND F03G
    • F05B2220/00Application
    • F05B2220/70Application in combination with
    • F05B2220/706Application in combination with an electrical generator
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02EREDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
    • Y02E10/00Energy generation through renewable energy sources
    • Y02E10/20Hydro energy

Abstract

본 발명은 유비쿼터스 환경 구축을 위한 통합 플랫폼에서 다양하고 상이한 시스템들이 추가적인 개발 수정 요구를 최소한으로 줄이고, 상호 작용을 위해 서브 시스템들 사이의 인터페이스 개발을 위해 개발자들이 추가적으로 작업하는 부담을 최소한으로 줄일 수 있도록 한 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템에 관한 것이다. 본 발명에 따른 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템은 실제 메시지를 서브 시스템 간에 전달하는 중계자 역할을 담당하는 메시지 브로커와, 서브 시스템과 상기 메시지 브로커 사이의 인터페이스 역할을 담당하는 메시징 어댑터를 포함하는 메시지 버스를 가지며; 상기 메시징 어댑터는 상기 서브 시스템에 설치되어 상기 서브 시스템과 인터페이스 하기 위한 제 1 어플리케이션 포트를 포함하는 제 1 어댑터와, 상기 제 1 어댑터와 인터페이스 하기 위한 제 2 어플리케이션 포트와 상기 메시지 브로커와 연동하는 브로커 포트를 포함하는 제 2 어댑터를 구비한다. 따라서, 본 발명은 기능 요소들을 가능한 한 분리하여 설계함으로써, 메시지의 정보 요소를 확장 및 변경에 효율적으로 대응할 수 있으며, 시스템의 성능에 따라 구성을 변경하는 것이 용이하게 할 수 있다.
유비쿼터스, 메시지 버스, 메시지 브로커, 메시징 어댑터, XML.

Description

유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템{A System to Support the Heterogeneity in Ubiquitous Computing Environment}
도 1은 본 발명의 실시 예에 따른 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템을 개략적으로 나타내는 도면.
도 2는 도 1에 도시된 메시지 버스 프로토콜 스택 상에서의 위치를 나타내는 도면.
도 3은 본 발명의 메시지 구조를 나타내는 도면.
도 4는 본 발명의 메시지 버스를 사용한 두 시스템 사이의 메시지 전달 과정을 나타내는 도면.
도 5는 본 발명의 메시지 버스의 추상화된 전체구조를 나타내는 도면.
도 6은 본 발명의 메시지 버스를 적용 모델을 나타내는 도면.
도 7은 본 발명의 시스템들과 메시지 버스의 구성을 나타내는 도면.
도 8은 본 발명의 메시징 어댑터의 세부 구조를 나타내는 도면.
도 9는 도 8에 도시된 백-엔드 어댑터의 메시지 전송과정을 나타내는 도면.
도 10은 도 8에 도시된 프론트-엔드 어댑터의 수신 메시지 처리과정을 나타내는 도면.
*** 도면의 주요 부분에 대한 부호설명 ***
10 : 서브 시스템 30 : 메시징 어댑터
40 : 메시지 브로커 50 : 메시지
70 : 프론트-엔드 어댑터 80 : 백-엔드 어댑터
87 : 컨트롤러
본 발명은 유비쿼터스 컴퓨팅 환경에 관한 것으로, 특히 유비쿼터스 환경 구축을 위한 통합 플랫폼에서 다양하고 상이한 시스템들이 추가적인 개발 수정 요구를 최소한으로 줄이고, 상호 작용을 위해 서브 시스템들 사이의 인터페이스 개발을 위해 개발자들이 추가적으로 작업하는 부담을 최소한으로 줄일 수 있도록 한 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템에 관한 것이다.
일반적으로, 유비쿼터스 컴퓨팅 환경은 다양한 장치 혹은 시스템들이 동적으로 결합하여 구성되는 환경이다. 이러한 다양한 장치 혹은 시스템들이 효율적으로 연동하여 사용자들을 위한 서비스를 제공할 수 있도록 하는 기반을 구축하는 것이 중요하다.
유비쿼터스 컴퓨팅 환경은 "서로 상이하고 이동이 가능한 시스템들이 동적으로 조화를 이루어 상호 작용하는 환경"이라고 정의할 수 있다. 즉, 컴퓨팅 환경을 구성하는 서브 시스템들이 동적으로 들어오고 나가는 것이 가능하며 그들의 협력 관계도 동적으로 변화할 수 있다. 이러한 동적으로 변화하는 환경에서의 상호 작용 을 효율적으로 제공하기 위한 방법론에 대한 연구가 필요하다.
이미 잘 알려져 있는 Aura(Garlan, D., Siewiorek, D., Smailagic, A., Steenkiste, P., "Project Aura: Toward Distraction-Free Pervasive Computing," IEEE Pervasive Computing, Vol.1, No.2, April-June 2002, pp.22-31.) 및 Gaia(Manuel Roman, Christopher K. Hess, Renato Cerqueira, Anand Ranganathan, Roy H. Campbell, and Klara Nahrstedt, ,"A Middleware Infrastructure to Enable Active Spaces,"IEEE Pervasive Computing, Vol.1, No.4, October-December 2002, pp.74-83.) 등의 유비쿼터스 컴퓨팅 환경을 위한 미들웨어에서는 시스템 상호 작용을 위한 방법론으로 CORBA(Fintan Bolton, Pure Corba, SAMS, July 2001.)를 사용하고 있다.
CORBA는 기본적으로 분산 환경에서의 객체 관리와 그룹 관리를 위한 기능 요소를 포함하고 있으므로, 서로 독립된 시스템들이 연동하는 유비쿼터스 컴퓨팅 환경에 적용할 수 있기 때문이다.
그러나, 기존의 분산 환경보다 유비쿼터스 컴퓨팅 환경은 시스템의 다양성이나 이동성이 더 자주 발생하고 그 영향이 더 크므로 이에 적합한 방법론의 개발이 추가로 필요하게 된다.
CORBA의 경우에는 서로 상이한 객체들을 연결하기 위한 중개자로서의 역할을 담당하고 있고, 단순히 객체 인스턴스를 구별하기 위한 방법론으로 사용되고 있다. 기존 시스템에 대한 추가적인 수정을 최소화하면서 신규 통합 시스템과 연동하도록 하는 기술로서 사용되고 있다. 그리고, 지능적인 홈 네트워크 구축을 위한 방안 또 는 서로 다른 미들웨어를 사용하는 장치들을 연결하기 위한 방안으로 어댑터를 이용하고 있다.
그러나, 종래의 어댑터들이 서로 연동해야 할 대상에 맞추어 개별 사례에 따라 그 필요한 기능을 제공하는 데에만 치중하고 있을 뿐, 체계적인 구조를 갖고 설계되어 있지 못하다. 즉, 새로운 종류의 장치나 미들웨어를 연결해야 하는 경우에는 어댑터에 대해서 다시 전체적인 설계를 새롭게 해야 하는 부담을 갖는다.
따라서 상기와 같은 문제점을 해결하기 위하여, 본 발명은 유비쿼터스 환경 구축을 위한 통합 플랫폼에서 다양하고 상이한 시스템들이 추가적인 개발 수정 요구를 최소한으로 줄이고, 상호 작용을 위해 서브 시스템들 사이의 인터페이스 개발을 위해 개발자들이 추가적으로 작업하는 부담을 최소한으로 줄일 수 있도록 한 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템을 제공하는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명의 실시 예에 따른 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템은 실제 메시지를 서브 시스템 간에 전달하는 중계자 역할을 담당하는 메시지 브로커와, 서브 시스템과 상기 메시지 브로커 사이의 인터페이스 역할을 담당하는 메시징 어댑터를 포함하는 메시지 버스를 가지며; 상기 메시징 어댑터는 상기 서브 시스템에 설치되어 상기 서브 시스템과 인터페이스 하기 위한 제 1 어플리케이션 포트를 포함하는 제 1 어댑터와, 상기 제 1 어댑터와 인터페이스 하기 위한 제 2 어플리케이션 포트와 상기 메시지 브로커와 연동하는 브로커 포트를 포함하는 제 2 어댑터를 구비하는 것을 특징으로 한다.
상기 시스템에서 상기 메시지의 형식은 XML(Extensible Markup Language)인 것을 특징으로 한다.
상기 시스템에서 상기 제 1 어댑터는 상기 서브 시스템으로부터 상기 메시지 전달 요청을 받는 제 1 어플리케이션 소스와, 상기 메시지 브로커를 통해 전달되는 상기 메시지를 수신하여 상기 서브 시스템에 전달하는 제 1 어플리케이션 싱크를 구비하는 것을 특징으로 한다.
상기 시스템에서 상기 제 2 어댑터는 상기 제 2 어플리케이션 포트와 상기 브로커 포트 사이에 위치하여 상기 메시지 브로커에서 전달된 상기 메시지에서 상기 서브 시스템이 원하는 메시지를 생성하는 도관들과, 상기 브로커 포트와 상기 도관들 사이에 위치하여 상기 브로커 메시지를 통해 상기 메시징 어댑터로 전달된 상기 메시지를 저장하는 큐(Queue)와, 상기 제 2 어플리케이션 포트와 상기 브로커 포트 및 도관들을 제어하는 컨트롤러를 포함하는 것을 특징으로 한다.
상기 시스템에서 상기 제 2 어플리케이션 포트는 상기 제 1 어플리케이션 포트로부터의 상기 메시지 전달 요청을 받는 제 2 어플리케이션 소스와, 상기 도관들로부터의 메시지를 상기 제 1 어플리케이션 포트로 전달하는 제 2 어플리케이션 싱크를 구비하는 것을 특징으로 한다.
상기 시스템에서 상기 브로커 포트는 상기 도관들로부터의 상기 메시지를 상기 메시지 브로커로 전달하는 브로커 포트의 싱크와, 상기 메시지 브로커로부터의 상기 메시지를 상기 도관들에 전달하는 브로커 포트의 소스를 구비하는 것을 특징 으로 한다.
상기 시스템에서 상기 서브 시스템에서 전송하는 메시지는 상기 제 1 어댑터의 제 1 어플리케이션 싱크, 상기 제 2 어댑터의 컨트롤러, 상기 제 2 어플리케이션 소스, 상기 도관들 및 상기 메시지 브로커의 싱크를 통해 상기 메시지 브로커에 전달되는 것을 특징으로 한다.
이하에서, 첨부된 도면 및 실시 예를 통해 본 발명의 실시 예를 구체적으로 살펴보면 다음과 같다.
유비쿼터스 컴퓨팅 환경에는 개인이 사용하는 무선 단말기, 센서, 서버, RFID 등 다양한 종류의 시스템들이 존재하며, 이들이 동적으로 이동하거나 새롭게 환경에 추가되고 이전되면서 계속적으로 변화를 발생시킨다. 그러므로, 유비쿼터스 컴퓨팅 환경이 추구하는 서비스를 사용자에게 이음매 없이 제공하기 위해서는 시스템들의 이동이나 변화에 효율적으로 대응하면서 통합하여 연동할 수 있는 기반을 구축하는 것이 중요하다.
유비쿼터스 컴퓨팅 환경 구축을 위한 통합이란 "통합 플랫폼"이라고, 지칭하는 기반 구조가 제공되고, 시스템들이 이 기반 구조에 "연결"됨으로써 타 시스템들과 상호 작용할 수 있게 되는 것을 의미한다.
유비쿼터스 컴퓨팅 환경에서의 시스템 "통합"은 물리적인 관점과 논리적인 관점에서 이루어진다.
물리적인 관점에서의 통합은 물리적인 공간 내에 해당 시스템이 설치되고 네트워크에 연결되며 이 통합 플랫폼 내에서 하나의 개체로서 인식되기까지의 과정을 의미한다. 즉, 통합 플랫폼에 해당 시스템이 연결되는 것을 의미한다.
그리고, 논리적인 관점에서의 통합은 해당 유비쿼터스 컴퓨팅 환경 내의 타 시스템이 새롭게 물리적으로 통합된 시스템을 인지하고 상호 작용할 수 있는 상태에 이르는 것을 의미한다.
앞서 기술한 두 단계에서의 통합을 지원하기 위해 통합 플랫폼에서 제공되어야 할 기능 요구 사항을 다음과 같이 다섯 가지로 정리할 수 있다.
첫째, 새롭게 연결된 시스템이 해당 유비쿼터스 컴퓨팅 환경에 물리적 통합을 위해 "등록"하는 과정이 필요하다.
둘째, 해당 유비쿼터스 컴퓨팅 환경 내에서 서브 시스템을 구별하기 위해 "이름"이 필요한데, 이 "이름"은 시스템의 위치를 반영하는 동시에 위치에 무관하게 해당 시스템을 구별해낼 수 있는 구조를 가져야 한다.
셋째, 물리적으로 통합된 시스템이 기존의 시스템들에 대한 정보를 획득할 수 있고, 기존의 시스템이 물리적으로 통합된 시스템의 정보를 획득할 수 있는 방법론이 제공되어야 한다.
넷째, 서로 상이한 시스템들이 서브 시스템들의 구현 상황에 크게 구애 받지 않고 효율적으로 상호 작용할 수 있는 방법론이 제공되어야 한다.
다섯째, 관리자의 입장에서 해당 유비쿼터스 컴퓨팅 환경 내에서 정상적으로 동작하는 서브 시스템이 무엇이 있는 파악할 수 있는 방법론이 제공되어야 할 것이다.
따라서, 본 발명은 위의 요구 사항 중에서 네 번째 사항을 만족시키기 위하 여 메시지 버스를 제안한다. 이 메시지 버스를 통합 플랫폼에서 사용하려고 하는 이유는 메시지를 사용하여 상호 작용하는 방법론이 시스템 간의 의존도를 가장 낮출 수 있고, 상이한 환경에서 동작하는 시스템의 연동에 있어 가장 효율적인 방법이기 때문이다.
유비쿼터스 컴퓨팅 환경을 구성하는 시스템들은 메시지 버스를 사용하여 통신하는데, 메시지 버스는 도 1에 도시된 바와 같이 실제 메시지를 서브 시스템 간에 전달하는 중계자 역할을 하는 메시지 브로커(40)와, 서브 시스템(10)과 메시지 브로커(40) 사이의 인터페이스 역할을 담당하는 메시징 어댑터(30)로 구성된다.
메시지 브로커(40)는 메시지 라우팅 혹은 메시지 중개자 역할을 담당한다.
메시징 어댑터(30)는 서브 시스템(10)이 메시지 브로커(40)와 연동할 수 있도록 하는 인터페이스를 제공한다.
서브 시스템들(10) 간에 상호 작용할 때, 서브 시스템들(10) 관점에서는 상대 시스템과 직접 통신하는 것으로 여길 수 있지만, 실제로는 메시징 어댑터(30) 및 메시지 브로커(40)를 거쳐, 즉, 메시지 버스를 통하여 이루어지게 된다.
서브 시스템(10)이 자신과 상호 작용해야 하는 시스템과 직접 연결을 설정하지 않고 이러한 메시지 버스를 사용하여 얻을 수 있는 장점은 크게 두 가지가 있다.
첫째, 메시지 브로커(40)를 사용하면, 서브 시스템(10)은 메시지 내에 수신 시스템을 명시하여 메시지 브로커(40)에게 전달하기만 하면 메시지 브로커(40)가 수신 시스템에게 메시지를 전달해 준다. 즉, 서브 시스템(10)은 메시지 브로커 (40)와의 연결만 설정하고 있으면 메시지 송수신이 가능해진다. 다시 말하여, 유비쿼터스 컴퓨팅 환경에는 매우 다양한 장치와 시스템들이 존재하고 이들 간의 메시지 송수신이 필요하게 된다. 그러므로, 서브 시스템(10)이 직접 연결을 관리하게 되면 연결되는 다양한 시스템들의 특징을 인지해야 하지만, 메시지 브로커(40)를 사용하게 되면, 타 시스템은 상호 작용 대상으로만 인지하면 되고, 메시지 교환에 필요한 부담을 메시지 브로커(40)에게 일임할 수 있으므로 시스템 개발자나 관리자의 입장에서는 그 부담을 크게 줄일 수 있다.
둘째, 메시지 브로커(40)가 메시지 중개를 효율적으로 수행할 수 있도록 하기 위해 메시지의 표준 형식을 정의하는데, 이러한 표준 형식 때문에 새롭게 유비쿼터스 컴퓨팅 환경에 도입되는 시스템과 기존 시스템과의 연동을 고려할 때, 메시지 형식에 대해서는 보다 쉽게 접근할 수 있다. 즉, 기존 시스템의 메시지 형식은 표준 형식에 기반하여 정의되어 있으므로, 이 정의에 따라 메시지를 생성해서 수신하고 송신하면 된다. 또한, 새롭게 개발되는 시스템도 같은 형식의 틀 안에서 메시지를 정의하므로 기존 시스템은 메시지 처리를 위한 절차를 크게 수정하지 않아도 된다.
한편, 유비쿼터스 컴퓨팅 환경의 범위를 확장하여 간다고 하면, 메시지 브로커(40) 간의 계층화된 연결 관계를 구성하게 된다. 그리고, 메시지 브로커(40) 간의 메시지 중개에 필요한 정보들을 교환하기 위한 프로토콜들을 추가로 구비하여 서로 다른 메시지 브로커(40)와 연결된 시스템 간의 메시지 교환이 자유롭게 할 수 있다.
또한, 메시지 버스는 도 2에 도시된 바와 같이 프로토콜 스택의 관점에서 볼 때 전송 계층과 응용 계층 사이에 위치한다. 유비쿼터스 환경에서는 이동성에 대한 고려가 주요 요구 사항 중의 하나인데, 서브 시스템(10)과 메시지 브로커(40) 간의 논리적인 연결을 이동에 무관하게 유지하고 관리하는 것은 전송 계층 이하에서의 이동성 지원 기능을 활용한다.
메시지 버스를 통하여 시스템들(10)이 교환하는 메시지 형식은 XML(Tim Bray, Jean Paoli, C. M. Sperberg-McQueen and Eve Maler, Extensible Markup Language 1.0 (Second Edition), W3C Recommendation. eds., October 2000.)에 따른다. 메시지 내의 정보 요소를 표현할 때, 고정된 바이트(Byte) 수를 사용하거나 MIME(N. Freed, N. Borenstein, Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies, IETF RFC 2045, November 1996.) 형식을 사용할 수 있지만, XML의 경우는 정보 요소에 변경이 생기면 시스템 내에서 메시지를 해석하는 부분을 크게 수정해야 하는 부담이 있다. 그리고, MINE의 경우는 확장성이 있지만, 정보 요소들 간의 계층적인 관계를 표현하는 것이 용이하지 않다는 단점이 있어서, 확장성이 있고 표현이 자유로운 XML을 사용한다.
도 3에 도시된 바와 같이 메시지(50)의 구조는 계층적인 구조를 갖는다. 메시지 브로커(40)가 메시지 중개를 위해 필요한 정보 요소들이 정의된 메시지 버스 헤더(Message Bus Header)(52)와, 메시지 버스 바디(Message Bus Body)(54)로 구분된다.
메시지 버스 바다(54)는 메시지를 송수신하는 시스템이 정의한 어플리케이션 헤더(Application Header)(56)와, 어플리케이션 데이터(Application Data)(58)로 구분된다.
메시지 버스를 사용하여 2개의 시스템(System A, System B)간의 메시지 전달과정을 도 4와 결부하여 설명하면 다음과 같다.
먼저, 시스템 A에서 만들어진 XML 형식의 메시지(=uTMessage)가 메시징 어댑터(30)에 의해 메시지 브로커(40)에서 처리할 수 있는 메시지(=BrokerMsg)의 형식으로 변환되고, 수신하는 시스템 B에 전달되기 전에 다시 역변환된다.
송신 시스템은 전송하고자 하는 정보 요소를 메시징 어댑터(30)에게 전달하면서 크리에이트 메시지(createMessage)를 요청하면 이미 정의된 메시지 프로토콜과 XML 형식에 따라 메시징 어댑터(30)가 메시지를 생성하게 된다. 수신 시스템에서는 메시지를 수신하는 경우에 추출해야 할 정보 요소를 온 메시지(onMessage)에 등록해 두면 이미 정의된 메시지 프로토콜과 XML 형식에 따라 메시징 어댑터(30)가 메시지를 해석하여 해당 정보 요소를 추출하여 System B에게 전달하게 된다.
메시지 브로커(40)는 메시지의 수신자 정보와 수신 시스템들의 수신 요청 등에 따라 적절한 수신 시스템에게 메시지 손실 없이 전달하는 기능을 수행한다.
메시징 어댑터(30)는 시스템이 전송하는 메시지를 메시지 브로커(40)에게 전달하는 역할을 수행하며, 메시지 브로커(40)가 시스템에게 중개하는 메시지를 수신해서 시스템에게 전달하는 역할을 수행한다. 이러한 기능을 효율적이고 합리적으로 수행하기 위해 설계 시에 고려해야 할 사항들을 살펴 보면 다음과 같이 다섯 가지를 들 수 있다.
첫째, 메시지 버스가 서브 시스템들(10)로 하여금 타 시스템의 특성에 무관하게 동작할 수 있도록 하는 것과 마찬가지로 메시징 어댑터(30)는 시스템이 메시지 브로커(40)의 특성과 무관하게 메시지를 생성하고 송수신할 수 있도록 해야 한다. 즉, 메시지 버스를 구현하는데 있어서 메시지 중개 기능을 구현한 기존의 결과물들을 메시지 브로커(40)로 활용할 수 있도록 메시징 어댑터(30)가 유연성을 제공할 수 있어야 한다.
둘째, 개별 메시징 어댑터(30)의 입장에서 메시지 브로커(40)로부터의 메시지 전달 속도와 시스템이 메시지를 수신해서 처리하는 속도에 차이가 있을 수 있다. 특히, 유비쿼터스 컴퓨팅 환경에서는 서브 시스템이 상황 인지 기능을 포함하는 경우, 여러 상황 인지 장치로부터 메시지를 수신해야 한다. 이 경우, 개별 송신 시스템에서 전송하는 메시지의 양은 크지 않더라도 관련 송신 시스템이 많은 경우 수신 시스템에서 단위 시간에 처리할 수 있는 양보다 많은 메시지가 전달될 수 있다. 이러한 경우, 메시지 어댑터(40)는 메시지 손실이 발생하지 않도록 수신 시스템의 처리 속도에 맞추어 임시 메시지 저장 기능을 제공할 수 있어야 한다.
셋째, 유비쿼터스 컴퓨팅 환경에서 사용되는 시스템이나 장치들을 보면 PDA와 같은 소규모의 메모리와 비교적 낮은 성능의 CPU를 갖는 장치부터 고속의 CPU와 대용량의 메모리를 갖는 서버에 이르기까지 다양하다. 메시징 어댑터(30)는 이런 다양한 시스템이 메시지 브로커(40)와 연동할 수 있도록 지원해야 하므로, 서브 시스템(10)의 컴퓨팅 용량에 따라 적절한 형식으로 적용될 수 있어야 한다. 즉, 소용량의 장치인 경우에는 시스템에 설치되는 메시징 어댑터(30)는 대용량의 장치에 설치되는 어댑터에 비해 요구되는 자원이 규모가 작도록 변형이 가능해야 한다.
넷째, 서브 시스템들 간에 상호 작용하기 위한 메시지의 형식은 시스템 개발자들에 의해 명시되지만, 서브 시스템 개발자가 메시지를 만들고 해석하는 세세한 처리 과정에 개발 부담을 쏟지 않도록 메시징 어댑터(30)의 지원이 필요하다. 시스템들 사이에 교환되는 메시지 형식에 대한 정보가 메시징 어댑터(30)에게 제공될 수 있도록 하여, 메시지의 일부 정보 요소에 대해서는 메시징 어댑터(30)가 기본값을 할당할 수 있도록 하고, 메시지 해석에 있어서도 시스템의 요청에 따라 필요한 정보 요소만 추출하여 사용할 수 있도록 메시징 어댑터(30)가 메시지 구성 및 해석에 있어서 필요한 기능을 제공한다. 또한, 유비쿼터스 환경은 가변적인 환경이므로 한 번 만들어진 메시지 프로토콜이 지속되기보다 환경 변화에 따라 변화될 가능성이 높다. 그러므로 이런 변화에 유연하게 대응할 수 있도록 설계되어야 한다.
다섯째, 메시징 어댑터(30)가 메시지 브로커(40)로부터 전달된 메시지를 시스템에게 전달할 때, 순차적으로 전달하는 것뿐만 아니라 메시지의 중요성이나 긴급성에 따라 차별적으로 처리할 수 있는 기능이 제공되어야 한다. 예를 들어, 시스템이 타 시스템에게 특별한 요청을 보내고 이에 대한 응답을 기다리고 있거나 메시지 내의 데이터의 특성 상 긴급하게 전달되어야 하는 경우 등이 있을 수 있다. 이렇게 긴급한 메시지를 시스템이 메시징 어댑터(30)에게 알릴 수 있고, 메시지들 중에서 긴급한 메시지부터 시스템에게 전달할 수 있는 방법론이 설계에 반영되어야 한다.
이러한, 다섯 가지의 설계 조건을 고려한 메시징 어댑터(30)는 도 5에 도시 된 바와 같이 서브 시스템 개발자가 메시징 버스에 쉽게 적응하여 개발할 수 있도록 하기 위해, 라이브러리를 사용하는 것으로 어댑터의 필요한 기능들을 사용할 수 있도록 프로그래밍 라이브러리의 형식으로 제공된다. 그리고 두 시스템과 연동하는 메시징 어댑터(30)들 사이에 메시지 브로커(40)가 위치하여 서브 시스템(10)에게는 전체 메시지 버스가 라이브러리로만 보이고, 메시지 브로커(40)의 특성이 보이지 않는다.
메시징 어댑터(30)의 내부 구성을 살펴 보면, 서브 시스템(10)과 인터페이스 하기 위한 어플리케이션 포트(AppPort)(32)와, 메시지 브로커(40)와 인터페이스 하기 위한 브로커 포트(BrokerPort)(34)로 구성된다.
좀 더 설명하면, 메시징 어댑터(30)는 서브 시스템(10)에 설치되어 서브 시스템(10)과 인터페이스 하기 위한 제 1 어플리케이션 포트(미도시)를 포함하는 제 1 어댑터(미도시)와, 제 1 어댑터와 인터페이스 하기 위한 제 2 어플리케이션 포트(미도시)와 메시지 브로커(40)와 연동하는 브로커 포트(미도시)를 포함하는 제 2 어댑터(미도시)를 구비한다. 제 1 어댑터와 제 2 어댑터의 구성 및 동작에 대해서는 후술된다.
이렇게 시스템(10)과의 인터페이스와 메시지 브로커(40)의 인터페이스를 분리함으로써, 메시지 버스 개발 시에 메시지 브로커(40)를 변경하더라도 메시징 어댑터(30)를 변경할 필요 없이, 브로커 포트(34)만 수정하면 된다. 그리고, 메시징 어댑터(30)를 사용하는 시스템의 특성을 고려하여 수정되어야 하는 경우에는 어플리케이션 포트(32)만 수정하면 된다.
메시징 어댑터(30)는 어플리케이션 포트(32)와 브로커 포트(34) 사이에 위치하여 메시지 브로커(40)에게서 전달된 메시지에서 시스템이 원하는 정보 요소를 추출하고 처리하는 기능을 담당하는 도관들(Pipes)(36)과, 브로커 포트(34)와 도관들(36) 사이에 위치하는 큐(38)를 더 구비한다.
도관들(36) 역시 두 인터페이스와 독립적으로 운용될 수 있도록 설계되므로, 메시지 프로토콜의 변경이 발생하여 메시지 내 정보 요소에 대한 처리 기능을 다양 화하고자 할 경우 도관들(36)만을 수정하면 된다.
브로커 포트(34)를 통해 메시징 어댑터(30)로 전달된 메시지는 큐(38)에 우선 저장되고 도관들(36)에 있는 기능 요소가 큐(38)의 메시지를 추출하여 처리하고 어플리케이션 포트(32)에게 전달한다. 이 큐(38)는 메시지 브로커(40)로부터 유입되는 메시지의 속도와 시스템에서 처리하는 도관들(36) 그리고 어플리케이션 포트(32)에서 메시지를 소모하는 속도가 일치하지 않는 경우 이를 보완하게 된다. 특히, 메시지 브로커(40)에서 브로커 포트(34)를 통해 메시지가 전달되는 속도가 도관들(36)에서 메시지를 처리하는 속도나 어플리케이션 포트(32)를 통해 시스템에게 전달되는 속도보다 큰 경우 유입되는 메시지를 큐(38)에 임시 보관하여 손실되는 메시지가 발생하지 않도록 한다.
이 큐(38)는 메시지 우선 순위에 따른 차별화 서비스를 구현하는데도 활용된다. 시스템에서 중요하게 기다리고 있는 메시지가 있는 경우 API를 사용하여 도관들(36)에게 알려지고, 도관들(36)에서 큐(38)에서 메시지를 추출할 때 시스템이 요청한 중요한 메시지가 있는지를 점검하게 된다. 이렇게 하면 중요한 메시지가 도착하는 순간 발견이 가능하고 시스템에게 신속하게 전달될 수 있다. 그리고, 큐(38)를 정의된 우선 순위마다 한 개씩 구현해서 우선 순위가 높은 큐(38)의 메시지부터 처리하도록 하여 우선 순위가 높은 메시지가 우선 시스템에게 전달되도록 할 수 있다.
이와 같은, 메시징 어댑터(30)는 도 6에 도시된 바와 같이 시스템의 컴퓨팅 능력 및 시스템의 개발 환경의 특성에 따라 달라질 수 있다.
사례 1
서브 시스템이 고성능 CPU, 대용량 메모리 등을 갖는 환경에서 구현되는 경우를 고려한 것으로, 시스템은 어댑터 라이브러리의 형태를 사용하여 구현하고, 해당 시스템 내에 어댑터의 브로커 포트, 도관들, 어플리케이션 포트 등이 함께 포함되는 경우이다. CPU의 성능이나 메모리의 용량에서나 이렇게 통합되는 것에 처리 부담을 갖지 않기 때문이다.
사례 2
이동 단말기 등과 같이 낮은 컴퓨팅 능력을 갖는 시스템을 고려한 것으로, 브로커 포트, 도관들, 어플리케이션 포트가 네트웍으로 연결되는 다른 호스트에 구현되고, 시스템에는 어댑터 라이브러리만 포함되어, 원격에 있는 어댑터 기능을 사용하게 된다. XML 메시지를 해석하고 구성하는 등의 처리 부담을 이동 단말기 등에서 담당하기 어렵기 때문에 충분한 성능을 갖는 원격의 호스트를 활용하도록 한다.
사례 3
기본적으로 다른 시스템과의 상호 작용을 단순한 TCP/IP를 기반으로 한 소켓 프로그램이 아닌 HTTP와 SOAP 등과 같이 TCP/IP의 상위 응용 계층 프로토콜을 사용하는 시스템을 지원하기 위한 것으로, 메시징 어댑터도 HTTP 서버로 동작하면서 시스템과 연동한다. 시스템은 메시징 어댑터 라이브러리를 사용하여 어댑터 기능을 사용하는 것이 아니고, HTTP의 POST와 GET 명령어들을 사용하여 메시징 어댑터에게 메시지 전달과 수신을 요청하게 된다. 물론 이 때의 메시지는 메시지 버스에서 정 의한 메시지 표준 형식을 따라야 한다. 메시징 어댑터는 사례 1이나 사례 2의 경우와 마찬가지로 메시지 브로커와 시스템 사이의 인터페이스 기능을 수행한다.
이와 같은, 사례 1 내지 3을 지원하기 위하여 메시징 어댑터(30)는 도 7에 도시된 바와 같이 프론트-엔드 어댑터(70)와 백-엔드 어댑터(80)로 구분된다.
프론트-엔드 어댑터(70)는 서브 시스템에 설치되어 동작되고, 백-엔드 어댑터(80)는 메시지 브로커(40)가 위치한 호스트에 시스템 별로 하나씩 동작하게 된다. 프론트-엔드 어댑터(70)는 앞서 기술된 제 1 어댑터를 의미하고 백-엔드 어댑터(80)는 앞서 기술된 제 2 어댑터를 의미한다. 이하에서는, 제 1 어댑터와 제 2 어댑터라는 용어 대신 프론트-엔드 어댑터(70) 및 백-엔드 어댑터(80)라는 용어를 사용한다.
프론트-엔드 어댑터(70)와 백-엔드 어댑터(80) 사이의 통신은 TCP/IP를 사용하여 이루어지고, 백-엔드 어댑터와 메시지 브로커(40)와의 통신도 TCP/IP를 사용하여 이루어진다.
이러한, 프론트-엔드 어댑터(70)와 백-엔드 어댑터(80)의 내부 구조는 도 8에 도시된 바와 같다.
프론트-엔드 어댑터(70)는 시스템 개발자에게 API의 형태로 제공되며, 시스템이 구현되고 나면 시스템의 일부분으로 동작하게 된다. 그래서, 서브 시스템(Subsystem)의 개발 환경과 사용하는 프로그래밍 언어에 맞는 버젼으로 제공되어야 한다. 예를 들어, Microsoft® WindowsTM, Linux, Microsoft ® Windows CETM 환경을 지원하며, 프로그래밍 언어로는 Java와 C를 사용하여 구현된다.
이러한, 프론트-엔드 어댑터(70)는 시스템으로부터 메시지 전달 요청을 받는 제 1 어플리케이션 포트(72)의 제 1 어플리케이션 소스(Source) 부분(71)과, 메시지 브로커(40)를 통해 전달되는 메시지를 수신해서 시스템으로 전달하는 역할을 하는 제 1 어플리케이션 포트(72)의 제 1 어플리케이션 싱크(Sink) 부분(73)으로 구성된다.
백-엔드 어댑터(80)는 프론트-엔드 어댑터(70)와 연동하기 위한 제 2 어플리케이션 소스 부분(81)과 제 2 어플리케이션 싱크 부분(83)을 포함하는 제 2 어플리케이션 포트(82)와, 메시지 브로커(40)와 연동하기 위한 브로커 포트 소스 부분(86)과 싱크 부분(85)을 포함하는 브로커 포트(84)로 구성된다. 그리고, 메시지에 대한 추가적인 처리 기능을 수행하는 필터들의 모임인 도관들(Pipes)(90)이 제 2 어플리케이션 포트(82)와 브로커 포트(84) 사이에 위치한다.
삭제
도관들(90)은 필터들끼리 다음 순서의 필터를 직접 호출하는 방식으로 구현될 수 있지만, 기능을 확장하거나 필터를 추가하는 경우를 고려하여, 스프링 프레임워크(Spring Framework)(R. Droms, Dynamic Host Configuration Protocol(DHCP), IETF RFC, March 1997)(88)을 사용한다.
그리고, 스프링 프레임 워크(88)를 사용하여 제2 어플리케이션 포트(82)와 브로커 포트(84)를 포함하는 전체 백-엔드 어댑터 구성 요소들을 통합하였다. 스프링 프레임 워크(88) 내의 컨트롤러(87)가 정의된 절차에 따라 다음 구성 요소를 호출하는 식으로 동작하므로, 구성 요소의 구현이 일부 변경되는 것에 대해 다른 구성 요소들이 영향을 받지 않으며, 새로운 구성 요소가 추가된다고 해서 기존의 구성 요소를 전혀 수정할 필요 없이 컨트롤러(87)에서 정의된 정의된 순서에 새로운 구성 요소를 호출하도록 수정하면 된다.
이와 같은, 본 발명의 메시징 어댑터(30)를 이용하여 메시지의 처리 과정을 도 9와 결부하여 설명하면 다음과 같다.
시스템에서 전송하는 메시지는 프론트-엔드 어댑터(70)의 제 1 어플리케이션 포트(72)를 통해 백-엔드 어댑터(80)로 전달된다.
백-엔드 어댑터(80)의 구성요소들은 도 7에 도시된 바와 같이 스프링 프레임 워트(88)에 의해 제어된다. 시스템이 이동 단말기이거나 가전 기기인 경우 컴퓨팅 능력이나 메모리 공간이 일반 호스트에 비해서 크게 떨어질 수 있다. 이와 같은 경우에는 프론트-엔드 어댑터(70)는 단순히 시스템과 백-엔드 어댑터(80) 사이의 연결을 제공하는 기능만 수행하게 되고, 해당 시스템을 지원하기 위한 백-엔드 어댑터(80)의 도관들(90)에서 XML 메시지를 생성하는 기능을 담당하게 된다. XML 메시지를 생성하는데 필요한 정보 요소들은 시스템이 백-엔드 어댑터(80)에게 바이트 스트림의 형식으로 전달한다.
한편, 본 발명의 메시징 어댑터(30)를 이용하여 메시지의 처리 과정 중 수신과정을 도 10과 결부하여 설명하면 다음과 같다.
수신하는 시스템의 프론트-엔드 어댑터(70)에서, 도 7에 도시된 바와 같이 메시지 브로커(40)로부터 받은 메시지를 가지고 시스템에게 전달하기까지 다음의 기능을 수행한다.
첫째, 소켓(75)을 통해 백-엔드 어댑터(80)로부터의 메시지를 수신한다.
둘째, 소켓(75)을 통해 백-엔드 어댑터(80)로부터 수신한 메시지를 큐(76)에 저장한다.
셋째, 소켓(75)을 통해 백-엔드 어댑터(80)로부터 수신된 메시지를 큐(76)에 저장하는 이벤트가 발생했음을 디스패쳐(Dispatcher)(77)에게 알린다.
넷째, 디스패쳐(77)가 큐(76)에서 메시지를 꺼내어 쓰레드풀(ThreadPool)(78)에 있는 유휴 쓰레드(Thread)에게 해당 메시지를 처리하도록 전달한다. 메시지를 처리하는 것은 메시지 내의 정보 요소 중에서 중요하고 필요한 요소를 추출하는 것을 말하는데, 메시징 어댑터가 시스템이 API를 사용하여 요청한 것에 따라 필요한 요소를 추출한다. 추출된 결과를 시스템에서 사용하게 된다.
위에 기술된 절차는 일반적인 호스트에서 시스템이 동작하는 경우에 해당하는 것이며, 시스템이 이동 단말기이거나 가전 기기와 같은 경우에는 위의 과정과 다르게 처리된다. 즉, XML로 구성된 메시지를 해석하는 기능이 모두 백-엔드 어댑터(80)에서 수행하게 되며, 프론트-엔드 어댑터(70)는 단순히 시스템과 백-엔드 어댑터(80) 사이의 연결을 제공하는 기능만 담당한다. 시스템이 원하는 정보 요소들이 바이트 스트림의 형식으로 백-엔드 어댑터(80)로부터 시스템으로 전달되게 된다.
이와 같은, 본 발명의 실시 예에 따른 메시징 어댑터의 성능을 분석하기 위해 100Mbps에 연결된 두 개의 호스트를 사용하여 시험 결과를 설명하면 다음과 간다.
우선, 하나의 호스트에는 백-엔드 어댑터가 설치하였고, 다른 호스트에는 프론트-엔드 어댑터를 포함하는 두 개의 시스템의 프로토 타입을 설치하였다.
메시지의 크기를 달리하면서 1000개의 메시지를 한 시스템이 다른 시스템에게 연속적으로 전송하도록 하고, 메시징 어댑터의 중요 부분에서 메시지를 수신하고 처리하는 데 걸리는 시간을 측정하였다.
메시지의 헤더와 본문을 XML 형식으로 구성하고, XML로 표현된 메시지에서 헤더에 해당하는 필드를 추출하는 등의 처리를 수행하는 시간까지 포함된다.
성능 분석 시험에 사용된 호스트의 성능은 아래의 표 1와 같이 나타났으며, 성능 분석 결과는 아래의 표 2와 같다.
CPU Memory Network
System A 1GHz 512MB 100Mbps
System B 1GHz 512MB 100Mbps
AppPort Source -> AppPort Sink(sec) AppPort Source -> 메시지 브로터(sec) AppPort Source -> AppPort Sink(sec) 총 소요 시간 (sec) 메시지/sec
500Byte 1.202 0.781 1.232 3.214 293
1KB ×1000회 1.442 0.891 1.468 3.801 263
2KB ×1000회 2.584 1.191 2.571 6.346 157
표 2에 있어서, 제 1 행은 실행 구간에서의 소요 시간이며, 제 1 열은 메시지 크기 × 반복 횟수이다.
표 2에서 보이는 바와 같이, 초당 150개에서 300개 정도의 처리 성능을 보이고 있다. 즉, 동일 네트워크 상에 존재하는 두 개의 호스트 사이에 하나의 메시지를 송신해서 수신하는 데까지 걸리는 시간이 최대 6ms 정도로서, 네트워크 상에서의 메시지 전달 시간을 고려하면, 송수신된 메시지 처리에만 약 5ms 정도의 시간이 소요된다. 이는 유비쿼터스 환경을 고려할 때, 센서로부터 수집된 데이터를 1초에 200여 개의 시스템에게 전송할 수 있다는 것을 의미하며, 하나의 시스템이 1초에 200여 개의 센서 네트워크로부터 데이터를 수신할 수 있다는 것을 의미한다. 본 연구에서 고려하는 유비쿼터스 환경에서 요구되는 메시지 송신 부담을 수월히 마칠 수 있는 성능을 보이고 있다.
한편, 이상에서 설명한 본 발명은 상술한 실시 예 및 첨부된 도면에 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야에서 종래의 지식을 가진 자에게 있어 명백할 것이다.
상기와 같은 본 발명의 실시 예에 따른 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스탬은 기능 요소들을 가능한 한 분리하여 설계함으로써, 메시지 프로토콜의 변화에 따라 메시지의 정보 요소를 확장하고 변경하는 상황에 효율적으로 대응할 수 있도록 했으며, 또한 시스템의 성능에 따라 구성을 변경하는 것이 용이하게 할 수 있다.

Claims (7)

  1. 실제 메시지를 서브 시스템 간에 전달하는 중계자 역할을 담당하는 메시지 브로커와, 서브 시스템과 상기 메시지 브로커 사이의 인터페이스 역할을 담당하는 메시징 어댑터를 포함하는 메시지 버스를 가지며;
    상기 메시징 어댑터는,
    상기 서브 시스템에 설치되어 상기 서브 시스템과 인터페이스 하기 위한 제 1 어플리케이션 포트를 포함하는 제 1 어댑터와,
    상기 제 1 어댑터와 인터페이스 하기 위한 제 2 어플리케이션 포트와 상기 메시지 브로커와 연동하는 브로커 포트를 포함하는 제 2 어댑터를 구비하는 것을 특징으로 하는 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템.
  2. 제 1 항에 있어서,
    상기 메시지의 형식은 XML(Extensible Markup Language)인 것을 특징으로 하는 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템.
  3. 제 1 항에 있어서,
    상기 제 1 어댑터는,
    상기 서브 시스템으로부터 상기 메시지 전달 요청을 받는 제 1 어플리케이션 소스와,
    상기 메시지 브로커를 통해 전달되는 상기 메시지를 수신하여 상기 서브 시스템에 전달하는 제 1 어플리케이션 싱크를 구비하는 것을 특징으로 하는 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템.
  4. 제 3 항에 있어서,
    상기 제 2 어댑터는,
    상기 제 2 어플리케이션 포트와 상기 브로커 포트 사이에 위치하여 상기 메시지 브로커에서 전달된 상기 메시지에서 상기 서브 시스템이 원하는 메시지를 생성하는 도관들과,
    상기 브로커 포트와 상기 도관들 사이에 위치하여 상기 브로커 메시지를 통해 상기 메시징 어댑터로 전달된 상기 메시지를 저장하는 큐(Queue)와,
    상기 제 2 어플리케이션 포트와 상기 브로커 포트 및 도관들을 제어하는 컨트롤러를 포함하는 것을 특징으로 하는 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템.
  5. 제 4 항에 있어서,
    상기 제 2 어플리케이션 포트는,
    상기 제 1 어플리케이션 포트로부터의 상기 메시지 전달 요청을 받는 제 2 어플리케이션 소스와,
    상기 도관들로부터의 메시지를 상기 제 1 어플리케이션 포트로 전달하는 제 2 어플리케이션 싱크를 구비하는 것을 특징으로 하는 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템.
  6. 제 5 항에 있어서,
    상기 브로커 포트는,
    상기 도관들로부터의 상기 메시지를 상기 메시지 브로커로 전달하는 브로커 포트의 싱크와,
    상기 메시지 브로커로부터의 상기 메시지를 상기 도관들에 전달하는 브로커 포트의 소스를 구비하는 것을 특징으로 하는 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템.
  7. 삭제
KR1020050018715A 2005-03-07 2005-03-07 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템 KR100679865B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020050018715A KR100679865B1 (ko) 2005-03-07 2005-03-07 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템
US11/817,253 US8015569B2 (en) 2005-03-07 2006-01-26 System to support the heterogeneity in ubiquitous computing environment
PCT/KR2006/000310 WO2006107137A1 (en) 2005-03-07 2006-01-26 System to support the heterogeneity in ubiquitous computing environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050018715A KR100679865B1 (ko) 2005-03-07 2005-03-07 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템

Publications (2)

Publication Number Publication Date
KR20060098780A KR20060098780A (ko) 2006-09-19
KR100679865B1 true KR100679865B1 (ko) 2007-02-07

Family

ID=37073665

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050018715A KR100679865B1 (ko) 2005-03-07 2005-03-07 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템

Country Status (3)

Country Link
US (1) US8015569B2 (ko)
KR (1) KR100679865B1 (ko)
WO (1) WO2006107137A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100738330B1 (ko) * 2006-09-28 2007-07-12 한국전자통신연구원 통합 위성운용데이터를 이용한 위성관제시스템 및 그 방법
WO2008082021A1 (en) * 2007-01-05 2008-07-10 Ajou University Industry Cooperation Foundation Open framework system for heterogeneous computing and service integration
US8909702B2 (en) * 2007-01-29 2014-12-09 Fuji Xerox Co., Ltd. System and method for coordination of devices in a presentation environment
KR101041988B1 (ko) * 2009-02-24 2011-06-16 부산대학교 산학협력단 리더 연결 부하의 실시간 분산을 지원하는 rfid 미들웨어 시스템과 그 방법
KR101593993B1 (ko) * 2009-08-10 2016-02-26 삼성전자주식회사 웹 애플리케이션 간의 데이터 통신 장치 및 방법
US8819127B1 (en) 2013-04-12 2014-08-26 Fmr Llc Ensemble computing
US10599742B2 (en) 2013-08-06 2020-03-24 Adobe Inc. Sharing and consuming web content across multiple devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010052538A (ko) * 1998-06-05 2001-06-25 샌제이브 사이두 작업 흐름 동기화
KR20010052572A (ko) * 1998-06-05 2001-06-25 샌제이브 사이두 객체 작업 공간 생성 시스템 및 방법
KR20050065983A (ko) * 2003-12-26 2005-06-30 한국전자통신연구원 유비쿼터스 컴퓨팅을 위한 게이트웨이 시스템, 네트워크장치, 및 패킷 라우팅 방법
KR20050122129A (ko) * 2004-06-23 2005-12-28 (주)퓨전테크 엑스엠엘 기반의 유비쿼터스 워크플로우 관리/모니터링장치 및 그 방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5329619A (en) * 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
US6877023B1 (en) * 2000-01-28 2005-04-05 Softwired, Inc. Messaging system for delivering data in the form of portable message formats between message clients
US20030037102A1 (en) * 2001-08-14 2003-02-20 Philippe Eckert Message broker
KR100421015B1 (ko) 2001-08-29 2004-03-04 삼성전자주식회사 음성 메일 기능을 제공하는 인터넷 팩시밀리
KR20030019669A (ko) 2001-08-29 2003-03-07 서주원 인터넷 기반 가상 지역 문화 체험 서비스 제공방법
US20030065725A1 (en) * 2001-10-01 2003-04-03 Jean-Francois Delmer Verified message broker
US7774495B2 (en) * 2003-02-13 2010-08-10 Oracle America, Inc, Infrastructure for accessing a peer-to-peer network environment
FI114581B (fi) * 2003-02-17 2004-11-15 Nokia Corp Ohjelmistokehitysympäristö
US20050198304A1 (en) * 2004-01-15 2005-09-08 Ian Oliver System and method for access point translation of web service content
US20050261923A1 (en) * 2004-05-21 2005-11-24 International Business Machines Corporation Method and apparatus for model based subscriptions for a publish/subscribe messaging system
US7706895B2 (en) * 2005-02-25 2010-04-27 Rockwell Automation Technologies, Inc. Reliable messaging instruction
KR100715766B1 (ko) 2005-07-20 2007-05-08 울산대학교 산학협력단 웹데브 사용자 정의 속성 처리 장치 및 그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010052538A (ko) * 1998-06-05 2001-06-25 샌제이브 사이두 작업 흐름 동기화
KR20010052572A (ko) * 1998-06-05 2001-06-25 샌제이브 사이두 객체 작업 공간 생성 시스템 및 방법
KR20050065983A (ko) * 2003-12-26 2005-06-30 한국전자통신연구원 유비쿼터스 컴퓨팅을 위한 게이트웨이 시스템, 네트워크장치, 및 패킷 라우팅 방법
KR20050122129A (ko) * 2004-06-23 2005-12-28 (주)퓨전테크 엑스엠엘 기반의 유비쿼터스 워크플로우 관리/모니터링장치 및 그 방법

Also Published As

Publication number Publication date
KR20060098780A (ko) 2006-09-19
WO2006107137A1 (en) 2006-10-12
US20080134204A1 (en) 2008-06-05
US8015569B2 (en) 2011-09-06

Similar Documents

Publication Publication Date Title
KR100679865B1 (ko) 유비쿼터스 컴퓨팅 환경의 다양성을 지원하기 위한 시스템
US10031789B2 (en) Generic distributed processing for multi-agent systems
CN101405993B (zh) 使用计算上下文的网络接口路由
US7398327B2 (en) Apparatus, method and system for providing automated services to heterogenous devices across multiple platforms
US9503957B2 (en) Low cost mesh network capability
KR100881419B1 (ko) Sca 기반 시스템의 애플리케이션 컴포넌트 통신 장치 및방법
CN101878469B (zh) 使用公共消息收发接口集成面向服务的体系结构应用程序
CN102810069A (zh) 一种java对象的请求和响应方法、装置、系统和终端
CN101960792A (zh) 用于多传输方式架构的缓冲器控制
JP5541292B2 (ja) 分散システム、通信手段選択方法および通信手段選択プログラム
JP2008146634A (ja) ネットワークロボットシステム及びネットワークロボットシステムにおける通信方法
KR102025631B1 (ko) Non-TCP/IP 기반의 네트워크상의 IoT 기기와 oneM2M 표준 기반의 IoT 서버 상호간을 중계하는 게이트웨이 서버 및 그 동작 방법
FI114581B (fi) Ohjelmistokehitysympäristö
CN113810271A (zh) 一种物联网网关南向设备接口代理装置及实现方法
JP4902559B2 (ja) ネットワーク分散共有システム、ネットワーク分散共有方法、およびネットワーク分散共有プログラム
KR20170131028A (ko) 공용망의 서버를 통한 사설망 클라이언트 관리시스템 및 이를 이용한 관리방법
CN107948232A (zh) 基于Hook API的代理实现方法、数据传输方法、装置及系统
WO2012071860A1 (zh) 多住户单元的单板间同步通信的方法及多住户单元
KR100494827B1 (ko) 하드웨어 독립적인 통신 인터페이스를 가지는 분산객체모델 기반의 라디오 서버와 이를 이용한 통신제어방법
TW202125291A (zh) 內建伺服模組的閘道裝置與通信系統
KR100698234B1 (ko) 피어 투 피어 기반에서의 서버-클라이언트 통합 네트워크시스템
KR100715144B1 (ko) Pda 단말 간의 네트워크 시스템 구성 방법
JP5151798B2 (ja) メッセージ交換システム、バイパス転送方法、及びプログラム
KR101148364B1 (ko) 사이버 물리 시스템에서 이질적 미들웨어 간의 동적 통합과 제어장치를 위한 메모리 관리 시스템 그 방법
KR100698236B1 (ko) 피어 투 피어 기반에서의 서버-클라이언트 통합 네트워크를이용한 일원화된 통합 서비스 제공방법

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: 20130111

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141226

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151224

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 14