KR100722355B1 - 동적 관리자가 장치된 컴퓨터 시스템에 의한액티브티-베이스 협력 방법 및 장치 - Google Patents

동적 관리자가 장치된 컴퓨터 시스템에 의한액티브티-베이스 협력 방법 및 장치 Download PDF

Info

Publication number
KR100722355B1
KR100722355B1 KR1020027000817A KR20027000817A KR100722355B1 KR 100722355 B1 KR100722355 B1 KR 100722355B1 KR 1020027000817 A KR1020027000817 A KR 1020027000817A KR 20027000817 A KR20027000817 A KR 20027000817A KR 100722355 B1 KR100722355 B1 KR 100722355B1
Authority
KR
South Korea
Prior art keywords
data
local
tool
engine
change
Prior art date
Application number
KR1020027000817A
Other languages
English (en)
Other versions
KR20020035565A (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 그루브 네트웍스 인코포레이티드
Publication of KR20020035565A publication Critical patent/KR20020035565A/ko
Application granted granted Critical
Publication of KR100722355B1 publication Critical patent/KR100722355B1/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Saccharide Compounds (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Multi Processors (AREA)

Abstract

액티브티-베이스 협력 시스템은 "텔레스페이스(telespace)"라고 하는 공유 프라이비트 공간에서 개인들과 소그룹들 간의 통신 및 다른 상호 공유 액티브티들을 제공한다. 본 시스템에서, 텔레스페이스의 참여자 또는 멤버들은 퍼스널 컴퓨터, 인터넷 설비 혹은 다른 네트워크 가능 장치들을 통하여 상호 작용하며, 예를 들어 인터넷과 같은 네트워크를 통해 서로 통신할 수 있다. 각각의 텔레스페이스는 텔레스페이스의 멤버들의 네트워크 가능 장치들 각각에서 동작할 수 있는 하나 이상의 액티브티들의 인스턴스 생성(instantiation)이다. 각각의 액티브티는 텔레스페이스 멤버 상호 작용에 응답해서 데이터 변경 요청들("델타들"이라고 칭해짐)을 개시하기 위한 툴, 및 툴과는 별개로 메모리에서 언제나 액티브티 지정적인 공통 데이터 모델에 따른 텔레스페이스 데이터를 유지하기 위한 데이터-변경 엔진들을 포함한다. 각각의 네트워크 가능 장치는 또한 델타들에 응답해서 데이터-변경 엔진으로 하여금 데이터의 로컬 복사본에 대한 변경을 하게 하는 동적 관리자를 포함한다.
인터넷, 릴레이, 동적 관리자, 통신 관리자, 메모리, 사용자 인터페이스

Description

동적 관리자가 장치된 컴퓨터 시스템에 의한 액티브티-베이스 협력 방법 및 장치{METHOD AND APPARATUS FOR ACTIVITY-BASED COLLABORATION BY A COMPUTER SYSTEM EQUIPPED WITH A DYNAMICS MANAGER}
본 발명은 일반적으로 인터넷과 같은 네트워크를 통한 통신을 위해 상호 접속된 컴퓨터들에 관한 것으로, 특히, 분산 데이터 모델에 따른 데이터를 조정 및 유지하기 위한 분산 컴퓨터 베이스 시스템에 관한 것이다.
인터넷은 수백만명의 사용자들 간의 통신 및 상호 작용(interaction)을 위한 동적이고 공중적인 환경을 확립했다. 인터넷은 비즈니스에서 벤더-제조자, 제조자-배급자, 배급자-고객, 및 그외의 관계들을 재정립했다. 인터넷 기술이 개별적인 회사들의 내부 보안 네트워크로 확장됨에 따라, 이른바 "인트라넷(intranet)" 또는 "프라이비트 인터넷(private Internet)"은 회사 디렉토리 및 네트워크 기본 구조(infrastructure)를 사용해서 개별적인 사용자들과 작업 그룹들 간의 새로운 형태의 문서 및 정보 공유를 가능케 했다. 전자 게시판 및 대화방과 같은 온라인 서비스들, 전자 상거래, 및 제품을 위한 기술 지원이 인터넷을 통해 동작하는 월드 와이드 웹("WWW" 또는 "웹") 상에서 유용하다.
인터넷의 핵심은 개별적인 클라이언트들(즉, 인터넷-콘텐츠 사용자들)이 웹 사이트들로부터 문서들을 획득하기 위해 브라우저들과 같은 컴퓨터 실행 가능 애플리케이션들을 통해 서버들(즉, 인터넷-콘텐츠 프로바이더들)과 인터페이스하는 서버-클라이언트 아키텍쳐를 갖는다는 것이다. 브라우저들은 퍼스널 컴퓨터들이 인터넷 문서들을 요청, 수신(예를 들면, 다운로드), 해석 및 제공할 수 있게 해주는 소프트웨어 프로그램들이며, 일반적으로 인터넷을 네비게이트한다. 웹 서버들은 통상 외부 프로그램들을 실행하기 위한 표준 인터페이스들을 갖는데, 가장 흔한 것은 CGI(Common Gateway Interface)이다. 웹 사이트들은 클라이언트로부터 원격으로 서버들 상에 위치한 문서들, 일반적으로, 홈 페이지 및 링크된 관련 문서들의 집합이다. 문서는 데이터, 그래픽, 비디오, 사운드 및/또는 다른 타입의 미디어들을 포함하는 복합 문서들 및 다른 문서들일 수 있다. 본래, WWW는 상호 접속 문서들, 또는, 보다 정확하게는, 인터넷 상의 다양한 사이트들에 위치한 문서 객체들의 웹이다.
WWW의 문서 객체들의 타입들 중에는 문서 및 스크립트가 있다. 스크립트는 후에 웹 브라우저에 리턴되는 문서를 생성하기 위해 웹 서버에 의해 실행될 수 있는 실행 가능 프로그램, 또는 파일에 저장된 커맨드들의 집합이다. 전형적인 스크립트 동작들은 파일 또는 데이터베이스로부터 정보를 얻기 위해 라이브러리 루틴들 또는 다른 애플리케이션들을 실행하거나, 또는 다른 컴퓨터로부터 정보를 얻기 위해 요청을 개시하거나, 또는 선택된 하이퍼텍스트 링크에 대응하는 문서를 검색하는 동작들을 포함한다. 스크립트는 예를 들어 사용자가 웹 브라우저에서 특정 하이퍼텍스트 링크를 선택할 때 웹 서버에서 실행된다.
퍼스널 컴퓨터 하드웨어, 소프트웨어, 네트워크 프로토콜 및 기본 구조 규정(infrastructural conventions)(예를 들면, "균일 리소스 로케이터(Uniform Resource Locator)" 또는 "URL")을 포함해서, 인터넷 기술의 기초가 되는 것은 표준화의 진보이다. URL은 WWW 상의 모든 문서 객체들에 대한 위치 어드레스들을 제공한다. URL은 문서 객체를 고유하게 참조하고 종종 인터넷 프로토콜을 사용해서 액세스 알고리즘을 정의한다.
본 명세서에서 사용된 표현인 "인터넷 프로토콜(Internet Protocols)"은 각각 인터넷 전송용 문서들을 포함하는 메시지들을 생성하기 위해 또는 인터넷을 통해 상기 메시지들을 전송하기 위해 일반적으로 수용되고 사용되는 현재 또는 차후 언어 규정(language convention) 및 현재 또는 차후 통신 프로토콜들로 정의된다. 언어 규정은 현재 예를 들어 HTML(Hypertext Markup Language) 및 XML(eXtensible Markup Language)을 포함한다. 통신 프로토콜들은 현재 예를 들어 HTTP(Hypertext Transfer Protocol), TCP/IP, FTP 및 GOPHER를 포함한다. 본 기술 분야에 숙련된 자들은 이러한 언어 규정 및 프로토콜을 잘 알게 될 것이다.
HTML은 멀티미디어 콘텐츠와 다른 문서들로의 링크들을 포함하는 하이퍼텍스트 문서들을 기록하는데 사용되는 언어이다. HTML 문서는 마크업 요소(markup elements)들의 계층적 집합을 포함하는데, 대부분의 요소들은 개시 태그와, 그에 이어서 콘텐츠와, 그에 이어서 종료 태그를 갖는다. 태그들은 "<" 및 ">" 안에 포함되고, 하이퍼텍스트 링크들의 목적지(destination) 및 라벨들 뿐만 아니라 문서 구조화 방법 및 문서 디스플레이 방법을 나타낸다. 제목, 헤더, 진하게 및 이탤릭체와 같은 텍스트 속성들, 리스트, 단락 경계, 다른 문서들로의 외부 링크, 및 동일한 문서의 다른 파트들로의 내부 링크, 그래픽 이미지 및 다수의 그외의 문서 특징들과 같은 마크업 요소들을 위한 태그들이 있다. HTML을 사용하는 프로그래밍에 대한 다수의 책들이 널리 유통되고 있다.
XML은 인터넷 프로토콜에 포함된 언어 규정들 중 또 다른 언어 규정이다. XML은 적어도 현재의 버젼으로는 HTML과 호환 가능하며 HTML을 보완한 것이다. XML 문서라고 하는 컴퓨터에 저장된 데이터 객체들의 클래스 및 상기 객체들을 처리하는 프로그램 동작을 기술하는 표준 방식이다. XML 문서들은 텍스트 또는 바이너리 데이터를 포함하는 엔티티(entity)라고 하는 기억 단위(storage unit)들로 구성된다. 텍스트는 문자들(characters)로 이루어지는데, 몇몇 문자들은 문서의 문자 콘텐츠를 형성하고, 다른 몇몇은 마크업을 형성한다. 마크업은 스토리지 레이아웃 및 논리 구조와 같은 문서 기술을 인코드한다. XML 프로세서라고 하는 소프트웨어 모듈은 XML 문서들을 판독하고 콘텐츠 및 구조에 대한 액세스를 제공하는데 사용된다. XML에 관한 다른 정보는 <HTTP://www.w3.org/XML>에서 유효하며 본 명세서에 참조용으로 인용된 XML 명세 버젼 1.0을 참조해서 획득될 수 있다.
웹 서버 및 웹 브라우저는 통상 인터넷의 기초 TCP/IP 데이터 트랜스포트 프로토콜 및 HTTP 메시지 프로토콜을 사용해서 통신한다. HTTP에서, 웹 브라우저는 웹 서버와의 접속을 설정하고 HTTP 요청 메시지를 서버에 송신한다. 요청 메시지에 응답해서, 웹 서버는 승인성을 검사하고, URL에 의해 식별된 문서 다운로드와 같은 임의의 요청된 동작을 실행하고, 요청된 동작으로부터 야기된 HTML 문서 또는 오류 메시지를 포함하는 HTTP 응답 메시지를 리턴한다. 리턴된 문서는 단지 웹 서버에 저장된 정적 파일일 수도 있고, 또는 요청 메시지에 응답해서 호출된 스크립트를 사용해서 동적으로 생성될 수도 있다.
인터넷을 이용하기 위해, 이메일과 같은 기업용 주요 애플리케이션(company-critical applications)을 포함해서, 툴(tool) 및 리소스들이 인터넷 프로토콜에 맞게 개발되었다. 이메일은 전자 메일이다. 이메일을 통해 문서들이 선택된 어드레스들에서 전자적으로 송신 및 수신된다. 인터넷 베이스 상호 작용의 대부분은 "문서 송신 및 수신" 모델을 따르는 이메일 및 그외의 브라우저-베이스 매체들을 사용해서 이루어진다고 추정되었다. 아마도 상기 모델로 인해, 사용자들은 종종 보다 높은 권한(higher authority) 없이 개인들이 다른 개인들에 의해 제공되는 문서들에 액세스하는 고유 "피어 투 피어"로서 인터넷을 본다.
특히, 지점간(point-to-point) 통신을 이용하는 멀티플레이어(multiplayer) 컴퓨터 게임이 개발되어져 오고 있다. 게임들 중의 하나는 "AMAZE:a Multiplayer Computer Game"(IEEE Software, IEEE Computer Society, Los Alamitos, vol.2, no.3 1985년 5월 1일, 페이지 30-39, XP000743662 ISSN:0740-7459)로 불리워지는 기사에 개시되어 있다. 이 기사에 개시되어 있는 바와 같이, 게임은 로컬 네트워크에 의해 접속된 복수개의 퍼스널 워크스테이션들에서 실행된다. 각 워크스테이션은 워크스테이션이 제어하는 게임 캐릭터의 상태를 계산하며, 캐릭터의 상태는 네트워크를 통하여 교환된다. 캐릭터의 상태를 교환하기 위하여 발생되는 총 경비를 감소시키기 위하여, 각 워크스테이션은 그에 의해 제어되지 않는 캐릭터의 상태를 기지의 자료를 이용하여 추정하고, 추정된 상태를 이용하여 실제 상황 갱신이 도착할 때까지 게임을 한다. 미국특허등록 제5,899,810호에 개시된 다른 멀티플레이어 컴퓨터 게임은 로컬 네트워크에 의해 중앙 서버에 접속된 복수개의 퍼스널 워크스테이션에서 게임이 실행되는 하이브리드(hybrid) 아키텍쳐를 이용한다. 서버는 각 워크스테이션으로부터 로컬 캐릭터의 움직임에 영향을 미치는 입력을 수신하고, 전체적인 움직임의 계획을 계산하여, 이 움직임의 계획을 개별의 워크스테이션으로 전달한다. 그 다음에, 워크스테이션은 로컬 캐릭터의 부근에서 캐릭터를 이동시킨다. 네트워크 레이턴시(latency)가 현저한 경우에 시스템의 성능을 개선시키기 위하여, 각 워크스테이션은 근처의 캐릭터에 영향을 끼치는 임의의 동작의 결과를 계산하여, 결과를 다른 워크스테이션으로 중계해주는 중앙 서버로 이 결과를 통보한다.
인터넷은 사용자들의 필요성을 모두 만족시키지 못한다 하더라도 사용자들에게 즐거움과 유용한 통신 방법들을 제공한다는 점에서 동적이고 플렉시블하다. 사용자들이 인터넷을 통해 서로 점점 더 영향을 끼치면서, 멀티미디어(전화, 팩스, 화이트보드), 멀티-템포럴(multi-temporal)(실시간, 오버나잇 메일) 및 다른 정보 통신 수단과 같은 보다 많은 종래의 방법들을 통해 인터넷으로부터 벗어나서 계속해서 상호 동작한다.
인터넷 패러다임을 퍼스널 및 프라이비트 통신들과 공유 프라이비트 공간에서의 개인들과 소그룹들 간의 다른 공유 및 상호 활동들까지 확장하는 것이 바람직하다. 참여자들(participants)의 퍼스널 컴퓨터들 간의 또는 그외의 네트워크 가능 장치들 간의 이러한 상호 작용들은 통신이 방해될 수 있고 신뢰가 깨질 수 있는 제3국 웹 사이트들로 인터넷 트래픽이 통상 통과하는 서버 병목(bottlenecks)에 드러내 지지 않고 양호하게 즉시, 직접 그리고 확고하게 발생해야만 한다.
또한 로컬 사이트에서 문서들의 복사를 유지하면서, 다양한 원격 사이트들에서의 사용자들이 피어 투 피어 방식으로 문서들을 공유 및 편집할 수 있게 해주는 기술을 제공하는 것이 바람직하다. 상기 기술은 임의의 사용자들이 문서에 관한 변경 요청을 발행할 수 있게 해주어서, 조정된(coordinated) 방식으로 모든 로컬 사이트들에서의 복사와 비동기적으로 변경이 이루어질 수 있게 되어야만 한다.
<본 발명의 요약>
본 발명은 예를 들어 "대화", 게임 또는 비즈니스 애플리케이션과 같이 그외의 원격 위치의 사용자들과 공유 포커스 태스크(shared, focused task)를 실행하기 위해 퍼스널 컴퓨터 시스템, 통신 기구 또는 그외의 네트워크 가능 장치에서 동작할 수 있는 액티브티(activity)라고 하는 장치에 상주한다. 액티브티는 사용자 상호 동작에 응답해서 델타라고 하는 데이터 변경 요청들의 생성을 야기하기 위한 툴을 포함한다. 또한 액티브티는 양호하게 데이터 모델에 따른 영구적인 불휘발성 메모리에 데이터를 보존하기 위해 데이터-변경 엔진을 갖는다. 데이터-변경 엔진은 툴로부터 델타들을 수신하고, 요청을 수행하기 위해 액티브티-지정 커맨드들을 델타들에게 제공하며, 델타 실행에 의해 야기된 데이터 변경을 툴에 통보하기 위한 툴 엔드(tool end)를 포함한다. 데이터-변경 엔진은 또한 델타들을 실행하기 위해, 즉, 데이터에 대한 요청된 변경을 달성하기 위해 델타들의 커맨드들을 실행하기 위해 동적 관리자로부터 데이터-변경 명령들을 수신하기 위한 동적 관리자 엔드를 포함한다.
다른 양상에서, 본 발명은 "텔레스페이스(telespace)"라고 하는 공유 프라이비트 공간에서 개인들과 소그룹들 간의 통신 및 그외의 상호 공유 액티브티들을 제공하기 위한 시스템에 상주한다. 본 시스템에서, 텔레스페이스의 참여자 또는 멤버들은, 예를 들어 인터넷과 같은 네트워크를 통해 서로 통신할 수 있고 텔레스페이스 데이터의 로컬 복사본들을 개별적으로 저장할 수 있는 네트워크 가능 장치들을 통해 상호 동작한다. 각각의 텔레스페이스는 텔레스페이스의 멤버들의 네트워크 가능 장치들 각각에서 동작할 수 있는 하나 이상의 액티브티들의 인스턴스 생성(instantiation)이다. 각각의 액티브티는 텔레스페이스 멤버 상호 동작에 응답해서 데이터 변경 요청들 또는 델타들을 개시하기 위한 하나 이상의 툴들을 포함한다. 또한 각각의 액티브티는 공통 데이터 모델에 따른 텔레스페이스 데이터의 로컬 복사를 유지하기 위한 하나 이상의 데이터-변경 엔진들을 포함하는데, 상기 엔진들은 툴과 별개이다. 데이터 모델은 예를 들어 액티브티 특정적이고 양호하게는 텔레스페이스 전체에 해당된다(telespace-wide). 각각의 네트워크 가능 장치는 또한 델타들에 응답해서 데이터의 로컬 복사본에 대한 요청된 변경을 실행함으로써 데이터-변경 엔진으로 하여금 델타들을 실행하게 하며, 다양한 네트워크 가능 장치들로부터 델타들의 실행을 조정하기 위한 동적 관리자를 포함한다.
또 다른 양상에서, 본 발명은 양호하게 인터넷 프로토콜에 따라 통신하기 위해 접속된 상이한 위치들의 양호하게 다수의 네트워크 가능 장치들을 포함하는 네 트워크 시스템에서 실행될 수 있다. 각각의 네트워크 가능 장치는 (a) 공통 데이터 모델에 따른 액티브티 관련 데이터의 로컬 복사본을 저장하기 위한 메모리, (b) 상술된 바와 같이 하나 이상의 툴 및 대응 데이터-변경 엔진들을 각각 포함하는 하나 이상의 액티브티들, (c) 델타들이 속한 텔레스페이스와 관계된 네트워크 시스템의 모든 네트워크 가능 장치들에게 델타들이 공유되게 하기 위한 통신 관리자; 및 (d) 로컬 생성 델타들 및 원격 생성 델타들의 실행을 조정하기 위한 동적 관리자를 포함한다. 사용자 상호 동작들이 개시될 수 있고, 결과 델타들이 네트워크 시스템의 네트워크 가능 장치들 중 임의의 네트워크 가능 장치에서 생성될 수 있고, 델타들은 양호하게 네트워크를 통해 장치들 각각에 송신된다. 동적 관리자들은 로컬 데이터-변경 엔진의 오퍼레이션이 양호하게 델타들의 실행을 우선 순위화 해서 네트워크 시스템에 걸쳐 데이터의 상당한 일관성을 유지하게 한다. 네트워크 시스템은 따라서 네트워크로부터 단절되더라도 사용을 위해 네트워크 가능 장치 각각에서의 데이터의 일관성 있는 복사를 유지하면서, 다양한 원격 사이트들의 사용자들이 피어 투 피어 방식으로 예를 들어 데이터를 공유 및 편집하거나 또는 다른 액티브티들을 독립적으로 실행할 수 있게 해준다.
또 다른 양상에서, 본 발명은 사람들 간의(interpersonal) 상호 동작을 위한 액티브티 베이스 협력(ABC; activity-based collaboration) 시스템으로서 구현될 수 있다. ABC 시스템은 상술된 네트워크 시스템을 형성하기 위해 예를 들어 공중망(예를 들면, 인터넷 또는 광역 통신망(WAN))을 통해 또는 프라이비트 네트워크(예를 들면, 근거리 통신망(LAN) 또는 인트라넷)를 통해, 케이블, 광섬유, 적외선(IR) 또는 다른 형태의 통신 링크들에 의해 접속 가능한 다수의 네트워크 가능 장치들을 포함한다. 각각의 네트워크 가능 장치에는 상술된 메모리, 및 하나 이상의 동적 관리자들을 포함하는 프레임워크가 장치되어 있다. 네트워크 가능 장치들은 공중망 기반 구조, 퍼스널 데스크탑 애플리케이션들 및 기반 구조(때때로 "퍼스널 인터넷"이라고도 함), 및 응용 가능한 경우 회사 인트라넷과 양호하게 완전히 호환 가능(plug-compatible)하다. ABC 시스템은 양호하게 동적 스냅-인(snap-in) 액티브티 컴포넌트들을 사용하는데, 각각은 "대화", 문서 편집, 게임 등과 같은 특정 태스크를 실행하기 위한 것이다. 액티브티 컴포넌트들은 예를 들어 수축 포장된(shrink-wrapped) 제품들로서 입수할 수 있게 만들어지거나, 예를 들어, 인터넷과 같은 네트워크를 통해 다운로드되는 소프트웨어를 포함할 수 있다. 액티브티 컴포넌트들은 공통 응용 프로그래밍 인터페이스(API)를 통해 프레임워크와 동작할 수 있다. 따라서, 프레임워크는 보아질 수 있고 액티브티 컴포넌트 형태로 애플리케이션을 위한 플랫폼으로서 동작할 수 있다.
따라서, 본 발명은 시스템을 형성하는 장치들 간의 상호 작용을 달성하기 위한 통신 서비스들 뿐만 아니라, 개별적인 액티브티 컴포넌트들, 개별적인 네트워크 가능 장치들을 위한 프레임워크, 및/또는 네트워크 시스템 또는 ABC 시스템을 제공하는 것을 포함해서, 개별적인 상업 제품들 및 서비스들로 구현될 수 있다.
본 발명의 상술된 장점들 및 다른 장점들은 첨부된 도면들과 함께 이하의 상세한 설명을 참조해서 더 잘 이해될 수 있다.
도 1은 종래의 컴퓨터 시스템의 일례의 아키텍쳐를 도시한 블록도.
도 2는 제어 모듈이 디스플레이 또는 다른 사용자 인터페이스와 인터페이스하고 데이터 모델에 따라 데이터를 유지할 책임이 있는 도 1의 컴퓨터 시스템에서 실행되는 종래의 애플리케이션을 도시한 블록도.
도 3은 본 발명의 한 실시예에 따라 WWW를 위한 클라이언트-서버 시스템 및 퍼스널 웹을 위한 피어 투 피어 시스템을 모두 도시한 인터넷 베이스 시스템의 블록도.
도 4는 본 발명의 실시예에 따라 도 1의 컴퓨터 시스템에서 구현된 ABC 시스템의 일부분을 도시한 블록도.
도 5는 도 1의 컴퓨터 시스템에서 구현된 ABC 시스템의 일부분을 도시한 블록도이며, 본 발명의 실시예에 따른 전형적인 텔레스페이스 애플리케이션을 도시한 도면.
도 6은 도 5의 체스 텔레스페이스를 위해 구현된 ABC 시스템의 일부분을 도시한 블록도.
A. 전문 용어
액티브티, 클라이언트, 통신 관리자, 컴포넌트, 컨트롤러, 델타, 장치, 동적 관리자, 엔진, 프레임워크, 아이덴티티, 멤버, 네비게이션, 사람, 서버, 텔레스페이스, 툴, URL 및 XML을 포함해서, 본 명세서에서 사용되는 특정한 용어 및 약어를 설명하는 것이 유용할 수 있다.
"액티브티(Activity)"는 사용자가 다른 사용자들과 상호 동작하기 위해 ABC 시스템에서 실제로 행하는 것을 나타낸다. "액티브티"라는 용어는 문맥에 따라 2가지 의미를 갖는다. 피상적으로(outside view) 볼 때, 액티브티는 ABC 시스템과 컴퓨터 사용자 간의 실시간 상호 동작을 의미하는데; 예를 들어, 이런 타입의 액티브티는 사용자들이 공유 화이트보드에 그림을 그릴 수 있게 해주거나 또는 2명 이상의 사용자들이 실시간으로 대화하게 해준다. 이러한 점에서 볼 때 액티브티는 또한 아카이브 서버 에이전트 또는 인바운드 팩스 에이전트와 같이 로컬 또는 서버 장치에서 사용자를 위해 실행되는 배경 서비스(즉, 에이전트)이다. 소프트웨어 설계자의 내부 관점(inside view)에서 볼 때, "액티브티"는 사용자의 퍼스널 컴퓨터 또는 다른 형태의 장치에서 실행하며 포커스 태스크를 실행할 수 있는 모듈 방식 컴퓨터 실행 가능 프로그램을 의미한다. 이러한 점에서 볼 때의 액티브티는 "액티브티 템플릿(activity template)"을 생성하기 위해 설계시 결합되는 2가지 타입의 컴포넌트들, 툴 및 엔진으로 구성된다. 액티브티 템플릿은 예를 들면 수축 포장 소프트웨어 또는 웹에서 다운로드될 수 있는 소프트웨어로서 다양한 방식으로 분산될 수 있다. 워드 프로세싱, 스프레드시트 등에서 사용되는 대형 분산(widely-distributed) 프로그램들이 ABC 시스템에서 사용되기 위해 설계되고, 예를 들어 ABC 시스템 프로그래머 인터페이스들에 따른 액티브티 템플릿과 같은 형태로 판매되는 버젼들을 가진다고 상상된다.
"클라이언트(Client)"는 사람이 상호 동작할 수 있고 인터넷과 같은 네트워크에 접속 가능한 사용자의 퍼스널 컴퓨터, 통신 기구 또는 그외의 형태의 장치를 나타낸다. 사용자의 퍼스널 컴퓨터에서 실행되는 배경 프로그램들은 "클라이언트 서비스 컨트롤러들"이라고 한다. 사용자의 퍼스널 컴퓨터에서 실행되는 전면 사용자 인터페이스(UI) 프로그램들은 "클라이언트 UI 컨트롤러들"이라고 칭한다.
"통신 관리자(Communications Manager)"는 인바운드 및 아웃바운드 델타들을 적합한 목적지들로 보내기 위한 메카니즘을 나타낸다. 통신 관리자는 예를 들어 인터넷과 같은 네트워크를 통한 전송을 위해 툴/엔진 쌍에 의해 생성된 로컬-개시(locally-initiated) 델타들을 다른 원격 퍼스널 컴퓨터 또는 그외의 형태의 네트워크 가능 장치로, 또는 원격 장치가 네트워크에 접속되지 않았을 때 릴레이로 보내는 컴퓨터 실행 가능 프로그램으로서 구현될 수 있으며, 예를 들어 인터넷과 같은 네트워크를 통해 수신된 원격 생성 델타들을 동적 관리자에게 보낸다.
"컴포넌트(Component)"는 액티브티 내에서 사용되는 컴퓨터 실행 가능 프로그램 및 리소스들을 나타낸다. 모든 컴포넌트들은 URL로 식별된다. 웹이 ABC 시스템에서 적합한 컴포넌트 플랫폼으로 안전하게 다운로드될 수 있는 버젼들을 갖는 컴포넌트들을 위한 글로벌 리포지터리일 수 있다고 상상된다.
"컨트롤러(Controller)"는 ABC 시스템의 "내부(inner)" 기능을 구동하는 상위 레벨 컴퓨터 실행 가능 프로그램을 나타낸다. 컨트롤러는 소정의 플랫폼, 예를 들어, UNIXTM 대몬(Daemon) 컨트롤러, 또는 인텔TM 마이크로프로세서-베이스 컴퓨터 시스템에서 실행되는 마이크로소프트 윈도우즈TM 를 위한 컨트롤러를 위해 동조된다. 컨트롤러의 2개의 일반적인 타입들은 일반적으로 사용자들에게 비가시적인 배경 프로세스로서 실행되는 서비스 컨트롤러와 사용자에 의해 상호 동작적으로 제어되는 사용자 인터페이스(UI) 컨트롤러이다.
"델타(Delta)"는 하나 이상의 툴-엔진 요청들(즉, 데이터에 대한 희망 변경과 관련된 통지 사항 또는 프롬프트)을 포함하는 데이터의 자기 포함 유닛(self-contained unit)을 나타낸다. 툴은 사용자 상호 동작에 응답해서 동적 관리자에 의한 델타 생성을 개시하고, 후술된 바와 같이 동적 관리자의 관리 하에서 비동기 실행을 위해 엔진들에게 델타들을 제공한다. 델타는 제어 정보를 제공하기 위한 헤더부와 요청이 속한 데이터에 관한 정보를 제공하기 위한 페이로드 부(payload portion)를 포함하는 특정 포맷을 갖는다. 개별적인 델타는 하나 이상의 페이로드들을 가질 수 있으며, 다수의 페이로드들이 사용되는 경우, 각각은 고유 장치 기능들 또는 사용자 역할들을 갖는 텔레스페이스 멤버들로 타겟될 수 있다. 툴들은 디스플레이 또는 사용자들에 대한 다른 형태의 프리젠테이션을 위해 엔진들로부터 잠정적인 데이터 변경에 관한 정보를 요청하고, 델타들이 디스플레이 변경을 야기할 때 비동기적으로 통보 받는다.
"장치(Device)"는 문맥이 다른 경우를 나타내지 않는 한 그 목적상 전형적으로 네트워크 가능한, 즉, 인터넷 프로토콜들을 사용해서 예를 들어 인터넷과 같은 네트워크를 통해 그외의 네트워크 가능 장치들과 통신할 수 있는 퍼스널 컴퓨터(pc) 또는 통신 기구와 같은 물리적인 하드웨어 장치를 나타낸다. 모든 장치들은 ABC 시스템에 의해 고유 식별 코드를 할당받으며, ULR을 갖고, 장치들을 사용하는 사람들과 구별된다. 장치는 잠정적으로 다수의 텔레스페이스들의 호스트 역할을 한다. 장치는, 예를 들어, pc, 셀룰러폰, 팩스 기계, 포켓용 오거나이저(hand-held organizer), 케이블 TV, 셋탑 박스, 전자 오락 유닛(전자 장난감과 게임 및 스테레오 장비, 혹은 임의의 다른 네트워크 가능 설비, 제품 상의 장비등과 같은 것들)일 수 있다.
"동적 관리자(Dynamics manager)"는 델타 생성을 용이하게 하고 델타 실행을 조정하는 ABC 시스템의 프레임워크의 일부를 나타낸다. 동적 관리자는 예를 들어 사용자의 퍼스널 컴퓨터 또는 그외의 형태의 네트워크 가능 장치에서 실행되는 컴퓨터 실행 가능 프로그램으로 구현될 수 있다.
"엔드포인트(Endpoint)"는 장치와 사람의 고유 쌍을 나타낸다. ABC 시스템은 장치의 다수의 사용자들 중에서 사람을 고유하게 구별하거나 또는 동일한 사람에 의해 사용되는 다수의 컴퓨터들 중에서 장치들을 고유하게 구별하는 방법으로서 엔드포인트라는 컨셉(concept)을 사용한다.
"엔진(Engine)"은 ABC 시스템 내의 영구적인 스토리지 및 데이터 구조의 관리 및 수정을 구현하는 액티브티의 "바텀 해프(bottom half)"라고 할 수 있는 것을 나타낸다. 엔진들은 컴포넌트들로서 팩키지화되고, 사용자 인터페이스 자체를 갖기 보다는 사용자 인터페이스를 위한 대응 툴에 좌우되고, 상당한 이식성을 갖는다(portable). 엔진들은 양호하게 대응 툴들에 독점적으로 기능하도록 존재한다. 엔진들은 양호하게 범용 공시 상태(universal synchrony)로 동작한다.
"프레임워크(Framework)"는 ABC 시스템의 "내부 작업(inner workings)"을 나타내는 것으로, 동적 관리자를 포함해서 대부분의 서브시스템들을 포함하지만, 사용자 인터페이스는 포함하지 않는다. 프레임워크는 사용자의 퍼스널 컴퓨터 또는 그외의 형태의 네트워크 가능 장치에서 실행될 수 있는 컴퓨터 실행 가능 프로그램이며, 논리적으로 상위 레벨 컨트롤러들과 액티브티들 사이에 위치한다.
"아이덴티티(Identity)"는 일반적으로 URL로 표현되는 이름들 중 하나를 나타내지만, 일반적으로 "사람"과 동의어이다. 사람은 아이덴티티에 의해 다른 사람들에게 인식된다. 사람이 다수의 아이덴티티들 또는 별명들 및 예를 들어, 다수의 상이한 URL들을 가질 수도 있다는 사실을 ABC 시스템이 기꺼이 받아들이기 때문에 이러한 컨셉이 알맞다.
"멤버(Member)"는 텔레스페이스 내의 참여자 또는 텔레스페이스 가입자를 나타내고, 텔레스페이스 멤버쉽과 관련될 때 엔드포인트의 사람 부(person portion)(장치 부와 대조됨)와 일반적으로 동의어이다.
"네비게이션(Navigation)"은 URL들 간의 이동 동작을 나타내는 것으로, ABC 시스템에서 웹 브라우저에 의한 웹 페이지들과 사이트들 간의 네비게이션과 유사어이다.
"사람(Person)"은 인간, 또는 인간의 대리인으로서 동작하는 서버를 나타내는 것으로, 일반적으로, 텔레스페이스 내의 액티브티들에 참여하는 사람을 나타낸다. 각각의 사람은 하나 이상의 아이덴티티들을 가지며, 각각의 아이덴티티는 URL에 의해 고유하게 식별된다.
"서버(Server)"는 사람의 상호 동작을 통상 관리할 수 없는 장치를 나타내는 것으로, 서비스 컨트롤러들 하에서 배경 프로그램들로서만 실행될 수 있다.
"텔레스페이스(Telespace)"는 하나 이상의 액티브티들에 참여하기 위해 사람들이 모이며, 사람들이 뭔가를 공유하는 가상 장소를 나타낸다. 텔레스페이스 및 액티브티 결과들은 사용자의 퍼스널 컴퓨터들 또는 다른 형태의 네트워크 가능 장치들의 메모리에 영구적으로 저장된다. 텔레스페이스는 사용자의 장치와 다른 사람들의 장치들 사이에서 공시 상태로 유지된다. 텔레스페이스는 "멤버쉽(membership)" 및 액티브티에 대한 액세스의 논리 유닛을 나타낸다. 텔레스페이스는 하나 이상의 액티브티들의 인스턴스 생성이다.
"툴(Tool)"은 액티브티의 사용자 인터페이스들을 구현하는 액티브티의 "탑 해프(top half)"라고 할 수 있는 것을 나타낸다. 툴들은 컴포넌트들로 팩키지화되고, 사용자 제스처에 응답해서 델타 생성을 개시하고, 특정 태스크들을 실행하기 위해 개별 액티브티들의 대응 엔진들과 상호 작용한다.
"URL"은 유니버설 리소스 로케이터(universal resource locator)의 약어이며, 문서와 같은 리소스의 구조화된 고유 어드레스이고, 몇몇 일례에서는, 리소스가 처리되어야만 하는 방법을 나타낸다. URL들은 본 명세서에서 거의 모든 영구적인 객체들, 사용자 가시 객체들 및 외부 프로그램 가시 객체들을 위해 사용된다.
상술된 "XML"은 확장성 표기 언어(eXtended Markup Language)의 약어이며, 웹에서 사용되도록 계획된 SGML의 구조화된 표준 데이터 포맷 파생어(derivative)이다. 문맥에 따라, XML 표준 시맨틱스에 순응하는 ABC 시스템에서 사용되는 인-메모리 객체 구조와도 관련된다. "문서", "요소", "태그", "속성", "값", "콘텐츠", "엔티티", "링크" 및 "포인터"와 같은 다수의 XML 컨셉들이 본 명세서에서 사 용된다. XML은 본 명세서에서 예를 들어 문서의 데이터를 구조화하기 위해 사용된다.
B. 종래의 컴퓨터 시스템
도 1은 본 발명이 구현될 수 있는 일례의 컴퓨터 시스템(100)의 종래의 시스템 아키텍쳐를 도시한 것이다. 도 1의 일례의 컴퓨터 시스템은 오직 설명을 목적으로 기술된 것으로, 본 발명을 제한하는 것으로 생각되어서는 안된다. 본 발명은 예를 들어, 비디오 게임 콘솔, 퍼스널 어플라이언스 또는 케이블 셋탑 박스를 포함해서 다양한 타입들의 네트워크 가능 장치들 중 임의의 장치로 구현될 수 있기 때문에, 전형적으로 컴퓨터 시스템으로 생각되는 장치들로만 제한되는 것은 아니다. 본 설명이 특정 컴퓨터 시스템을 기술하는데 흔히 사용되는 용어들과 관련될 수도 있지만, 기술된 컨셉들은 도 1에 도시된 아키텍쳐와 유사하지 않은 아키텍쳐들을 갖는 시스템을 포함해서 다른 컴퓨터 시스템들에도 동일하게 적용된다. 예를 들어, 케이블 셋탑 박스들은 대용량 스토리지를 포함하지 않고 디지털 신호 프로세서들이 장치된 비디오 튜너들을 포함할 수 있다.
컴퓨터 시스템(100)은 종래의 마이크로프로세서를 포함할 수 있는 중앙 처리 장치(CPU)(105), 정보를 일시적으로 기억하기 위한 랜덤 액세스 메모리(RAM)(110), 및 정보를 영구적으로 기억하기 위한 판독 전용 메모리(ROM)(115)를 포함한다. 메모리 컨트롤러(120)는 시스템 RAM(110)을 제어하기 위해 제공된다. 버스 컨트롤러(125)는 버스(130)를 제어하기 위해 제공되고, 인터럽트 컨트롤러(135)는 다른 시스템 컴포넌트들로부터 다양한 인터럽트 신호들을 수신하고 처리하는데 사 용된다.
대용량 스토리지는 디스켓(142), CD-ROM(147) 또는 하드 디스크(152)에 의해 제공될 수 있다. 데이터 및 소프트웨어는 디스켓(142) 및 CD-ROM(147)과 같은 제거 가능 매체를 통해 클라이언트 컴퓨터(100)와 주고 받아질 수 있다. 디스켓(142)은 컨트롤러(140)에 의해 버스(130)에 접속된 디스켓 드라이브(141)에 삽입될 수 있다. 유사하게, CD-ROM(147)은 컨트롤러(145)에 의해 버스(130)에 접속된 CD-ROM 드라이브(146)에 삽입될 수 있다. 마지막으로, 하드 디스크(152)는 컨트롤러(150)에 의해 버스(130)에 접속된 고정 디스크 드라이브(151)의 부분이다.
컴퓨터 시스템(100)으로의 사용자 입력은 다수의 장치들에 의해 제공될 수 있다. 예를 들어, 키보드(156) 및 마우스(157)는 키보드 및 마우스 컨트롤러(155)에 의해 버스(130)에 접속될 수 있다. 마이크로폰 및 스피커로 모두 작용할 수 있는 오디오 트랜스듀서(196)는 오디오 컨트롤러(197)에 의해 버스(130)에 접속된다. 펜 및/또는 태블릿과 음성 입력을 위한 마이크로폰과 같은 다른 입력 장치들이 버스(130) 및 적합한 컨트롤러를 통해 클라이언트 컴퓨터(100)에 접속될 수 있음이 본 기술 분야에 상당히 숙련된 자들에게 명백하다. DMA 컨트롤러(160)가 시스템 RAM(110)에 대한 다이렉트 메모리 액세스를 실행하기 위해 제공된다. 비쥬얼 디스플레이가 비디오 디스플레이(170)를 제어하는 비디오 컨트롤러(165)에 의해 생성된다.
컴퓨터 시스템(100)은 또한 클라이언트 컴퓨터(100)가 버스(191)를 통해 네트워크(195)에 접속될 수 있게 해주는 네트워크 어댑터(190)를 포함한다. 근거리 통신망(LAN), 광역 통신망(WAN), 또는 인터넷일 수도 있는 네트워크(195)는 다수의 네트워크 장치들을 상호 접속하는 범용 통신 회선들을 사용할 수 있다.
컴퓨터 시스템(100)은 일반적으로 운영 체제 소프트웨어에 의해 제어 및 조정된다. 그외의 컴퓨터 시스템 제어 기능들 중에서, 운영 체제는 시스템 리소스 할당을 제어하고 프로세스 스케쥴링, 메모리 관리, 네트워킹 및 I/O 서비스들과 같은 태스크를 실행한다.
C. 데이터 모델을 제어하기 위한 종래의 방법
도 2는 "모델 뷰 컨트롤러(model view controller)"로 공지된 기술을 사용해서 데이터 모델을 제어하기 위한 종래의 시스템(200)을 도시한 것이다. 시스템(200)에서, 데이터 모델 모듈(202)은 데이터 모델에 따라 예를 들어 데이터베이스와 같은 데이터를 저장 및 유지한다. 컨트롤러 모듈(204)은 로컬 개시 이벤트(206)(예를 들면, 사용자 입력) 또는 외부 개시 이벤트(208)(예를 들면, 원격 컴퓨터 시스템들로부터 수신된 이벤트 통지 사항)에 응답해서 "현재 값 설정" 커맨드를 데이터 모델 모듈(202)에 보내서 저장된 데이터를 변경시킨다. 컨트롤러 모듈(204)은 디스플레이(206)와 같은 출력 장치에게 데이터 변경을 통지한다. 디스플레이(206)는 데이터 모델 모듈(202)로부터 변경된 데이터를 획득하고 데이터 디스플레이를 갱신해서, 사용자가 현재 데이터를 볼 수 있게 된다. 상술된 기술은 엄격히 이벤트 구동되고 선형 동작을 한다(linear in operation). 전형적으로, 컨트롤러 모듈(204)로 하여금 데이터 변경을 명령하게 하는 내부 또는 외부 이벤트들은 컨트롤러 모듈(204)의 FIFO(first-in, first-out) 버퍼에 저장된 후, 이벤트 통지 사항이 컨트롤러 모듈에 도달되는 순서대로 처리된다. 통상, 시스템(200)에서 글로벌 일관성(global consistency issues)을 위한, 즉, 시스템(200)의 모델 데이터 복사본들이 그외의 원격 시스템들의 데이터와 일관됨을 보증하기 위한 어떠한 준비도 이루어지지 않는다.
시스템(200)에 예시된 데이터 모델을 제어하기 위한 종래의 방법은 메인프레임들이든 또는 퍼스널 컴퓨터들이든 간에 컴퓨터 시스템들이 상대적인 격리 상태로 동작되는 시기에 적합하다. 인터넷의 출현으로, 컴퓨터 사용자들은 향상된 협력 방법들을 요구하게 되었고, 본 발명은 동적 관리자가 데이터-변경 엔진에 의해 데이터 모델에 대해 달성되는 변경들을 중재하는 이른바 "모델 중재 제어(model mediated control)"를 제공한다.
D. 인터컴퓨터 오퍼레이션을 위한 인터넷 패러다임
도 3은 본 발명이 유익하게 사용될 수 있는 인터넷 환경(300)을 도시한 것이다. 사용자의 견지에서 볼 때, 종래의 클라이언트-서버 뷰(302)에서, 개별 클라이언트들(306, 308)은 인터넷(309)을 통해 서버(310)와 개별적으로 통신한다. 각각의 클라이언트(306, 308)는 인터넷(309)을 통해 서버에 요청을 보낼 수 있고, 그에 대응해서, 서버(310)는 예를 들어 인터넷(309)을 통해 서버에 저장된 문서들을 클라이언트에게 제공함으로써 요청에 응답할 수 있다. 각각의 서버(310) 및 클라이언트들(306, 308)은 후술된 바와 같이 클라이언트 브라우저(311) 및/또는 다른 통신 인터페이스와 같은 적합한 프로그램들을 실행할 수 있는 도 1에 도시된 퍼스널 컴퓨터(서버의 경우에 선택적인 특정 UI 컴포넌트들을 가짐)로서 구현될 수 있다. 인터넷 사용의 피어 투 피어 뷰(312)에서, 사용자들의 컴퓨터 시스템들은 피어 유닛들(314A-D)을 구성하고, 한 피어 유닛으로부터 다른 피어 유닛으로의 통신이 명백한 중간 단계 없이 인터넷을 통해 이루어질 수 있다. 각각의 피어 유닛(314A-D)은 도 1에 도시된 바와 같은 퍼스널 컴퓨터 또는 다른 형태의 네트워크 가능 장치로 구현될 수 있다. 설명이 시스템의 피어 투 피어 뷰로 구현되는 것에 초점이 맞춰져 있더라도, 본 발명은 클라이언트들(306, 308) 또는 피어 유닛들(314A-D)로 유익하게 구현될 수 있다.
보다 자세히 후술되는 바와 같이, 이러한 피어 투 피어 통신은 직접적으로 또는 릴레이 장치(316)를 통해 이루어질 수 있다. 릴레이 장치(316)는 양호하게 인터넷으로부터 일시적으로 단절된 피어 유닛(314)을 목적지로 한 메시지들을 저장할 수 있고, 후에, 재접속될 때, 피어 유닛에 메시지들을 발송할 수 있는 "저장 및 발송부(store and forward)"이다.
E. ABC 시스템 아키텍쳐 및 동작
도 4는 예를 들어 피어 유닛(314A)과 같은 피어 유닛들(314A-D) 중 하나의 피어 유닛 상에 구현된 ABC 시스템(400)을 도시한 것이다. 피어 유닛(314A) 상의 ABC 시스템은 프레임워크(402), 하나 이상의 액티브티(405)를 설명하는 적어도 하나의 텔레스페이스(404) 및 사용자 인터페이스(406)를 갖는다. 프레임워크(402)는 양호하게 다수의 텔레스페이스들(404)을 서비스하기 위한 플랫폼을 제공한다. 프레임워크(402)는 양호하게 프로그래머 인터페이스를 갖는 모듈러 구조인데, 프로그래머 인터페이스를 통해 액티브티들은 실행되고 프레임워크 컴포넌트들과 통신한 다.
프레임워크(402)는 사용자 인터페이스 관리자(408), 아이덴티티 관리자(410), 텔레스페이스 관리자(412), 액티브티 관리자(414), 스토리지 관리자(416), 컨트롤러 서비스 관리자(418), 동적 관리자(420), 및 통신 관리자(422)를 포함한다.
사용자 인터페이스(UI) 관리자(408)는 다수의 사용자 인터페이스 컨트롤러들(개별적으로 도시되지 않음)을 위한 공유 서비스들을 관리할 책임이 있다. UI 관리자(408)는 디스플레이 윈도의 창들(panes) 내에서의 액티브티들의 레이아웃을 관리하고, 다른 경우, 사용자 인터페이스를 위한 희망 "룩 앤 필(look and feel)"을 제공한다. UI 관리자(408)는 또한 액티브티 네비게이션(예를 들면, 진행(go to), 다음(next), 이전(previous) 등)을 관리하고 네비게이션 히스토리를 보존한다.
아이덴티티 관리자(410)는 텔레스페이스 멤버의 아이덴티티들을 유지할 책임이 있다. 상술된 바와 같이, 아이덴티티는 이름 및 대응 URL이다. 각각의 사용자는 아이덴티티에 의해 타인들에게 인식된다. 개별적인 사용자들은 하나의 또는 다수의 아이덴티티(들)을 가질 수 있다. 아이덴티티 관리자(410)는 아이덴티티들의 레코드 또는 테이블을 양호하게 XML로 유지한다. 아이덴티티 관리자(410)는 또한 텔레스페이스 멤버들의 URL 및 대응 장치 URL의 레코드 또는 테이블을 양호하게 XML로 유지할 수 있다. 대안으로, 개별적인 멤버 관리자가 사용될 수도 있다.
텔레스페이스 관리자(412)는 피어 유닛(314A)에서 개방될 수 있는 각각의 텔레스페이스들(404)을 유지할 책임이 있다. 각각의 텔레스페이스(404)는 하나 이상의 액티브티들의 인스턴스 생성이다. 각각의 텔레스페이스(404)는 대응 액티브티 관리자(414)를 갖는다.
액티브티 관리자(414)는 (a) 텔레스페이스에 새로운 액티브티들을 추가하고, (b) 텔레스페이스의 현존 액티브티들을 개방하고, (c) 새로운 액티브티 템플릿 버젼들로부터 텔레스페이스 액티브티들을 갱신할 책임이 있다. 새로운 액티브티를 추가하기 위해, 액티브티 관리자(414)에게 액티브티 템플릿의 URL이 제공되고, 템플릿을 개방하고 템플릿 정보(예를 들면, 컴포넌트 URL들)를 추출해서 텔레스페이스에 전달한다. 템플릿은 텔레스페이스를 위한 초기 액티브티 구성을 정의한다. 사용자는 후에 필요에 따라 추가의 액티브티들을 텔레스페이스(404)에 추가할 수 있다. 추가된 후에, 액티브티는 텔레스페이스의 "부분"이 되고, 모든 텔레스페이스 멤버들에게 보여질 수 있다. 텔레스페이스는 액티브티 관리자를 식별하고 액티브티 관리자와 데이터를 결합하는 태그를 갖는다. 양호하게, 각각의 문서는 링크된 로컬 레지스트리(local registry)를 갖는데, XML 태그명들은 확장 가능 플랫폼 독립 방식으로 문서와 대응 텔레스페이스 간의 매핑(mapping)(기준 포인터들 또는 연관성(association))을 표현하기 위해 레지스트리에 보존된다. 각각의 텔레스페이스 멤버는 피어 유닛(314A-D) 상에서 유용한 텔레스페이스를 위한 프레임워크 및 액티브티 템플릿을 갖는다.
각각의 액티브티는 툴(424)과 같은 툴 및 엔진(426)과 같은 엔진을 포함한다. 툴(424)은 액티브티를 위한 사용자 인터페이스(UI) 기능을 제공함으로써, UI(406)를 통해 멤버와 상호 동작한다. UI 상호 동작은 예를 들어 키보드(156)(도 1) 또는 마우스(157)(도 1)를 통해 개시된 UI 이벤트들을 포함할 수도 있다. UI 이벤트에 응답해서, 툴(424)은 데이터 모델 변경을 달성하도록 대응 엔진(426)에게 요청할 수 있고, 데이터 변경이 발생할 때 비동기적으로 UI들을 갱신하기 위해 비동기 데이터 변경 통지 사항을 위해 엔진(426)을 예약한다(subscribing). 툴(424)은 또한 컨트롤러 관리자(418)의 관리 하에서 제공된 배경 서비스들과 상호 동작하기 위한 응용 프로그램 인터페이스들(API)을 구현한다. 엔진(426)은 텔레스페이스(404)를 지원하고 및/또는 툴을 통해 획득된 사용자 상호 동작으로부터 야기되는 데이터를 유지 및 변경할 책임이 있다. 엔진(426)은 후술된 바와 같이 동적 관리자(420)의 관리 및 제어 하에서 영구적인 모델 데이터를 변경할 수 있고, 비동기 데이터 변경 통지 사항들을 툴(424)에게 방출할 수 있다. 스토리지 관리자(416)는 저장된 데이터에 대한 액세스를 제어한다.
액티브티 템플릿을 생성하기 위해, 소프트웨어 개발자는 프레임워크 내에서 사용될 툴 및 엔진을 기록 및 적용시킬 수 있다. 액티브티 템플릿은 액티브티를 포함하는 툴 및 엔진의 영구적인 표현이다. 액티브티 템플릿은 예를 들어 수축 포장 소프트웨어로 보급될 수 있고 또는 예를 들어 원격 서버로부터 인터넷을 통해 피어 유닛(314A)으로 다운로드될 수 있다. 액티브티 컴포넌트들은 웹 문서들로 간주될 수 있고 URL을 통해 영구적으로 표현된다. 액티브티 템플릿 자체는 양호하게 URL을 가짐으로써, 액티브티 설계 변경을 추적할 수 있게 해준다. 액티브티 템플릿은 싱글 액티브티 템플릿일 수도 있고 또는 액티브티 집합 템플릿일 수도 있다. 싱글 액티브티 템플릿은 "대화"와 같은 오직 하나의 액티브티에만 속한다. 액티브티 집합 템플릿은 "대화 및 아웃라인"과 같은 액티브티 집합에 속한다.
사용을 위해, ABC 시스템(400)이 아이덴티티 관리자(410)를 통해 멤버의 아이덴티티를 획득하고, 텔레스페이스 관리자를 개방하고, 텔레스페이스 관리자에게 URL을 통해 텔레스페이스를 개방할 것을 요청하고, 텔레스페이스 관리자에게 액티브티 관리자를 요청한 후, 액티브티 관리자는 전형적으로 액티브티의 URL을 사용해서 액티브티를 개방한다. 그 후, ABC 시스템(400)은 특정 액티브티에 의해 제공된 공유 포커스 태스크들을 실행하기 위해 멤버들이 텔레스페이스를 사용할 수 있도록 준비된다.
도 5는 피어 유닛들(314A-D) 상의 ABC 시스템(500)의 예시적인 멀티-텔레스페이스 사용을 도시한 것이다. ABC 시스템(500)은 분산 시스템임을 알아야만 한다. 따라서, 피어 유닛(314A)의 컴포넌트들에 대한 설명만이 제공되지만, 피어 유닛들(314A-D)도 유사한 컴포넌트들을 가지며, 개별적인 설명은 생략된다.
피어 유닛(314A)에 대해 도시된 바와 같이, ABC 시스템(500)은 자동차(car) 설계 텔레스페이스(502), 대화 텔레스페이스(504), 및 체스 게임 텔레스페이스(506)를 포함해서, 피어 유닛(314A)이 멤버로서 가입된 다수의 일례의 텔레스페이스들을 포함한다. 도시된 바와 같이, 피어 유닛(314)은 텔레스페이스들(502, 504, 506)의 동작 중에 사용되는 다수의 컴포넌트들을 갖는다. 피어 유닛(314A)은 멤버인 텔레스페이스들(502, 504, 506) 각각을 열거하고 기술하는 텔레스페이스 레코드(508), 및 텔레스페이스에 참여할 수 있는 텔레스페 이스 멤버들의 아이덴티티들 각각을 열거 및 기술하는 멤버 레코드(512)를 보존하는 메모리(510)를 갖는다. UI(512)는 텔레스페이스 및 멤버 레코드들(508, 514)에 대한 사용자 개시 변경들을 수신할 수 있다.
텔레스페이스들(502, 504, 506) 각각은 도시된 액티브티들(522, 524, 526) 중 상이한 액티브티를 인스턴스 생성한다. (대안으로, 도시된 액티브티들(522, 524, 526)은 싱글 텔레스페이스에 상주할 수 있고, 이러한 경우에, 싱글 텔레스페이스의 모든 멤버들은 각각의 액티브티들에 대한 액세스를 갖는다.) 각각의 액티브티(522, 524, 526)는 액티브티에 특정한 각각의 툴(532, 534, 536)을 가지며, 각각의 엔진(542, 544, 546)의 제어 하에서 메모리(510)에 포함된 대응 데이터 모델(552, 554, 556)에 대한 변경들을 실행하고, 각각의 텔레스페이스들(502, 504, 506)에 잔존한다. 예를 들어, 자동차 설계 텔레스페이스(502)는 CAD(computer-aided design) 소프트웨어의 형태로 툴(532)을 포함할 수 있는 액티브티(522)의 실례이고, 체스 게임 텔레스페이스(506)는 소프트웨어 체스 게임 형태로 툴(536)을 포함할 수 있는 액티브티(526)의 실례이다.
사용자들은 툴에 사용자 요청을 제공하기 위해 툴들(532, 534, 536)과 인터페이스하는 사용자 인터페이스(514)를 통해 텔레스페이스들(502, 504, 506)의 액티브티들(522, 524, 526)을 수행한다. 요청들에 응답해서, 엔진들(542, 544, 546)은 현재 상태를 반영하기 위해 동적 관리자(501)의 제어 하에서, 메모리(510)의 대응 데이터 모델(552, 554, 556)의 영구적인 상태를 변경한다. 예를 들어, 체스 게임 텔레스페이스(506)의 데이터의 영구적인 상태는 체스 보드 및 보드상의 체스 피스 들의 위치들을 포함할 수 있고; 사용자 요청은 데이터의 변경, 즉, 델타를 구성하는 체스 피스 이동을 지정할 수 있고; 현재 상태는 델타의 실행 및 이동의 성취를 반영한다.
도 6은 피어 유닛(314A)에 위치하고 도 5와 관련해서 기술된 컴포넌트들을 참조해서 ABC 시스템(500)의 오퍼레이션을 도시한 것이다. 엔진(546)은 액티브티(526)의 특정 포커스 태스크의 추진으로 구현될 수 있는 내재하는 동작들 또는 옵션들(예를 들면, 체스 피스 이동)을 툴(536)에 제공한다. 툴(536)은 (멤버 레코드(512)에 기록된 바와 같이) 텔레스페이스(506)의 멤버인 사용자와 사용자 인터페이스(514)를 통해 상호 동작하며, 액티브티 뷰(예를 들어, 체스 보드 뷰, 및 가능한 경우, 이동 목록)를 제시한다. 사용자 인터페이스(514)를 통해 입력된 사용자 제스처(예를 들어, BISHOP을 X로부터 Y로 이동)라고 하는 사용자 입력에 응답해서, 툴(536)은 델타가 생성되어 시스템에 저장되게 함으로써 메모리에 사용자 선택을 기록한다. 델타는 양호하게 컨테이너 객체 형태의 요청된 변경의 유닛이다. 컨테이너 객체들은 객체 지향 프로그래밍 기술에 친숙한 자들에게 잘 알려진 것이다. 툴(536)은 델타의 요청된 변경의 입도(granularity)를 결정할 책임이 있다. 델타 컨테이너 객체는 체스 피스의 이동을 구성하는 보드 상의 고유 위치 및 타깃 위치와 특정 체스 피스의 식별과 같은 사용자 지정 데이터 외에 변경을 실행하기 위한 하나 이상의 커맨드들을 보유(포함)할 수 있다. 생성될 때, 델타는 어떠한 커맨드들도 없는 상태이고, 변경을 달성하기 위해 엔진(546)에 의해 적합한 커맨드들로 채워질 때까지 단지 변경 요청만을 구성한다. 엔진(546)은 변경을 달성하는데 필요한 커맨드들을 엔진 지정 방식(툴(536)에게 알려질 필요가 없음)으로 델타에 기록할 책임이 있다.
특히, 라인 "a'"로 표시된 바와 같이, 툴(536)은 동적 관리자(501)에 의한 생성을 요청함으로써 델타 생성을 개시한다. 동적 관리자(501)는 델타를 생성하고 라인 a'를 통해 툴(536)에 델타를 리턴하고, 고장 회복이 요구된 경우에는 생성된 델타를 기록할 수도 있다.
도 6의 라인 "a"로 표시된 바와 같이, 툴(536)은 델타의 제어를 툴 인터페이스(602)를 통해 엔진(546)의 툴 엔드(604)에 전달함으로써, 엔진을 발동한다. (이러한 설명은 때때로 델타들이 전달되거나 델타 제어가 한 컴포넌트로부터 다른 컴포넌트로 전달되는 경우를 말한다. 양호하게, 델타들은 XML 요소들로서 포인터가 전달되는 메모리에 할당된 객체들이다.) 엔진의 툴 인터페이스(602)는 델타에 인코드된 요청된 변경을 달성할 수 있는 커맨드들을 생성하기 위한, 또는, 다시 말해서, 사용자의 취지를 이행하기 위해 통상 직렬 형태의 적합한 엔진 지정 커맨드들로 델타를 채우기 위한 응용 프로그래밍 인터페이스들의 집합을 공개한다. 엔진(546)은 그 후 커맨드들로 채워진 델타 제어를 다시 툴(536)에게 전달한다.
도 6의 라인 "b"로 표시된 바와 같이, 툴(536)은 채워진 델타의 제어를 실행을 위해 동적 관리자(501)에게 전달한다(즉, 제공한다). 동적 관리자(501)는 또한 그외의 피어 유닛들(314B-D)로부터 라인 "b'"를 통해 인바운드 델타들을 수신할 수도 있다. 동적 관리자(501)는 피어 유닛들(314B-D)의 동적 관리자들과 함께 체스 게임 텔레스페이스에 참여한 모든 멤버들을 위해 ABC 시스템의 한 엔드로부터 다른 엔드로의 데이터 모델(556)에 대해 실행된 변경의 일관성을 유지할 책임이 있다.
동적 관리자(501)는 큐 구조(612) 및 다이나모(dynamo) 프로세스(614), 양호하게는 동적 관리자의 메인 로직을 포함하는 컴퓨터 실행 가능 프로그램을 포함한다. 동적 관리자(501) 및 다이나모 프로세스(614)는 통신 관리자(622)와 양방향 통신을 한다. 동적 관리자(501)가 순서화(ordering)를 목적으로 큐 구조(612)에 수신된 델타들을 대기시킨(enqueue) 후, 다이나모 프로세스(614)는 큐에 대기 중인 델타들을 처리하고 엔진(546)이 적합한 순서로 델타들을 실행하게 하는 큐 구조를 서비스한다. 특히, 동적 관리자(501)의 다이나모 프로세스(614)는 도 6의 라인 "c"를 통해 엔진(546)의 동적 관리자 엔드(616)에 인터페이스(615)를 통해 "델타 커맨드 실행" 메시지 형태로 제어 신호를 송신한다. 델타 커맨드 실행 메시지는 엔진(546)으로 하여금 메모리(510)에 저장되어 있는 데이터 모델(556)에 대한 요청된 변경을 수행하여 툴(536)로부터 수신된 델타의 실행을 진행하게 한다.
동적 관리자(501)의 다이나모 프로세스(614)는 또한 네트워크, 예를 들어, 인터넷(626)을 통해 피어 유닛들(314B-D)로 송신하는 통신 관리자(622)를 통해 그외의 엔드포인트들로 모든 로컬 개시 델타들을 보급한다. 각각의 피어 유닛(314B-D)에서, 각각의 동적 관리자는 수신된 델타들을 로컬 큐 구조에 대기시킨 후, 실행을 위해 지정된 순서로 각각의 엔진에 전달한다.
싱글 동적 관리자는 애플리케이션에 따라 싱글 텔레스페이스 또는 다수의 텔레스페이스들을 지원할 수 있고, 다수의 엔진들로 하여금 다양한 텔레스페이스들을 위한 델타들을 실행하게 할 책임이 있을 수 있다. 도 5에 도시된 바와 같이, 다수의 텔레스페이스들을 갖는 시스템들에서, 동적 관리자(501)는 델타 정보를 검사함으로써 어떤 엔진이 델타를 실행해야만 하는지를 결정한다. 델타는 엔진들 중 특정 엔진에 대해 식별되고, 엔진 식별자 또는 델타 페이로드에서 실행되는 코드를 태그로 갖는 커맨드들을 포함한다. 대기 중인 델타가 동적 관리자에 의해 처리될 때, 동적 관리자는 엔진 코드를 기준 델타와 연관시키고, 적합한 엔진에 의해 델타 실행을 관리한다.
최종적으로, 도 6의 라인 "d"로 표시된 바와 같이, 엔진(546)은 델타 실행 및 데이터 모델(556)에 포함된 데이터의 새로운 현재 상태를 툴(536)에게 통지하기 위해 "데이터 변경 통지" 메시지를 송신한다. 데이터 변경 통지는 값 또는 기준에 의해 달성될 수 있다. 즉, 통지는 새로운 데이터 값들 자체를 포함할 수도 있고 또는 메모리의 새로운 데이터에 대한 포인터를 포함할 수도 있다. 통지에 응답해서, 툴(536)은 예를 들어 체스 보드 그래픽 상의 이동을 디스플레이함으로써 사용자 인터페이스(514)가 사용자에게 유효한 변경을 달성하게 한다. 사용자가 디스플레이(170)(도 1)를 볼 때, 사용자는 델타 실행으로 야기된 체스 게임에 대한 변경을 볼 수도 있고; 아니면, 변경이 달성될 때 사용자가 변경을 "시찰"하지 않고 메모리(510)의 데이터에 대한 변경이 달성된다.
양호하게, 피어 유닛(314A)의 메모리(556)에 저장된 데이터 모델(556)에 대한 변경이 엔진(546)에 의해 이루어짐과 거의 동시에, 다른 피어 유닛들(314B-D)은 일관적인 방식으로 델타의 취지를 달성하도록 로컬 저장 데이터에 대한 변경을 유사하게 달성한다. 피어 유닛들(314A-D) 중 하나 또는 다른 하나가 예를 들어 인터 넷과 같은 네트워크에 접속되지 않는 상황들이 발생할 수 있다. 피어 유닛(314A)이 네트워크에 접속되지 않은 경우, 통신 관리자(622)는 피어 유닛(314A)이 접속되어 있는지의 여부를 확인하기 위해 현존 검출기(430)를 사용하고, 접속되어 있지 않으면, 접속이 복구될 때까지 아웃바운드 델타 저장부(528)에 아웃바운드 델타들을 저장한 후, 저장된 델타들을 송신한다. 하나 이상의 목적지 피어 유닛들(314B-D)이 네트워크로부터 단절된 경우, 피어 유닛(314A)의 통신 관리자(622)는 목적지 피어 유닛들(314B-D)이 단절되어 있는지의 여부와 관계 없이 아웃바운드 델타를 릴레이(316)(도 3)에 송신할 수 있다. 릴레이(316)(도 3)는 아웃바운드 델타들을 수신하고, 필요에 따라 아웃바운드 델타 저장부(318)(도 3)에 저장하고, 목적지 피어 유닛(314B-D)이 재접속될 때 발송한다. 동작시, 통신 관리자(622)는 릴레이(316)의 URL로 모든 아웃바운드 델타들을 송신할 수 있고, 릴레이는 델타를 지연하기 위해 사용되는 목적지 피어 유닛(314B-D)의 엔드포인트 URL을 확인하기 위해 온-보드 룩업 테이블(320)을 사용할 수 있다. 릴레이 서비스는 실제로 인터넷 서비스 프로바이더(ISP) 또는 다른 인터넷 기구에 의해 제공될 수 있다.
툴(536)과 엔진(546) 사이에서 처럼, 사용자 인터페이스 액티브티들은 툴(536)을 통해서만 직접적으로 달성되고 데이터 모델 변경들은 엔진(546)을 통해서만 직접 달성됨을 알 수 있다. 전문 용어에서, 툴(536)은 UI를 "소유(own)"하고, 엔진(546)은 데이터 모델을 "소유(own)"한다. 이는 도 2에 도시된 현재의 전형적인 애플리케이션들과 대조될 수 있다. 예를 들어, 스프레드시트 프로그램들은 현재 전형적으로 본 발명의 상술된 실시예에서처럼 툴과 엔진의 기능들을 분리하기 보다는 결합시킨다. 엔진으로부터 툴을 분리함으로써, 또한, 데이터 모델로부터 UI를 분리함으로써, 동적 관리자는 예를 들어 데이터 일관성을 유지할 목적으로 다양한 피어 유닛들로부터 비롯된 델타들 사이에서 중재 및 조정을 할 수 있다. 또한, 엔진으로부터 툴을 분리함으로써 델타 실행 프로세스가 비동기적으로 실행되게 할 수 있다. 이는 동적 관리자(501) 및 엔진(546)이 예를 들어 모든 텔레스페이스 멤버들에 대해 데이터 일관성을 유지하는 방식으로 그들의 책무들을 실행하기 위해 시간이 걸리기 때문에 유용하다. 또한 다른 피어 유닛들(314B-D)로부터의 인바운드 델타들이 로컬 개시 델타들의 실행 타이밍에 영향을 줄 수 있기 때문에 유용하다.
ABC 시스템은 액티브티를 형성하는 각각의 툴-엔진 결합이 개별적인 동적 관리자에 대응할 수 있고, 다수의 동적 관리자들이 다수의 동시 동작 액티브티들을 수용하도록 제공될 수 있다는 점에서 멀티태스킹 및 멀티스레딩일 수 있다. 텔레스페이스들과 동적 관리자들의 1 대 1 관계가 델타 처리시 최저 레이턴시를 야기할 수 있을 때, 스레드 결핍은 에러 또는 폴트 상태를 야기할 수 있다. 한편, 다수의 텔레스페이스들을 지원하는 싱글 동적 관리자는 정체 현상 문제를 야기할 수 있다. 각각의 컴포넌트의 최적 수는 하드웨어 애플리케이션, 참여 피어 유닛들의 수, 및 트래픽 상태들에 좌우된다.
ABC 시스템은 각각 하나 이상의 액티브티 컴포넌트들을 인스턴스 생성하며, 동작이 동적 관리자(DM)에 의해 조정되는 하나 이상의 텔레스페이스들(TS)를 각각 갖는 다수의 컴퓨터 시스템들(CS)을 포함할 수 있는데, 각각의 액티브티 컴포넌트는 툴(T), 엔진(E) 쌍을 갖는다. 따라서, ABC 시스템은 하나 이상의 동적 관리자들을 갖는 다수의 텔레스페이스들을 가질 수 있다. 따라서, ABC 시스템은 예를 들어 다음과 같이 형성될 수 있다:
ABC 시스템 =
CS1 = DM1 + A1, 여기서 A1 = T1 + E1
CS2 = DM2 + A2, 여기서 A2 = T2 + E2
....................................................
....................................................
CSn = DMn + An, 여기서 An = Tn + En
여기서, 모든 액티브티 A1, A2, 및 An은 하나 이상의 텔레스페이스들에 상주하고, "n" 은 양의 정수이다. 따라서, 다양한 텔레스페이스 인스턴스 생성들의 예들은 다음과 같다:
TS ⊂ A1, 또는
TS ⊂ A1 + A2 또는
TS ⊂ A1 + A2...Am.
또는
TS1 ⊂ A1
TS2 ⊂ A2
.
., 및
TSm ⊂ Am
여기서, 심볼 "⊂"는 "집합 포함"을 의미하고, "m"은 양의 정수이다. 따라서, 각각의 텔레스페이스는 하나 이상의 액티브티들을 인스턴시에이트할 수 있고, 프레임워크는 싱글 텔레스페이스를 가질 수 있으며; 대안으로, 각각의 텔레스페이스는 하나 이상의 액티브티들을 인스턴시에이트할 수 있고, 프레임워크는 다수의 텔레스페이스들을 가질 수 있다.
상술된 실시예의 컴포넌트들의 소프트웨어 구현은 컴퓨터 판독가능 매체, 예를 들면, 디스켓(142), CD-ROM(147), ROM(115) 또는 도 1의 고정 디스크(152)와 같은 유형 매체(tangible medium)에 고정되거나, 또는 모뎀 또는 매체(191)를 통해 네트워크(195)에 접속된 통신 어댑터(190)와 같은 그외의 인터페이스 장치를 통해 송신될 수 있는 컴퓨터 명령들 및 루틴들을 포함할 수 있다. 매체(191)는 광 또는 하드 와이어 통신 회선들을 포함하지만 이에만 제한되지 않는 유형 매체일 수도 있고, 또는 마이크로웨이브, 적외선 또는 그외의 송신 기술들을 포함하지만 여기에 제한되지 않는 무선 기술들로 구현될 수도 있다. 이것은 또한 인터넷일 수도 있다. 일련의 컴퓨터 명령들은 본 발명과 관련해서 상술된 기능들 모두 또는 일부를 구현한다. 본 기술 분야에 숙련된 자들은 이러한 컴퓨터 명령들이 다수의 컴퓨터 아키텍쳐들 또는 운영 체제들과 함께 사용되도록 다수의 프로그래밍 언어들로 기록될 수 있음을 알 것이다. 또한, 이러한 명령들은 반도체, 자기 메모리 장치, 광 메모리 장치 또는 다른 메모리 장치를 포함하지만 이에만 제한되지 않는 현존 또는 차후의 임의의 메모리 기술을 사용해서 저장될 수 있거나, 또는 광, 적외선, 마이크로웨이브 또는 다른 송신 기술들을 포함하지만 이에만 제한되지 않은 현존 또는 차후의 임의의 통신 기술을 사용해서 송신될 수 있다. 이러한 컴퓨터 프로그램 제조물은 예를 들어 수축 포장 소프트웨어와 같이 인쇄된 다큐먼테이션 또는 전자 다큐먼테이션이 포함된 제거 가능 매체로서 보급될 수도 있고, 또는 예를 들어 시스템 ROM 또는 고정 디스크 상의 컴퓨터 시스템에 의해 프리로드될 수도 있고, 또는 예를 들면 인터넷과 같은 네트워크 또는 월드 와이드 웹을 통해 서버 또는 전자 게시판으로부터 보급될 수도 있다고 예상된다.
본 발명의 예시적인 실시예에 대해 개시하였지만, 당업자들에게는 본 발명의 사상 및 범위에서 벗어나지 않으면서 본 발명의 일부 이점들을 이용하여 다양한 변경 및 수정을 행할 수 있음은 명백할 것이다. 당업자들에게는 동일한 기능들을 수행하는 다른 구성요소들을 적절하게 대치할 수 있음은 명백할 것이다. 또한, 본 발명의 방법들은 적절한 프로세서 명령어들을 사용하는 모든 소프트웨어 구현들에 의해 또는 동일한 결과를 달성하기 위해 하드웨어 로직과 소프트웨어 로직의 조합을 이용하는 하이브리드 구현들에 의해 달성될 수 있다. 또한, 메모리의 크기, 특정 기능을 달성하기 위해 사용되는 명령어들 및/또는 로직의 특정 구성와 같은 양상들과 발명의 개념에 대한 그외의 변경들은 첨부되는 특허청구범위에 의해 포함되도록 의도한다.
삭제

Claims (42)

  1. 액티브티 베이스 협력 시스템(activity-based collaboration system)에서 이용하기 위한, 네트워크를 통해서 다른 장치에 접속 가능한 로컬 장치(이하, 로컬 네트워크 가능 장치라 함; 314A, 400)에 있어서,
    상기 액티브티 베이스 협력 시스템은, 상기 로컬 네크워크 가능 장치(314A, 400)와, 복수 개의 위치에서 네트워크를 통해서 다른 장치에 접속 가능한 원격 장치(이하, 원격 네트워크 가능 장치라 함; 314B-314D)들을 포함하는, 네트워크를 통해서 다른 장치에 접속 가능한 장치(이하, 네트워크 가능 장치라 함; 314A-314D)들을 포함하고,
    각각의 네트워크 가능 장치는 사용자에 응답하며,
    상기 로컬 네트워크 가능 장치(314A)는,
    메모리(110), 및
    사용자 상호 동작(user interaction)에 응답하여 복수 개의 로컬 생성 데이터 변경 요청을 생성하기 위한 툴(424, 532)을 포함하고,
    상기 메모리(110)는 데이터 모델(552)에 따라 로컬 데이터 복사본을 저장하며,
    상기 로컬 네트워크 가능 장치(314A, 400)는,
    상기 로컬 데이터 복사본의 임의의 부분을 변경하기 위한 로컬 생성 요청들 및 상기 복수 개의 원격 네트워크 가능 장치들(314B-314D)에 의해 생성된 상기 로컬 데이터 복사본의 임의의 부분을 변경하기 위한 요청들에 응답하여, 상기 로컬 생성 및 원격 생성 데이터 변경 요청들 중의 어느 것을 실행할지를 선택하는 툴(424, 532)에 결합된 동적 관리자(420, 501), 및
    상기 메모리(110), 및 상기 로컬 데이터 복사본에 대해 변경을 행하기 위하여 상기 선택된 데이터 변경 요청들에 응답하는 상기 동적 관리자(420, 501)에 결합된 데이터-변경 엔진(426, 542)을 포함하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  2. 제1항에 있어서,
    상기 데이터는 상기 메모리를 포함하는 불휘발성 메모리 장치(142, 147)에 영구적인 상태로 저장되어 있는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  3. 제1항에 있어서,
    상기 로컬 데이터 복사본은 XML 포맷으로 저장되어 있는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  4. 제1항에 있어서,
    제1 텔레스페이스(telespace)(502)는 상기 로컬 데이터 복사본과 연관되어 있으며, 상기 툴(532) 및 상기 엔진(542)을 포함하는 제1 액티브티(522)의 인스턴스 생성(instantiation)을 포함하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  5. 제4항에 있어서,
    멤버 레코드(512)는 텔레스페이스 멤버들의 아이덴티티들을 저장하고, 아이덴티티 관리자(410)는 상기 멤버 레코드(512)를 관리하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  6. 제4항에 있어서,
    제2 액티브티(524)의 인스턴스 생성을 행하는 제2 텔레스페이스(504)가 제공되며, 상기 제2 액티브티는,
    A) 사용자 상호 동작에 응답하여 제2 데이터 변경 요청을 생성하기 위한 제2 툴(534);
    B) 상기 메모리 및 상기 제2 툴(534)에 결합되며, 상기 제2 데이터 변경 요청에 응답하여, 제2 데이터 모델(554)에 따라 상기 메모리의 데이터의 제2 로컬 복사본의 스토리지를 제어하고 상기 데이터의 상기 제2 로컬 복사본에 대한 변경들을 행하는 제2 데이터-변경 엔진(544)
    을 포함하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  7. 제6항에 있어서,
    상기 제1 및 제2 텔레스페이스(502, 504)의 식별(identification)들을 저장하기 위한 텔레스페이스 레코드(508)가 제공되는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  8. 제6항에 있어서,
    각각의 데이터 변경 요청은 상기 제1 및 제2 텔레스페이스(502, 504) 중의 하나를 식별하기 위한 엔진 식별자를 포함하는 컨테이너 객체를 포함하며, 상기 엔진 식별자에 응답하여, 상기 동적 관리자(501)는 식별된 엔진(542, 544)이 상기 데이터 변경 요청을 실행하게 하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  9. 제6항에 있어서,
    상기 동적 관리자(501)는 상기 툴(502) 및 상기 제2 툴(504) 양측으로부터 데이터 변경 요청들을 수신하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  10. 제1항에 있어서,
    각각의 데이터 변경 요청은 상기 동적 관리자(501)에 의해 생성된 컨테이너 객체를 포함하며, 상기 데이터-변경 엔진(502, 504)은 상기 컨테이너 객체에게 상기 데이터 변경 요청을 이행하기 위한 커맨드들을 제공하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  11. 제1항에 있어서,
    상기 제1 텔레스페이스(502)와 연관된 상기 데이터의 상기 로컬 복사본은 상기 메모리의 제1 할당 공간에 저장되고, 상기 데이터의 상기 제2 로컬 복사본은 상기 제1 할당 공간과는 구별된 상기 메모리의 제2 할당 공간에 저장되는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  12. 제1항에 있어서,
    상기 동적 관리자(501)는 데이터 변경 요청들을 순서화(ordering)하기 위한 큐 구조(630, 632, 634), 및 상기 엔진(542, 544)을 제어하고 상기 데이터를 변경하도록 지시하기 위한 다이나모 프로세스 메카니즘(dynamo process mechanism)(614)을 포함하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  13. 제12항에 있어서,
    상기 다이나모 프로세스 메카니즘(614)은, 상기 큐 구조(630, 632, 634)에 응답하여 상기 데이터-변경 엔진(542, 544)이 상기 데이터 변경 요청들을 선입선출(first in, first out) 방식으로 처리하게 하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  14. 제12항에 있어서,
    상기 큐 구조(630, 632, 634)는 상기 툴에 의해 개시된 데이터 변경 요청들에 대한 포인터들을 보유하기 위한 제1 큐(630), 및 상기 원격 생성 데이터 변경 요청들에 대한 포인터들을 보유하기 위한 제2 큐(632)를 포함하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  15. 제13항에 있어서,
    상기 다이나모 프로세스 메카니즘(614)은, 상기 큐 구조(630, 632, 634)에 응답하여, 상기 데이터-변경 엔진(542, 544)이, 상기 제1 큐(630)에 대기 중인 포인터들에 대응하는 로컬 생성 데이터 변경 요청들을 처리하기 이전에, 상기 제2 큐(632)에 대기 중인 포인터들에 대응하는 수신된 데이터 변경 요청들을 처리하게 하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  16. 제1항에 있어서,
    상기 데이터-변경 엔진(542, 544)은 상기 툴(532, 534)과는 별개로 구현되며, 상기 툴(532, 534)과 상기 데이터-변경 엔진(542, 544) 사이에서, 오직 상기 툴(532, 534)만이 사용자 인터페이스(514)를 액세스하고 오직 상기 데이터-변경 엔진(542, 544)만이 상기 데이터 모델(552, 554)을 액세스하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  17. 제1항에 있어서,
    상기 데이터의 상기 로컬 복사본은 데이터 상태(data state)를 포함하며, 상기 데이터-변경 엔진(542, 544)은 상기 복수 개의 데이터 변경 요청들 각각에 응답해서 상기 데이터 상태를 변경하여 현재의 데이터 상태를 생성하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  18. 제1항에 있어서,
    상기 데이터-변경 엔진(542, 544)은 상기 데이터 상태의 변경을 상기 툴(532, 534)에게 통지하고, 상기 툴(532, 534)은 사용자 인터페이스(514)를 통하여 사용자에게 상기 현재의 데이터 상태를 제공하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  19. 제1항에 있어서,
    상기 원격 네트워크 가능 장치들(314B-314D) 각각은 메모리, 툴, 데이터-변경 엔진, 및 동적 관리자를 포함하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  20. 제19항에 있어서,
    상기 네트워크 가능 장치들(314A-314D) 각각은 상기 메모리의 로컬 데이터 복사본, 및 상기 로컬 데이터 복사본을 변경하기 위하여 상기 네트워크 가능 장치들의 다른 것들로부터 원격 데이터 변경 요청들을 수신하는 통신 관리자(422)를 포함하는 것을 특징으로 하는 로컬 네트워크 가능 장치.
  21. 로컬 네트워크 가능 장치(314A, 400) 및 복수 개의 위치에서의 복수 개의 원격 네트워크 가능 장치들(314B-314D)을 포함하는 복수 개의 네트워크 가능 장치들(314A-314D)을 포함하는 액티브티 베이스 협력 시스템을 동작시키는 방법으로서,
    각각의 네트워크 가능 장치는 사용자에 응답하고,
    상기 로컬 네트워크 가능 장치(314A)는 메모리를 포함하며,
    상기 방법은,
    상기 로컬 네트워크 가능 장치의 툴(424, 532)을 이용하여, 사용자 상호 동작들에 응답하여 복수 개의 로컬 생성 데이터 변경 요청을 생성하는 단계를 포함하고,
    데이터 모델(552)에 따라 로컬 데이터 복사본을 상기 메모리(110)에 저장하는 단계,
    상기 로컬 네트워크 가능 장치(314A, 400)의 동적 관리자(420, 501)를 이용하여, 상기 툴에 의해 로컬 생성되고 상기 복수 개의 원격 네트워크 가능 장치들(314B-314D)에 의해 원격 생성된 상기 로컬 데이터 복사본의 임의의 부분에 대해 변경하기 위한 요청들 중 어느 것을 실행할지를 선택하는 단계, 및
    상기 메모리(110) 및 상기 동적 관리자(420, 501)에 결합된 데이터-변경 엔진(426, 542)을 이용하여, 상기 선택된 데이터 변경 요청들에 응답하여 상기 로컬 데이터 복사본에 대한 변경들을 행하는 단계를 더 포함하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  22. 제21항에 있어서,
    제1 텔레스페이스(502)를 상기 로컬 데이터 복사본과 연관시키는 단계, 및
    상기 툴(532) 및 상기 엔진(542)을 포함하는 제1 액티브티(522)를 인스턴스화(instantiating)하는 단계를 포함하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  23. 제22항에 있어서,
    텔레스페이스 멤버들의 아이덴티티들을 멤버 레코드(512)에 저장하는 단계, 및
    아이덴티티 관리자(410)를 이용하여 상기 멤버 레코드(512)를 관리하는 단계를 포함하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  24. 제22항에 있어서,
    제2 액티브티(524)의 인스턴스 생성을 포함하는 제2 텔레스페이스(504)를 제공하는 단계를 포함하고,
    상기 제2 액티브티는,
    사용자 상호 동작에 응답하여 제2 데이터 변경 요청을 생성하기 위한 제2 툴(534), 및
    상기 메모리 및 상기 제2 툴(534)에 결합되고, 상기 제2 데이터 변경 요청에 응답하여 제2 데이터 모델(554)에 따라 상기 메모리의 데이터의 제2 로컬 복사본의 스토리지를 제어하고 상기 데이터의 상기 제2 로컬 복사본에 대해 변경을 행하기 위한 제2 데이터-변경 엔진(544)을 포함하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  25. 제24항에 있어서,
    상기 제1 및 제2 텔레스페이스(502, 504)의 식별들을 저장하기 위한 텔레스페이스 레코드(508)를 제공하는 단계를 포함하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  26. 제24항에 있어서,
    각 데이터 변경 요청은 상기 제1 및 제2 텔레스페이스(502, 504) 중 하나를 식별하기 위한 엔진 식별자를 포함하는 컨테이너 객체를 포함하고,
    상기 방법은, 식별된 엔진(542, 544)으로 하여금 상기 엔진 식별자에 응답하여 상기 데이터 변경 요청을 실행하게 하는 단계를 포함하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  27. 제24항에 있어서,
    상기 동적 관리자(501)는 상기 툴(502) 및 상기 제2 툴(534) 양측으로부터 데이터 변경 요청들을 수신하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  28. 제21항에 있어서,
    각 데이터 변경 요청은 상기 동적 관리자(501)에 의해 생성된 컨테이너 객체를 포함하고, 상기 데이터-변경 엔진(426, 542)은 상기 컨테이너 객체에게 상기 데이터 변경 요청을 이행하기 위한 커맨드들을 제공하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  29. 제21항에 있어서,
    상기 동적 관리자(501)는 큐 구조(630, 632, 634)를 이용하여 상기 데이터 변경 요청들을 순서화하고, 상기 엔진(426, 542)을 제어하여 상기 데이터에 변경들을 행하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  30. 제29항에 있어서,
    상기 동적 관리자는 상기 데이터-변경 엔진(426, 542)이 상기 데이터 변경 요청들을 선입선출 방식으로 처리하게 하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  31. 제29항에 있어서,
    상기 큐 구조(630, 632, 634)는 상기 툴에 의해 개시된 데이터 변경 요청들에 대한 포인터들을 보유하기 위한 제1 큐(630), 및 상기 원격 생성 데이터 변경 요청들에 대한 포인터들을 보유하기 위한 제2 큐(632)를 포함하고, 상기 동적 관리자(501)는 상기 데이터-변경 엔진(426, 542)이, 상기 제1 큐(630)에 대기 중인 포인터들에 대응하는 로컬 생성 데이터 변경 요청들을 처리하기 이전에, 상기 제2 큐(632)에 대기 중인 포인터들에 대응하는 수신된 데이터 변경 요청들을 처리하게 하는 것을 특징으로 하는 액티브티 베이스 협력 시스템 동작 방법.
  32. 로컬 네트워크 가능 장치(314A, 400) 및 복수 개의 위치에서의 복수 개의 원격 네트워크 가능 장치들(314B-314D)을 포함하는 복수 개의 네트워크 가능 장치들(314A-314D)을 포함하는 액티브티 베이스 협력 시스템에서 이용하기 위한 컴퓨터 판독 가능 매체로서,
    각각의 네트워크 가능 장치는 사용자에 응답하고,
    상기 로컬 네트워크 가능 장치(314A)는,
    메모리(110), 및
    사용자 상호 동작에 응답하여 복수 개의 로컬 생성 데이터 변경 요청을 생성하기 위한 툴(424, 532)을 포함하며,
    상기 컴퓨터 판독 가능 매체에는 컴퓨터 판독 가능 프로그램 코드가 저장되어 있고,
    상기 컴퓨터 판독 가능 프로그램 코드는, 실행 시에,
    데이터 모델(552)에 따라서 로컬 데이터 복사본을 상기 메모리(110)에 저장하는 단계,
    상기 툴에 의해 로컬 생성되거나 상기 복수 개의 원격 네트워크 가능 장치들에 의해 원격 생성된 데이터 변경 요청들 중에서 실행하기 위한 데이터 변경 요청들을 선택하는 단계, 및
    상기 선택된 데이터 변경 요청들에 응답하여 상기 데이터 모델의 상기 로컬 데이터 복사본을 변경하는 단계
    를 포함하여 수행하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  33. 제32항에 있어서,
    상기 컴퓨터 판독 가능 프로그램 코드는, 실행 시에,
    제1 텔레스페이스(502)를 생성하고, 이를 상기 로컬 데이터 복사본과 연관시키는 단계, 및
    상기 툴(532) 및 엔진(542)을 포함하는 제1 액티브티(522)를 인스턴스화하는 단계
    를 포함하여 더 수행하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  34. 제33항에 있어서,
    상기 컴퓨터 판독 가능 프로그램 코드는, 실행 시에,
    텔레스페이스 멤버들의 아이덴티티들을 멤버 레코드(512)에 저장하고, 아이덴티티 관리자(410)를 이용하여 상기 멤버 레코드(512)를 관리하는 단계
    를 포함하여 더 수행하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  35. 제33항에 있어서,
    상기 컴퓨터 판독 가능 프로그램 코드는, 실행 시에,
    제2 액티브티(524)의 인스턴스 생성을 포함하는 제2 텔레스페이스(504)를 제공하는 단계 - 상기 제2 액티브티는, 사용자 상호 동작에 응답하여 제2 데이터 변경 요청을 생성하기 위한 제2 툴(534)을 포함함 -, 및
    상기 메모리와 상기 제2 툴(534)에 결합되고, 상기 제2 데이터 변경 요청에 응답하여 제2 데이터 모델(554)에 따라서 상기 메모리 내의 데이터의 제2 로컬 복사본의 스토리지를 제어하고 상기 데이터의 상기 제2 로컬 복사본에 대한 변경을 행하기 위한 제2 데이터-변경 엔진(544)을 동작시키는 단계
    를 포함하여 더 수행하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  36. 제35항에 있어서,
    상기 컴퓨터 판독 가능 프로그램 코드는, 실행 시에,
    상기 제1 및 제2 텔레스페이스(502, 504)의 식별들을 저장하기 위한 텔레스페이스 레코드(508)를 제공하는 단계
    를 포함하여 더 수행하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  37. 제35항에 있어서,
    각 데이터 변경 요청은 상기 제1 및 제2 텔레스페이스(502, 504) 중 하나를 식별하기 위한 엔진 식별자를 포함하는 컨테이너 객체를 포함하고,
    상기 컴퓨터 판독 가능 프로그램 코드는, 실행 시에,
    상기 식별된 엔진(542, 544)으로 하여금 상기 엔진 식별자에 응답하여 상기 데이터 변경 요청을 실행하게 하는 단계
    를 더 포함하여 수행하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  38. 제35항에 있어서,
    실행하기 위한 데이터 변경 요청들을 선택하는 상기 단계는, 상기 툴(502) 및 상기 제2 툴(504) 양측으로부터의 데이터 변경 요청들을 선택하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  39. 제32항에 있어서,
    각 데이터 변경 요청은 동적 관리자(501)에 의해 생성된 컨테이너 객체를 포함하고,
    상기 데이터 모델의 상기 로컬 데이터 복사본을 변경하는 상기 단계는, 데이터-변경 엔진 프로그램 코드(502, 504)를 이용하여 상기 컨테이너 객체에게 상기 데이터 변경 요청을 이행하기 위한 커맨드들을 제공하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  40. 제32항에 있어서,
    실행하기 위한 데이터 변경 요청들을 선택하는 상기 단계는, 동적 관리자 프로그램 코드(501)를 이용하여, 큐 구조(630, 632, 634)를 이용하여 상기 데이터 변경 요청들을 순서화하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  41. 제40항에 있어서,
    상기 동적 관리자 프로그램 코드는 상기 데이터-변경 엔진 프로그램 코드(542, 544)가 상기 데이터 변경 요청들을 선입선출 방식으로 처리하게 하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
  42. 제40항에 있어서,
    상기 큐 구조(630, 632, 634)는 상기 툴에 의해 개시된 데이터 변경 요청들에 대한 포인터들을 보유하기 위한 제1 큐(630), 및 상기 원격 생성 데이터 변경 요청들에 대한 포인터들을 보유하기 위한 제2 큐(632)를 포함하고,
    상기 동적 관리자 프로그램 코드(501)는, 상기 데이터-변경 엔진(542, 544)이, 상기 제1 큐(630)에 대기 중인 포인터들에 대응하는 로컬 생성 데이터 변경 요청들을 처리하기 이전에, 상기 제2 큐(632)에 대기 중인 포인터들에 대응하는 수신된 데이터 변경 요청들을 처리하게 하는 것을 특징으로 하는 컴퓨터 판독 가능 매체.
KR1020027000817A 1999-07-19 2000-06-28 동적 관리자가 장치된 컴퓨터 시스템에 의한액티브티-베이스 협력 방법 및 장치 KR100722355B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/356,930 1999-07-19
US09/356,930 US6446113B1 (en) 1999-07-19 1999-07-19 Method and apparatus for activity-based collaboration by a computer system equipped with a dynamics manager

Publications (2)

Publication Number Publication Date
KR20020035565A KR20020035565A (ko) 2002-05-11
KR100722355B1 true KR100722355B1 (ko) 2007-05-29

Family

ID=23403554

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027000817A KR100722355B1 (ko) 1999-07-19 2000-06-28 동적 관리자가 장치된 컴퓨터 시스템에 의한액티브티-베이스 협력 방법 및 장치

Country Status (9)

Country Link
US (1) US6446113B1 (ko)
EP (1) EP1212679B1 (ko)
JP (1) JP4762467B2 (ko)
KR (1) KR100722355B1 (ko)
AT (1) ATE242893T1 (ko)
CA (1) CA2380160C (ko)
DE (1) DE60003322T2 (ko)
IL (2) IL147706A0 (ko)
WO (1) WO2001006361A2 (ko)

Families Citing this family (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000315198A (ja) * 1999-05-06 2000-11-14 Hitachi Ltd 分散処理システム及びその性能モニタリング方法
US20010044106A1 (en) * 1999-05-21 2001-11-22 Eric Henderson Method and apparatus for solid state molecular analysis
US6691153B1 (en) * 1999-08-30 2004-02-10 Zaplet, Inc. Method and system for process interaction among a group
US6598074B1 (en) * 1999-09-23 2003-07-22 Rocket Network, Inc. System and method for enabling multimedia production collaboration over a network
US6581094B1 (en) * 1999-11-02 2003-06-17 Sun Microsystems, Inc. Apparatus and method for identifying a digital device based on the device's uniform device descriptor file that specifies the attributes of the device in a XML document in a networked environment
US6931621B2 (en) 1999-12-29 2005-08-16 Baker Hughes Incorporated Method and system and article of manufacture for an N-tier software component architecture oilfield model
US6854107B2 (en) * 1999-12-29 2005-02-08 Baker Hughes Incorporated Method of and system for designing an N-tier software architecture for use in generating software components
US6668279B1 (en) * 2000-02-25 2003-12-23 Sun Microsystems, Inc. User level web server in-kernel network I/O accelerator
CA2403261A1 (en) * 2000-03-22 2001-09-27 Robert Bradshaw Method and apparatus for automatically deploying data in a computer network
US6981019B1 (en) * 2000-05-02 2005-12-27 International Business Machines Corporation System and method for a computer based cooperative work system
US6941510B1 (en) * 2000-06-06 2005-09-06 Groove Networks, Inc. Method and apparatus for efficient management of XML documents
US6996599B1 (en) * 2000-06-21 2006-02-07 Microsoft Corporation System and method providing multi-tier applications architecture
EP1299989A2 (en) * 2000-07-07 2003-04-09 Science Applications International Corporation A system or method for calling a vanity number using speech recognition
US7496652B2 (en) * 2000-07-17 2009-02-24 Teleservices Solutions, Inc. Intelligent network providing network access services (INP-NAS)
US7127486B1 (en) 2000-07-24 2006-10-24 Vignette Corporation Method and system for facilitating marketing dialogues
US7024454B1 (en) * 2000-08-25 2006-04-04 Practicefirst.Com L.L.C. Work sharing and communicating in a web site system
US20020080200A1 (en) * 2000-08-25 2002-06-27 Garland Wong Method and apparatus for implementing a web application
US6950791B1 (en) * 2000-09-13 2005-09-27 Antartica Systems, Inc. Method for describing objects in a virtual space
US6766356B1 (en) * 2000-09-14 2004-07-20 Genesys Conferencing, Ltd. Method and system for remotely modifying presentations in a multimedia conference
US6826600B1 (en) 2000-11-02 2004-11-30 Cisco Technology, Inc. Methods and apparatus for managing objects in a client-server computing system environment
US6934766B1 (en) * 2000-11-02 2005-08-23 Cisco Technology, Inc. Method and apparatus for exchanging event information between computer systems that reduce perceived lag times by subtracting actual lag times from event playback time
US7133908B1 (en) * 2000-11-24 2006-11-07 Xerox Corporation Metrics and status presentation system and method using persistent template-driven web objects
US8255791B2 (en) 2000-11-29 2012-08-28 Dov Koren Collaborative, flexible, interactive real-time displays
US20020143869A1 (en) * 2001-01-03 2002-10-03 Hal Cohen Method and apparatus for making random introductions electronically
US7275102B2 (en) * 2001-01-22 2007-09-25 Sun Microsystems, Inc. Trust mechanisms for a peer-to-peer network computing platform
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
FR2824211B1 (fr) * 2001-04-27 2003-06-27 Radio Electronique Aides Tech Systeme et procede de communication entre stations traitant des dossiers communs
US7433458B2 (en) * 2001-06-29 2008-10-07 At&T Intellectual Property I, L.P. System and method for viewing contents via a computer network during a telephone call
US7308496B2 (en) * 2001-07-31 2007-12-11 Sun Microsystems, Inc. Representing trust in distributed peer-to-peer networks
US7203753B2 (en) * 2001-07-31 2007-04-10 Sun Microsystems, Inc. Propagating and updating trust relationships in distributed peer-to-peer networks
US7383433B2 (en) * 2001-07-31 2008-06-03 Sun Microsystems, Inc. Trust spectrum for certificate distribution in distributed peer-to-peer networks
US7222187B2 (en) * 2001-07-31 2007-05-22 Sun Microsystems, Inc. Distributed trust mechanism for decentralized networks
JP4446368B2 (ja) * 2001-09-14 2010-04-07 富士通株式会社 コラボレーション方法、システム、プログラム及び記録媒体
US7194553B2 (en) 2001-10-16 2007-03-20 Microsoft Corporation Resolving virtual network names
US7536712B2 (en) 2001-10-16 2009-05-19 Microsoft Corporation Flexible electronic message security mechanism
US7676540B2 (en) * 2001-10-16 2010-03-09 Microsoft Corporation Scoped referral statements
EP1303097A3 (en) * 2001-10-16 2005-11-30 Microsoft Corporation Virtual distributed security system
US7293283B2 (en) * 2001-10-16 2007-11-06 Microsoft Corporation Flexible electronic message security mechanism
US20030074579A1 (en) * 2001-10-16 2003-04-17 Microsoft Corporation Virtual distributed security system
US8015204B2 (en) 2001-10-16 2011-09-06 Microsoft Corporation Scoped access control metadata element
US20030187964A1 (en) * 2001-10-31 2003-10-02 The University Court Of The University Of Glasgow Method and system for updating data on an information appliance based on changes in local and remote data sources
GB2382170B (en) * 2001-11-16 2005-04-13 Inventec Corp Method for synchronously updating screen data of database application program at clients over network
US7899047B2 (en) 2001-11-27 2011-03-01 Microsoft Corporation Virtual network with adaptive dispatcher
US7127613B2 (en) 2002-02-25 2006-10-24 Sun Microsystems, Inc. Secured peer-to-peer network data exchange
US7512649B2 (en) * 2002-03-22 2009-03-31 Sun Microsytems, Inc. Distributed identities
US6873692B1 (en) 2002-03-29 2005-03-29 Bellsouth Intellectual Property Corporation Telephone synchronization with software applications and documents
US7711847B2 (en) 2002-04-26 2010-05-04 Sony Computer Entertainment America Inc. Managing users in a multi-user network game environment
US20030208534A1 (en) * 2002-05-02 2003-11-06 Dennis Carmichael Enhanced productivity electronic meeting system
US7899915B2 (en) 2002-05-10 2011-03-01 Richard Reisman Method and apparatus for browsing using multiple coordinated device sets
US7139798B2 (en) * 2002-05-17 2006-11-21 Groove Networks, Inc. Method and apparatus for connecting a secure peer-to-peer collaboration system to an external system
US20030217135A1 (en) * 2002-05-17 2003-11-20 Masayuki Chatani Dynamic player management
JP2003345764A (ja) * 2002-05-27 2003-12-05 Hitachi Ltd 備忘録端末及び備忘録管理方法
US8116889B2 (en) 2002-06-27 2012-02-14 Openpeak Inc. Method, system, and computer program product for managing controlled residential or non-residential environments
US7421736B2 (en) * 2002-07-02 2008-09-02 Lucent Technologies Inc. Method and apparatus for enabling peer-to-peer virtual private network (P2P-VPN) services in VPN-enabled network
US20040019640A1 (en) * 2002-07-25 2004-01-29 Bartram Linda Ruth System and method for distributing shared storage for collaboration across multiple devices
US8131802B2 (en) 2007-10-05 2012-03-06 Sony Computer Entertainment America Llc Systems and methods for seamless host migration
US7225226B2 (en) 2002-09-27 2007-05-29 International Business Machines Corporation Chat messaging channel redirection
US7328243B2 (en) 2002-10-31 2008-02-05 Sun Microsystems, Inc. Collaborative content coherence using mobile agents in peer-to-peer networks
US8108455B2 (en) * 2002-10-31 2012-01-31 Oracle America, Inc. Mobile agents in peer-to-peer networks
US7213047B2 (en) * 2002-10-31 2007-05-01 Sun Microsystems, Inc. Peer trust evaluation using mobile agents in peer-to-peer networks
US8037202B2 (en) * 2002-10-31 2011-10-11 Oracle America, Inc. Presence detection using mobile agents in peer-to-peer networks
US7254608B2 (en) * 2002-10-31 2007-08-07 Sun Microsystems, Inc. Managing distribution of content using mobile agents in peer-topeer networks
US7987489B2 (en) * 2003-01-07 2011-07-26 Openpeak Inc. Legacy device bridge for residential or non-residential networks
US20040267384A1 (en) * 2003-02-07 2004-12-30 Broadon Communications, Inc. Integrated console and controller
US20100017627A1 (en) 2003-02-07 2010-01-21 Broadon Communications Corp. Ensuring authenticity in a closed content distribution system
US8131649B2 (en) * 2003-02-07 2012-03-06 Igware, Inc. Static-or-dynamic and limited-or-unlimited content rights
US7322042B2 (en) * 2003-02-07 2008-01-22 Broadon Communications Corp. Secure and backward-compatible processor and secure software execution thereon
US7779482B1 (en) 2003-02-07 2010-08-17 iGware Inc Delivery of license information using a short messaging system protocol in a closed content distribution system
US7360164B2 (en) * 2003-03-03 2008-04-15 Sap Ag Collaboration launchpad
US20040221299A1 (en) * 2003-03-31 2004-11-04 Simon Gibbs Method and apparatus for developing interface protocols for peer to peer applications
US7792915B2 (en) * 2003-06-04 2010-09-07 Sony Computer Entertainment Inc. Content distribution overlay network and methods for operating same in a P2P network
US20050010386A1 (en) * 2003-06-30 2005-01-13 Mvalent, Inc. Method and system for dynamically modeling resources
KR100512742B1 (ko) * 2003-07-25 2005-09-07 삼성전자주식회사 휴대용 컴퓨터
US20050044145A1 (en) * 2003-08-20 2005-02-24 International Business Machines Corporation Collaboration method and system
AU2004282819B2 (en) * 2003-09-12 2009-11-12 Aristocrat Technologies Australia Pty Ltd Communications interface for a gaming machine
US20050091316A1 (en) * 2003-10-03 2005-04-28 Oscar Ponce System and method for creating and selectively sharing data elements in a peer-to-peer network
CA2452893C (en) * 2003-12-11 2014-02-18 Groove Networks, Inc. Method and apparatus for storing and managing contacts in a distributed collaboration system
KR100996819B1 (ko) 2003-12-24 2010-11-25 마이크로소프트 코포레이션 분산된 협업 시스템에서 콘택트를 저장하고 관리하기 위한방법 및 장치
JP4681812B2 (ja) * 2004-01-08 2011-05-11 マイクロソフト コーポレーション 分散コラボレーション・システムでコンタクトを保存し管理するための方法及び装置
US7197502B2 (en) * 2004-02-18 2007-03-27 Friendly Polynomials, Inc. Machine-implemented activity management system using asynchronously shared activity data objects and journal data items
US20050223080A1 (en) * 2004-04-05 2005-10-06 Microsoft Corporation Updatable user experience
US7587452B2 (en) 2004-04-23 2009-09-08 At&T Intellectual Property I, L. P. Methods, systems, and products for network conferencing
US20050245317A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation Voice chat in game console application
US7580867B2 (en) 2004-05-04 2009-08-25 Paul Nykamp Methods for interactively displaying product information and for collaborative product design
US8171387B2 (en) * 2004-05-13 2012-05-01 Boardwalk Collaboration, Inc. Method of and system for collaboration web-based publishing
US20050262075A1 (en) * 2004-05-21 2005-11-24 Bea Systems, Inc. Systems and methods for collaboration shared state management
US20060010205A1 (en) * 2004-05-21 2006-01-12 Bea Systems, Inc. Systems and methods for collaboration impersonation
US20060010125A1 (en) * 2004-05-21 2006-01-12 Bea Systems, Inc. Systems and methods for collaborative shared workspaces
US7403969B2 (en) * 2004-05-26 2008-07-22 At&T Delaware Intellectual Property, Inc. Network conferencing using method for distributed computing and/or distributed objects to intermediate host for presentation to a communications device
US7587037B2 (en) * 2004-05-26 2009-09-08 At&T Intellectual Property I, L.P. Network conferencing using method for distributed computing and/or distributed objects for presentation to a mobile communications device
US7526524B2 (en) 2004-05-26 2009-04-28 At&T Intellectual Property I, L.P. Network conferencing using method for distributed computing and/or distributed objects
US20050278424A1 (en) * 2004-05-26 2005-12-15 Wesley White Network conferencing using method for concurrent real time broadcast and distributed computing and/or distributed objects
US7694228B2 (en) 2004-05-26 2010-04-06 At&T Intellectual Property I, L.P. Methods, systems, and products for network conferencing
US20060200374A1 (en) * 2005-03-01 2006-09-07 Yoram Nelken Automatic scheduling method and apparatus
US7610287B1 (en) * 2005-06-28 2009-10-27 Google Inc. System and method for impromptu shared communication spaces
US20070038494A1 (en) * 2005-08-15 2007-02-15 Cognetics Corporation Team management system and method
US20070043569A1 (en) * 2005-08-19 2007-02-22 Intervoice Limited Partnership System and method for inheritance of advertised functionality in a user interactive system
US8683334B2 (en) * 2005-08-19 2014-03-25 Intervoice Limited Partnership System and method for sharing access to service provider controls and subscriber profile data across multiple applications in a user interactive system
US7797636B2 (en) * 2005-08-19 2010-09-14 Joseph Carter System and method for administering pluggable user interactive system applications
US20070084638A1 (en) * 2005-10-19 2007-04-19 Clyde Bohnsack Drilling fluid flow facilitation
US8819536B1 (en) 2005-12-01 2014-08-26 Google Inc. System and method for forming multi-user collaborations
WO2007079587A1 (en) 2006-01-13 2007-07-19 Diginiche Inc. System and method for collaborative information display and markup
US7958019B2 (en) * 2006-03-13 2011-06-07 Ebay Inc. Peer-to-peer trading platform with roles-based transactions
US8949338B2 (en) 2006-03-13 2015-02-03 Ebay Inc. Peer-to-peer trading platform
US7877353B2 (en) * 2006-03-13 2011-01-25 Ebay Inc. Peer-to-peer trading platform with relative reputation-based item search and buddy rating
US8335822B2 (en) * 2006-03-13 2012-12-18 Ebay Inc. Peer-to-peer trading platform with search caching
JP2009535735A (ja) 2006-05-02 2009-10-01 ブロードオン コミュニケーションズ コーポレーション コンテンツ・マネージメント・システムおよび方法
US8965874B1 (en) 2006-08-04 2015-02-24 Google Inc. Dynamic aggregation of users
US7895512B2 (en) * 2006-09-21 2011-02-22 International Business Machines Corporation Capturing and processing change information in a web-type environment
US7624276B2 (en) 2006-10-16 2009-11-24 Broadon Communications Corp. Secure device authentication system and method
US7613915B2 (en) 2006-11-09 2009-11-03 BroadOn Communications Corp Method for programming on-chip non-volatile memory in a secure processor, and a device so programmed
US8494436B2 (en) * 2006-11-16 2013-07-23 Watertown Software, Inc. System and method for algorithmic selection of a consensus from a plurality of ideas
US8200961B2 (en) * 2006-11-19 2012-06-12 Igware, Inc. Securing a flash memory block in a secure device system and method
WO2008091695A1 (en) * 2007-01-25 2008-07-31 Samuel Pierce Baron Virtual social interactions
WO2008112944A1 (en) * 2007-03-14 2008-09-18 Samuel Pierce Baron Interaction in a virtual social environment
US9756004B2 (en) 2007-11-08 2017-09-05 Skype Message delivery system and method
US8230348B2 (en) * 2008-04-28 2012-07-24 Roger Peters Collaboration software with real-time synchronization
EP2136530B1 (en) * 2008-05-28 2019-04-03 ABB Research Ltd. Collaborative defense of energy distribution protection and control devices
US8539359B2 (en) * 2009-02-11 2013-09-17 Jeffrey A. Rapaport Social network driven indexing system for instantly clustering people with concurrent focus on same topic into on-topic chat rooms and/or for generating on-topic search results tailored to user preferences regarding topic
US9965743B2 (en) 2009-06-30 2018-05-08 Cdw Llc Session collaborator
US9734124B2 (en) * 2010-03-04 2017-08-15 International Business Machines Corporation Direct linked two way forms
US20120016999A1 (en) * 2010-07-14 2012-01-19 Sap Ag Context for Sharing Data Objects
US20120042263A1 (en) 2010-08-10 2012-02-16 Seymour Rapaport Social-topical adaptive networking (stan) system allowing for cooperative inter-coupling with external social networking systems and other content sources
US9240965B2 (en) 2010-08-31 2016-01-19 Sap Se Methods and systems for business interaction monitoring for networked business process
US8612598B1 (en) * 2011-02-18 2013-12-17 The Directv Group, Inc. Method and system for ingesting content schedule data from an external source
US8886674B1 (en) 2011-02-18 2014-11-11 The Directv Group, Inc. Method and system for entitling a user device to receive content from data from an external source
US8676937B2 (en) 2011-05-12 2014-03-18 Jeffrey Alan Rapaport Social-topical adaptive networking (STAN) system allowing for group based contextual transaction offers and acceptances and hot topic watchdogging
US8627097B2 (en) 2012-03-27 2014-01-07 Igt System and method enabling parallel processing of hash functions using authentication checkpoint hashes
US10528610B2 (en) * 2014-10-31 2020-01-07 International Business Machines Corporation Customized content for social browsing flow
US10765952B2 (en) 2018-09-21 2020-09-08 Sony Interactive Entertainment LLC System-level multiplayer matchmaking
US10695671B2 (en) 2018-09-28 2020-06-30 Sony Interactive Entertainment LLC Establishing and managing multiplayer sessions

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974173A (en) * 1987-12-02 1990-11-27 Xerox Corporation Small-scale workspace representations indicating activities by other users
US5008853A (en) * 1987-12-02 1991-04-16 Xerox Corporation Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment
US5170480A (en) * 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time
JP3020539B2 (ja) * 1990-03-07 2000-03-15 株式会社日立製作所 並列動作型データベース管理方式
US5388196A (en) * 1990-09-07 1995-02-07 Xerox Corporation Hierarchical shared books with database
US5538255A (en) 1992-02-18 1996-07-23 Barker; Bruce J. Remote controlled multiplayer video game
US5446842A (en) * 1993-02-26 1995-08-29 Taligent, Inc. Object-oriented collaboration system
GB2297181B (en) * 1993-09-24 1997-11-05 Oracle Corp Method and apparatus for data replication
US6049334A (en) * 1993-12-20 2000-04-11 International Business Machines Corporation Method and system for graphically indicating the activity of a plurality of users within a shared data collection
CA2152528C (en) * 1994-07-29 2000-04-18 Chung-Hwa Herman Rao Distributed systems with replicated files
JP3120963B2 (ja) * 1995-12-14 2000-12-25 株式会社日立製作所 メッセージを転送する方法およびメッセージを転送するシステム
US5828866A (en) 1996-07-08 1998-10-27 Hewlett-Packard Company Real-time synchronization of concurrent views among a plurality of existing applications
US5892949A (en) 1996-08-30 1999-04-06 Schlumberger Technologies, Inc. ATE test programming architecture
US5899810A (en) 1997-01-24 1999-05-04 Kaon Interactive Corporation Distributed game architecture to overcome system latency
GB9722343D0 (en) 1997-10-22 1997-12-17 British Telecomm Distributed virtual environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
해당없음

Also Published As

Publication number Publication date
JP2003505760A (ja) 2003-02-12
KR20020035565A (ko) 2002-05-11
EP1212679A2 (en) 2002-06-12
ATE242893T1 (de) 2003-06-15
CA2380160C (en) 2009-09-15
WO2001006361A3 (en) 2001-05-10
DE60003322T2 (de) 2004-05-13
IL147706A (en) 2006-12-31
WO2001006361A2 (en) 2001-01-25
EP1212679B1 (en) 2003-06-11
DE60003322D1 (de) 2003-07-17
JP4762467B2 (ja) 2011-08-31
IL147706A0 (en) 2002-08-14
US6446113B1 (en) 2002-09-03
CA2380160A1 (en) 2001-01-25

Similar Documents

Publication Publication Date Title
KR100722355B1 (ko) 동적 관리자가 장치된 컴퓨터 시스템에 의한액티브티-베이스 협력 방법 및 장치
KR100722916B1 (ko) 통신 관리자가 장치된 컴퓨터 시스템에 의한액티브티-베이스 협력 방법 및 장치
KR100711661B1 (ko) 액티브티 기반 협력을 위해 사용되는 분산 컴퓨터시스템에서 데이터 변경 요청의 우선순위를 결정하고데이터 일관성을 유지하기 위한 방법 및 장치
US7080120B2 (en) System and method for collaborative processing of distributed applications
US6842779B1 (en) Agent accessory tool cooperating with integrated application on WEB server by HTTP protocol
US6336135B1 (en) Gateway for converting synchronous client/server protocols into asynchronous messaging protocols and storing session state information at the client
KR100354369B1 (ko) 정보 처리 방법, 정보 처리 장치, 정보 처리 프로그램을 격납하는 기억 매체
US7945615B1 (en) Distributed shared persistent objects
Vinoski RPC under fire
KR100433948B1 (ko) 캐드 프로그램간의 데이터/이벤트 실시간 동기화방법
KR100275452B1 (ko) 정보통신망에서의 채팅서비스를 위한 웹/텍스트 연동 방법
JP2001290743A (ja) 電子メール回覧システムおよび電子メール回覧方法

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

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140417

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 13