KR20040058261A - 분산 소프트웨어 컴포넌트들을 구성하는 방법 - Google Patents

분산 소프트웨어 컴포넌트들을 구성하는 방법 Download PDF

Info

Publication number
KR20040058261A
KR20040058261A KR10-2004-7006583A KR20047006583A KR20040058261A KR 20040058261 A KR20040058261 A KR 20040058261A KR 20047006583 A KR20047006583 A KR 20047006583A KR 20040058261 A KR20040058261 A KR 20040058261A
Authority
KR
South Korea
Prior art keywords
client
threads
contractual
program
contractual software
Prior art date
Application number
KR10-2004-7006583A
Other languages
English (en)
Inventor
헨리쿠스 비. 엠. 존컬스
Original Assignee
코닌클리케 필립스 일렉트로닉스 엔.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코닌클리케 필립스 일렉트로닉스 엔.브이. filed Critical 코닌클리케 필립스 일렉트로닉스 엔.브이.
Publication of KR20040058261A publication Critical patent/KR20040058261A/ko

Links

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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

각각이 처리기 및 적어도 약간의 메모리를 구비한 하나 이상의 컴퓨팅 디바이스들을 실행하는 둘 이상의 프로그램 쓰레드들 사이에서 데이터를 교환하는 방법이 개시되어 있으며, 상기 방법은, 제 1 상기 프로그램 쓰레드들이 상기 쓰레드들 사이의 관계를 규정하기 위해 계약상 소프트웨어 컴포넌트를 실행하는 단계; 및 상기 제 1 프로그램 쓰레드 및 하나 이상의 제 2 프로그램 쓰레드들 각각이 상기 계약상 소프트웨어 컴포넌트의 상기 규정된 관계에 기초하여 각각의 계약상 소프트웨어 오브젝트들을 생성하는 단계를 포함한다.

Description

분산 소프트웨어 컴포넌트들을 구성하는 방법{Method for constructing distributed software components}
컴퓨팅 디바이스들은 컴퓨터 및 통신 네트워크들의 사용이 증가함으로써 점점 더 상호 연결되고 있다. 더욱이, 오디오 및 비디오 기기, 가정용 기구들, (이동) 전화기들 등과 같은 점점 더 많은 디바이스들은 소프트웨어를 실행하는 컴퓨팅 수단을 포함하고 있다. 이들 기구들은 또한, 통신 네트워크들에 접속되는 경향이 있다. 소프트웨어가, 동일한 디바이스 상에서 실행하거나 또는 통신 네트워크를 통하여 다른 디바이스 상에서 실행하는 다른 소프트웨어에 통신할 수 있도록 하기 위하여, 소프트웨어가 통신하는 방식이 규정되어야 한다. 그러한 통신을 규정하는 많은 방식들은 과거에 고안되었다. 그러한 소프트웨어 통신의 다양한 방식들에 대한 이유는 소프트웨어를 실행하는 기구들의 그러한 다양성이 다수의 산업들로부터 비롯된다는 점이다.
컴퓨팅 산업 내에서도 소프트웨어 사이의 통신의 다수의 방식들이 개발되었다. 상술된 다른 산업들로부터의 기구들, 예컨대, 가정용 기구들, 전자 통신, 등이 소프트웨어 통신의 방식의 그들 자신의 히스토리(history)를 갖는다고 고려하면, 기구들 사이의 통신들을 위한 작동 시스템을 생성하기 위하여, 많은 전문 솔루션들이 개발되었다는 것은 놀랍지 않다. 이러한 개발의 결과는 종래의 기기들에서 사용되는 둘 이상의 소프트웨어 컴포넌트들이 적당히 통신할 수 있을 것 같지 않다는 것이다. 이러한 소프트웨어 문제점을 극복하기 위하여, 둘 이상의 소프트웨어 컴포넌트들이 상호 통신해야 할 때마다 패치들(patches)이 생성되었다. 그러한 전문 패치들을 개발하는 것은 비용이 매우 많이 든다.
본 발명은, 각각이 처리기 및 적어도 약간의 메모리를 구비한 하나 이상의 컴퓨팅 디바이스들을 실행하는 둘 이상의 프로그램 쓰레드들 사이에서 데이터를 교환하는 방법에 관한 것이다.
도 1은 본 발명에 따라, 각각이 처리기 및 적어도 약간의 메모리를 구비한 하나 이상의 컴퓨팅 디바이스들을 실행하는 둘 이상의 프로그램 쓰레드들 사이에서 데이터를 교환하는 방법을 도시한다.
이러한 단점들을 극복하기 위하여, 본 발명은, 각각이 처리기 및 적어도 약간의 메모리를 구비한 하나 이상의 컴퓨팅 디바이스들을 실행하는 둘 이상의 프로그램 쓰레드들(threads) 사이에서 데이터를 교환하는 방법을 제공하며, 상기 방법은,
- 제 1 상기 프로그램 쓰레드들이 상기 쓰레드들 사이의 관계를 규정하기 위해 계약상 소프트웨어 컴포넌트를 실행하는 단계; 및
- 상기 제 1 프로그램 쓰레드 및 하나 이상의 제 2 프로그램 쓰레드들 각각이 상기 계약상 소프트웨어 컴포넌트의 상기 규정된 관계에 기초하여 각각의 계약상 소프트웨어 오브젝트들을 생성하는 단계를 포함한다.
계약상 소프트웨어 오브젝트들(공동-클라이언트들)과 함께 그 관계(초기 공동-오브젝트)는 하나 이상의 디바이스들 내에 상주하고 단일 논리 엔티티로서행동(behave)할 수 있다. 그 장점은 그러한 컴포넌트들의 사용이 소프트웨어를 표준 네트워킹 및/또는 통신 기술에 더하여 높은 레벨로 통신할 수 있게 한다는 점이다. 제 2 장점은, 소프트웨어가 기존 네트워크들 및 네트워크에서 서로 통신하도록, 소프트웨어의 분배된 공동-오브젝트들이 동작할 수 있는 것에 더하여 소프트웨어가 사용될 수 있다는 점이다.
본 발명의 다른 장점은, 모든 프로그램 쓰레드에 대해 동일하게 작업하는 분배된 컴포넌트들을 사용하여 소프트웨어를 통신하기 위하여, 쓰레드들이 통신할 수 있도록 전문 코드를 더 이상 프로그램할 필요가 없다는 점이다. 어떤 특정 규칙이 선택된 후에, 분배된 컴포넌트는 규칙 함수들에 따라 행동하게 될 것이며, 이는 도면의 설명에서 더 설명될 것이다.
더욱이, 본 발명은, 네트워크 트래픽(왕복 제어)을 제어하는 계통적 방식을 제공한다. 이러한 방법을 사용하여, 분산 소프트웨어 컴포넌트의 구현은 특정 인터페이스들을 도입할 필요 없이, 네트워크 지연들 및 분배의 정도에 의존하여 최적화될 수 있다. 네트워크에 컴포넌트의 분배의 구현을 최적화하기 위하여, 인터페이스들의 조정들이 필요 없는 동안 네트워크 토폴로지가 고려될 수 있다.
이러한 방법의 다른 장점은 분배된 컴포넌트의 행동이 분배의 정도에 무관하다는 점이다. 수행 레벨에서의 차이점이 항상 있을지라도, 본 발명에 따른 방법을 사용하여, 프로그램 쓰레드들 사이의 통신이 실행되는 방식을 완전히 예측할 수 있게 한다.
본 발명의 양호한 실시예에서, 상기 쓰레드들 사이의 규정된 관계는 계약상소프트웨어 컴포넌트의 인스턴스 생성물(초기 공동 오브젝트)이다. 하나 이상의 계약상 소프트웨어 오브젝트들(공동 클라이언트들)과 함께 전체(공동 컴포넌트)로서 쓰레드들 사이의 한 (세트의) 규정된 관계는 공동 클라이언트들을 생성하기 위한 프로그램 쓰레드들에 의해 사용되는 소프트웨어 컴포넌트이다. 그 관계는 공동 클라이언트들이 프로그램 공간 또는 프로그램 쓰레드들의 도메인에서 실행하기 때문에, 공동 클라이언트를 생성해야 한다.
본 발명의 다른 양호한 실시예에서, 모든 프로그램 쓰레드에 대해, 계약상 소프트웨어 오브젝트(공동 클라이언트)는 상기 공동 클라이언트들을 생성 및 동작시키기 위한 필요 수단을 할당함으로써 데이터를 교환하기 위해, 상기에 따른 방법을 사용하여 생성된다.
초기의 공동 오브젝트는 계약상 용어의 규정이며, 이는 다른 프로그램 쓰레드들과 데이터를 교환하는데 공동 오브젝트를 사용하기 위하여 프로그램 쓰레드들이 서명 승낙(underwrite)해야 한다. 계약은 규칙들을 규정한다. 프로그램 쓰레드가 그러한 규칙들의 사용을 필요로 하면, 프로그램 쓰레드는 그 규칙을 위해 “사인(sign)"할 수 있다. 규칙은 "권리들(rights)" 및 “의무들(obligations)"을 내포한다. 이들 권리들 및 의무들은 공동 클라이언트를 생성 및 동작시키는 수단의 할당을 포함한다.
프로그램 쓰레드들은 공동 클라이언트들의 사용을 위한 수단을 예약해야 할 것이다. 이를 위해 예약될 수단의 명세는 초기의 공동 오브젝트에서 공동 오브젝트에 의해 레이아웃된다. 프로그램 쓰레드가 분산 소프트웨어 컴포넌트를 사용해야한다면, 소위 계약에 서명 승낙하며, 그 효과는 클라이언트가 사인한 규칙의 명세(specification)에 따라 공동 클라이언트가 생성되는 것이다.
본 발명의 다른 양호한 실시예에서, 분배된 공동 오브젝트는 단일 논리 오브젝트이다.
더욱이, 프로그램 쓰레드는 후자의 제 2 계약상 소프트웨어 오브젝트에 의해 제 2 쓰레드에 데이터를 통신하기 위해 제 1 계약상 소프트웨어 오브젝트에 대해 국부적으로 동작하는 것이 바람직하다. 이에 대한 장점은, 공동 클라이언트가 쓰레드 내에서 국부적으로 동작하기 때문에, 쓰레드가 다른 쓰레드에 통신하기 위하여, 단지 그 공동 클라이언트와 내부 동작을 수행할 필요가 있다는 점이다. 쓰레드가 공동 클라이언트에 통신될 데이터 상으로 내부적으로 전달된 후에, 분배된 오브젝트는 “커미트(commit)" 후에, 다른 쓰레드들에 대한 데이터의 통신을 돌보게 되는데, 커미트는 도면의 설명으로 나중에 기술될 것이다.
또한, 상기 단일 논리 오브젝트의 상기 제 1 계약상 소프트웨어 오브젝트에 대한 국부적 동작은 상기 제 1 계약상 소프트웨어 오브젝트의 커미트 동작 후에 전역적(global)이 되는 것이 바람직하다. 공동 클라이언트가 상기 내부 동작에 의해 호스트 쓰레드로부터 데이터를 수신 받았을 때, 데이터는 여전히 국부적으로 저장된다. 통신을 수신해야 하는 다른 쓰레드들 내에서 실행중인 공동 클라이언트들인 공동 클라이언트들이 데이터를 수신하기 위하여, 제 1 공동 클라이언트는 커미트 동작을 수행해야 한다. 공동 클라이언트가 일부인 공동 오브젝트에 의해 실행되는 이러한 동작에 의해, 목표 공동 클라이언트들은 그들이 데이터를 수신하는 것을 통지할 것이다. 공동 클라이언트들을 포함하는 공동 오브젝트들이 단일 논리 오브젝트를 형성하기 때문에, 다른 공동 클라이언트들에 의해 이해될 수 있는 방식으로 공동 오브젝트에 의해 전역적 동작이 실행된다는 장점이 있다.
더욱이, 상기 단일 논리 오브젝트의 상기 제 1 계약상 소프트웨어 오브젝트의 전역적 동작은 상기 제 2 계약상 소프트웨어 오브젝트에 의한 동기 동작을 호출함으로써 제 2 계약상 소프트웨어 오브젝트에 대해 영향을 주는 것이 바람직하다. 상기 제 1 공동 클라이언트의 커미트 동작 후에 전역적이 된 데이터는, 제 2 공동 클라이언트가 실행중인 프로그램 쓰레드들에서 국부적이 되는 것이 유리하다. 이후, 통신이 보내진 제 2 쓰레드는 내부 동작에 의해 데이터를 액세스할 수 있을 것이다. 그래서, 통신의 수신단에서 동기 동작은 데이터를 수신하는 공동 오브젝트의 동작임이 분명하며, 이는 쓰레드가 데이터를 액세스하기 위하여 전역적 동작들을 수행할 필요가 없음을 의미한다. 수신 쓰레드는 단지 공동 클라이언트에 대한 국부적 동작을 수행할 필요가 있을 뿐이다.
본 출원과 동일한 출원인에 의한 미국 특허 제 6,182,152(대리인 문서 번호 PHN 015645)는 동시 발생하는 연속 처리를 동기화하기 위한 인터프로세스 적응 동작들 및 인트라프로세스 갱신 동작들의 사용을 개시하고 있다. 이러한 문서에서, “채널들(channels)"에 의해 상호 접속되는 처리들에 대한 동기화 방법이 설명되어 있다. 이들 “채널들”은 세 개의 부분들, 즉 송신기에 국부적 부분, 수신기에 국부적 부분 및 전역적 부분으로 구성되어 있다. 이러한 문서에서, “커미트" 동작은 자동적으로 모든 미결정(pending)의 처리 갱신들을 실행한다. “SYNC2" 동작은 모든 미결정의 처리 적응 동작들을 실행한다. 이러한 문서에 따른 방법은 모든 처리기들이 동일 장치의 일부이고 공유 메모리를 사용할 때, 실행될 수 있다.
다른 양호한 실시예는 본 발명에 따른 방법을 수행하기 위하여, 정보를 교환해야 하는 적어도 두개의 동시 발생 프로그램 쓰레드들을 실행하기 위해 적어도 하나의 처리기 및 하나의 메모리를 구비한 적어도 하나의 컴퓨팅 디바이스를 포함하는 컴퓨터 시스템을 제공한다.
계류중인 유럽 특허 출원 제 01204140.6호(대리인 문서 번호 PHNL010784)에서, 분배된 컴포넌트들의 분배의 정도와 무관하게 계산(computation)의 일관성을 가능하게 하는 통신 프로토콜이 개시되어 있다. 연속하는 일관성을 보증하는 그러한 방법의 사용은 공동 작동 처리기가 통신들에서의 지연들과 무관하게 기능할 수 있게 한다.
본 발명의 다른 장점들, 특징들 및 세부 사항들은 양호한 실시예를 도시한 첨부 도면을 참조하여 양호한 실시예의 다음의 설명에 비추어 명확해질 것이다.
본 발명에 따른 공동 오브젝트는 사각형(10)으로 표현되어 있다. 공동 오브젝트(10)는 하나의 초기 공동 오브젝트(5) 및 네 개의 공동 클라이언트들(11, 12,13, 14)을 포함한다. 초기 공동 오브젝트(5)는 프로그램 쓰레드로부터 그렇게 하기 위해 호출시 소프트웨어 컴포넌트(6)에 의해 생성된다. 컴퓨팅 디바이스(도시되지 않음) 상에서 실행하는 소프트웨어인 프로그램 쓰레드가 적어도 하나의 다른 프로그램 쓰레드와 데이터를 교환할 필요가 있을 때, 공동 클라이언트는 공동 오브젝트(10)의 논리부로서 생성된다.
공동 오브젝트는, 각각의 프로그램 쓰레드들(처리들)(1, 2, 3, 4)에서 실행하는 공동 클라이언트들이 생성되는 논리 엔티티이다. 공동 오브젝트 및 공동 클라이언트들은 그들 각각의 처리 내에서 쓰레드들이 공동 클라이언트들에 데이터를 핸드오버(hand over)할 수 있는 방식으로 쓰레드들 사이에서 데이터의 통신을 할 수 있게 한다. 송신 처리의 한 공동 클라이언트로부터 수신 처리의 다른 공동 클라이언트로, 즉 처리(1)의 공동 클라이언트(1)에서 처리(2)의 공동 클라이언트(2)로의 데이터의 실제 송신은 송신 처리의 범위 밖에서 수행되고, 따라서 공동 오브젝트에 의해 처리된다. 공동 오브젝트는 전역적 레벨에서 데이터의 전송에 관련된 모든 동작들에 책임이 있다.
처리(1)가 다른 처리(2)에 정보를 전송해야 할 때, 처리는 공동 오브젝트를 사용하여 공동 클라이언트를 생성한다. 공동 클라이언트를 생성할 수 있기 위하여, 처리는 이것이 수행되는 방법에 관련하여 초기의 공동 오브젝트로부터 데이터를 판독해야 한다. 초기 공동 오브젝트는 공동 클라이언트를 동작시키기 위하여 어떤 종류의 자원들 및 처리 용량이 예약되어야 하는지에 관한 정보를 포함한다. 이러한 정보에 기초하여, 처리는 공동 클라이언트를 생성할 수 있다. 이렇게 생성된 공동클라이언트는 처리(1)의 자원들 내에서 실행될 것이고, 논리적으로 공동 오브젝트의 부분이 될 것이다. 또한 처리(2)에서, 공동 클라이언트는 유사한 방식으로 생성된다. 처리는 특정한 기능들이 수행되어야 한다. 이들 기능들의 조합은 규칙이라 불린다. 따라서, 초기 공동 오브젝트로부터 판독될 데이터 또는 계약상 소프트웨어 컴포넌트의 인스턴스 생성물은 처리가, 규칙을 수행할 수 있는 공동 클라이언트를 생성할 수 있게 한다.
공동 컴포넌트는, COM 컴포넌트로서 구체화될 수 있는 소프트웨어 컴포넌트이며, 이는 공동 오브젝트들의 특정 등급의 구현을 포함한다. 공동 오브젝트는, 그 등급의 오브젝트와 동일한 방식으로 초기 공동 오브젝트를 생성함으로써 생성된다. 이것은, COM이 사용되는 경우에 “CoCreateInstance"를 사용하여 시행된다. 특히, 공동 오브젝트들은 계약들로서 보여질 수 있으며, 계약은 클라이언트들이 계약 내에서 식별되는 특정 규칙에 대해 동적으로 사인할 수 있음을 의미하고, 그 규칙과 연관된 권리들뿐만 아니라 의무들을 얻는 것을 내포한다.
따라서, COM 컴포넌트는 규칙들을 식별하는 적당한 명세와, 연관된 권리들 및 의무들을 가져야 한다. 명세는 규칙과 연관되는 여러 개의 인터페이스들을 식별한다. COM에 관해, 명세는 계약 내에서 규정된 각 인터페이스마다 별개의 GUID를 제공하는 대신 계약 ID라 불리는 전역적으로 고유한 ID(GUID)에 의해 식별되는 것이 바람직하다.
공동 컴포넌트의 예는 “이벤트 조정기(Event Mediator)"이다. 이러한 이벤트 조정기는 공동 오브젝트는 이벤트 소스들 및 이벤트 싱크들을 동적으로 접속 및접속 해제하기 위한 설비들을 제공한다. 통상적으로, 어떤 이벤트 소스들 및 싱크들은 다른 것들이 상이한 기계들 상에서 위치되는 경우와 동일한 기계 상에 상주할 것이다.
이벤트 조정기를 위해 세 개의 상이한 규칙들이 구별된다. “이벤트 송신기(event sender)"는 이벤트 소스의 소유주이다. 그것은 이벤트의 특정 형태를 위한 이벤트 소스로서 이벤트 조정기에 및 그로부터 접속 및 접속 해제할 수 있다. 접속 후에, 이벤트 조정기에게 이벤트의 발생들이 보고될 수 있다.
“이벤트 수신기(event receiver)"는 “이벤트 싱크(event sink)"의 소유주이다. 그것은 이벤트의 특정 타입을 위한 이벤트 싱크로서 이벤트 조정기에 및 그로부터 접속 및 접속 해제할 수 있다. 접속했을 때, 이벤트 수신기는 이벤트 핸들러로서 규정되어야 한다. 그 효과는 이벤트 송신기의 소스에서 발생하는 이벤트들이 이벤트 수신기의 싱크로 전파되는 것이다(송신기 “커미트들” 및 수신기 “싱크들”이라 가정). 제 3 규칙은 소정 이벤트 타입에 대해 등록된 소스들 및 싱크들의 수에 대해 이벤트 조정기에게 질문할 수 있는 “이벤트 질의기(event inquirer)"이다. 이것은 단순화된 예임을 주지한다. 특정 이벤트 조정기는 더 많은 특징들(features)을 가져야 한다.
초기 공동 오브젝트(5)는 컴포넌트 기법 또는 프로그램 언어로 오브젝트를 생성하는 표준 방식으로 본 발명에 따라 생성될 것이다. 공동 오브젝트는 초기에, 이름 “초기 공동 오브젝트(initial co-object)"를 설명하는 초기 공동 오브젝트만을 포함한다. 공동 오브젝트가 존재하고 그 식별이 공동 오브젝트의 식별로서 사용되는 한 존재가 남아 있다. 오브젝트는, 프로그램 쓰레드들 또는 처리기들이 특정 규칙을 위해 사인할 수 있게 하는 적어도 하나의 인터페이스 “ICoSign"(8)을 포함한다. 규칙을 위한 사인은 처리 도메인에서의 공동 클라이언트 또는 클라이언트를 생성할 것이다. 공동 오브젝트는 공동 오브젝트에 부가의 특정 인터페이스들을 가질 수 있다.
상술된 바와 같이, ICoSign(8)의 목적은 공동 오브젝트의 잠재적 클라이언트들이 특정 규칙 내에서 공동 오브젝트와 상호 작용으로 관여하기 위한 것이다. 클라이언트는 그 규칙과 연관된 모든 의무들을 충족해야 함을 내포하는 규칙을 위해 사인해야 한다. 그 대신, 클라이언트는 공동 오브젝트로부터 서비스들을 받는다. 규칙들은 규칙 ID에 의해 지정된다. 사인과, 클라이언트의 도메인에서 각각 공동 클라이언트의 생성한 후에, 공동 클라이언트에 대한 참조는 클라이언트에게 반환된다. 사인 동작의 반환 값에 의해 표시될 때 사인은 실패할 수도 있다. 예를 들면, 단 하나의 클라이언트만이 사인할 수 있는 규칙들이 있을 수도 있다. ICoSign은 규칙을 위한 “사인 오프(signing-off)"는 안 되고 “사인에 의한 등록(signing-up)"만을 지지할 수 있다. 이것은 계약(공동 오브젝트에 의해 표현된)이 취소될 수 없음을 의미하지 않는다. 계약이 취소될 수 있으면, 이것은 계약 자체의 부분으로서 지정되어야 하고, 공동 클라이언트들의 규칙 지정 인터페이스들에 의해 지지되어야 한다. 더욱이, 공동 클라이언트는 사인한 클라이언트에 의해서만 사용될 수 있음을 의미한다. 공동 클라이언트의 방법들에 대한 호출들은 클라이언트로부터 나오는 공동 오브젝트들에 의해 해석되며, 이는 클라이언트를 식별하기 위한 공동 오브젝트에 의해 공동 클라이언트가 사용됨을 의미한다.
공동 클라이언트는, 표준 상호 작용 인터페이스(31, 32, 33, 34) 및 인터페이스의 수집(21, 22, 23, 24)이고, 공동 클라이언트와 연관된 규칙에 지정된 인터페이스들의 고정 세트를 구비한 클라이언트측 오브젝트이다.
특정 규칙에 대해 사인에 의한 등록을 했을 때, 클라이언트는 그 규칙에 대한 공동 클라이언트의 개인적 복사본(private copy)을 얻는다. 공동 클라이언트의 규칙 지정 인터페이스들은 규칙과 연관된 기능에 대한 액세스를 제공한다. 이들 규칙 지정 인터페이스들에 의해 제공된 동작들의 효과는 클라이언트의 처리 도메인에서 엄밀히 말하면 국부적이다.
공동 클라이언트에 대한 동작들의 국부적 효과들은 상호 작용 인터페이스에 의해 공동 오브젝트에 대한 전역적 효과들로 변할 수 있다. 다른 클라이언트들에 의한 공동 오브젝트에 대한 전역적 효과들은 이러한 인터페이스에 의한 공동 클라이언트에 대한 국부적 효과로 변할 수 있다.
공동 오브젝트에 의해 지지된 규칙들의 세트는 공동 클라이언트와 연관된 인터페이스들의 세트와는 현저히 다르게, 동적으로 변할 수 있음을 주지한다.
용어 “클라이언트들(clients)"은 프로그램 쓰레드들인 공동 오브젝트들의 사용자들에 대한 일반적 용어이다. 그들은 공동 클라이언트들의 인터페이스들을 통해서만 공동 오브젝트와 상호 작용한다. 클라이언트에 의해 수행되는 특정 규칙에 대한 공동 클라이언트는 클라이언트의 처리 도메인에서 생성되며, 이는 클라이언트와 동일한 어드레스 공간에 있음을 의미한다.
용어 “클라이언트”는 실제로, 처리 쓰레드, 오브젝트, 오브젝트들의 그룹 등이 될 수 있는 일반적 개념임을 주지한다.
이벤트 수신기 공동 클라이언트들의 규칙 지정 인터페이스의 예는 COM IDL을 사용하여 지정될 수 있는 바와 같이, “IEventReceiverConnect"이다:
IEventReceiverConnect
{void connect([in] EventID id,
[in]EventHandler hdl
);
void disconnect([in] EventID id));
}
이러한 인터페이스는 이벤트 ID와 이벤트 핸들러를 지정함으로써 이벤트 수신기로서 클라이언트가 접속 및 접속 해제하도록 허용한다. 접속 동작의 효과는 클라이언트가 이벤트 ID에 의해 식별된 이벤트들의 수신기로서 간주될 것이라는 점이다. 송신기가 이러한 이벤트의 타입에 대해 등록되면, 이들 송신기들에 의해 발생된 임의의 이벤트들은 공동 클라이언트에게 전파될 것이다.
이벤트들을 핸들링하는 동작 외에도, 이벤트 핸들러 인터페이스는 이벤트의 접속 및 접속 해제를 핸들링하는 두 개의 동작들을 제공할 수 있다. 그 이유는 접속 및 접속 해제가 동기적이기 때문이다. 공동 오브젝트는 대응하는 이벤트 핸들러 동작들을 호출함으로써 접속 및 접속 해제를 확인 응답(acknowledges)한다.
더욱이, 접속 및 접속 해제 동작들과 같은 모든 다른 규칙 지정 동작들은 공동 오브젝트 레벨에서의 효과를 가지기 전에 커미트되어야 한다.
각 공동 클라이언트에 의해 제공된 상호 작용 인터페이스는 정보를 교환하기 위해 공동 오브젝트를 사용하여 프로그램된 쓰레드들 사이의 네트워크 트래픽의 세기를 제어하기 위한 1차 수단이다. 공동 클라이언트 상의 클라이언트에 의한 각 규칙 지정 동작은 그 클라이언트의 처리 도메인에 엄격히 국부적이고 임의의 네트워크 트래픽을 관련시키지 않으며, 이것은 본 발명의 큰 장점이다. 공동 오브젝트에 대한 동작의 전역적 효과는 공동 클라이언트의 “커미트" 동작이 클라이언트에 의해 실행된 후에만, 유효하게 한다. 실제로, 이러한 효과는 공동 오브젝트의 명세로부터 판독되어야 한다.
커미팅은 공동 오브젝트뿐만 아니라 공동 오브젝트를 사용하는 임의의 다른 클라이언트들에 대해서도 전역적 효과를 가진다. 그렇게 함으로써 데이터가 다른 쓰레드들에 영향을 미치지 않고 쓰레드에 의해 전송될 수 있다는 장점이 있다. 다른 클라이언트들이 커미트 동작의 영향을 받기 위하여, 클라이언트는 공동 클라이언트에 대한 동기 동작을 호출해야 하며, 이는 공동 클라이언트( 및 그 공동 클라이언트만)에서 효과를 발생하게 할 것이다. 본 발명에 따른 방법의 사용은 네트워크 트래픽을 최적화하는 잘 규정된 순간에만 상호 작용이 발생할 수 있게 한다.
송신기가 어떻게 두 타입의 이벤트들, “키보드 이벤트들(keyboard events)" 및 "마우스 이벤트들(mouse events)"을 송신할 수 있는지의 예가 COM을 사용하여 지정될 수 있다.
수신기에 의한 동작들:
(1) eventReceiver.connect(keybdEventID, eventHandler);
(2) eventReceiver.connect(mouseEventID, eventHandler);
(3) commit();
(4) ...송신기에 의한 동작들...
(5) sync();
(6) - eventHandler.handleConnect(keybdEventID);
(7) - eventHandler.handleConnect(mouseEventID);
(8) - eventHandler.handleEvent(keybdEventID, shiftKey);
(9) - eventHandler.handleEvent(keybdEventID, ctrlKey);
(10) - eventHandler.handleEvent(mouseEventID, clickLeft);
초기에, 송신기는 공동 클라이언트의 대응하는 “접속(connect)" 동작 “coEventSender"을 호출함으로써 키보드 및 마우스 이벤트들의 송신기로서 접속되어야 한다.
“커미트”를 호출함으로써, 이들 명령들은 두 개의 타입의 이벤트들의 송신기로서 클라이언트를 인에이블하게 될 공동 오브젝트에 전파된다. 그 순간으로부터, 송신기에 의해 발생된 이들 타입들의 이벤트들을 이들 타입들의 이벤트의 수신기들에 넘길 것이다.
송신기는 세 개의 이벤트들을 발생한다: "shiftKey", "ctrlKey" 및 “clickLeft". "raiseEvent" 동작은 송신기 공동 클라이언트에 대해서만 국부적 효과를 갖는다. ”커미트“는 이들 동작들의 전역적 효과를 확립할 것이다.
COM을 사용하여 지정된 이벤트들을 수신기가 어떻게 수신할 수 있는지의 다른 예를 보여준다:
송신기에 의한 동작들:
(1) CoEventSender.connect(keybdEventID);
(2) CoEventSender.connect(mouseEventID);
(3) commit();
(4) ...
(5) CoEventSender.raiseEvent(keybdEventID, shiftKey);
(6) CoEventSender.raiseEvent(keybdEventID, ctrlKey);
(7) CoEventSender.raiseEvent(keybdEventID, clickLeft);
(8) commit();
초기에 수신기는 키보드 및 마우스 이벤트들의 수신기로서 접속해야 한다. “커미트”는 명령들을 전역적으로 통신하는데 사용된다.
두 개의 동작들에 응답하여, 공동 오브젝트는 수신기에서 확인 응답을 송신하여, 수신기가 그로부터 키보드 및 마우스 이벤트들의 도착을 예상할 수 있음을 알도록 한다.
접속 직후에, 송신기가 이벤트를 발생했을 때, 상술된 바와 같이, “동기(sync)"를 수행한 후에 수신기는 세 개의 이벤트들을 수신할 것이다: 두 개의 접속 이벤트들, 두 개의 키보드 이벤트들 및 하나의 마우스 이벤트. 이들 이벤트들은 대응하는 이벤트 핸들러들을 호출함으로써 수신기측(“동기”의 부분으로서)에서 발생된다.
더욱이, 부가의 인터페이스들이 부가될 수 있다. 이들은 공동 클라이언트들의 “IcoConnect" 인터페이스와 클라이언트들의 “IcoSignal" 인터페이스가 호출된다.
공동 클라이언트의 “IcoConect" 인터페이스는, 공공 클라이언트가 “동기를 벗어남(out of sync)"을 보고하는 공동 클라이언트의 통지들에 클라이언트가 가입(“접속”)하도록 허용한다. 이러한 인터페이스에 가입하는데 있어서, 클라이언트는 공동 클라이언트에 의해 클라이언트에게 동기를 벗어남 이벤트를 “신호(singal)"하는데 사용되는 “IcoSignal" 콜백 인터페이스를 제공해야 한다. 클라이언트는 공동 클라이언트로부터 "접속 해제(disconnecting)"에 의해 통지를 중단할 수 있다.
상호 작용 오퍼레이터는 개개의 공동 클라이언트, 개개의 공동 오브젝트 내의 공동 클라이언트들의 그룹, 또는 공동 오브젝트들의 그룹 내의 공동 클라이언트들 및/또는 모든 공동 오브젝트들 내의 모든 공동 클라이언트들과 같은 처리 내의 공동 클라이언트들의 세트들에 대해 규정될 수 있다. 개개의 공동 클라이언트들에 대한 “커미트” 및 “동기”와 같은 기본적인 상호 작용 오퍼레이터들은 동일한 공동 오브젝트 상의 공동 클라이언트들의 그룹들, 상이한 공동 오브젝트들로부터의 공동 클라이언트들의 그룹들, 또는 어떤 특정 처리 도메인에서의 모든 공동 클라이언트들에 대해서도 동작하는 보다 조잡한(coarse-grained) 상호 작용 오퍼레이터들로 조합될 수 있다.
처리 내의 모든 공동 클라이언트들에 대해 동작하는 다른 상호 작용 오퍼레이터들은 “커미트”, “동기”, “대기(wait)", "다음(next)", 및 "준비(await)(조건)”을 포함한다. 이들은 처리 레벨에서, 즉 처리 내의 모든 공동 클라이언트들에 대해 동시적으로 동작하는 복합 상호 작용 오퍼레이터들의 예이다. “커미트” 오퍼레이터는 모든 공동 클라이언트들에 대해 “커미트들”을 수행한다(실제로는, “미결정(pending)" "커미트들”만 실행한다). “동기” 오퍼레이터는 동기를 벗어난 모든 공동 클라이언트들에 대해 “동기”를 수행한다. “대기” 오퍼레이터는 공동 클라이언트가 동기를 벗어날 때까지 대기를 유발한다. “다음” 오퍼레이터는 “커미트”를 수행한 다음 "동기"가 따라온다. “준비(c)"는 조건 C가 참이 될 때까지 대기를 유발한다.
공동 클라이언트 및 공공 오브젝트가 동일한 처리 또는 동일 기계 상에 상주한다면, “커미트”-“동기”의 공유 메모리 구현 메커니즘은 공동 클라이언트들 사이의 통신이 공동 오브젝트를 통할 필요 없이 쇼트컷(short-cut)이 될 수 있을 때 사용될 수 있다. 특정 규칙에서 처음으로 사인에 의한 등록은 일반적으로 공동 클라이언트 코드의 다운로드를 내포할 것이다.

Claims (10)

  1. 각각이 처리기 및 적어도 약간의 메모리를 포함하는 하나 이상의 컴퓨팅 디바이스들 상에서 실행되는 둘 이상의 프로그램 쓰레드들(program threads) 사이에서 데이터를 교환하는 방법에 있어서,
    - 상기 프로그램 쓰레드들 중 제 1 프로그램 쓰레드가 상기 쓰레드들 사이의 관계를 규정하기 위해 계약상 소프트웨어 컴포넌트(contractual software component)를 실행하는 단계; 및
    - 상기 제 1 프로그램 쓰레드 및 하나 이상의 제 2 프로그램 쓰레드들 각각이 상기 계약상 소프트웨어 컴포넌트의 상기 규정된 관계에 기초하여 각각의 계약상 소프트웨어 오브젝트들을 생성하는 단계를 포함하는 데이터 교환 방법.
  2. 제 1 항에 있어서,
    상기 쓰레드들 사이의 규정된 관계는 상기 계약상 소프트웨어 컴포넌트의 인스턴스 생성물(instantation)인, 데이터 교환 방법.
  3. 제 1 항에 있어서,
    모든 프로그램 쓰레드에 대해, 계약상 소프트웨어 오브젝트가 생성되는, 데이터 교환 방법.
  4. 제 1 항에 있어서,
    계약상 소프트웨어 오브젝트는, 상기 계약상 소프트웨어 오브젝트를 생성 및 동작시키기 위한 필요 수단을 할당함으로써 데이터를 교환하는 방법을 사용하여 각 쓰레드에 대해 생성되는, 상기 데이터 교환 방법.
  5. 제 1 항에 있어서,
    상기 계약상 소프트웨어 오브젝트와 상기 쓰레드들 사이의 관계는 단일 논리 오브젝트인, 데이터 교환 방법.
  6. 제 1 항에 있어서,
    프로그램 쓰레드는 후자의 제 2 계약상 소프트웨어 오브젝트에 의해 제 2 쓰레드에 데이터를 통신하기 위해 제 1 계약상 소프트웨어 오브젝트에 대해 국부적으로 동작하는, 데이터 교환 방법.
  7. 제 1 항에 있어서,
    상기 단일 논리 오브젝트의 상기 제 1 계약상 소프트웨어 오브젝트에 대한 국부적 동작은 상기 제 1 계약상 소프트웨어 오브젝트의 커미트 동작(commit operation) 후에 전역적(global)이 되는, 데이터 교환 방법.
  8. 제 1 항에 있어서,
    상기 단일 논리 오브젝트의 상기 제 1 계약상 소프트웨어 오브젝트의 전역적 동작은 상기 제 2 계약상 소프트웨어 오브젝트에 의한 동기 동작을 호출함으로써, 상기 제 2 계약상 소프트웨어 오브젝트에 대해 영향을 주는, 데이터 교환 방법.
  9. 제 1 항에 따른 방법을 수행하기 위하여, 정보를 교환해야 하는 적어도 두개의 동시 발생 프로그램 쓰레드들(concurring program threads)을 실행하는 적어도 하나의 처리기 및 하나의 메모리를 구비한 적어도 하나의 컴퓨팅 디바이스를 포함하는 컴퓨터 시스템.
  10. 처리기가 제 1 항의 방법을 수행하도록 배열된 컴퓨터 프로그램.
KR10-2004-7006583A 2001-10-30 2002-10-03 분산 소프트웨어 컴포넌트들을 구성하는 방법 KR20040058261A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP01204139.8 2001-10-30
EP01204139 2001-10-30
PCT/IB2002/004073 WO2003038599A2 (en) 2001-10-30 2002-10-03 Method for constructing distributed software components

Publications (1)

Publication Number Publication Date
KR20040058261A true KR20040058261A (ko) 2004-07-03

Family

ID=8181158

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7006583A KR20040058261A (ko) 2001-10-30 2002-10-03 분산 소프트웨어 컴포넌트들을 구성하는 방법

Country Status (6)

Country Link
US (1) US20030088661A1 (ko)
EP (1) EP1497724A2 (ko)
JP (1) JP2005509216A (ko)
KR (1) KR20040058261A (ko)
CN (1) CN1630853A (ko)
WO (1) WO2003038599A2 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882317B2 (en) 2004-12-06 2011-02-01 Microsoft Corporation Process isolation using protection domains
US8020141B2 (en) 2004-12-06 2011-09-13 Microsoft Corporation Operating-system process construction
US7600232B2 (en) 2004-12-07 2009-10-06 Microsoft Corporation Inter-process communications employing bi-directional message conduits
US7451435B2 (en) 2004-12-07 2008-11-11 Microsoft Corporation Self-describing artifacts and application abstractions
US8849968B2 (en) 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US8074231B2 (en) 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US20070094495A1 (en) * 2005-10-26 2007-04-26 Microsoft Corporation Statically Verifiable Inter-Process-Communicative Isolated Processes
US8032898B2 (en) 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
CN111611024B (zh) * 2020-05-09 2022-10-11 上海万间信息技术有限公司 一种iOS组件化优化方法、系统及终端

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157927A (en) * 1998-04-22 2000-12-05 Unisys Corporation Methods and apparatus for enabling a component in a first transaction processing environment to access a resource in another environment that is under the control of an Xatmi complaint transaction manager
US20020144014A1 (en) * 2001-01-26 2002-10-03 Alan West Event mediator for facilitating communication between isolated components

Also Published As

Publication number Publication date
WO2003038599A2 (en) 2003-05-08
EP1497724A2 (en) 2005-01-19
JP2005509216A (ja) 2005-04-07
CN1630853A (zh) 2005-06-22
WO2003038599A3 (en) 2004-11-11
US20030088661A1 (en) 2003-05-08

Similar Documents

Publication Publication Date Title
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
US6487607B1 (en) Methods and apparatus for remote method invocation
US5519875A (en) Distributed processing system for modules, each having modularized objects
US6408342B1 (en) Communications framework for supporting multiple simultaneous communications protocols in a distributed object environment
AU746391B2 (en) Method and system for facilitating distributed software development in a distribution unaware manner
US7930701B2 (en) JMS integration into an application server
US8316080B2 (en) Internationalization of a message service infrastructure
JPH06332870A (ja) オブジェクト指向コンピュータ環境における協調処理のためのオブジェクト・マネージャをリンクする方法及び装置
JP2001522086A (ja) 宣言型パラダイムをサポートするステートレスなウェブ環境におけるトランザクションを実行するための方法および装置
WO1995017066A1 (en) Object-oriented multicast networking system
EP0876648A1 (en) Method and apparatus for dynamically brokering object messages among object models
JPH04233044A (ja) トランザクション処理環境における通信インターフェース
JPH10149296A (ja) サーバ・コンピュータ集約トポロジーを識別するための方法及び装置
JP2008306714A (ja) ネットワークアプリケーションにおける通信方法、通信装置及びそのためのプログラム
JPH09223116A (ja) 複数ミドルウェアに渡る分散オブジェクトの位置透過性
KR20040058261A (ko) 분산 소프트웨어 컴포넌트들을 구성하는 방법
Davies et al. Supporting collaborative applications in a heterogeneous mobile environment
US7206843B1 (en) Thread-safe portable management interface
WO2000034863A2 (en) System and method for constructing an ole process control compliant data server from a noncompliant user application
Waddington et al. A distributed multimedia component architecture
GB2346990A (en) Client/server transaction processing system with automatic distributed co-ordinator set-up into a linear chain for use of linear commit optimisation
US6314462B1 (en) Sub-entry point interface architecture for change management in a computer network
US7249155B1 (en) Method for processing a request to multiple instances of a server program
US7472174B2 (en) Abstract mechanism for constructing commands for the command pattern
US6618765B1 (en) Method of modifying a protocol between distributed objects

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid