KR20010060953A - 분산객체간 통신장치 및 방법 - Google Patents

분산객체간 통신장치 및 방법 Download PDF

Info

Publication number
KR20010060953A
KR20010060953A KR1019990063415A KR19990063415A KR20010060953A KR 20010060953 A KR20010060953 A KR 20010060953A KR 1019990063415 A KR1019990063415 A KR 1019990063415A KR 19990063415 A KR19990063415 A KR 19990063415A KR 20010060953 A KR20010060953 A KR 20010060953A
Authority
KR
South Korea
Prior art keywords
bus
type
attribute
stream
interface
Prior art date
Application number
KR1019990063415A
Other languages
English (en)
Other versions
KR100679809B1 (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 KR1019990063415A priority Critical patent/KR100679809B1/ko
Priority to US09/498,422 priority patent/US6694368B1/en
Publication of KR20010060953A publication Critical patent/KR20010060953A/ko
Application granted granted Critical
Publication of KR100679809B1 publication Critical patent/KR100679809B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/59Responders; Transponders
    • 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
    • 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/465Distributed object oriented systems
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 객체간 상호작용과정의 다양한 통신형태를 분산플랫폼에서 구별하고 이런 특성들을 하부 통신 메커니즘에 통합한 후 제공하여 응용개발의 용이성 및 분산시스템에 대한 관리능력을 증대시키도록 한 분산객체간 통신장치 및 방법에 관한 것으로, 분산시스템에 대한 관리능력이 향상됨에 따라 전체 분산시스템의 안정성과 신뢰성을 높이게 되고, 정보통신망에서의 분산 응용이 필요로 하는 통신 아키텍쳐를 동적으로 구성하고 관리함으로써 새로운 통신서비스의 도입과 분산 소프트웨어 모듈의 제어를 효율적으로 지원할 수 있다.

Description

분산객체간 통신장치 및 방법{Communication apparatus and method between distributed objects}
본 발명은 분산객체간 통신장치 및 방법에 관한 것으로, 보다 상세하게는 분산환경에서 상호 관련된 응용 객체간의 통신시 그들의 통신패턴에 따라 특성화된 소프트웨어 버스를 생성하고 이용하는 장치 및 방법에 관한 것이다.
종래 소켓(Berkeley socket) 통신 메커니즘은 초기의 분산 컴퓨팅 환경에서 사용되었던 방법으로서, 현재도 네트워크 프로그래밍 분야에서 널리 사용되고 있다.
상기 소켓 통신 메커니즘은 기본적으로 TCP/IP 프로토콜과 같은 하부의 트랜스포트 프로토콜을 이용하여 분산 응용 프로그램을 작성할 수 있도록 하는 API를 제공한다. 이 소켓 통신 메커니즘은 분산 플랫폼 커널의 하이 레벨 통신 서비스를 지원하는 전달망의 통신 인터페이스로 사용되기도 한다.
소켓은 실제적인 통신 프로토콜이 아니라 하부의 전송(transport) 프로토콜을 사용하여 응용의 요구와 응답을 주고 받기 위한 네트워크 프로그래밍 코드이다.
소켓 통신 메커니즘의 특성은 소켓을 통한 네트워크 I/O를 마치 파일에 대한 I/O처럼 취급하는 데 있다. 파일 I/O와 다른 점은 소켓 설명자(descriptor)를 사용한다는 점이며, API를 제공함으로써 하부의 전송 프로토콜을 사용하여 네트워크 연관을 설정하는 구체적 사항을 사용자에게 은폐한다.
상술한 종래 소켓 통신 메커니즘을 이용하여 작성되는 분산 응용은 하부 네트워크 프로토콜에 종속적으로 작성된다. 따라서 소켓 기반의 분산 응용 개발은 다음과 같은 3가지 정도의 단점을 가지고 있다.
첫째, 네트워크 전송 프로토콜에 따라 응용 프로그램 코드와 네트워크 전송 코드를 각각 작성해야 하는 점이다.
둘째, 분산 응용 개발 과정에서 프로세스의 주소나 사용 호출 코드 등 네트워크 프로그래밍 오버헤드가 크다.
셋째, 서로 다른 호스트 사이의 데이터 교환에 있어 각기 데이터 표현 방법이 다르면 데이터 전송이 복잡해진다.
한편, 상기 소켓 통신 메카니즘외로 원격 프로시쥬어 호출 (Remote Procedure Call : 이하 RPC라 함)이라는 통신기법이 있는데, 원격 프로시쥬어 호출은 응용 개발자에게 원격 시스템에 대한 호출 요구를 마치 로컬 프로시쥬어를 호출한 것처럼 투명성을 제공하는 기법이다.
상기 RPC에서는 통상적인 프로시쥬어 호출의 형태를 빌려 프로세스간 통신이 이루어지는 데, 클라이언트에서 원격 프로시쥬어를 호출하는 것을 요구(request)라고 하며 그 호출의 결과를 반환하는 것을 응답(reply)이라고 한다. 이러한 요구와 응답 메시지의 교환 과정에서 데이터의 표현과 의미를 보존하기 위해 RPC 메커니즘은 요구 및 응답 교환 프로토콜 외에 전달망을 통해 프로시쥬어의 인자(parameter)와 결과를 표준화된 형태로 교환하기 위한 데이터 표현(data representation) 규격을 갖는다.
RPC 기법의 가장 큰 특징은 모든 네트워크 코드 부분을 스터브(stub) 프로시쥬어에 은폐하여 네트워킹의 세부 사항(소켓의 통일, 바이트 순서 등)으로부터 클라이언트와 서버를 자유롭게 하는 데 있다.
그러나, RPC 기반의 분산 응용을 개발할 때에는 로컬 호출과는 달리 매개변수(parameter) 전달 방법, 바인딩, 트랜스포트 프로토콜, 데이터 표현, 성능, 보안 문제 등 여러 가지 사항들을 고려해야 한다. RPC 기반 분산 응용의 또 다른 문제점은 RPC 기반의 분산 응용들이 특정 네트워크 인터페이스에 종속되어 개발되었기 때문에 새로운 네트워크 전송 기술 발전에 따라 전송 인터페이스 코드를 수정해야 한다는 점이다.
그리고, 분산 객체 통신기법이 있는데, 이 분산 객체 통신은 이기종 컴퓨터로 구성된 분산 환경에서 하부 환경에 투명한 객체들간의 상호작용을 지원하는 통신 메커니즘이다. RPC의 경우에는 기능적 프로시쥬어 지향으로 서비스의 처리를 다른 시스템으로 옮겨 수행하는 것인데 반해, 분산 객체 통신은 데이터와 메소드(method)를 캡슐화하고 있는 객체의 인터페이스를 통해 정의된 메소드를 호출함으로써 서비스를 지원 받는다.
분산 객체 통신 방식으로 원격 객체의 서비스를 사용하기 위해서는, 그 서버 객체의 인터페이스에 정의된 메소드를 호출하기만 하면 된다. RPC에서와 마찬가지로 분산 객체 통신을 지원하는 하부구조는 원격 메소드 호출에 관련된 세부 사항을 은폐하여 객체 인터페이스만 알면 어떠한 객체와도 통신이 가능하도록 한다. 이를 위해 구현 환경과 기술에 독립적인 방식으로 객체의 인터페이스를 정의하기 위하여 인터페이스 정의 언어(IDL : Interface Definition Language)를 사용한다.
인터페이스 정의 언어(이하, IDL이라 함)는 프로그래밍을 위한 언어가 아니라 프로그래밍 언어에 독립적으로 사용되는 인터페이스 기술 언어이다. 따라서 네트워크, 운영체제, 프로그래밍 언어의 이질성을 극복하고 모든 객체에게 동일한 인터페이스 형태를 보이도록 하는 핵심적 요소이다. 분산 객체 통신 환경에서 모든 객체는 IDL로 정의되는 인터페이스를 갖고 있으며, 각 인터페이스 정의는 그 인터페이스를 사용하여 수행될 수 있는 서비스인 연산 (operation) 의 집합을 표시한다.
현재 가장 널리 사용되고 있는 분산 객체 통신 방식의 표준인 CORBA(Common Object Request Broker Architecture)에서는 객체간에 교환되는 요구, 응답 메시지가 객체 요구 중개자(ORB: Object Request Broker)라고 하는 통신 메커니즘을 통해 전달된다.이 분산 객체 통신 메커니즘을 객체 버스 또는 소프트웨어 버스라고 부르며, CORBA에서 클라이언트 객체는 IDL에서 컴파일(compile) 과정을 통해 자동적으로 생성되는 스터브를 통한 정적(static) 호출 또는 동적(dynamic) 인터페이스 호출 방식으로 이 버스를 사용한다.
그런데, 상기 종래의 분산 객체 통신방식은 객체 요구 중개자를 이용한 단일의 통신 메커니즘을 사용하는 비제한적인 통신을 제공하기 때문에 응용에 따라 차별화된 적절한 통신서비스를 효과적으로 제공할 수 없을 뿐만 아니라, 연속 미디어를 위한 처리기능이 부족하며 다양한 통신 구성 및 통신 형태를 구조적으로 지원하지 못한다는 단점이 있다.
따라서, 본 발명은 상술한 종래의 문제점을 해결하기 위해 이루어진 것으로, 객체간 상호작용과정의 다양한 통신형태를 분산플랫폼에서 구별하고 이런 특성들을하부 통신 메커니즘에 통합한 후 제공하여 응용개발의 용이성 및 분산시스템에 대한 관리능력을 증대시키도록 한 분산객체간 통신장치 및 방법을 제공함에 그 목적이 있다.
상기한 목적을 달성하기 위해 본 발명의 바람직한 실시예에 따른 분산객체간 통신장치는, 분산 플랫폼내에서 어떠한 기능과 속성의 통신 서비스가 제공될 수 있는지 결정하는 개별화된 소프트웨어 버스 객체들;
상기 분산 플랫폼내의 통신 아키텍쳐를 구성하고 관리하는 플랫폼 관리자;
상기 플랫폼 관리자의 정책 및 지시에 의해 상기 플랫폼에서 소프트웨어 버스들의 유형 규격과 버스 객체 인스턴스의 관리 기능을 수행하는 버스 관리자;
상기 버스 관리자 및 응용 레벨의 클라이언트, 서버 객체와의 상호 작용을 통해 중개 기능을 제공하는 버스 중개자;
상기 클라이언트로 하여금 동적으로 적절한 서버를 찾도록 해주는 객체 중개자;
상기 소프트웨어 버스들의 유형과 인스턴스 정보의 영속적인 저장 기능을 제공하는 레포지토리;
클라이언트와 서버 객체에게 플랫폼 사용을 위한 바인딩 관련 응용 프로그래밍 인터페이스를 제공하고, 상기 버스 중개자 및 버스와의 상호작용을 통해 필요한 중개와 버스 바인딩 동작을 처리하는 버스 어댑터; 및
상기 소프트웨어 버스 유형 규격에 일치하는 버스 객체를 생성하는 버스 팩토리를 구비한다.
그리고, 본 발명의 실시예에 따른 분산객체간 통신방법은, 클라이언트가 버스의 식별자를 얻고, 자신이 원하는 서비스를 제공하는 객체의 레퍼런스를 얻는 과정;
상기 클라이언트가 자신의 호 요구마다 필요한 버스에 바인딩하는 과정;
상기 바인딩되어 있는 버스를 통해 서버에게 서비스를 요청하는 과정;
상기 서버가 객체를 등록하고, 자신이 제공하고자 하는 인터페이스들의 시그너쳐와 시맨틱 속성을 기반으로 생성된 버스 객체의 레퍼런스를 얻는 과정;
상기 얻어진 레퍼런스를 사용하여 상기 서버가 사용하고자 하는 버스 객체들에 바인딩하는 과정;
상기 버스를 통해 요구가 전달되면 요구 매개변수를 입력 받아 자신의 구현 메소드를 실행하고 그 메소드의 반환 결과가 있으면 그 결과를 버스에 싣는 과정; 및
상기 객체 요구의 결과를 상기 버스를 통해 클라이언트측에서 반환받는 과정을 구비한다.
도 1은 본 발명의 실시예에 채용되는 개별 버스를 이용한 상호 작용을 설명하는 도면,
도 2는 본 발명의 실시예에 따른 기능적 구성요소를 설명하는 도면,
도 3은 본 발명의 실시예에 채용되는 버스 시맨틱 속성 트리를 도시한 도면,
도 4a 내지 도 4f는 본 발명의 실시예에 채용되는 버스 인터페이스 정의 언어를 나타낸 도면,
도 5는 본 발명의 실시예에 따른 분산객체통신 동작을 설명하기 위한 도면이다.
< 도면의 주요부분에 대한 부호의 설명 >
1 : 플랫폼 관리자 2 : 버스 관리자
3 : 버스 중개자 4 : 객체 중개자
5 : 레포지토리 6 : 버스 어댑터
7 : 버스 팩토리 8 : 소프트웨어 버스 객체
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 보다 상세히 설명한다.
본 발명은 분산된 응용 객체간 상호작용과정의 다양한 통신형태 및 특성을 개별화된 소프트웨어 버스에 통합하여 지원하는 통신 메커니즘이다. 객체간의 상호작용은 미리 분산플랫폼에 규정된 소프트웨어 버스의 인터페이스를 통해서 이루어진다.
도 1은 본 발명의 실시예에 채용되는 개별 버스를 이용한 상호 작용을 설명하는 도면으로서, 객체간의 상호작용은 다음의 4단계의 절차로 구성된다.
첫 번째로, 플랫폼의 통신 아키텍쳐를 구성하는 여러 유형의 버스들을 플랫폼 관리자의 책임하에 미리 규격화하여 플랫폼에 그 여러 유형의 버스들의 템플릿(template)들을 저장시키는 단계이다. 응용객체가 요구하는 소프트웨어 버스는 이 템플릿들을 이용하여 플랫폼에 의해 생성된다. 버스의 유형은 버스 시맨틱 속성 트리에 의해 버스 인터페이스 정의 언어 (BIDL: Bus Interface Definition Language) 에 의해 규격화된다. 개별적인 버스의 유형은 적용되는 통신환경이나 응용에 따라 달라질 수 있다.
두 번째로, 객체 인터페이스 등록(registration) 단계로써 서버 관리자가 플랫폼에 객체의 존재를 알리며 전역적으로 인식 가능한 식별자(identifier)인 객체 레퍼런스(reference)를 얻는 과정이다. 이 단계에서는 객체 타입과 객체 인스턴스의 등록에 관련된 작업을 처리한다. 여기서 객체 타입의 등록은 객체 스키마(schema)의 등록에 해당되며, 인스턴스의 등록은 객체 엔티티(entity)의 등록에 대응된다.
세 번째로, 플랫폼에 구성되어 있는 여러 유형의 버스 중에 객체가 사용하고자 하는 버스와 바인딩(binding)하는 단계이다. 이러한 종류의 바인딩이 요구되는 이유는 하부 플랫폼에 복수 개의 버스 객체가 존재하기 때문이며, 따라서 객체들이 사용고자 하는 통신 속성에 합당한 메커니즘을 지원하는 버스를 선택하는 과정이 필수적으로 요구된다. 소프트웨어 버스는 객체간 통신이 바인딩된 버스가 지원하는연산 데이터의 유형 및 순서, 서비스 품질(QoS) 등의 통신 특성을 만족하는지 검사한다. 검사 결과가 성공적이지 못하면 통신은 이루어지지 않는다.
네 번째로, 동일한 버스에 바인딩되어 있는 객체들간에 상호작용을 통해 서비스를 주고 받는 클라이언트-서버 관계의 바인딩을 행하는 단계이다. 클라이언트-서버 객체간의 바인딩(서비스 바인딩이라고 한다)은 기존 분산 플랫폼에서와 마찬가지로 동등한(peer-to-peer) 추상화 레벨의 결합을 의미하며 구체적으로 응용 객체 인터페이스를 통한 연산의 호출이나 스트림 전달 등의 상호작용을 나타낸다.
도 2는 본 발명에 채용되는 플랫폼을 통한 상호작용에 필요한 기능적 요소들을 포함하는 플랫폼 구조를 나타낸다.
플랫폼 관리자(Platform Administrator)(1)는 버스 관리자 모듈과의 상호작용을 통해 플랫폼 내의 통신 아키텍쳐를 구성하고 관리한다.
버스 관리자(Bus Manager)(2)는 플랫폼에서 버스의 유형 규격과 버스 객체 인스턴스의 관리 기능을 수행하는 모듈이다. 버스 관리자(2)는 상기 플랫폼 관리자(1)에 대한 사용자 인터페이스를 제공하며, 수행하는 관리 기능으로는 버스 타입 규격의 등록과 철회, 버스 인스턴스의 생성과 제거 기능이 있다. 이러한 타입 유형(템플릿)과 인스턴스의 등록 및 이용 시에 필요한 정보를 저장하고 검색하기 위하여 플랫폼의 레포지토리 서비스를 이용한다.
상기 버스 관리자(2)는 버스 타입 규격의 등록과 철회를 위해 버스 유형을 기술하는 규격을 저장하고 관리한다. 또한 버스 관리자(2)는 레포지토리(5)에 저장되어 있는 버스 유형의 규격을 템플릿(template)으로 사용하여 특정 버스 유형의인스턴스를 생성하고 이를 관리한다. 버스 관리자(2)는 생성된 버스 객체를 버스 중개자(3)의 인터페이스를 통해 등록한다. 이를 위해 버스 객체의 생성과 제거 과정에서 버스 중개자(3)와의 상호작용이 동시에 이루어진다. 버스는 생성되면서 자동적으로 버스 중개자(3)에 등록되고 제거와 더불어 버스 중개자(3)에서 정보가 삭제된다. 버스 인스턴스에 관한 정보는 구현 레포지토리를 이용하여 저장되고 관리된다. 버스 관리자(2)는 상기 플랫폼 관리자(1)의 정책 및 지시에 의해 전체 시스템 레벨의 버스 통신 아키텍쳐를 구현하는 수단이 된다. 상기 버스 중개자(Bus Trader)(3)는 버스 객체에 대한 중개(broker)기능을 전담하는 객체로서 일반적 객체 중개자(object trader)와 동일한 기능을 담당한다. 즉, 버스 객체를 서버 객체로 보았을 때 버스에 대한 타입 특성 값과 검색 조건을 이용하여 이를 충족하는 버스 객체의 레퍼런스를 반환하는 기능을 수행한다. 그렇지만 버스 중개에만 사용되는 버스 중개자 객체를 별도로 두는 이유는 일반적인 사용자 객체들로부터 이를 보호하기 위한 목적과 버스 관리자(2)와의 상호작용을 통해 버스 중개자(3)에만 부과되는 제약이나 정책을 별개로 수립할 수 있도록 하기 위함이다. 여기서의 분리는 논리적 개념으로 실제로는 하나의 중개자 객체를 통해서 지원될 수도 있다.
상기 버스 중개자(3)는 상기 버스 관리자(2) 및 응용 레벨의 클라이언트, 서버 객체와의 상호작용을 통해 중개 기능을 제공한다. 여기서 상기 버스 관리자(2)는 상기 버스 중개자(3)에 서비스 제공 객체(버스)를 공포(advertisement)하는 엑스포트(export) 기능을 수행하고 응용 레벨의 객체들은 버스의 속성을 이용해 원하는 버스의 정보를 요청하는 임포트(import) 기능을 수행한다.
객체 중개자(Object Trader)(4)는 특정 서비스에 대한 지연 결합(late binding)을 지원하는 객체로서, 서비스의 클라이언트로 하여금 동적으로 적절한 서버를 찾도록 해주는 플랫폼 서버이다. 그 객체 중개자(4)는 상기 버스 중개자(3)와 기능적 측면에서는 동일하지만 일반적 서비스 객체(응용 레벨의 서버)에 대한 중개 기능을 제공하는 객체이다. 통상적으로 응용 레벨의 객체간에 클라이언트-서버 관계를 설정하기 위해 필요한 서비스의 기능이나 특성을 기준으로 상대방 객체의 레퍼런스를 결정할 때, 이 객체를 이용한 중개 서비스가 사용된다.
레포지토리 서버(Repository)(5)는 각종 유형과 인스턴스 정보의 영속적인(persistent) 저장 기능을 제공한다. 일반적으로 레포지토리 서비스는 유형 규격에 관한 저장소로 작용하는 규격(또는 인터페이스) 레포지토리와 구현 객체에 대한 정보를 저장하는 구현 레포지토리가 있다. 이 저장 서버는 사용자 객체에게 정보의 저장(store)과 검색(retrieval)에 대한 서비스를 제공하며, 실제 구현 형태에 있어서는 디렉토리(directory) 시스템이나 데이터베이스를 이용하여 이 서버 기능을 대치할 수도 있다.
버스 어댑터(Bus Adapter)(6)는 클라이언트와 서버 객체의 버스 바인딩 과정을 대행하는 프록시(proxy) 객체로서, 클라이언트나 서버 객체에게는 플랫폼 사용을 위한 바인딩 관련 API(Application Programming Interface)를 제공하고 내부적으로는 버스 중개자 객체 및 버스 객체와의 상호작용을 통해 필요한 중개와 버스 바인딩 동작을 처리한다.
버스 팩토리(Bus Factory)(7)는 버스유형 규격에 일치하는 버스 객체의 생성을 담당하며, 상기 버스 관리자(2) 내부의 모듈 또는 별도의 객체로 구현될 수 있다.
소프트웨어 버스 객체(8)는 분산 응용 객체간 상호작용패턴, 토폴로지(topology), 서비스품질 특성 등의 다양한 객체 통신관계가 하부 통신 메커니즘에 통합되어 제공되게 한다. 소프트웨어 버스는 분산 플랫폼 내에서 어떠한 기능과 속성의 통신 서비스가 제공될 수 있는지 결정하는 요소이다.
특성화된 소프트웨어 버스에 대한 요구사항을 구조적으로 분류하고 표현하기 위해서는 버스 시맨틱 속성 트리와 버스 인터페이스 정의 언어가 필요하다.
도 3은 버스를 통해 지원하고자 하는 통신 패턴의 속성과 그 구조를 나타내는 본 발명의 버스 시맨틱 속성 트리를 나타낸다.
버스 시맨틱 속성 트리는 상기 플랫폼 관리자(1)의 분류 기준에 의거하여 상위의 속성을 하위의 세부 속성으로 분해하는 top-down 방식으로 구성되며 트리를 구성하는 방법은 다음과 같다.
버스 시맨틱 속성 트리의 각 노드는 이름을 갖고 있으며, 같은 레벨의 다른 노드와는 직교적(orthogonal) 또는 배타적(exclusive) 관계를 갖는 속성의 집합을 나타낸다.
버스 시맨틱 속성 트리에서 노드는 비단말 노드(non-leaf node)와 단말 노드(leaf node)로 구분된다. 상기 비단말 노드는 부(sub) 속성으로 분해되는 자식(child) 노드를 갖는 경우이고, 상기 단말 노드는 더 이상 분해되지 않는 속성을 갖는 노드를 표현한다. 노드가 갖는 속성의 의미로 보았을 때 상기 비단말 노드는 속성의 집합을 나타내지만, 상기 단말 노드는 개별적인 속성 값을 나타낸다.
버스 시맨틱 속성 트리는 속성을 크게 링크 구성, 상호작용 스타일, 서비스 속성의 3 가지 관점으로 분류한 것으로, 이들 기준에 따른 각 속성 노드의 의미는 다음과 같다.
먼저, 상기 링크 구성 관점은 버스를 통해 어떠한 연결 형상이 구성되며, 그 형상에서 송, 수신자 객체간 메시지가 교환되는 방향을 표시하기 위해 사용된다. 이 관점에 속하는 속성 노드로는 토폴로지(Topology) 속성(10)이 있다.
토폴로지는 버스 종단점간의 형상을 반영하는 속성으로서, 점대점(ptp : point-to-point)과 다중점(mp : multipoint) 속성을 부 속성으로 갖는다. 즉, 토폴로지 관점에서 보았을 때 버스(통신 링크)를 통한 통신 참여자 간의 형상은 양자간(bi-party) 통신과 다자간(multi-party) 통신으로 분류된다.
그리고, 상기 상호작용 스타일 관점은 버스를 통해 발생하는 상호작용 인터페이스의 특성과 메시지 전송을 위해 내부적으로 지원되어야 하는 기능 (트랜스포트 메커니즘이나 연결 상태의 유지 등)을 구별하기 위하여 사용된다. 인터페이스 유형 (InterfaceType) 속성(11)이 여기에 속한다.
분산 객체 환경에서 사용되는 통신 메커니즘은 객체의 상호작용 인터페이스로 구별되며, 인터페이스 타입은 객체들이 어떤 종류의 통신 메커니즘을 이용하는가를 구별하는 가장 중요한 속성이다. 객체가 서비스를 제공하는 인터페이스는 크게 연산(operation) 인터페이스(13) 및 스트림(stream) 인터페이스(14)로 구성되며, 연산 데이터의 전달과 스트림 데이터의 전달은 각기 다른 통신 메커니즘을 필요로 한다.
트랜스포트 메커니즘 측면에서 상기 연산 인터페이스(13)인 경우에는 연산 호출에 대한 매개변수를 전달하고 이에 대한 결과를 반환 받는 메커니즘을 요구하며, 따라서 이산적(discrete) 상호작용의 형태를 취한다. 반면 상기 스트림 인터페이스(14)인 경우는 스트림 타입에 해당되는 바이트 스트림을 연속적(continuous)으로 전달하는 메커니즘이 필요하다.
상기 연산 인터페이스(13)의 속성은 연산 버스(15) 및 연산 시맨틱(16)의 2개의 부 속성으로 분해된다.
상기 연산 버스 속성(15)은 연산 시그너쳐 타입에 해당되는 규격을 기술하기 위하여 사용된다. 연산 시그너쳐는 연산의 반환 타입, 연산의 이름, 연산의 매개변수로 구성되는 데, 반환 타입은 연산의 결과로 반환되는 데이터 타입을 표현하며, 연산의 매개변수는 각기 입, 출력 모드와 데이터 타입을 갖는다.
상기 연산 시맨틱 속성(16)은 분산 환경에서 시스템 또는 통신 링크에 장애가 발생하였을 때, 연산의 호출 속성을 표시하며 2 가지 속성만을 표시하고 있다. 장애가 발생하였을 때, 최소 1번의 실행 속성을 갖도록 지원하는 경우 at_least_once 이고, best_effort 경우에는 실행 속성의 신뢰성을 보장하지 않는다.
상기 스트림 인터페이스(14)에서 표현되는 속성은 스트림 버스(17), 스트림 QoS 시맨틱(18), 스트림 방향성(19) 속성의 3개의 부 속성으로 분해된다.
상기 스트림 버스 속성(17)은 응용 레벨의 스트림 버스 인터페이스 규격을기술하기 위하여 사용되며, 스트림 버스 인터페이스 규격은 특정 스트림이 어떠한 미디어 데이터들로 구성되어 있는 가를 표시한다. 스트림 버스 인터페이스 규격으로 가능한 매개변수들로는 미디어의 타입, 미디어의 포맷 등을 들 수 있다. 스트림 유형의 QoS(서비스 품질) 속성은 종단간(end-to-end) QoS 규격을 기술하기 위하여 사용되며, 프레임 속도, 지연, 손실 율 등의 값이 스트림 QoS 규격의 구체적 값이 될 수 있다.
상기 스트림 QoS 시맨틱 속성(18)은 스트림 QoS 보장을 위한 지원 정책을 표시하는 것으로서, 하부구조(버스)에서 보장하는 경우 (guaranteed) 와 하부구조에서 보장을 하지 않는 경우 (best_effort) 로 대별된다. QoS 지원 정책에 따라서는 두 가지 경우 외에도 확률적으로 보장하는 경우도 가능한 속성 값이 될 수 있다.
상기 스트림 방향성 속성(19)은 버스를 통한 스트림 데이터 흐름의 방향성을 나타내는 것으로서, 기본적으로 단방향(unidirectional)과 양방향(bidirectional)으로 나누어진다. 상기 단방향은 사용자 객체의 역할에 따라 순방향과 역방향으로 세분된다. 여기서 순방향은(uni_f) 클라이언트(소스) 단에서 서버(싱크) 단으로의 단방향 메시지 흐름을 나타내고, 역방향은(uni_b) 그 반대이며, 양방향은(bi) 두 개의 단방향 흐름을 표시한다.
상기 버스 시맨틱 속성 트리를 서비스 속성 관점에서 분류했을 경우 버스 속성(12) 노드가 있다. 상기 서비스 속성 관점은 버스의 비기능적 측면을 표현하기 위한 것으로서, 버스의 기능을 부가적으로 향상시키거나 버스의 사용을 제한하는 조건 등을 이 범주로 분류할 수 있다. 앞서의 두 관점(링크 구성 관점, 상호작용스타일 관점)과 달리 서비스 속성의 정형화는 주관적 기준에 따라 가변적이다.
상기 버스 속성(12)은 버스의 기능적(functional) 측면은 동일하지만 비기능적(non-functional) 측면에서 구별되는 속성을 표시하기 위하여 사용된다. 예를 들면, 버스의 QoS 속성으로는 버스의 신뢰성, 보안성, 사용 비용, 제약 조건 등을 표현할 수 있다. 각 QoS 속성은 해당되는 QoS 규격에 대한 구체적 값으로 세분화될 수 있다. 이 속성 노드의 부 속성이 정확하게 정의되기 위해서는 부 속성이 가질 수 있는 값의 범위나 타입에 대한 정의가 선행되어야 한다.
도 4a 내지 도 4f는 본 발명에 적용되는 버스의 타입 속성에 대한 정의와 인터페이스 프로토콜의 구체적인 명세를 위한 버스 인터페이스 정의 언어(BIDL)에 대한 상세한 설명들이다.
버스의 인터페이스 패턴을 기술하기 위한 BIDL 문법은 다음과 같은 확장형 BNF 표기법으로 정의된다. 사용되는 기호 중에 "|" 는 항목 중 하나의 선택(alternative)을 나타내고, "{}" 는 0 번 이상 반복(zero or more)을 나타내며, "+" 는 1번 이상 반복(one or more) 나타낸다. [ ]는 경우에 따라 선택적으로(optional) 나타난다는 표시이고, < >는 비단말(non-terminal) 기호를 의미하고, " "는 키워드(keyword) 또는 단말(terminal) 기호를 의미한다.
도 4a는 버스 템플릿 구문 정의에 관한 것으로, BIDL 언어로 기술된 버스 템플릿 규격을 BIDL 규격(bidl_spec) 또는 BIDL 파일이라 한다. BIDL 규격은 하나의 템플릿 정의에 해당되며, 템플릿 정의는 템플릿 헤더(header) 부와 템플릿 기술(description) 부로 구성된다. 템플릿 헤더 부는 버스 템플릿의 이름을 기술하고, 템플릿 기술 부는 버스의 시맨틱 속성을 표현하는 3개의 규격으로 구성된다.
도 4b는 버스 컨텍스트 규격부에 관한 것으로, 버스 컨텍스트 규격부는 버스 유형이 갖는 컨텍스트(context) 정보에 해당되는 토폴로지 속성을 나타낸다. 이 규격부의 구문 구조 정의는 topology_spec 으로 구성되며, 시맨틱 속성 트리에서 정의된 속성 값을 갖는 타입을 표시한다.
도 4c는 버스 속성 규격부에 관한 것으로, 버스 타입의 비기능적 서비스 속성에 해당되는 사항들의 이름과 타입에 대한 정보를 기술한다. 액세스 제어(access_control) 와 가용성 (availability)의 2가지 속성을 정의하며, 추후 요구되는 속성들을 정의할 수 있도록 'other_property'를 정의한다. 상기 액세스 제어는 버스에 접근할 수 있는 사용자를 제한하기 위한 정보로 사용되며 그 속성 값은 문자열 (string_literal) 을 이용하여 표현된다. 상기 가용성은 플랫폼에 의한 버스 제공에 문제가 발생할 때의 처리 방안을 정의하며 일반적 시스템 고장시의 처리 방법을 따른 것으로 한다.
도 4d는 버스 인터페이스 규격부에 관한 것으로, 버스 인터페이스 규격부는 기존에 사용되었던 연산 (또는 스트림) 인터페이스 시그니쳐 표현과 같은 고정적 통신 패턴에 대한 표현 외에 사용자가 원하는 다양한 통신 패턴을 자유롭게 표현할 수 있도록 유연한 구조를 갖는다. 응용 객체의 상호작용 인터페이스를 고려하여 버스는 기본적으로 연산 버스와 스트림 버스로 구분된다.
응용 객체가 사용하는 연산 시그너쳐는 연산의 이름과 매개변수, 그리고 연산의 결과로 구성되는 데, 본 발명의 버스에서는 응용 객체가 사용하는 연산을 연산 패턴을 전달하는 버스의 이벤트 집합으로 모델링한다. 따라서 객체의 연산 시그너쳐는 버스의 인터페이스를 통해서 발생하는 이벤트의 정렬된 순서의 집합으로 기술될 수 있다. 버스 인터페이스에서 발생되는 이벤트로는 버스로의 메시지 송출(emission)과 버스에서의 메시지 수신(reception)이 있으며, 각 메시지는 버스로의 입, 출력 방향성과 함께 이름, 타입의 쌍으로 표현된다.
상기 연산 버스 인터페이스 규격부(<op_bus_interface_spec>)는 연산 버스 선언부(<op_bus_dcl>)와 연산 시맨틱 선언부(<op_semantic_dcl>)로 나누어 진다.
상기 연산버스 선언부(<op_bus_dcl>)는 크게 헤더(header)에 해당되는 부분과 몸체(body) 그리고 트레일러(trailer)로 구성된다. 구문 구조상 버스 선언 헤더부는 버스 유형의 이름을 기술하는 부분인 <op_bus_specifier>로 표현되며, 버스 유형의 패턴을 기술하는 몸체(body) 부분에 해당되는 "{"<op_bus_spec>"}" 가 그 유형의 구체적 멤버들을 정의한다. 트레일러부는 몸체 내부에 서브 패턴으로 존재하는 중첩 또는 연합 구조를 갖고 있는 버스 타입 멤버의 패턴을 기술하기 위하여 필요한 지원 타입 선언을 정의하는 부분인 <supporting_type_dcl>으로 구성된다.
상기 연산 시맨틱 선언부(<op_semantic_dcl>)는 버스 신맨틱 속성 트리에서 정한대로 2 개의 속성 값을 갖는다.
도 4e에서, 연산버스 기술자 <op_bus_specifier>는 타입 키워드(keyword) "op_bus"와 그 버스 유형을 유일하게(unique) 식별하여 주는 이름으로 구성된다.
버스 유형 이름은 버스 유형 템플릿에서 인스턴스를 생성할 때 사용되기 때문에 전역적으로 식별 가능해야한다. "op_bus"는 유형 선언 구문 전체가 하나의유형을 갖는 주(Main) 버스로 사용되는 것을 표시하는 키워드이다.
버스 유형 선언의 몸체 부분은 버스의 통신(상호작용) 패턴을 구성하는 이벤트 멤버의 리스트로 이루어진다. 여기서 각 멤버는 버스로의 방향성을 표시하는 속성인 방향 기술자(<direction_specifier>)를 선택적으로 가지며, 멤버의 유형 규격인 연산 기술자(<op_specifier>)로 구성된다.
상기 방향 기술자(<direction_specifier>)는 버스에서 이전 이벤트와 방향이 다른 이벤트의 수신을 표시하기 위하여 사용된다. 최초 이벤트는 기본 방향성 속성인 클라이언트에서 버스로의 메시지 송출 이벤트를 의미하며 이 경우 방향 기술자(<direction_specifier>)는 생략된다.
본 모델의 버스는 연산 버스이므로 버스의 통신 패턴을 구성하는 멤버 리스트는 적어도 1개의 연산 유형 멤버를 갖는다. 연산 유형 멤버는 버스를 통해 특정 연산의 이름을 전달하기 위하여 사용되는 버스 패턴의 멤버이다.
버스 패턴을 구성하는 나머지 멤버들은 연산 멤버, 데이터를 전달하는 멤버 또는 서브 패턴을 전달하는 멤버의 조합으로 구성된다. 버스는 여러 개의 연산 패턴을 전달 할 수도 있는 데, 각 연산의 경계는 연산 유형 멤버의 선언을 기준으로 한다. 연산 패턴의 경계는 연산 타입 멤버 선언 이후로부터 시작하여 다음 연산 타입 멤버 선언 이전까지로 한다.
버스 선언(declaration) 구문을 하나의 구조체(structure)로 보았을 때, 구조체의 각 멤버(member)는 버스 인터페이스에서 발생하는 이벤트의 타입을 기술하는 것과 같다. 그러므로 각 멤버는 마치 구조체의 멤버처럼 이벤트의 유형을 표시하는 유형 기술자와 그 유형 변수의 이름으로 기술된다.
버스 인터페이스에서 발생할 수 있는 이벤트로는 통신 패턴을 구성하는 연산 이름의 전달(연산 멤버의 전달), 연산 데이터의 전달, 그리고 패턴 내에 포함된 서브 통신 패턴을 표현하는 중첩된(nested) 연산의 전달, 연합적(union) 연산의 선택적 전달 이벤트가 있다. 이러한 종류의 이벤트들을 표시하기 위하여 선언 구문 멤버의 타입 기술자는 기존 매개변수 데이터 타입 외에도 세 가지 타입 기술자를 추가하였다.
멤버 타입 기술자 규격을 기술하는 구문 구조에서, 연산 데이터의 타입을 규정하기 위한 부분인 <simple_data_type_specifier>은 기본형 매개변수 데이터 타입(예, int, char, float 등)을 표시하고 <constr_data_type_specifier>은 구조체 데이터 타입(예, struct, union, enum 등)을 표시하며, C++ 프로그래밍 언어의 데이터 타입과 같은 의미로 사용된다.
연산 이름의 전달을 위해 확장된 연산 유형 기술자인 <op_type_specifier>는 "op" 타입 키워드를 사용하며, "op" 유형을 버스 모델에서는 하나의 프리미티브 유형으로 간주한다. 프리미티브 유형으로서 "op" 유형은 그 유형 변수의 도메인으로 <identifier>와 같은 범위를 갖는다. 따라서 보통의 식별자(identifier) 규칙을 만족하는 스트링(string)은 "op" 유형 변수의 값이 될 수 있다.
하나의 통신 패턴 내에서 수행되어야 하는 중첩된 연산의 전달 이벤트를 표시하는 타입 템플릿의 멤버는 그 유형 기술자로 <sub_bus_type_specifier>를 갖는다. 이는 C++ 언어의 struct 구조체에서 또 다른 struct 구조체를 멤버로 갖는 것과 같은 구문 구조이다.
앞서 정의된 것처럼 버스 유형 기술자는 버스 유형 을 표시하는 키워드와 유형 이름으로 구성되는 데, 중첩된 연산을 표시하는 멤버는 <sub_bus_type_specifier> 형태가 하나의 유형 기술자로 작용한다. 키워드로 서브 패턴임을 표시하기 위하여 "sbustype" 이 사용된다는 점만이 차이가 난다. 멤버에 "sbustype"으로 표시되어 있는 버스 유형 은 몸체의 지원 유형 부분에 그 정의가 포함되어 있어야 한다.
연합적(union) 연산 중의 하나를 선택하여 전달하는 이벤트를 표시하는 유형 템플릿의 멤버는 그 유형 기술자로 <union_bus_type_specifier>를 갖는다. 이는 C++ 언어의 struct 구조체에서 union 구조체를 하나의 멤버로 갖는 것과 같은 구문 구조이다. 일반적인 버스 유형 기술자의 구문 구조와 유사하게 <union_bus_type_specifier> 는, 멤버 유형을 표현하는 데 있어 연합적 연산 버스 유형을 표시하는 "ubustype" 키워드와 그 버스 유형 의 식별자로 사용되는 이름으로 구성된다. 이 두 개의 요소가 하나의 유형 기술자로 작용한다. "sbustype"과 마찬가지로 "ubustype" 유형의 버스 멤버는 지원 유형 부분에 정의되어 있어야 한다.
본 발명에서 규정하려고 하는 버스의 통신 패턴은 멤버 리스트로 구성된다. 멤버들 중에는 그 자체가 하나의 통신 서브 패턴을 구성하는 멤버(예, sbustype 또는 ubustype 멤버)들이 있다. 이때, 몸체 부분에는 유형 이름만이 기술되므로 그 유형에 대한 패턴 정의를 담고 있는 선언부가 필요하다.
몸체의 유형 정의를 지원하기 위하여 이 서브 패턴의 유형 (멤버 리스트)을규정하는 부분이 지원 유형 선언부 <supporting_type_dcl>로 몸체의 멤버 변수로 되어 있는 버스 유형 멤버들의 통신 패턴에 대한 선언으로 구성된다.
이렇게 서브 패턴에 대한 선언을 멤버 리스트로 변환하는 과정은 최종적으로 버스 유형이 멤버 리스트로만 표현될 때까지 반복된다.
이런 과정을 통해 하나의 버스 유형 선언 템플릿은 최종적으로 버스 인터페이스에서 발생하는 연산 유형과 연산 데이터 유형 멤버의 순서화된 집합으로 표현된다.
도 4f는 스트림 버스 인터페이스 규격부에 관한 것으로, 스트림 버스 인터페이스 규격부(<st_bus_interface_spec>)는 스트림 QoS 시맨틱 선언부(<stqos_semantic_dcl>), 스트림 방향성 선언부(<stream_direction_dcl>), 스트림 버스 선언부(<st_bus_dcl>)의 3개 부분으로 구성된다.
상기 스트림 QoS 시맨틱 선언부와 스트림 방향성 선언부는 각각 유형 기술자와 유형이 갖는 속성 값들에 대한 정의로 기술되며, 버스 시맨틱 속성 트리에 정의된 것과 같은 값들을 갖는다.
상기 스트림 버스 선언부는 크게 헤더 (header) 에 해당되는 부분과 몸체 (body) 로 구성된다.
구문 구조상 버스 선언 헤더 부는 버스 유형의 이름을 기술하는 부분인 <st_bus_specifier>로 표현되며, 버스 유형의 패턴을 기술하는 몸체(body) 부분에 해당되는 "{"<st_bus_spec>"}" 가 그 유형의 구체적 멤버들을 정의한다.
스트림버스 기술자 <st_bus_specifier>는 타입 키워드(keyword) "st_bus"와그 버스 유형을 유일하게(unique) 식별하여 주는 이름으로 구성된다.
버스 유형 선언의 몸체 부분은 버스의 스트림 특성을 나타내는 이벤트 멤버의 리스트로 이루어진다. 각 멤버는 하나의 스트림 플로우를 나타내며, 오디오, 비디오, 그리고 애니메이션의 3가지 유형을 갖는다. 각 플로우는 방향성을 표시하는 속성인 <flow_role> 을 필수적으로 갖는데 이것은 버스로 향하는 플로우는 "source"의 값을 갖고, 버스로부터 응용 객체로 향하는 플로우는 "sink"의 값을 갖는다.
플로우가 갖는 QoS 특성을 표시하기 위하여 QoS 선언부를 정의하는데 이것은 추후 확장성을 위하여 그 속성값들을 문자열 (string_literal)로 정의하도록 한다.
상술한 소프트웨어 버스를 이용하여 분산된 응용 객체들에 통신을 제공하기 위해서는 도 2에 나타낸 여러 가지 분산플랫폼의 기능 요소간 상호작용이 요구된다.
도 5는 본 발명의 실시예에 따른 분산객체통신을 위한 각 구성 요소간 상호동작을 설명하는 도면이다.
버스 관리자(2)의 동작에 대해 설명하면, 버스 관리자(2)는 버스 규격 또는 미리 약속된 표기법으로 표현되는 버스 타입 정보를 저장하고 관리하며 그 인스턴스 객체를 생성하고(m1), 그 생성된 버스 객체를 클라이언트와 서버 객체가 바인딩 할 수 있도록 버스 중개자(3)에 임포트 동작을 통해 버스 객체를 등록한다(m2).
그리고, 서버측 동작에 대해 설명하면, 서버가 클라이언트들에게 서비스를 제공하고자 하면, 서버는 객체 중개자(4)를 통해 객체를 등록한다(s1). 서버는 서버측 버스 어댑터(6)를 경유하여 버스 중개자(3)를 통해 자신이 제공하고자 하는 인터페이스들의 시그너쳐와 시맨틱 속성을 기반으로 생성된 버스 객체의 레퍼런스를 얻는다(s2). 상기 서버측 버스 어댑터(6)는 전 단계(s2)에서 얻어진 레퍼런스를 사용하여 서버가 사용하고자 하는 버스 객체들에 바인딩함으로써 서비스를 제공할 수 있도록 준비한다(s3). 그리고, 버스를 통해 요구가 전달되면 요구 매개변수를 입력 받아 자신의 구현 메소드를 실행한다(s4). 그 메소드의 반환 결과가 있으면 그 결과를 버스에 싣는다(s5).
그리고, 클라이언트측 동작에 대해 설명하면, 클라이언트는 클라이언트측 버스 어댑터(6)를 경유하여 버스 중개자(3)를 통해 그 객체의 인터페이스의 시그너쳐를 기반으로 생성된 버스의 식별자를 얻는다(c1). 클라이언트는 객체 중개자(4)를 통해 자신이 원하는 서비스를 제공하는 객체의 레퍼런스를 얻는다(c2). 그리고, 클라이언트측 버스 어댑터(6)를 통하여 자신의 호 요구마다 필요한 버스에 바인딩한다(c3). 바인딩되어 있는 버스를 통해 서버에게 서비스를 요청한다(c4). 객체 요구의 결과를 버스를 통해 반환받는다(c5).
이상 설명한 바와 같은 본 발명에 의하면, 객체간 상호작용과정의 다양한 통신형태를 분산플랫폼에서 구별하고 이런 특성들을 하부 통신 메커니즘에 통합하여 제공함으로써 응용의 개발을 용이하게 하며 분산시스템에 대한 관리 능력을 향상시킨다.
관리 측면이 향상된 통신서비스의 제공은 전체 분산시스템의 안정성과 신뢰성을 높인다. 정보통신망에서의 분산 응용이 필요로 하는 통신 아키텍쳐를 동적으로 구성하고 관리함으로써 새로운 통신서비스의 도입과 분산 소프트웨어 모듈의 제어를 효율적으로 지원할 수 있다.
한편, 본 발명은 상술한 실시예로만 한정되는 것이 아니라 본 발명의 요지를 벗어나지 않는 범위내에서 수정 및 변형하여 실시할 수 있고, 이러한 수정 및 변경 등은 이하의 특허 청구의 범위에 속하는 것으로 보아야 할 것이다.

Claims (25)

  1. 분산 플랫폼내에서 어떠한 기능과 속성의 통신 서비스가 제공될 수 있는지 결정하는 개별화된 소프트웨어 버스 객체들;
    상기 분산 플랫폼내의 통신 아키텍쳐를 구성하고 관리하는 플랫폼 관리자;
    상기 플랫폼 관리자의 정책 및 지시에 의해 상기 플랫폼에서 소프트웨어 버스들의 유형 규격과 버스 객체 인스턴스의 관리 기능을 수행하는 버스 관리자;
    상기 버스 관리자 및 응용 레벨의 클라이언트, 서버 객체와의 상호 작용을 통해 중개 기능을 제공하는 버스 중개자;
    상기 클라이언트로 하여금 동적으로 적절한 서버를 찾도록 해주는 객체 중개자;
    상기 소프트웨어 버스들의 유형과 인스턴스 정보의 영속적인 저장 기능을 제공하는 레포지토리;
    클라이언트와 서버 객체에게 플랫폼 사용을 위한 바인딩 관련 응용 프로그래밍 인터페이스를 제공하고, 상기 버스 중개자 및 버스와의 상호작용을 통해 필요한 중개와 버스 바인딩 동작을 처리하는 버스 어댑터; 및
    상기 소프트웨어 버스 유형 규격에 일치하는 버스 객체를 생성하는 버스 팩토리를 구비하는 것을 특징으로 하는 분산객체간 통신장치.
  2. 제 1 항에 있어서,
    상기 플랫폼의 통신 아키텍쳐를 구성하는여러 유형의 버스들은 상기 플랫폼 관리자의 책임하에 미리 규격화되어 플랫폼에 그 템플릿들이 저장되어 있는 것을 특징으로 하는 분산객체간 통신장치.
  3. 제 2 항에 있어서,
    응용객체가 요구하는 상기 소프트웨어 버스는 상기 템플릿들을 이용하여 플랫폼에 의해 생성되는 것을 특징으로 하는 분산객체간 통신장치.
  4. 제 3 항에 있어서,
    상기 소프트웨어 버스의 유형은 버스 시맨틱 속성 트리 및 버스 인터페이스 정의 언어에 의해 규격화되는 것을 특징으로 하는 분산객체간 통신장치.
  5. 제 4 항에 있어서,
    상기 버스 시맨틱 속성 트리는
    상기 버스를 통해 구성된 연결 형상에서 송수신자 객체간 메시지 교환되는 방향을 표시하는 링크 구성 관점,
    상기 소프트웨어 버스를 통해 발생하는 상호작용 인터페이스의 특성과 메시지 전송을 위해 내부적으로 지원되어야 하는 기능을 구별하는 상호작용 스타일 관점 및,
    상기 소프트웨어 버스의 비기능적 측면을 표현하는 서비스 속성 관점으로 분류되는 것을 특징으로 하는 분산객체간 통신장치.
  6. 제 5 항에 있어서,
    상기 링크 구성 관점에 속하는 속성 노드로는 버스 종단점간의 형상을 반영하며 점대점과 다중점 속성을 부속성으로 갖는 토폴로지 속성 노드가 있는 것을 특징으로 하는 분산객체간 통신장치.
  7. 제 5 항에 있어서,
    상기 상호작용 스타일 관점에 속하는 속성 노드로는 객체들이 어떤 종류의 통신 메카니즘을 이용하는가를 구별하는 인터페이스 유형 속성 노드가 있는 것을 특징으로 하는 분산객체간 통신장치.
  8. 제 7 항에 있어서,
    상기 인터페이스 유형 속성 노드는
    연산 시그너쳐 타입에 해당되는 규격을 기술하는 연산 버스 속성 및, 분산 환경에서 시스템 또는 통신 링크에 장애가 발생하였을 때 연산의 호출 속성을 표시하며 2가지 속성을 표시하는 연산 시맨틱 속성을 부속성으로 갖는 연산 인터페이스 속성 노드; 및
    응용 레벨의 스트림 버스 인터페이스 규격을 기술하는 스트림 버스 속성과, 스트림 서비스 품질보장을 위한 지원 정책을 표시하는 스트림 서비스 품질 시맨틱속성 및, 버스를 통한 스트림 데이터 흐름의 방향성을 나타내는 스트림 방향성 속성을 부속성으로 갖는 스트림 인터페이스 속성 노드를 구비하는 것을 특징으로 하는 분산객체간 통신장치.
  9. 제 5 항에 있어서,
    상기 서비스 속성 관점에 속하는 속성 노드로는 버스의 비기능적 측면에서 구별되는 속성을 표시하는 버스 속성 노드가 있는 것을 특징으로 하는 분산객체간 통신장치.
  10. 제 4 항에 있어서,
    상기 버스 인터페이스 정의 언어는
    버스 템플릿의 이름을 기술하는 템플릿 헤더부와 버스의 시맨틱 속성을 표현하는 템플릿 기술부로 구성된 버스 템플릿 구문 정의부;
    버스 유형이 갖는 컨텍스트 정보에 해당하는 토폴로지 속성을 나타낸 버스 컨텍스트 규격부;
    버스 타임의 비기능적 서비스 속성에 해당되는 사항들의 이름과 타입에 대한 정보를 기술하는 버스 속성 규격부; 및
    사용자가 원하는 다양한 통신 패턴을 자유롭게 표현하도록 하는 버스 인터페이스 규격부를 구비하는 것을 특징으로 하는 분산객체간 통신장치.
  11. 제 10 항에 있어서,
    상기 버스 인터페이스 규격부는 연산 버스 인터페이스 규격부와 스트림 버스 인터페이스 규격부를 구비하고,
    상기 연산 버스 인터페이스 규격부는 버스 유형의 이름을 기술하는 헤더부, 상기 버스 유형의 구체적 멤버들을 정의하는 몸체부 및, 상기 몸체 내부에 서브 패턴으로 존재하는 버스 타입 멤버의 패턴을 기술하기 위해 필요한 지원 타입 선언을 정의하는 트레일러부로 된 연산버스 선언부; 및, 상기 버스 시맨틱 속성 트리에서 정한대로 2개의 속성값을 갖는 연산 시맨틱 선언부를 구비하며,
    상기 스트림 버스 인터페이스 규격부는 유형 기술자와 유형이 갖는 속성값들에 대해 정의하는 스트림 서비스품질 시맨틱 선언부와 스트림 방향성 선언부 및, 버스 유형의 이름을 기술하는 헤더부와 상기 버스 유형의 구체적 멤버들을 정의하는 몸체부를 갖춘 스트림 버스 선언부를 구비하는 것을 특징으로 하는 분산객체간 통신장치.
  12. 제 11 항에 있어서,
    상기 버스 유형 선언의 몸체부는 버스의 스트림 특성을 나타내는 이벤트 멤버의 리스트로 이루어지는 것을 특징으로 하는 분산객체간 통신장치.
  13. 제 12 항에 있어서,
    상기 각각의 이벤트 멤버는 오디오/비디오/애니메이션 유형을 갖는 하나의스트림 플로우를 나타내는 것을 특징으로 하는 분산객체간 통신장치.
  14. 클라이언트가 버스의 식별자를 얻고, 자신이 원하는 서비스를 제공하는 객체의 레퍼런스를 얻는 과정;
    상기 클라이언트가 자신의 호 요구마다 필요한 버스에 바인딩하는 과정;
    상기 바인딩되어 있는 버스를 통해 서버에게 서비스를 요청하는 과정;
    상기 서버가 객체를 등록하고, 자신이 제공하고자 하는 인터페이스들의 시그너쳐와 시맨틱 속성을 기반으로 생성된 버스 객체의 레퍼런스를 얻는 과정;
    상기 얻어진 레퍼런스를 사용하여 상기 서버가 사용하고자 하는 버스 객체들에 바인딩하는 과정;
    상기 버스를 통해 요구가 전달되면 요구 매개변수를 입력 받아 자신의 구현 메소드를 실행하고 그 메소드의 반환 결과가 있으면 그 결과를 버스에 싣는 과정; 및
    상기 객체 요구의 결과를 상기 버스를 통해 클라이언트측에서 반환받는 과정을 구비하는 것을 특징으로 하는 분산객체간 통신방법.
  15. 제 14 항에 있어서,
    상기 버스들은 미리 규격화되어 플랫폼에 그 템플릿들이 저장되어 있는 것을 특징으로 하는 분산객체간 통신방법.
  16. 제 15 항에 있어서,
    상기 버스의 유형은 버스 시맨틱 속성 트리 및 버스 인터페이스 정의 언어에 의해 규격화되는 것을 특징으로 하는 분산객체간 통신방법.
  17. 제 16 항에 있어서,
    상기 버스 시맨틱 속성 트리는
    상기 버스를 통해 구성된 연결 형상에서 송수신자 객체간 메시지 교환되는 방향을 표시하는 링크 구성 관점,
    상기 소프트웨어 버스를 통해 발생하는 상호작용 인터페이스의 특성과 메시지 전송을 위해 내부적으로 지원되어야 하는 기능을 구별하는 상호작용 스타일 관점 및,
    상기 소프트웨어 버스의 비기능적 측면을 표현하는 서비스 속성 관점으로 분류되는 것을 특징으로 하는 분산객체간 통신방법.
  18. 제 17 항에 있어서,
    상기 링크 구성 관점에 속하는 속성 노드로는 버스 종단점간의 형상을 반영하며 점대점과 다중점 속성을 부속성으로 갖는 토폴로지 속성 노드가 있는 것을 특징으로 하는 분산객체간 통신방법.
  19. 제 17 항에 있어서,
    상기 상호작용 스타일 관점에 속하는 속성 노드로는 객체들이 어떤 종류의 통신 메카니즘을 이용하는가를 구별하는 인터페이스 유형 속성 노드가 있는 것을 특징으로 하는 분산객체간 통신방법.
  20. 제 19 항에 있어서,
    상기 인터페이스 유형 속성 노드는
    연산 시그너쳐 타입에 해당되는 규격을 기술하는 연산 버스 속성 및, 분산 환경에서 시스템 또는 통신 링크에 장애가 발생하였을 때 연산의 호출 속성을 표시하며 2가지 속성만을 표시하는 연산 시맨틱 속성을 부속성으로 갖는 연산 인터페이스 속성 노드; 및
    응용 레벨의 스트림 버스 인터페이스 규격을 기술하는 스트림 버스 속성과, 스트림 서비스 품질보장을 위한 지원 정책을 표시하는 스트림 서비스 품질 시맨틱 속성 및, 버스를 통한 스트림 데이터 흐름의 방향성을 나타내는 스트림 방향성 속성을 부속성으로 갖는 스트림 인터페이스 속성 노드를 구비하는 것을 특징으로 하는 분산객체간 통신방법.
  21. 제 17 항에 있어서,
    상기 서비스 속성 관점에 속하는 속성 노드로는 버스의 비기능적 측면에서 구별되는 속성을 표시하는 버스 속성 노드가 있는 것을 특징으로 하는 분산객체간 통신방법.
  22. 제 16 항에 있어서,
    상기 버스 인터페이스 정의 언어는
    버스 템플릿의 이름을 기술하는 템플릿 헤더부와 버스의 시맨틱 속성을 표현하는 템플릿 기술부로 구성된 버스 템플릿 구문 정의부;
    버스 유형이 갖는 컨텍스트 정보에 해당하는 토폴로지 속성을 나타낸 버스 컨텍스트 규격부;
    버스 타임의 비기능적 서비스 속성에 해당되는 사항들의 이름과 타입에 대한 정보를 기술하는 버스 속성 규격부; 및
    사용자가 원하는 다양한 통신 패턴을 자유롭게 표현하도록 하는 버스 인터페이스 규격부를 구비하는 것을 특징으로 하는 분산객체간 통신방법.
  23. 제 22 항에 있어서,
    상기 버스 인터페이스 규격부는 연산 버스 인터페이스 규격부와 스트림 버스 인터페이스 규격부를 구비하고,
    상기 연산 버스 인터페이스 규격부는 버스 유형의 이름을 기술하는 헤더부, 상기 버스 유형의 구체적 멤버들을 정의하는 몸체부 및, 상기 몸체 내부에 서브 패턴으로 존재하는 버스 타입 멤버의 패턴을 기술하기 위해 필요한 지원 타입 선언을 정의하는 트레일러부로 된 연산버스 선언부; 및, 상기 버스 시맨틱 속성 트리에서 정한대로 2개의 속성값을 갖는 연산 시맨틱 선언부를 구비하며,
    상기 스트림 버스 인터페이스 규격부는 유형 기술자와 유형이 갖는 속성값들에 대해 정의하는 스트림 서비스품질 시맨틱 선언부와 스트림 방향성 선언부 및, 버스 유형의 이름을 기술하는 헤더부와 상기 버스 유형의 구체적 멤버들을 정의하는 몸체부를 갖춘 스트림 버스 선언부를 구비하는 것을 특징으로 하는 분산객체간 통신방법.
  24. 제 23 항에 있어서,
    상기 버스 유형 선언의 몸체부는 버스의 스트림 특성을 나타내는 이벤트 멤버의 리스트로 이루어지는 것을 특징으로 하는 분산객체간 통신방법.
  25. 제 24 항에 있어서,
    상기 각각의 이벤트 멤버는 오디오/비디오/애니메이션 유형을 갖는 하나의 스트림 플로우를 나타내는 것을 특징으로 하는 분산객체간 통신방법.
KR1019990063415A 1999-12-28 1999-12-28 분산객체간 통신장치 및 방법 KR100679809B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019990063415A KR100679809B1 (ko) 1999-12-28 1999-12-28 분산객체간 통신장치 및 방법
US09/498,422 US6694368B1 (en) 1999-12-28 2000-06-19 Communication apparatus and method between distributed objects

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990063415A KR100679809B1 (ko) 1999-12-28 1999-12-28 분산객체간 통신장치 및 방법

Publications (2)

Publication Number Publication Date
KR20010060953A true KR20010060953A (ko) 2001-07-07
KR100679809B1 KR100679809B1 (ko) 2007-02-07

Family

ID=19630756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990063415A KR100679809B1 (ko) 1999-12-28 1999-12-28 분산객체간 통신장치 및 방법

Country Status (2)

Country Link
US (1) US6694368B1 (ko)
KR (1) KR100679809B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100442599B1 (ko) * 2001-09-06 2004-08-02 삼성전자주식회사 교환 시스템에서 워크스테이션의 분산 객체를 이용한메시지 처리 장치 및 방법

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437456B1 (en) * 2000-03-17 2008-10-14 Fujitsu Limited Object reference generating device, object reference generating method and computer readable recording medium for recording an object reference generating program
US7010586B1 (en) * 2000-04-21 2006-03-07 Sun Microsystems, Inc. System and method for event subscriptions for CORBA gateway
DE60004161T2 (de) * 2000-12-20 2004-04-22 Agilent Technologies, Inc. (n.d.Ges.d.Staates Delaware), Palo Alto Schnittstelle zu einem Netzwerkverwaltungssystem eines Kommunikationsnetzes
US7904454B2 (en) * 2001-07-16 2011-03-08 International Business Machines Corporation Database access security
US7079999B2 (en) * 2001-07-19 2006-07-18 Matsushita Electric Industrial Co., Ltd. Bus simulation apparatus and bus simulation program
US8726294B2 (en) 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
US8966379B2 (en) 2010-10-01 2015-02-24 Z124 Dynamic cross-environment application configuration/orientation in an active user environment
US8819705B2 (en) 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
US9047102B2 (en) 2010-10-01 2015-06-02 Z124 Instant remote rendering
US8933949B2 (en) 2010-10-01 2015-01-13 Z124 User interaction across cross-environment applications through an extended graphics context
US9152582B2 (en) 2010-10-01 2015-10-06 Z124 Auto-configuration of a docked system in a multi-OS environment
US20030212736A1 (en) * 2002-05-10 2003-11-13 Sreekrishna Kotnur System and method for activating and pausing a component
AU2002951909A0 (en) * 2002-10-04 2002-10-24 Tenix Industries Pty Limited A method of adaptively interfacing with data repository
US7613767B2 (en) * 2003-07-11 2009-11-03 Microsoft Corporation Resolving a distributed topology to stream data
US7376834B2 (en) * 2003-07-18 2008-05-20 Palo Alto Research Center Incorporated System and method for securely controlling communications
US7712108B2 (en) 2003-12-08 2010-05-04 Microsoft Corporation Media processing methods, systems and application program interfaces
US7733962B2 (en) * 2003-12-08 2010-06-08 Microsoft Corporation Reconstructed frame caching
US7900140B2 (en) * 2003-12-08 2011-03-01 Microsoft Corporation Media processing methods, systems and application program interfaces
US7735096B2 (en) * 2003-12-11 2010-06-08 Microsoft Corporation Destination application program interfaces
US7941739B1 (en) 2004-02-19 2011-05-10 Microsoft Corporation Timeline source
US7934159B1 (en) 2004-02-19 2011-04-26 Microsoft Corporation Media timeline
US7664828B2 (en) * 2004-02-20 2010-02-16 Microsoft Corporation Invalid policy detection
US7243157B2 (en) * 2004-02-20 2007-07-10 Microsoft Corporation Dynamic protocol construction
US7496649B2 (en) * 2004-02-20 2009-02-24 Microsoft Corporation Policy application across multiple nodes
US7664882B2 (en) * 2004-02-21 2010-02-16 Microsoft Corporation System and method for accessing multimedia content
US7577940B2 (en) * 2004-03-08 2009-08-18 Microsoft Corporation Managing topology changes in media applications
US7609653B2 (en) * 2004-03-08 2009-10-27 Microsoft Corporation Resolving partial media topologies
US7669206B2 (en) * 2004-04-20 2010-02-23 Microsoft Corporation Dynamic redirection of streaming media between computing devices
US7590750B2 (en) * 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
US20060224766A1 (en) * 2005-03-31 2006-10-05 Malackowski Donald W Operating room communication bus and method
US7970788B2 (en) * 2005-08-02 2011-06-28 International Business Machines Corporation Selective local database access restriction
US7933923B2 (en) 2005-11-04 2011-04-26 International Business Machines Corporation Tracking and reconciling database commands
US7676628B1 (en) 2006-03-31 2010-03-09 Emc Corporation Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes
US8473566B1 (en) * 2006-06-30 2013-06-25 Emc Corporation Methods systems, and computer program products for managing quality-of-service associated with storage shared by computing grids and clusters with a plurality of nodes
US8141100B2 (en) 2006-12-20 2012-03-20 International Business Machines Corporation Identifying attribute propagation for multi-tier processing
US8495367B2 (en) 2007-02-22 2013-07-23 International Business Machines Corporation Nondestructive interception of secure data in transit
US8261326B2 (en) 2008-04-25 2012-09-04 International Business Machines Corporation Network intrusion blocking security overlay
US20110145563A1 (en) * 2009-12-14 2011-06-16 Michael Thomas Kain Secured file-based application programming interface
CN103229156B (zh) 2010-10-01 2016-08-10 Flex Electronics ID Co.,Ltd. 多操作系统环境中的对接系统的自动配置
US9052800B2 (en) 2010-10-01 2015-06-09 Z124 User interface with stacked application management
US8761831B2 (en) 2010-10-15 2014-06-24 Z124 Mirrored remote peripheral interface
US20130124852A1 (en) * 2011-11-11 2013-05-16 Michael T. Kain File-based application programming interface providing ssh-secured communication
US8842057B2 (en) 2011-09-27 2014-09-23 Z124 Detail on triggers: transitional states
CN113834123A (zh) * 2021-10-21 2021-12-24 山东齐芯智控科技有限公司 一种基于软总线的供热管网节能调控方法与系统
CN115022416B (zh) * 2022-04-20 2023-07-14 武汉众智数字技术有限公司 一种移动端适配总线服务的方法和系统
CN115022115B (zh) * 2022-05-23 2023-06-06 中国船舶重工集团公司第七0七研究所九江分部 一种基于软总线技术的舰船操控系统通用软件分层架构

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822585A (en) * 1995-02-21 1998-10-13 Compuware Corporation System and method for cooperative processing using object-oriented framework
KR0175456B1 (ko) * 1995-12-22 1999-04-01 양승택 분산된 객체접속정보 관리 시스템 및 그 객체접속정보의 분산화 방법
KR100223016B1 (ko) * 1996-12-11 1999-10-01 정선종 분산 객체 시스템에서의 송신 및 수신 중계자에 의한 통신 장치 및 그 통신 방법
US6006230A (en) * 1997-01-15 1999-12-21 Sybase, Inc. Database application development system with improved methods for distributing and executing objects across multiple tiers
US5920718A (en) * 1997-03-21 1999-07-06 The Boeing Company Method and apparatus for creating executable code for object-oriented objects having finite state machine
KR19990051702A (ko) * 1997-12-19 1999-07-05 정선종 분산객체 시스템에서 원격객체 생성 및 접근방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100442599B1 (ko) * 2001-09-06 2004-08-02 삼성전자주식회사 교환 시스템에서 워크스테이션의 분산 객체를 이용한메시지 처리 장치 및 방법

Also Published As

Publication number Publication date
US6694368B1 (en) 2004-02-17
KR100679809B1 (ko) 2007-02-07

Similar Documents

Publication Publication Date Title
KR100679809B1 (ko) 분산객체간 통신장치 및 방법
US8407349B2 (en) Discovering and identifying manageable information technology resources
US8739183B2 (en) Annotating portions of a message with state properties
US8626803B2 (en) Method and apparatus for automatically providing network services
US7937500B2 (en) Dynamic, real-time integration of software resources through services of a content framework
US8335862B2 (en) Programmatic management of software resources in a content framework environment
TW586069B (en) A method and a bridge for coupling a server and a client of different object types
US20020161907A1 (en) Adaptive multi-protocol communications system
US20020038336A1 (en) IMS transaction messages metamodel
CA2685887A1 (en) Xml push and remote execution of a wireless application
US20030233477A1 (en) Extensible infrastructure for manipulating messages communicated over a distributed network
US7702687B2 (en) Method and system of typing resources in a distributed system
US6728750B1 (en) Distributed application assembly
US7934218B2 (en) Interprocess communication management using a socket layer
JP2001520486A (ja) オブジェクト指向地点間通信方法およびその方法を行う通信装置
US8260838B2 (en) Extracting web services from resources using a web services resource programming model
KR100395223B1 (ko) 티엠엔과 씨오알비에이 연동 시스템
JP2004520641A (ja) イベントバスのアーキテクチャ
Perry et al. MQSeries publish/subscribe applications
Poon Inside a trader in global trading
Hasan Distributed Programming Using CORBA Services
Ryan The Federated Event Service
Holloway Engineering Analysis and Literature Review of the use of CORBA on Distributed Object-Oriented Systems
Ren et al. Utilizing commercial object libraries within looselycoupled, event-based systems.

Legal Events

Date Code Title Description
N231 Notification of change of applicant
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: 20130107

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140106

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150105

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160107

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170104

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180102

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee