KR100890209B1 - 분산 컴퓨팅 서비스 플랫폼 - Google Patents

분산 컴퓨팅 서비스 플랫폼 Download PDF

Info

Publication number
KR100890209B1
KR100890209B1 KR1020027017574A KR20027017574A KR100890209B1 KR 100890209 B1 KR100890209 B1 KR 100890209B1 KR 1020027017574 A KR1020027017574 A KR 1020027017574A KR 20027017574 A KR20027017574 A KR 20027017574A KR 100890209 B1 KR100890209 B1 KR 100890209B1
Authority
KR
South Korea
Prior art keywords
server
schema
network request
component
information
Prior art date
Application number
KR1020027017574A
Other languages
English (en)
Other versions
KR20030017559A (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 claimed from PCT/US2001/019935 external-priority patent/WO2001098936A2/en
Publication of KR20030017559A publication Critical patent/KR20030017559A/ko
Application granted granted Critical
Publication of KR100890209B1 publication Critical patent/KR100890209B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • 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/451Execution arrangements for user interfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/303Terminal profiles

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

서버 연합은 통신된 데이터의 의미가 스키마에 의해 내포되는 스키마를 따르는 데이터 구조를 사용하여 통신함으로써 서비스 요청을 수행하도록 협력적으로 대화한다. 따라서, 통신되고 있는 데이터에 부가하여, 데이터의 의미가 또한 통신되고 데이터의 의미에 근거하여 지능적 디시젼 및 추론을 허용한다. 협력적 대화는 멀티플 트랜스포트 메카니즘을 지원하는 공통 API를 통한 메시징에 의해 광범위한 네트워크를 통하여 용이하게 된다. 또한, 클라이언트 디바이스 사이의 미드-세션 트랜스퍼는 스키마 및 트랜스포트-독립적 메시징 구조에 의해 용이하게 된다. 클라이언트 디바이스의 사용자 인터페이스는 클라이언트 디바이스가 다른 사용자 인터페이스 기능을 갖더라도 일관되게 보일 것이다.
협조, 대화, 스키마, 코드, 디렉토리, 메시징, 플랫폼, 분산

Description

분산 컴퓨팅 서비스 플랫폼{DISTRIBUTED COMPUTING SERVICES PLATFORM}
본 발명은 통신 분야에 관한 것이다. 더 구체적으로, 본 발명은 (인터넷과 같은) 전 컴퓨터 네트워크에서 고급 통신 및 협조를 용이하게 하기 위한 분산 컴퓨팅 서비스 플랫폼을 설명한다.
인터넷은 사람들이 통신하는 방식에 대변혁을 일으켰고 인간의 역사에 있어서 "정보시대"라 불리기도 하는 새로운 시대의 도래를 알렸다. 본질적으로, 인터넷은 세계의 대부분에 걸쳐 퍼져있는 네트워크 컴퓨터의 많은 무리를 포함한다. 고성능 컴퓨터, 소프트웨어, 및 네트워킹 테크놀로지는 최종 사용자의 입장에서 인터넷을 통한 통신을 상당히 용이하게 하였다.
예를 들어, 사용자는 일반적으로 이용가능한 전자 메일 소프트웨어를 사용하여 전자 메일 또는 "이-메일" 메시지를 작성할 수 있다. 수취인의 주소를 지정한 후에, 사용자는 예를 들어 마우스를 사용하여 컴퓨터 디스플레이상의 "송신" 아이콘을 활성화시킴으로써 간단히 메시지를 송신한다. 그 후 메시지가 수신지 컴퓨팅 디바이스에 도착할 때까지 메시지는 하나의 컴퓨터 시스템으로부터 다음의 시스템으로 인터넷을 통하여 라우팅된다.
더하여, 통상의 브라우저 소프트웨어는 사용자가 원격 컴퓨터로부터의 웹 페 이지와 같은 정보를 요청하도록 허용한다. 사용자가 웹 페이지의 주소를 입력한 후에, 브라우저는 예를 들어 하이퍼텍스트 트랜스포트 프로토콜(HTTP)과 같은 광범위하게 인식된 통신 프로토콜을 사용하여 사용자의 컴퓨터가 요청을 송신하도록 허용한다. 그 후 요청은 수신지 주소를 사용하여 수신지 컴퓨터 또는 웹 사이트로 라우팅된다.
원격 웹 사이트는 요청을 평가하고 요청된 정보를 포함하기도 하는 적합한 응답을 반환한다. 요청된 웹 페이지는 웹 브라우저에 의해 파싱가능한, 하이퍼텍스트 마크업 언어("HTML") 포맷과 같은, 포맷으로 반환된다. 그 후 파싱된 웹 페이지는 렌더링되고 컴퓨터 디스플레이상에서 사용자에게 보여진다.
웹 브라우저 소프트웨어는 범용 퍼스널 컴퓨터(PC), 텔레비전 셋톱 박스, 퍼스널 디지털 어시스턴트, 셀룰러 전화기 등을 포함하는 광범위하게 이용가능한 컴퓨터의 많은 타입에 이용될 수 있다. 더하여, 그러한 통상의 브라우저 소프트웨어에 액세스하여 인터넷 접속을 함으로써 누구라도 공공연하게 이용할 수 있는 웹 사이트가 수없이 많이 있다. 이들 요인들이 조합되어 사람들이 이전보다 더 많은 정보로 더 많이 액세스하도록 허용한다.
요컨대, 인터넷은 많은 사용자에게 간이한 글로벌 커넥티비티를 제공한다. 현재 인터넷의 사용은 정보로의 액세스를 제공함에 있어서 기업 및 개인에게 한결같이 많은 이점을 제공하고 있지만, 인터넷은 더 유연한 방식으로 정보를 액세스 및 사용하도록 더 효율적으로 사용될 수 있다. 예를 들어, 인터넷의 하나의 지배적인 사용은 일반적으로 "읽기-전용"으로서 특징지어질 수 있다. 퍼블리셔가 웹 페이지를 생성 및 출판한 후에, 인터넷은 본질적으로 페이지상의 정보를 사용자가 읽도록 허용하는 프리젠테이션 툴로서 이용될 수 있다. 인터넷 자체는 사용자가 쓰기, 편집 또는 달리 웹 페이지와 대화하는 기능을 거의 또는 전혀 제공하지 않는다.
또한, 인터넷은 개인이 수많은 웹 사이트로 직접 액세스하도록 허용하지만, 웹 사이트가 서로 통신하거나 또는 정보를 공유하도록 허용하는 표준은 있다 하더라도 거의 존재하지 않는다. 각각의 웹 사이트는 전형적으로 다른 ID, 프레퍼런스, 데이터 포맷 및 스키마, 커넥티비티 등을 유지한다. 이러한 이유로, 많은 웹 사이트는 물론 2개의 웹 사이트 사이에서 대화를 가능하게 하기 위해서는 상당한 시간 및 비용이 들 수 있다. 따라서, 웹 사이트는 전형적으로 인터넷상의 다른 웹 사이트에 의해 제공되는 정보의 방대하고 풍부한 스펙트럼을 얻지 않는다. 대신에, 많은 웹 사이트는 정보가 이미 다른 웹 사이트로부터 이용될 수 있는 것일지라도 독립적으로 정보를 수집하고 다소 정적인 형식으로 컴파일할 수 밖에 없다. 따라서, 인터넷을 통하여 방대한 수의 사이트 및 컴퓨터 사이에 널리 보급된 커넥티비티가 있더라도, 대분분 실현되지 않은 채로 남아있게 될 수 있는 혁신적인 진보 및 자동화된 대화의 형식으로 그러한 커넥티비티를 이용하는 것은 거의 행해지지 않아 왔다.
또한, 인터넷의 효율성 및 유연성은 정보 및 서비스로 사용자가 액세스하는 것을 제약하는 다른 요인들에 의해 제한된다. 예를 들어, 퍼스널 컴퓨터를 갖춘 사용자는 예를 들어 기초 플랫폼과 연관된 제약을 받는 셀룰러 폰의 사용자보다 상 당히 더 많은 세트의 인터넷 자원에 액세스할 수 있다. 플랫폼 제약이 쟁점이 아닐 때, (보안 및 기억장치와 같은) 다른 문제는 동일한 사용자가 인터넷 자원으로 액세스하는 것을 여전히 제한할 수 있고, 전 플랫폼에서의 다른 사용자의 경우는 더 그럴 수 있다. 동일한 정보 및 서비스가 액세스될 수 있더라도, 예를 들어 사용자가 그들 자원에 액세스하도록 다른 프로토콜을 따르거나 상당히 다른 사용자 인터페이스를 수수해야 할 때 전반적인 효율성 및 유연성은 손상된다.
더 나아가, 인터넷 사용자는 필터링 및 편성하기 어려운 너무 많은 정보와 직면하기도 한다. 예를 들어, 웹 검색 엔진은 간단한 질의에 대하여 수많은 가능한 "히트"를 반환하는 것이 일반적이다. 사용자는 관련 정보를 얻기 위해 이들 히트를 전부 수동으로 필터링해야 한다. 또한, 사용자의 이메일 수신함은 사용자에게 우선순위가 낮거나 무관하기도 한 정크 이메일 또는 "스팸"으로 공격당하기도 한다. 몇몇 수신함 필터가 존재한다 할지라도, 사용자는 우선순위가 높거나 또는 중요한 메시지를 찾기 위해서 나머지 메시지를 여전히 전부 스캔해야 한다.
따라서, 더 일관된 사용자 대화 및 협조, 및 인터넷을 통한 웹 사이트간 통신을 용이하게 하는 시스템 및 방법이 필요하다. 또한, 사용자에게 제공될 관련 정보가 너무 많은 정보로 사용자를 압도함이 없이 개개인에게 더 개인화될 필요가 있다.
종래기술에서의 상기 문제들은 더 우수한 인터넷-기반 협조(collaboration) 및 더 우수한 웹 사이트간 통신을 용이하게 하는 분산(distributed) 컴퓨팅 서비스 플랫폼인 본 발명에 의하여 극복된다. 첫째로, 플랫폼의 일반적 개념 아키텍처가 요약설명된다. 그 후, 플랫폼의 통합 테크놀로지 컴포넌트가 요약설명된다. 이들 컴포넌트는 프로그래밍된 모델, 스키마, 사용자 인터페이스, 이벤트, 메시징, 기억장치, 디렉토리, 보안, 및 코드 관리를 포함한다. 마지막으로, 직장 및 가정에서의 사람들의 일생활에 있어서 고급(advanced) 협조 및 통신을 본 발명이 어떻게 용이하게 하는지 예시하는 시나리오가 설명된다.
본 발명의 분산 컴퓨팅 서비스 플랫폼은 클라이언트 디바이스와 서버 연합(federation) 사이, 및 서버 연합내의 서버 사이에서의 통신을 용이하게 한다. 서버 연합은, 예를 들어, 인터넷 및/또는 법인 인트라넷상의 서비스 및 서버로 이루어질 수 있다. 클라이언트 및 서버는, 어느 정도의 자치를 유지하면서, 의미적(meaningful) 통신 및 정보 교환을 통하여 통합되어 있다. 이러한 의미적 교환은 전 트랜스포트-독립적 메시징 기반구조(infrastructure)에서 공통(common) 스키마를 통하여 정보를 교환함으로써 가능하다.
플랫폼은 프로그래밍 모델, 스키마, 사용자 인터페이스, 이벤트, 메시징, 기억장치, 디렉토리, 보안 및 코드 관리를 포함하는, 분산되어 있지만 통합된 많은 테크놀로지 컴포넌트 및 서비스를 포함한다. 프로그래밍 모델은 클라이언트와 서버 연합 사이에 유연하게 분산될 수 있는 애플리케이션을 위한 구조를 정의한다. 프로그래밍 모델을 따르는 애플리케이션은 페이지, 에미세리(emissary), 및 피에프돔(fiefdom) 컴포넌트를 포함한다. 페이지 컴포넌트는 서버 연합과 통신하고 있는 특정 클라이언트 디바이스에 대하여 사용자 인터페이스를 투사(project)하도록 전 형적으로 사용되는 제어를 호스팅한다. 에미세리 컴포넌트는 서버 연합에 클라이언트를 포괄적으로 표시한다. 피에프돔 컴포넌트는 애플리케이션의 1차 자원을 구성하는 데이터를 소유한다. 일반적으로 이들 컴포넌트는 비동기 메시징을 통하여 서로 통신한다. 메시지는 컴포넌트에 내재하는 로직에 의해서, 컴포넌트에 내재하여 발생된 이벤트에 의해서, 또는 다른 컴포넌트로부터 수신된 메시지에 응답하여 발생될 수 있다.
플랫폼은 통신을 의미적이게 하도록 스키마에 의존한다. 스키마는 데이터의 특정 타입이 어떻게 구조화될 수 있는지를 정의하는 표준 또는 규칙의 세트이다. 따라서, 연합의 컴퓨터 시스템은 특정 구조에 순응하는 데이터가 전 연합을 통하여 사용된 특정 타입의 아이템을 표시함을 인식하도록 스키마를 사용한다. 따라서, 단지 데이터 자체보다는 데이터의 의미(meaning)가 컴퓨터 시스템 사이에서 통신될 수 있다. 예를 들어, 컴퓨터 디바이스는, 컴퓨터가 주소의 컴포넌트 파트를 "이해"하게 하여, 특정 주소 스키마를 따르는 데이터 구조가 주소를 표시함을 인식할 수 있다. 그 후 컴퓨터 디바이스는 데이터 구조가 주소를 표시함을 이해한 것에 근거하여 지능적인 액션을 수행할 수 있다. 그러한 액션은, 예를 들어, 주소를 가지고 할 일을 표시하는 액션 메뉴를 사용자에게 제시하는 것을 포함할 수 있다. 스키마는 디바이스상에 로컬하게 및/또는 연합의 "메가-스토어"에 글로벌하게 기억될 수 있다. 디바이스는 스키마가 업데이트될 때 디바이스에 자동으로 메시지를 패싱하는 이벤트 알림 서비스(이러한 경우에서는, 스키마 업데이트 서비스)에 서브스크라이빙함으로써 로컬하게 기억된 스키마를 계속 업데이트할 수 있다. 글로벌 하게 기억된 스키마로의 액세스는 보안 기반구조에 의해 제어된다.
디바이스와의 사용자 대화(interaction)는 주로 사용자 인터페이스를 통하여 일어난다. 본 발명의 사용자 인터페이스(UI)는 멀티-모달(modal)이고, 지능적이고, 응답적이다. 사용자 인터페이스는 서버 디바이스 및 다양한 클라이언트의 테크니컬 기능(capability)으로 적절하게 스케일링한다. 사용자 인터페이스는 또한 전 디바이스에서 사용자의 프레퍼런스 스테이터스, 세션, 및 상태를 기억한다. 따라서, 사용자는 모든 상태 및 프레퍼런스 정보가 양립되게 있으면서 하나의 디바이스로부터 또 다른 미드-세션으로 스위칭할 수 있거나, 또는 다른 사용자는 동일한 디바이스를 공유할 수 있고 그들 프레퍼런스에 근거한 다른 인터페이스를 제공받을 수 있다. 사용자가 보안 기반구조를 경유하여 그들 자신을 적절하게 인증한 후에, 사용자 프레퍼런스 정보는 스키마에 의해 지정된 (즐겨찾기, 콘택트 등과 같은) 사용자-특정 정보를 기억하는 디렉토리 서비스를 통하여 액세스될 수 있다. 또한 사용자 인터페이스는 사용자가 멀티플 모드를 통하여 UI와 대화할 수 있음을 의미하는 멀티-모달이다. 예를 들어, 사용자 입력은 키보드 엔트리 또는 마우스 클릭과 같은 "전통적인" 방법을 통하여서일 수 있다. 또한, UI는 마이크로폰을 갖춘 디바이스에 대한 오디오/음성 입력 또는 터치 스크린 또는 패드를 갖춘 디바이스에 대한 스틸러스/터치 입력과 같은 다른 입력 방법을 허용한다.
플랫폼내의 이벤트는 특정 액티비티에 대한 알림을 제공하거나, 리포팅하거나, 동기화하도록 사용된다. 플랫폼의 이벤트 컴포넌트는 전 연합에 걸쳐서 이벤트 싱크에 통신되는 이벤트를 발생시키는 이벤트 소스를 포함한다. 시스템은 입력 이벤트에 대한 논리적인 또는 개연적인 추론을 통하여 입력 이벤트를 더 높은 레벨 이벤트로 변환하는 추론 기구를 포함하기도 하여 어토믹(atomic) 이벤트를 점차로 더 높은 레벨 이벤트로 변환하는 이벤트 합성(composition) 메카니즘을 포함한다. 이벤트 합성 메카니즘은 이용가능한 어토믹 이벤트의 세트를 소프트웨어 컴포넌트의 정보적 요구에 적합하게 매칭되는 관찰기록으로 고쳐, 좋은 결정을 하도록 추상화(abstraction)의 알맞은 레벨에서의 정보를 컴포넌트에 제공한다. 1)하나 이상의 이벤트 소스에 의해 제공되는 특정 클래스의 이벤트로 소프트웨어 컴포넌트에 의한 서브스크립션; 2)하나 이상의 소스의 단속적인 폴링에 의해서; 또는 3)이벤트 소스에 의한 이벤트의 더 넓은 방송의 청취에 의해서를 포함하는 수개의 메카니즘을 경유하여 소프트웨어 컴포넌트는 이벤트에 액세스할 수 있다. 이벤트에 액세스하는 이들 방법 중 임의의 것에 대하여, 메시지 전달 타입이 이벤트의 타입에 의존적일 수 있을 지라도, 메시징 기반구조를 경유하여 애플리케이션은 이벤트에 액세스할 수 있다. 예를 들어, 이벤트는 이벤트의 통신이 송신에서의 딜레이와 연관된 코스트에 의해 가이드될 수 있도록, 대기시간(latency)에서의 다른 톨러런스와 연관될 수 있다. 이러한 이유 때문에, 미션-크리티컬 서버가 다운된다는 이벤트 알림은 그 수신지로의 즉시 전달(delivery)의 보증을 요구한다. 사용자의 일반적인 위치상에서의 업데이트와 같은 다른 이벤트는 딜레이의 더 낮은 코스트와 연관될 수 있다. 또한, 사용자 인터페이스는 알림의 긴급성에 비례하는 방식으로 특정 이벤트를 사용자에게 알려줄 수 있다. 예를 들어, 네트워크 관리자는 서버가 다운된다는 긴급한 팝-업 메시지를 수신할 수 있거나, 또는 틴에이저는 인스턴트 메신저 또는 챗 인터페이스를 통한 구역에 친구 중 하나가 있다는 알림을 수신할 수 있다. 또한, 이벤트 알림은 인증 및 권한부여 보안 메카니즘에 의해 제어된다.
메시징 컴포넌트(160)는 전 플랫폼에서 이벤트 및 다른 정보가 교환될 수 있는 메카니즘이다. 메시징 서비스는 HTTP를 포함하는, 임의의 다양한 트랜스포트를 사용하여 인터넷을 통하여 효율적이고 신뢰할만한 메시징을 제공한다. 메시징 기반구조는 본 발명과 연관된 다른 특성 및 메시징 서비스의 전반적인 아키텍처를 이용하는 애플리케이션을 쓰도록 애플리케이션 개발자에 대하여 표준 인터페이스를 확립한다. 메시징은 비동기식으로 일어날 수 있고 따라서 사용자-개시 페이지 리프레싱을 요구함이 없이 페이지의 일정한 업데이트를 가능하게 한다.
기억장치 서비스는 전 서버 연합을 통한 분산 기억장치를 허용한다. 상기한 바와 같이, 사용자 프레퍼런스 및 파일은 연합에서의 "메가-스토어"내에 기억될 수 있고, 적절한 인증 후에, 사용자는 임의의 디바이스를 사용하여 임의의 위치로부터 이러한 정보에 액세스할 수 있다. "메가-스토어"는 모두 반드시 단일 서버상에 있어야만 하는 것은 아니다; 기억장치는 효율성, 메모리 할당, 액세스의 빈도 등에 근거하여 연합내의 전 서버에서 분산될 수 있다. 서버 연합내에 기억된 정보는 또한 사용자의 오프-라인 작업을 허용하도록 로컬하게 복제될 수 있다. 사용자가 다시 온-라인으로 돌아갈 때, 오프-라인 및 온-라인 데이터의 자동 동기화를 트리거링하는 이벤트가 발생된다. 기억장치 서비스는 통상의 파일 시스템상에 빌딩되어 있는 데이터 엔진을 포함한다. 로컬 캐싱을 위해 정보의 우선순위를 정하고, 캐싱된 정보의 연령 및/또는 콘텍스트에서의 변환에 근거하여 캐싱된 정보가 제거될 수 있게 하는 방법이 캐싱된 정보의 값을 최대화하도록 사용될 수 있다.
다양한 서비스에 의해 용이하게 사용자가 인식 또는 식별될 수 있는 개념을 지원하기 위해서, 디렉토리 컴포넌트가 제공된다. 본 발명의 디렉토리 서비스는 메타-디렉토리 사이를 동기화하여 기업마다 또는 웹 사이트마다의 메타-디렉토리를 포함함으로써 연합을 지원한다. 이러한 동기화는 디렉토리 사이에 통신하도록 사용되는 표준화된 스키마에 의해서 용이하게 된다. 이들 메타-디렉토리는 더 상세한 정보가 발견될 수 있는 특정 적응(adapted) 디렉토리에 레퍼런스를 제공한다. 예를 들어, 디렉토리는 사용자 신원 정보(이름, 주소 등), 보안 정보(사용자가 액세스하도록 권한부여된 정보가 무엇인가) 등을 포함할 수 있다.
본 발명의 보안 기반구조는 전 서버 연합에서 고급 보안을 제공한다. 사용자 모빌리티 및 프라이버시를 보증하기 위하여, 보안 기반구조는 한 사람이 다중 신원을 갖는 것에 대비한다. 예를 들어, 개인은 직업상의 신원 및 사적인 신원을 가질 수 있다. 본 발명은 이들 멀티플 엔티티가 하나의 엔티티로서 취급되는 인증 및 권한부여를 용이하게 한다. 더 나아가, 개인 방화벽, 페리미터(perimeter) 방화벽, 및 보안 게이트웨이가 서로로부터 독립적으로 작동하는 고급 방화벽 테크놀로지가 설명된다. 보안은 패스워드, 스마트카드, 생체인식(지문, 망막 스캔, 등), 키 교환, 암호화 등과 같은 테크놀로지의 임의의 조합에 의해 구현될 수 있다.
플랫폼의 하나의 목표는 사용자가 필요로 하는 가장 최근에 업데이트된 애플리케이션 및 코드에 투과적으로 액세스할 수 있도록 보증하는 것이다. 본 발명의 코드 관리 시스템은 애플리케이션 및 그 구성 컴포넌트에 대한 구성 정보, 엔트리 포인트, 자원, 및 코드를 포함하는 애플리케이션의 구조를 기술하는(describe) 매니페스트(manifest)를 포함한다. 코드 관리 시스템은 프로그래밍 모델에 순응하는 애플리케이션이 효율적인 방식으로 전 연합에서 배치 및 업데이트되게 한다.
본 발명의 부가적인 특성 및 이점은 이하 설명될 것이고, 어느 정도는 설명으로부터 명백할 것이거나, 또는 본 발명의 실시로부터 알 수 있다. 본 발명의 특성 및 이점은 첨부된 청구항에서 구체적으로 지적된 기구 및 조합에 의해 실현되고 얻어질 수 있다. 본 발명의 이들 및 다른 특성은 이하 설명 및 첨부된 청구항으로부터 아주 더 명백해질 것이거나, 또는 이하 설명되는 바와 같이 본 발명의 실시에 의해 알 수 있다.
본 발명의 상기 및 다른 이점 및 특성이 얻어지는 방식을 위해서, 상기 간략히 설명된 본 발명은 첨부 도면에 도시된 특정 실시예를 참조하여 더 상세히 설명될 것이다. 이들 도면은 본 발명의 전형적인 실시예를 도시할 뿐이므로 본 발명의 범위를 제한하는 것으로 생각되어서는 안됨을 알 것이고, 본 발명은 이하 첨부 도면을 이용하여 더 상세히 설명될 것이다.
도 1은 본 발명의 적합한 운영환경(operating environment)을 제공하는 아키텍처를 도시하는 도,
도 2는 도 1의 전 아키텍처에서 분산 방식으로 구현될 수 있는 애플리케이션을 위한 프로그래밍 모델을 도시하는 도,
도 3은 본 발명에 따른 스키마 스토어 및 스키마 서비스를 도시하는 도,
도 4는 본 발명에 따른 사용자 인터페이스 컴포넌트의 개략도,
도 5는 본 발명에 따라 복수의 이벤트 소스와 복수의 이벤트 싱크 사이에서 이벤트 알림을 제공하는 이벤트 시스템의 개략도,
도 6은 본 발명에 대하여 사용하기 위한 메시징 아키텍처의 개략도,
도 7은 본 발명에 대하여 사용하기 위한 기억장치 아키텍처의 개략도,
도 8은 본 발명에 대하여 사용하기 위한 디렉토리 아키텍처의 개략도,
도 9는 도 8의 디렉토리 아키텍처를 사용하는 예시적인 통신 흐름을 도시하는 도,
도 10은 본 발명에 대하여 사용하기 위한 보안 서비스의 개략도,
도 11은 프로파일 정보를 유지하기 위해 글로벌 식별자가 어떻게 사용되는가를 보여주는 데이터 구조를 도시하는 도,
도 12는 본 발명에 대하여 사용하기 위한 고급 방화벽 구성을 도시하는 도,
도 13은 소프트웨어 개발에 있어서 사용하기 위한 코드 관리 매니페스트를 도시하는 도.
A. 서설
본 발명은 더 우수한 인터넷 기반 협조 및 웹 사이트간 통신을 용이하게 하는 분산 네트워크 서비스 플랫폼을 포함하는 컴퓨터 프로그램 제품, 시스템, 및 방법으로까지 확대된다. 본 발명의 다양한 아키텍처 컴포넌트는, 이하 더 상세히 논의되는 바와 같이, 퍼스널 컴퓨터, 서버, 랩탑, 핸드-헬드 디바이스, 셀 폰 등과 같은 다양한 하드웨어 컴포넌트를 포함하는 다양한 전용 또는 범용 전 컴퓨팅 디바이스에서 분산될 수 있다.
본 발명의 범위내의 실시예는 또한 기억된 컴퓨터-실행가능한 명령어 또는 데이터 구조를 전하거나 갖기 위한 컴퓨터-읽기가능한 매체를 포함한다. 그러한 컴퓨터-읽기가능한 매체는 범용 또는 전용 컴퓨팅 디바이스에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예로서, 그러한 컴퓨터-읽기가능한 매체는 소망의 프로그램 코드 수단을 컴퓨터-실행가능한 명령어 또는 데이터 구조의 형식으로 전하거나 기억하도록 사용될 수 있고 범용 또는 전용 컴퓨팅 디바이스에 의해 액세스될 수 있는 RAM, ROM, EEPROM, CD-ROM, 또는 다른 광디스크 기억장치, 자기 디스크 기억장치 또는 다른 자기 기억장치 디바이스, 또는 임의의 다른 매체와 같은 물리적 기억장치 매체일 수 있다. 네트워크 또는 다른 통신 접속(하드와이어드, 무선, 또는 하드와이어드 또는 무선의 조합)을 통하여 컴퓨팅 디바이스로 정보가 전달될 때, 컴퓨팅 디바이스는 컴퓨터-읽기가능한 매체로서 접속을 적절하게 뷰잉한다. 따라서, 임의의 그러한 접속은 컴퓨터-읽기가능한 매체라 적절하게 불린다. 상기 조합은 또한 컴퓨터-읽기가능한 매체의 범위내에 포함되어야 한다. 컴퓨터-실행가능한 명령어는, 예를 들어, 임의의 범용 또는 전용 컴퓨팅 디바이스가 특정 함수 또는 함수 그룹을 수행하게 하는 데이터 및 명령어를 포함한다.
이러한 설명에 있어서, 본 발명의 일반적인 아키텍처는 아키텍처 절에서 우선 설명되는 바와 같이 구현될 수 있다. 그 후, 아키텍처의 몇몇 테크놀로지 컴포 넌트의 각각이 설명된다. 이들 절은 프로그래밍 모델, 스키마, 사용자 인터페이스, 이벤트, 메시징, 기억장치, 디렉토리, 보안, 및 코드 관리를 포함한다. 마지막으로, 아키텍처 및 테크놀로지 컴포넌트가 어떻게 고급 인터넷 통신 및 협조를 용이하게 하는지를 예시하는 시나리오 절에서 다양한 시나리오가 설명될 것이다.
B. 아키텍처
도 1은 본 발명이 구현될 수 있는 운영환경(100)을 개략적으로 도시한다. 클라이언트 디바이스(110)는 다양한 프로세싱 및 메모리 능력을 갖는다. 예를 들어, 클라이언트 디바이스(110)는 데스크톱 퍼스널 컴퓨터(PC)와 같은 고도의 데이터 프로세싱을 수행할 수 있는 "리치(rich)" 클라이언트(예를 들어, 리치 클라이언트;112) 및 셀룰러 폰 및 페이저와 같이 데이터 프로세싱을 더 적게 할 수 있는 "씬(thin)" 클라이언트(114)를 포함한다. 리치 클라이언트와 씬 클라이언트 사이의 차이점은 스펙트럼이라 이해된다; 예를 들어 스펙트럼의 중앙에 들어있는 많은 디바이스(핸드-헬드 또는 태블릿 PC)가 존재한다.
클라이언트의 프로세싱 기능 또는 디바이스 타입과 무관하게, 대부분의 클라이언트 디바이스는 온라인 또는 오프라인 상태에서 사용자에 의해 작동될 수 있다. 온라인에 있는 동안, 각각의 클라이언트 디바이스는 본 발명의 분산 컴퓨팅 서비스 플랫폼(115)을 경유하여 서버 연합(120)과 통신할 수 있다. 개념적으로, 서버 연합(120)은, 예를 들어, 법인 인트라넷(130)과 같은 하나 이상의 프라이빗 컴퓨터 네트워크뿐만 아니라 일반적으로 "인터넷"(125)이라 불리는 컴퓨터 시스템의 월드-와이드 네트워크를 포함한다. 연합내의 서버(즉, 인터넷(125)에서의 서버(140a, 140b) 및 법인 인트라넷(130)에서의 서버(140c, 140d)는 또한 플랫폼(115)을 경유하여 서로 통신한다.
개념적으로, 플랫폼(115)은 프로그래밍 모델 컴포넌트(135), 사용자 인터페이스 컴포넌트(140), 기억장치 컴포넌트(145), 디렉토리 컴포넌트(150), 이벤트 컴포넌트(155), 메시징 컴포넌트(160), 보안 컴포넌트(165), 스키마 컴포넌트(170), 및 코드 관리 컴포넌트(175)를 포함하는, 테크놀로지 및 서비스를 포함하는 몇몇 플랫폼 컴포넌트를 포함한다. 도 1에서 구별되는 것처럼 개념적으로 도시되었지만, 플랫폼 컴포넌트(135, 140, 145, 150, 155, 160, 165, 170, 및 175)의 각각은 전 서버 연합(120) 및 클라이언트 디바이스(110)를 통하여 분산될 수 있다. 더 나아가, 플랫폼 컴포넌트의 다수는 클라이언트 디바이스(110) 및 서버 연합(120)에 서비스를 제공한다. 각각의 플랫폼 컴포넌트는 화살표(180)에 의해 나타내어진 바와 같이 다른 플랫폼 컴포넌트에 소결합되어(loosely-coupled) 있고, 플랫폼(115)이 통합 테크놀로지 및 서비스를 제공할 수 있게 한다. 지원하는 서비스 및 플랫폼 컴포넌트의 통합과 함께, 플랫폼(115)의 분산되는 성질은 본 발명의 고급 특성 및 이점에 기여하고 용이하게 한다.
클라이언트(110) 및 서버 연합(120)의 서버(140)는, 어느 정도의 자치를 유지하는 동안, 이하 더 상세히 논의되는 스키마 플랫폼 컴포넌트(170) 및 메시징 플랫폼 컴포넌트(160)에 의해 제공되는 바와 같이 전 트랜스포트-독립 메시징 기반구조에서 공통 스키마를 사용하여 의미적 통신 및 정보 교환을 통하여 통합된다. 양방향성의 화살표(190)는 서버와 클라이언트 사이에 일어나는 이러한 통신을 표시한다. 양방향성의 통신은 클라이언트 디바이스(110)가 서버 연합(120)으로부터 읽고, 서버 연합에 쓰고, 서버 연합과 대화하게 한다. 본 발명은 스키마에 따라 양방향성으로 데이터를 통신할 수 있는 임의의 통신 메카니즘을 사용하여 구현될 수 있다. 일예에 있어서, 통신은 이름/값 페어의 통신을 가능하게 하는 확장가능 마크업 언어("XML")를 통하여 일어난다.
어떤 경우에 있어서, 클라이언트 디바이스(110)와 서버 연합(120) 사이의 통신은 또한 단방향 또는 "읽기-전용"일 수 있다. 이러한 단방향 통신은 오늘날 인터넷상에서 통신의 지배적인 형식이다. "읽기-전용" 통신의 이러한 타입에 있어서, 퍼블리셔가 웹 페이지를 생성하고 출판한 후에, 인터넷은 사용자가 페이지상의 정보를 읽게 하는 프리젠테이션 툴로 본질적으로 이용될 수 있다. 이러한 프리젠테이션을 허용하는 테크놀로지는 무선 디바이스에 통신을 허용하는 무선 애플리케이션 프로토콜("WAP")을 포함한다. 또한, 하이퍼텍스트 마크업 언어("HTML")라 불리는 웹 페이지 포맷은 네트워크 사이트로부터 다운로딩될 정보를 허용한다. 그 후, 정보는 파싱(parsing)되고 렌더링되어 클라이언트 디스플레이상에 제시된다. 그러나, 본 발명의 플랫폼(115)은 리치, 대화형, 양방향성 통신을 허용하도록 종래의 웹 프리젠테이션 모델을 확대한다.
플랫폼(115)은 연합(120)내의 서버(140)가 협력하여 정보를 공유 및/또는 기능을 수행하게 한다. 각각의 서버가 스스로 정보를 수집 및 컴파일해야 한다기보다, 대신에 서버는 효율적인 분업을 구현하도록 정보가 수월하게 이용될 수 있는 또 다른 서버의 서비스에 의존할 수 있다. 그 후 사용자는 리치 정보를 생산하기 위하여 서버 연합에서 일어난 모든 복잡한 서버간 통신을 걱정해야만 할 필요없이 리치 정보를 받는다. 예를 들어, 서버 연합(120)에서의 서버(140)는 하나의 서버로부터의 주식 시세가 클라이언트 디바이스(110)의 사용자 인터페이스의 일부분에 디스플레이되게 하고, 다른 하나의 서버로부터의 뉴스 기사가 클라이언트 디바이스의 사용자 인터페이스의 다른 일부분에 디스플레이되게 하고, 또 다른 하나의 서버로부터의 인스턴트 메시지가 클라이언트 디바이스의 사용자 인터페이스의 또 다른 일부분에 디스플레이되게 하는 정보를 교환할 수 있다.
서버 연합(120)내의 서버(140)는 스키마 플랫폼 컴포넌트(170)에 의해 제공되는 표준화된 데이터 구조 또는 스키마를 사용하여 통신하고 정보를 공유한다. 스키마는 서버 사이에서 정보를 단지 교환만 한다기보다 서버와 애플리케이션 사이에 더 의미적인 대화를 허용한다. 의미의 이러한 인식은 서버가 정보의 인식된 의미에 근거하여 기능을 수행하게 한다. 애플리케이션이 정보를 예를 들어 소정 엔티티의 주소와 같은 의미로서 인식하면, 애플리케이션은 그 인식된 의미에 근거한 특정 기능을 수행할 수 있다. 예를 들어, 애플리케이션은 주소 정보를 갖는 소정 엔티티에 대응하는 템플릿의 주소 필드에 자동으로 기입할 수 있다. 또한 애플리케이션은 주소내에 집 코드 또는 상태가 결손(missing)되어 있는지를 검출할 수 있고 따라서 사용자의 개입없이 모든 주소 필드가 자동으로 기입될 수 있도록 결손 정보에 대해 다른 서버에 자동으로 문의(query)할 수 있다. 따라서, 각각의 서버가 데이터와 연관된 의미를 인식하고 그 후 사람의 개입을 요구함이 없이 그 정보에 대해 액팅할 수 있다는 점에서 지능적이기 때문에 서버 사이의 협력은 더 생산적이다.
C. 프로그래밍 모델
도 2는 플랫폼(115)의 멀티-티어(tier) 프로그래밍 모델 컴포넌트(135)를 도시한다. 프로그래밍 모델은 애플리케이션(200)이 도 1의 클라이언트 디바이스(110)와 서버 연합(120) 사이에서 디그리를 변화시키도록 어떻게 분산될 수 있는가를 설명한다. "애플리케이션"은 기능을 수행하는 소프트웨어의 바디로서 정의되고 웹 사이트를 포함할 수 있다. 분산 애플리케이션에 있어서, 애플리케이션의 컴포넌트는 다른 컴포넌트가 웹 사이트의 부분인 동안 클라이언트 디바이스상에 기억될 수 있다. 일반적으로, 애플리케이션(200)은 페이지 컴포넌트(210), 에미세리 컴포넌트(220), 및 피에프돔 컴포넌트(230)를 포함하는 많은 애플리케이션 컴포넌트로 이루어져 있다. 페이지 컴포넌트(210)는 적합한 클라이언트 디바이스(110)에 대하여 사용자 인터페이스 또는 경험을 투사하도록 제어를 호스팅한다. 에미세리 컴포넌트(220)는 클라이언트를 서버 연합에 포괄적으로 표시하고, 따라서, 클라이언트와 서버 연합 사이에서 에미세리로서 역할한다. 피에프돔 컴포넌트(230)는 애플리케이션(200)의 중대한 자원을 구성하는 라이브 데이터를 대부분 직접 제어한다. 단일 애플리케이션은 변화하는 수의 이들 컴포넌트(예를 들어, 하나 이상의 페이지 컴포넌트)를 가질 수 있다. 또한, 어떤 애플리케이션은 모든 컴포넌트를 갖지는 않을 수 있다.
클라이언트의 기능에 의존하여, 페이지 및 에미세리 컴포넌트는 클라이언트 또는 서버 연합상에서 실행될 수 있다. 프로세싱 기능을 거의 또는 전혀 갖지 않 는 씬 클라이언트에 있어서, 페이지 및 에미세리 컴포넌트는 서버 연합상에서 실행될 가능성이 더 많을 것이다. 데스크톱 퍼스널 컴퓨터(PC)와 같은, 더 우수한 프로세싱 기능을 갖는 리치 클라이언트에 있어서, 페이지 및 에미세리 컴포넌트는 클라이언트상에서 실행될 가능성이 더 많을 수 있다.
이들 애플리케이션 컴포넌트(페이지, 에미세리, 및 피에프돔)의 각각은 하나의 컴포넌트로부터 다른 하나로, 메시징 컴포넌트(160)를 통하여, 비동기 메시지를 송신 및 수신하기 위해 사용되는 로직(240; 즉, 컴퓨터-실행가능한 명령어)의 바디를 포함한다. 예를 들어, 페이지 레벨 로직(240a)은 메시징 큐(250a)를 통하여 페이지 컴포넌트(210)로부터 에미세리 컴포넌트(220)로 메시지를 비동기 송신하도록 사용된다. 에미세리 레벨 로직(240b)은 메시징 큐(250b)를 통하여 에미세리 컴포넌트(220)로부터 페이지 컴포넌트(210)로 메시지를 비동기 송신하도록 사용된다. 또한 에미세리 레벨 로직(240b)은 메시징 큐(250c)를 통하여 에미세리 컴포넌트(220)로부터 피에프돔 컴포넌트(230)로 메시지를 비동기 송신하도록 사용된다. 피에프돔 레벨 로직(240c)은 메시징 큐(250d)를 통하여 피에프돔 컴포넌트(230)로부터 에미세리 컴포넌트(220)로 메시지를 비동기 송신하도록 사용된다. 따라서, 비동기 정보 교환은 애플리케이션(200)의 페이지, 에미세리, 및 피에프돔 컴포넌트 사이에서 일어난다. 메시징 컴포넌트(160)에 따라, 메시지 큐는 컴포넌트 사이에서 메시지를 송신하기 위한 신뢰할만한 채널을 제공하고 다양한 송신 시맨틱을 지원한다(즉, 정확히 한번 보증 전달, 트랜잭션 전달, 및 무보증 전달). 메시지는 스키마(예를 들어, XML 스키마)를 통하여 정의된다.
또한 각각의 애플리케이션 컴포넌트의 내의 로직(240)의 바디는 제어(260)를 호스팅하도록 사용된다. 일반적으로, 제어는 프로그램 컴포넌트의 기능에 의해 액세스될 수 있고 그 부분일 수 있는 기능을 표시한다. 예를 들어, 페이지 레벨 로직(240a)은 제어(260a)를 호스팅하고, 에미세리 레벨 로직(240b)은 제어(260b)를 호스팅하고, 피에프돔 레벨 로직(240c)은 제어(260c)를 호스팅한다. 각각의 제어(260)는 호출가능한 방법, 동기적으로 읽혀지거나 쓰여질 수 있는 프로퍼티, 및 비동기적으로 파이어링할 수 있는 이벤트를 노출(expose)하고 페이지, 에미세리, 및/또는 피에프돔 컴포넌트내의 로직이 실행하게 한다. 일반적으로, 제어에 의해 트리거링되는 이벤트는 오브젝트상의 방법의 호출과 같은 낮은-레벨 이벤트이다. 따라서, 메시지가 컴포넌트에 의해 수신될 때, 그것은 컴포넌트내의 코드가 실행하게 하는 이벤트를 발생시킨다.
페이지 컴포넌트(210)는 사용자 인터페이스 또는 경험을 투사하기 위해서 제어(260a)를 직접 동기적으로 조작하기 위해 페이지 레벨 로직(240a)을 사용한다. 클라이언트의 사용자 인터페이스 기능에 의존하여, 페이지 컴포넌트는 클라이언트와 양립가능한 페이지의 특정 버전으로 호출을 조용히 리디렉팅(redirect)할 수 있다. 예를 들어, 하나의 페이지는 리치 클라이언트에 적합할 수 있고, 다른 페이지는 폰 또는 다른 그러한 디바이스와 같은 씬 클라이언트에 대한 사용에 적합할 수 있다. 페이지 컴포넌트(210)는 클라이언트의 유니폼 리소스 로케이터 또는 URL을 사용함으로써 클라이언트의 신원을 인식할 수 있고 따라서 페이지의 적합한 버전으로 리디렉팅할 수 있다. 그러나, 페이지 버전과 무관하게 사용자 인터페이스는, 사용자 인터페이스 컴포넌트(140)와 관련되어 이하 논의되는 바와 같이 어떤 특성이 페이지의 더 높은 리치 버전에서 존재하거나 또는 더 완전히 개발될 것이더라도, 넓은 범위의 전 클라이언트 디바이스에서 일관되게(consistent) 보일 것이다.
또한 페이지 컴포넌트는 클라이언트에 이용될 수 있는 사용자 인터페이스와 무관하게, 페이지 컴포넌트를 구현할 디바이스의 프로세싱 기능에 의존하여 다른 페이지 버전을 호출할 수 있다. 예를 들어, 페이지 컴포넌트가 높은 프로세싱 파워를 갖는 서버 또는 클라이언트 퍼스널 컴퓨터상에 구현될 것이라면, 페이지 컴포넌트는 페이지와의 확대적인 사용자 대화를 허용하는 리치 제어 페이지로 리디렉팅할 수 있다. 또 한편, 페이지 컴포넌트가 씬, 낮은 로버스트 클라이언트상에 구현될 것이라면, 페이지 컴포넌트는 사용자가 페이지와 대화하게 하는 제어 특성을 포함한다 하더라도 전형적으로 거의 포함하지 않는 페이지의 HTML-전용 버전으로 리디렉팅할 수 있다.
에미세리 컴포넌트(220)는 제어(260b)와 동기적으로 대화할 수 있는 로직(240b)의 바디를 캡슐화한다. 또한 로직(240b)은 클라이언트 디바이스 타입이 어떠한 것이든간에 표준화된 방식으로 클라이언트를 서버에 추상적으로 표시하도록 설계되어 있다. 에미세리 컴포넌트는 피에프돔 컴포넌트에 의해 출판된 읽기-전용 데이터에 액세스할 수 있고 그러한 데이터를 복제 데이터 기억장치(271)내에 기억한다. 또한 에미세리 컴포넌트는 사용자마다의 읽기/쓰기(R/W) 데이터 기억장치(272)내에 기억되어 있는 장바구니 데이터와 같은 사용자마다의 R/W 데이터를 포함한다. 로직(240b)의 바디는 메시지 큐(250a 또는 250d)로부터 들어오는 메시지에 응답하여 실행될 수 있다.
피에프돔 컴포넌트(230)는 라이브 데이터 기억장치(280)내에 기억된 라이브 데이터를 논리적으로 "소유"하는 로직(240c)의 바디를 캡슐화한다. 로직(240c)의 바디는 피에프돔 컴포넌트와 연관된 에미세리 컴포넌트(220)와 같은 에미세리 컴포넌트로부터 수신된 메시지에 응답하여 실행된다. 피에프돔 컴포넌트(230)는 서비스로의 액세스를 요청하는 임의의 에미세리 컴포넌트상에서 보안 서비스를 수행한다.
애플리케이션에서의 각각의 컴포넌트는 명시적인 사용자 및 세션 상태에 관한 상태 정보를 관리한다. 따라서, 각각의 컴포넌트는 그러한 사용자 및 세션 상태 정보의 복제를 위해 사용되는 오브젝트를 지원한다. 이러한 상태 정보는 그러한 상태 정보의 통신을 지원하는 비동기 메시징을 통하여 애플리케이션내의 다른 컴포넌트와 공유될 수 있다. 따라서, 각각의 컴포넌트는 세션에서의 임의의 소정 포인트에서 사용자 인터페이스 상태를 인지하게 될 수 있다. 또한, 각각의 컴포넌트는 사용자의 프레퍼런스를 인지하게 될 수 있다.
프로그래밍 모델 컴포넌트(135)의 이점이 이제 설명될 것이다. 애플리케이션내의 컴포넌트는 비동기 메시징을 할 수 있다. 따라서, 컴포넌트는 메시지를 수신하기 위해서 정보를 명시적으로 요청하도록 요구되지는 않는다. 또한, 컴포넌트는 그러한 정보를 포함하는 메시지를 송신하기 위해서 정보에 대한 명시적 요청을 수신하도록 요구되지는 않는다. 따라서, 프로그래밍 모델은 사용자가 웹 사이트를 명시적으로 리프레싱해야 함이 없이 페이지 컴포넌트로의 메시지의 송신(및 따라서 사용자 인터페이스의 업데이트)을 지원한다. 따라서, 페이지는 페이지 컴포넌트가 에미세리 컴포넌트로부터 메시지를 수신하는 때 페이지가 자동으로 업데이트되는 비동기 사용자 인터페이스를 표시할 수 있다. 또한, 그러한 상황에 있어서, 라이브 데이터는 피에프돔을 통하여 이용될 수 있기 때문에 에미세리가 복제 데이터에 액세스하는 것이 반드시 필요한 것은 아닐 수 있다.
더하여, 프로그래밍 모델은 정의된 이벤트의 발생시 비동기 파이어링할 수 있는 제어를 포함하고, 따라서 컴포넌트내의 로직이 실행하게 한다. 이러한 로직은 이벤트에 응답하여 다른 컴포넌트에 비동기 메시지를 송신하고 따라서 애플리케이션내의 임의의 컴포넌트가 정의된 이벤트에 응답하여 실행하게 한다. 따라서, 애플리케이션은 고도로 이벤트 구동된다. 이들 이벤트는 애플리케이션의 임의의 컴포넌트에서 비동기 실행될 방법을 구동시킬 수 있다.
예를 들어, 피에프돔 컴포넌트는 소정 단어를 포함하는 임의의 새로운 기사가 데이터베이스에 부가되는 이벤트에서 파이어링하도록 구성되어 있는 제어를 호스팅할 수 있다. 이벤트의 트리거링은 피에프돔이 에미세리 컴포넌트를 통하여 페이지 컴포넌트로 비동기 메시지를 송신하게 할 수 있다. 이러한 비동기 메시지에 응답하여, 페이지 컴포넌트는 클라이언트상에 프리젠테이션을 위해 알림 메시지를 렌더링할 수 있고 그로써 사용자에게 새로운 기사를 알려준다. 예를 들어, 클라이언트 디바이스가 씬 클라이언트라면 사용자 인터페이스는 그러한 새로운 기사의 존재를 나타내는 작은 알림창을 포함할 수 있다. 클라이언트 디바이스가 리치 클라이언트라면, 사용자 인터페이스는 스크린상에 전체로 새로운 기사를 디스플레이할 수 있다. 또한, 페이지, 에미세리, 또는 피에프돔 컴포넌트의 임의의 또는 모든 것은 소정 단어를 포함하는 기사에 또한 관심있는 동료에게 기사를 포워딩하는 이-메일의 작성과 같이 동일한 이벤트에 근거하여 다른 액션을 맡을 수 있다. 따라서, 프로그래밍 모델은 복잡한 이벤트 구동 애플리케이션을 인에이블한다.
또한, 프로그래밍 모델은 클라이언트와 서버 연합 사이에서 이들 컴포넌트의 유연한 위치결정을 용이하게 하고, 애플리케이션의 오프라인 사용뿐만 아니라 온라인 사용을 허용한다. 예를 들어, 애플리케이션은 오프라인 또는 온라인 실행을 허용하기 위해서 구축될 수 있다. 이것은 페이지 컴포넌트가 클라이언트상에 또한 호스팅된 에미세리 컴포넌트와 직접 통신하면서 그들 페이지 컴포넌트가 클라이언트상에 직접 호스팅되게 함으로써 행해질 수 있다. 오프라인 때, 애플리케이션은 라이브 데이터 기억장치(280)내의 라이브 데이터 대신에 복제 데이터 기억장치(271)내의 복제 데이터에 액세스한다. 온라인이 되고 나면 액세스는 복원되고, 에미세리 컴포넌트는 피에프돔에 큐잉된 업데이트를 송신하고, 복제 데이터는 피에프돔 컴포넌트에 의해 관리되는 라이브 데이터의 현재 상태를 반영하도록 업데이트된다.
또한 애플리케이션은 모든 컴포넌트, 페이지, 에미세리, 및 피에프돔이 서버 연합상에 호스팅되도록 구축될 수 있다. 이러한 경우에 있어서, 클라이언트는 페이지, 에미세리, 및/또는 피에프돔 컴포넌트의 서비스에 액세스하기 위해서 서버 연합과 온라인되어야만 한다.
더하여, 애플리케이션의 어떤 부분은 오프라인일 때 이용될 수 있고(이하, "오프라인 부분") 애플리케이션의 다른 부분은 클라이언트가 온라인일 때만 이용될 수 있다(이하, "온라인 부분"). 애플리케이션의 오프라인 컴포넌트를 인에이블하는 페이지 및 에미세리 컴포넌트는 클라이언트에 의해 호스팅되는 반면, 애플리케이션의 온라인 부분을 인에이블하는 페이지 및 에미세리 컴포넌트는 서버 연합에 의해 호스팅된다.
따라서, 본 발명의 분산 컴퓨팅 서비스 플랫폼(115)의 많은 다른 테크놀로지 컴포넌트는 프로그래밍 모델 컴포넌트(135)에 따라 구현될 수 있다.
D. 스키마
더 우수한 인터넷 기반 협조 및 웹 사이트간 통신을 가능하게 하는 하나의 방법은 데이터의 더 의미적인 통신을 통해서이다. 이러한 의미적 또는 지능적 통신은 단지 데이터보다 더 많은 것을 제공하고, 또한 데이터가 통신되고 있는 이유 및/또는 내용의 추론을 공급한다. 이것은 표준 방식으로 데이터를 구조화함으로써 또는 표준 데이터 구조, 프로토콜, 통신 트랜스포트, 및 다른 구조화된 데이터 교환을 통해서와 같은 "스키마"에 의해서 성취될 수 있다. 클라이언트 디바이스(110)에, 서버(140)내에, 및/또는 기억장치 컴포넌트(145)에 따라 기억된 정보는 스키마에 따라 기억될 수 있다. 스키마는 또한 서버 연합(120)내의 서버 사이, 서버 연합(120)과 클라이언트(110)의 사이, 및 플랫폼 컴포넌트 사이에서 정보를 통신할 때 사용된다. 더하여, 도 2의 애플리케이션의 다양한 컴포넌트(210, 220, 및 230) 사이에서 통신되는 비동기 메시지는 스키마를 사용하여 통신될 수 있다.
많은 상황에 있어서, 사용자는 작동 조건에서 리포트를 생성하고, 경과를 분석하고, 필요한 것을 예측하고, 변경을 검출하도록 멀티플 애플리케이션 및 데이터 소스로부터의 데이터를 사용하기를 원한다. 불행하게도 이러한 타입의 데이터는, 이용될 수도 있다 하더라도, 각각의 애플리케이션이 전형적으로 그 자신의 스키마의 세트를 사용할 때 완전히 다른 포맷으로 곧 발견된다. 다시 말하면, 애플리케이션이 콘택트 및 시간과 같은 유사한 데이터 타입을 기술한다 하더라도 이들 데이터 타입은 다른 어휘를 사용하기도 하고 애플리케이션으로부터 애플리케이션으로 다른 속성을 갖는다. 따라서, 다른 스키마를 따르는 애플리케이션이 통신하게 하기 위해서 특수화된 번역 또는 임포트/익스포트 기능이 통상 필요하다.
서버 연합(120)에서의 협조 및 통신을 촉진하기 위해서, 본 발명의 스키마 및 스키마 서비스 컴포넌트는 날짜, 주소, 프리스크립션, 쇼 타임, 제품 설명, 가격, 영수증, 프레퍼런스, 진찰 기록, 영화 리뷰, 또는 다른 관련 데이터 타입과 같은 다양한 데이터 구조에 대하여 서버 연합(120)상에서의 대화 및 협조를 위한 파운데이션을 제공한다.
범용 스키마는 다른 애플리케이션이 다른 요구 및 레거시를 가질 것이고 크로스-플랫폼 애플리케이션이 지원될 필요가 있을 것이기 때문에 아마도 현실적이지 않다. 대신에, 본 발명의 스키마 컴포넌트(170)는 대부분의 애플리케이션이 공통으로 갖고 있을 것만을 정의하는 최소 공통 스키마인 "코어 스키마"를 정의하려 한다. 코어 스키마는 확장가능한 것이여서, 데이터 대화 및 협조를 용이하게 하는데 유용한 중요한 데이터 엔티티를 기술하는 새로운 스키마가 정의되어 이하 설명되는 코어 스키마에 추가될 수 있다. 또한, 스키마는 도 1의 클라이언트 디바이스 및 서버 연합의 운영체제 또는 사용자 인터페이스를 포함하는 네트워크와 몇몇 레이어에서 기능할 수 있다.
코어 스키마의 몇몇 타입은 (ⅰ)베이스 타입, (ⅱ)소셜 타입, (ⅲ)비즈니스 타입, (ⅳ)시스템 타입, 및 (ⅴ)애플리케이션 타입을 포함한다.
(ⅰ)베이스 타입은 다른 타입에 대하여 베이직 빌딩 블록으로서 사용된다. 전형적인 베이스 타입은 오브젝트, 아이템, 컨테이너, 데이터베이스, 폴더, 메시지, 텍스트, 또는 다른 베이스 데이터 구조와 같은 타입을 포함한다. 다양한 애플리케이션에 의해 사용되는 다양한 스키마의 베이스 타입 스키마로의 번역은 이하 설명되는 번역 필터에 의해 성취될 수 있다.
(ⅱ)소셜 타입은 일상적인 태스크 및 대화에서 사용되는 아이템을 표시 또는 기술한다. 전형적인 소셜 타입은 콘택트, 프로파일, 캘린더, 태스크, 시간, 위치, 파이낸스, 및 다른 소셜하게 교환된 정보 또는 식별과 같은 아이템을 포함한다. 베이스 타입과 마찬가지로, 번역 필터가 생성되어 비양립성의 데이터 구조를 소셜 타입 스키마로 변모시킬 수 있다.
(ⅲ)비즈니스 타입은 비즈니스 환경 및 비즈니스-비즈니스(B2B) 트랜잭션에서 공통의 것을 기술하도록 사용된다. 전형적인 비즈니스 타입은 제품, 어카운트, 고객, 종업원, 배급업자, 소매상, 공급자, 및 다른 비즈니스 데이터와 같은 타입을 포함한다.
(ⅳ)시스템 타입은 시스템을 관리하는 데 사용되는 정보의 구조를 정의한다. 전형적인 시스템 타입은 폴리시, 스케쥴, 서비스, 디바이스, 및 다른 시스템 관련 정보와 같은 타입을 포함한다.
(ⅴ)애플리케이션 타입은 애플리케이션 및 서비스의 구조를 정의한다. 전형적인 애플리케이션 타입은 애플리케이션 매니페스트, 어셈블리 매니페스트, 및 COM+ 타입 기술과 같은 타입을 포함한다. 시스템 및 애플리케이션 타입은 시스템 및 하드웨어 구성에 특정한 정보에 근거한다.
또한 스키마 컴포넌트(170)는 스키마 정보 및 데이터를 기억, 검색, 문의, 출판, 및 공유하도록 사용되는 몇몇 스키마 서비스(292)를 제공한다. 도 3을 참조하면, 스키마 스토어(290)는 스키마 정보가 수집되고 공유되는 위치이다. 예를 들어, 스키마 스토어(290)는 알려진 스키마와 코어 스키마 타입 사이의 맵핑 및 코어 스키마 타입의 기술을 포함할 수 있다. 본 발명의 일실시예에 있어서, 스키마는 XML 스키마이고 스키마 기술 언어에 의해 스키마 스토어(290)에서 기술된다. (스키마 기술 언어의 일예는 본 발명과 사용하기 위해 확장될 수 있는 XSD이다). 스키마 스토어(290)는 (이하 더 상세히 설명되는) 본 발명의 기억장치 컴포넌트(145)의 인스턴스이다. 따라서, 스키마 스토어(290)는 전 서버 연합(120)을 통하여 분산될 수 있다. 스키마 스토어(290)는 이 위치에 스키마를 기억함으로써 애플리케이션이 스키마를 기억할 수 있는 유일한 장소는 아니지만, 애플리케이션은 스키마 서비스(292) 및 그들을 사용하는 애플리케이션이 그 스키마를 발견하고 그것으로 작업할 수 있을 것을 보증할 수 있다. 또한, 애플리케이션은 이하 더 상세히 설명되는 바와 같이 스키마 스토어(290) 및 스키마 서비스(292)를 사용하여 스키마를 로컬하게 복제 및 기억하고 그들을 업데이트할 수 있다. 스키마 스토어(290) 및 스키마 서비스(292)로의 액세스는 보안 컴포넌트(165)에 의해 제공되는 다양한 보안 인증, 권한부여, 및 방화벽 서비스에 의해 제어될 수 있다.
일반적으로 스키마 서비스(292)는 스키마 정보를 기억, 검색, 문의, 및 출판하도록 애플리케이션을 위한 메카니즘인 스키마 등록 서비스를 포함한다. 예를 들어, 스키마 스토어(290)는 예를 들어 스키마 등록 API(애플리케이션 프로그래밍 인터페이스)를 포함할 수 있는 예를 들어 스키마 등록 서비스를 경유하여 다양한 스키마를 수집 및 참조할 수 있다. 스키마 등록 서비스는 애플리케이션이 스키마 스토어로부터의 스키마 정보를 제거 또는 추가하게 한다.
또한 스키마 서비스(292)는 관리자, 운영체제, 또는 다른 백그라운드 스키마 모더레이터(moderator)가 스키마를 업데이트하게 하는 스키마 업데이트 서비스를 포함할 수 있다. 또한 스키마 서비스(292)는 인스턴스 데이터에서의 레퍼런스를 따름으로써 스토어내에 지속되지 않는 스키마를 페칭(fetch)하기 위해서 분산 스키마 서비스를 포함할 수 있다. 이러한 서비스를 용이하게 하기 위해서, 스키마는 기억장치 컴포넌트(145)에 따라 전 서버 연합(120)을 통하여 기억될 수 있고 이벤팅 컴포넌트(155)는 새로운 스키마가 출판되는 때를 애플리케이션에게 알려주도록 사용될 수 있고, 따라서 스키마의 글로벌 분산을 허용한다. 스키마 서비스(292)는 스토어에서의 맵핑 및 스키마의 일관성(consistency) 및 무결성을 유지하기 위해서 스키마 타당성검사(validation) 서비스를 더 포함할 수 있다. 이러한 서비스는 스키마 기술 언어의 구조적 타당성검사, 중복(redundant) 및 상반(conflicting) 엔트리에 대한 검사, 및 스키마 사이의 연관의 일관성 검증을 제공한다. 또한 스키마 스토어(290)는 스키마에 대한 변경의 알림을 제공하기 위해서 본 발명의 이벤팅 컴포넌트(155)에 의존할 수 있다. 스키마 스토어(290)는 또한 업데이트, 이벤트, 서브스크립션, 및 알림을 분산하기 위해서 트랜스포트로서 본 발명의 메시징 컴포넌트(160)에 의존할 수 있다.
예를 들어, 로컬 스키마 스토어는 코어 타입 및 스키마를 업데이트하기 위해서 스키마 업데이트 서비스에 서브스크라이빙할 수 있다. 하나의 구성은 관심있는 사용자가 어떤 관련 스키마 변경이 일어날 때를 검출하게 하는 스키마 이벤트를 위한 등록을 지원하도록 오브젝트 매니저를 사용한다. 로컬 스키마 스토어는 업데이트를 위한 하나 이상의 소스에 서브스크라이빙할 수 있다. 업데이트 서비스는 사람 및 시간과 같은 코어 타입, 및 이들 코어 타입으로의 MAPI, vCard, LDAP, 및 WMI와 같은 공통 스키마의 맵핑을 스키마 스토어에 미리 거주시킨다. 기업은 그들 조직 네트워크내에 스키마 스토어를 유지하기 위해서 유사한 업데이트 서비스를 호스팅할 수 있다.
(또한 스키마 서비스(292)의 부분인) 스키마 변환 서비스는 의미를 공유하도록 다른 스키마를 사용하는 애플리케이션을 인에이블한다. 예를 들어 스키마 변환 서비스는 스키마 어댑터 서비스, 스키마 인식기 서비스, 및 스키마 맵핑 서비스를 포함한다. 스키마 변환 서비스는 데이터를 인식하도록 공유된 메카니즘을 제공하고 하나의 스키마에서의 데이터를 다른 하나의 스키마로 변환함으로써 애플리케이션이 새로운 스키마를 동적으로 지원하게 한다. 스키마 변환 서비스는 데이터를 인식하여 하나의 스키마에서의 데이터를 다른 하나의 스키마에서의 데이터로 변환 하도록 공유된 메카니즘을 제공함으로써, 애플리케이션이 광범위한 스키마를 이해하는 것을 더 쉽게 하고, 전 애플리케이션에서 로버스트니스 및 일관성을 증가시키고, 애플리케이션이 새로운 스키마를 동적으로 지원하게 한다.
예를 들어, 스키마 어댑터 서비스는 XML과 같은 표준화된 언어로 구조화되지 않는 데이터와 작업하는 것을 가능하게 한다. 스키마 어댑터 서비스는 비-XML 데이터를 수신하고 그것을 XML 데이터 또는 스키마와 통신하도록 사용되는 데이터의 임의의 다른 타입으로 변환한다.
스키마 인식기 서비스는 데이터를 가지고 무엇을 할지를 애플리케이션이 알도록 데이터 인스턴스의 스키마 타입을 식별한다. 스키마 인식기 서비스는 입력으로서 XML 데이터 또는 평문을 수신한다. XML에 대하여, 스키마 인식기 서비스는 가능성의 리스트를 좁히도록 XML 네임스페이스를 사용하여, 스키마 타입을 결정하도록 표준 기억장치 문의 서비스(294)를 사용하여 스키마 스토어(290)에 문의한다. 평문으로부터 스키마 타입을 추론하기 위해서, 스키마 인식기 서비스는 스키마 스토어(290)를 순차적으로 사용할 수 있는 자연 언어 서비스에 의존한다. 스키마 타입이 알려지고 나면, 애플리케이션은 그 자신의 사용자 인터페이스를 제공하거나 시스템-와이드 사용자 인터페이스를 인에이블하도록 이러한 정보를 사용할 수 있다.
스키마 맵핑 서비스는 하나의 스키마에서의 XML 데이터를 취하고, 스키마 스토어(290)내에 정의된 맵핑에 근거하여 데이터를 변환하고, 다른 하나의 스키마의 XML 표시에서의 데이터를 리턴한다. 일 구성에 있어서 스키마 맵핑 서비스는 스키마 어댑터 서비스와 종종 결합하여, 쓰기 임포트 또는 익스포트 기능을 갖는 애플리케이션에 의해 사용된다.
스키마 스토어(290)내에 지속된 스키마는 특정 스키마 타입을 표시 또는 액트온하도록 사용될 수 있는 애플리케이션, 스크립트, 컴포넌트, 방법 바인딩, 또는 데이터 소스를 기술할 수 있다. 예를 들어, 애플리케이션은 특정 스키마 타입의 데이터를 디스플레이하도록 표준 사용자 인터페이스를 제공할 수 있고, 반면에 다른 하나의 애플리케이션은 그 데이터상에 작동하도록 비즈니스 로직을 가질 수 있다. 어느 액션이 소정 시나리오에 적합한가는 콘텍스트의 사용자 프레퍼런스에 의존한다. 이들 스키마 서비스는 (이하 설명되는) 액션 메뉴, 자동-완성, 및 스마트 클립보드 드래그 앤 드롭과 같은 몇몇 최종 사용자 특성을 가능하게 하도록 사용자 인터페이스 컴포넌트(140)와 협력한다.
액션 메뉴 특성은 임의의 애플리케이션에서 일 데이터상에 이용가능한 액션의 선택을 제시한다. 일 구성에 있어서, 이들 이용가능한 액션은 사용자가 선택 또는 무시하게 하는 "팩토이드" 방식으로 제시된다. 애플리케이션은 특정 데이터 타입과 관련된 등록된 액션에 대하여 기억장치 문의 서비스(294)를 사용하여 스키마 스토어(290)에 문의한다. 검색된 액션은 액션 메뉴를 발생시키도록 사용된다. 예를 들어, 사용자가 주소상을 클릭할 때, 애플리케이션은 타입 "주소"에 대하여 문의하고 스키마 스토어(290)는 콘텍스트 메뉴에 거주하는 "엔벨로프(envelope)를 프린트" 또는 "이 주소를 맵핑"으로서 액션을 리턴한다. 액션 메뉴 API는 개발자가 그들 애플리케이션에서 이러한 메뉴 및 다른 애플리케이션-특정 액션을 노출하 게 한다. 스키마 스토어내에 각각의 코어 타입에 대하여 미리-거주하는 액션 메뉴는 운영체제, 인터넷 브라우저, 및 다양한 액티브 애플리케이션에서 노출될 수 있다.
또한 스키마 서비스는 가능한 값을 리스팅하는 데이터 소스로부터의 선택을 제시함으로써 사용자가 웹 형식 및 문서에서 데이터 필드를 다 기입하는 것을 더 쉽게 하는 현행 "자동-완성" 특성을 강화할 수 있다. 사용자에게 제시된 가능한 값의 리스트는 스키마 스토어(290)에서의 등록에 근거할 수 있다. 예를 들어, 친구를 파티에 초대하기 위해서 "Evite" 또는 "electronic invitation"을 다 기입할 때, 이메일 주소 필드는 스키마 스토어(290)에서의 등록을 통하여 이메일 주소 프로퍼티에 바인딩된 사용자 콘택트 리스트로부터 주소 리스트를 제공한다. 이러한 동일한 기능은 레터, 인보이스, 스프레드시트, 메일링 리스트, 데이터베이스, 또는 다른 문서에서 자동-완성을 제공하도록 다른 애플리케이션을 통해 노출될 수 있다. 값의 동일한 리스트는 이러한 기능을 노출하도록 선택하는 임의의 애플리케이션에서 디스플레이된다.
스마트 클립보드 드래그 앤 드롭은 다른 스키마를 사용하는 애플리케이션 사이에서 데이터가 교환되게 하도록 스키마 변환 서비스를 사용한다. 따라서, 스키마 변환 서비스는 데이터가 표시하는 것의 공유된 이해를 보존하면서, 다른 스키마를 지원하는 애플리케이션 사이에서 데이터를 이동시키도록 현행 드래그 앤 드롭 및 클립보드 루틴을 강화한다.
따라서, 이벤트, 메시징, 기억장치, 스키마, 보안 등과 같이, 플랫폼(115)의 다른 테크놀로지 컴포넌트와 협력하여 작업하는 스키마 컴포넌트는 전 클라이언트 및 서버 디바이스에서 의미적 정보를 공유하기 위한 메카니즘을 제공한다.
E. 사용자 인터페이스
도 1의 플랫폼(115)의 사용자 인터페이스 컴포넌트(140)는 다양한 전 클라이언트 디바이스에서 멀티-모달, 응답적, 및 지능적인 사용자 인터페이스를 제공한다. 도 4는 사용자 인터페이스 컴포넌트(140)를 개략적으로 도시한다.
사용자 인터페이스 컴포넌트(140)는 사용자가 멀티플 모드를 통하여 UI와 대화할 수 있고 모드가 심리스하게(seamlessly) 온-더-플라이로 변경될 수 있음을 의미하는 멀티-모달 사용자 인터페이스(UI)를 제공한다. 사용자 인터페이스 컴포넌트(140)는 멀티-모달 입력 및 출력을 허용하기 위해 어드밴스트 입력/출력 컴포넌트(400)를 포함한다. 입력/출력 컴포넌트(400)는 키보드 엔트리 또는 마우스 클릭과 같은 "전통적인" 방법을 사용하여 사용자-입력된 입력을 수신할 수 있다. 예를 들어, 입력/출력 컴포넌트는 텍스트(402)를 수신한다. 그러나 또한 UI는 마이크로폰을 갖춘 디바이스에 대한 오디오/스피치 입력(예를 들어, 오디오/스피치; 404), 터치 스크린 또는 패드를 갖춘 디바이스에 대한 스틸러스/터치 입력, 및 수서(handwriting) 입력 능력을 갖는 디바이스에 대한 수서 입력(예를 들어, 수서;406)과 같은 다른 입력 방법을 허용한다. 양방향성 화살표(408)에 의해 표시된 바와 같이, 입력/출력 컴포넌트(400)는 또한 오디오/스피치(404) 및 수서(406)와 같은 비전통적인 컴퓨터화된 출력뿐만 아니라 텍스트(402)와 같은 전통적인 출력을 제공할 수 있다.
또한, 입력/출력 컴포넌트(400)는 정보를 디바이스에 입력할 때 특히 유용한 다양한 변환 테크놀로지를 편입한다. 그러한 변환은 사용자의 오디오/스피치 입력을 텍스트로 변환하는 스피치-텍스트 테크놀로지를 포함한다. 이러한 변환은 사용자가 차량을 운전하고 있거나 그렇지 않으면 타이핑할 능력이 부족할 때와 같이 전통적인 타이핑을 사용하여 텍스트를 입력하는 것이 불편하거나 불가할 때 도움이 된다. 입력에 유용한 다른 하나의 변환은 사용자의 수서된 스틸러스/터치 입력을 텍스트로 변환하는 수서-텍스트 테크놀로지를 포함한다. 이러한 변환은 키보드와 같은 텍스트 입력 디바이스가 디바이스와 함께 포함되어 있지 않을 때 텍스트가 입력되게 한다.
예를 들어, 태블릿의 형식에서의 퍼스널 컴퓨터(즉, "태블릿 PC")는 예를 들어 스틸러스를 사용하여 스크린상에 직접 씀으로써 수서 입력을 허용하는 디바이스이다. 그 후 태블릿 PC는 페이퍼상에의 수서로써는 가능하지 않은 방식으로 텍스트가 편집될 수 있도록 수서를 텍스트로 변환하기 위해 입력/출력 컴포넌트(400)를 사용할 수 있다. 예를 들어, 코멘트가 삽입되게 하도록 패러그래프 사이에 스페이스가 삽입될 수 있다. 태블릿 PC는 수서 자체 또는 소망되는 수서의 텍스트를 디스플레이할 수 있다.
또한 입력/출력 컴포넌트(400)는 "전통적인" 텍스트 및 그래픽 디스플레이 이상의 멀티플 모드에서 사용자에게 데이터를 제시할 수 있다. 예를 들어, UI는 (타이핑된 이메일 메시지와 같은) 텍스트를 (디바이스상의 스피커를 통하여 메시지를 "읽는") 오디오로 변환하는 텍스트-스피치 테크놀로지를 편입할 수 있다. 또 한, 음성 메일은 텍스트-기반 이-메일 메시지와 함께 통합 메시징 쉘내로 편입될 수 있다. 스피치-텍스트 변환은 원한다면 이러한 음성 메일이 텍스트로 변환되게 한다.
멀티-모달 사용자 인터페이스는 사용자의 상태 및 프록시미티(proximity)에 근거하여 사용자가 다양한 디바이스와 대화하게 한다. 예를 들어, PC와 같은 리치 클라이언트를 사용하는 동안, 사용자는 메시지가 비디오/오디오를 통하여 디스플레이되게 하여 텍스트에 의해 회답하도록 선택할 수 있다. 그러나, 차에 있는 동안, 사용자는 메시지가 오디오에 의해서만 플레이되고 또한 오디오에 의해 회답하도록 선택할 수 있다.
자연 언어 통신은 사용자 특정 통합 사용자 인터페이스 포탈 개념에 근거하여 가능하게 된다. 전형적인 통합 사용자 인터페이스 포탈 개념은 입력 스트링의 분석, 논리적 형식 매칭을 경유하는 매칭 개념, 결과와 함께 적합한 언어-같은 센턴스의 발생, 사용자를 위해 개별화된(customized) 검색 파라미터에 근거한 유용한 피드백, 및 사용자의 전통적인 기억장치 위치에 우선순위 세트를 가지고 멀티플 이종의 데이터베이스 스토어를 통하여 스마트 실행을 할 수 있는 검색 기반구조를 포함한다.
멀티-모달인 것에 더하여, 사용자 인터페이스 컴포넌트(140)는 많은 전 클라이언트 디바이스(110)에서 사용자의 상태 및 콘텍스트에 근거하여 적응 및/또는 변경된다는 점에서 응답적이다. 예를 들어, 사용자 인터페이스는, 사용자가 하나의 클라이언트 디바이스로부터 다른 하나로 미드-세션을 스위칭하면 전 클라이언트 디 바이스에서 (이하 논의되는 바와 같이, 아마 수정된다 할지라도) 일관되게 보이는 사용자 인터페이스를 갖는 다른 클라이언트 디바이스를 사용하여 세션을 계속할 수 있도록, 사용자의 프레퍼런스 및 세션 스테이터스에 따라 구성되고 렌더링될 것이다.
도 4를 참조하면, 프레퍼런스 정보는 서버 연합(120)내의 나의 상태 적응(adapted) 디렉토리(905)에 기억될 수 있다. 사용자가 클라이언트 디바이스상에서 작업할 때, 세션 스테이터스 정보는 나의 상태 디렉토리(905)내에서 정기적으로 업데이트된다. 사용자가 다른 하나의 클라이언트 디바이스로 스위칭할 때, 보안 컴포넌트(165)를 사용하여 적절한 인증 후에, 프레퍼런스 및 세션 정보는 새로운 클라이언트 디바이스에 제공된다. 프레퍼런스 정보는 새로운 클라이언트의 디스플레이가 옛 클라이언트와 일관되어 보이게 한다. 더 나아가, 세션 상태 정보는 옛 클라이언트 디바이스가 중단시킨 세션에서 새로운 클라이언트 디바이스가 계속하게 한다.
또한, 사용자 인터페이스는 클라이언트 디바이스의 테크니컬 기능으로 적합하고 매끄럽게 스케일링한다. 예를 들어, 모바일 전화기는 입력 키 및 디스플레이 영역에 대한 공간 한계로 인해 그 사용자 인터페이스에서 명백한 테크니컬 한계를 갖는다. 이들 모바일 전화기에 대한 사용자 인터페이스는 사용자 인터페이스의 더 중요한 특성만을 강조하기 위해서 스케일링 다운된다. 따라서, 모바일 전화기의 사용자 인터페이스가 세션의 더 제한된 사용자 경험을 제공할 것이라 하더라도, 사용자는 리치 클라이언트 퍼스널 컴퓨터로부터 씬 클라이언트 모바일 전화기로 미드-세션을 옮길 수 있다. 클라이언트 디바이스 사이의 이러한 매끄러운 스케일링은 코드 관리 컴포넌트(175)에 의해 공급되는 매니페스트의 사용을 통하여 성취될 수 있고 이하 상세히 설명된다. 예를 들어, 매니페스트는 클라이언트 디바이스상에 디스플레이되도록 요구되는 최소 사용자 인터페이스 특성을 기술하고, 그 후 모든 컴포넌트가 클라이언트상에 디스플레이될 수는 없을 때 디스플레이될 사용자 인터페이스 특성의 우선순위를 기술할 수 있다.
도 4에는 클라이언트 디바이스의 능력에 의존하여 클라이언트 디바이스에 대해 이용될 수 있는 사용자 인터페이스의 전체 스펙트럼(412)이 도시되어 있다. 스펙트럼은 잘 개발된 멀티-모달 기능 및 이용가능한 프로세싱 파워를 갖는 클라이언트 디바이스에 대하여 더 높은 리치 대화적 UI 페이지 컴포넌트(예를 들어, 페이지 컴포넌트 R)를 포함한다. 또한 라이브러리는 덜 개발된 사용자 인터페이스 및 더 낮은 프로세싱 파워를 갖는 클라이언트에 대하여 씬 페이지 컴포넌트(예를 들어, 페이지 컴포넌트 T)를 포함한다. 도 4에 도시된 사용자 인터페이스(UI)는 이러한 스펙트럼(412)내의 어딘가에서 페이지 컴포넌트(414)로부터 도출된다.
또한, 사용자 인터페이스는 사용자 액티비티에 지능적으로 응답한다. 예를 들어, 상기한 바와 같이, 사용자 인터페이스 컴포넌트(140)는 사용자에게 "스마트 태그"의 액션 메뉴를 제공하도록 스키마 컴포넌트(170; 및 스키마 서비스(292))와 협력한다. 사용자가 주소상에(웹 페이지, 문서, 또는 콘택트 리스트에) 타이핑한다면, 스키마 서비스(292)는 주소가 주소로서 인식되게 하고 따라서 핫 태그를 제공한다. 스마트 태그는, 예를 들어, 푸른 점선의 밑줄과 같은 구별 마크로 인식된 아이템을 마킹함으로써 표시될 수 있다.
그 후 사용자는 인식된 아이템의 타입에 적합한 액션 메뉴를 얻기 위해 예를 들어 마우스를 오른쪽 클릭함으로써 마킹된 주소를 선택할 수 있다. 예를 들어, 주소로서 인식된 아이템을 위한 액션 메뉴는 맵을 보고, 주소 라벨을 프린트하고, 콘택트 리스트에 추가하는 등의 능력을 제공할 수 있다. 적합한 액션 중의 하나는, 예를 들어, 주소를 엔콤파싱(encompassing)하는 맵과 같은 정보를 더 찾도록 주소를 사용하는 것을 포함할 수 있다. 그렇게 함에 있어서, 사용자 인터페이스는 디렉토리 서비스 컴포넌트(150)를 통하여 이용가능하게 된 맵핑 서비스에 조언을 구할 수 있다.
또한, 사용자 인터페이스는 사용자가 타이핑하고 있는 것을 검출할 수 있고 따라서 사용자 인터페이스 특성을 워드 프로세싱 액티비티에 초점맞출 수 있다. 예를 들어, 타이핑은 사용자가 워드 프로세싱을 수행하려 의도하는 것 같다고 사용자 인터페이스가 판정하는 이벤트를 트리거링할 수 있다. 그러한 이벤트 트리거링 및 추론 빌딩은 이벤트 컴포넌트(155)에 의해 제공된다.
또한 사용자 인터페이스는 검색, 웹 사이트로의 항해, 파일 시스템내의 파일로의 액세스를 수행하거나 자연 언어 문의 또는 커맨드를 수행하도록 사용될 수 있는 통합 커맨드 라인을 가질 수 있다. 바람직한 실시예에 있어서, 통합 커맨드 라인은 디바이스의 모든 타입상에 어떤 형태로 제공될 것이다. 문의를 수행함에 있어서, 사용자 인터페이스 컴포넌트(140)는 커맨드, 제어 또는 논리적 프로세스의 실행을 위해 확인을 구하거나 명확을 일으키도록 지능적인 피드백 프로세스를 사용 한다. 예를 들어, 사용자는 통합 커맨드 라인에 "오늘 시장 어때?"라고 타이핑할 수 있다. 이 질문은 약간 애매모호하고 분명치 않다. 그 후 사용자 인터페이스 컴포넌트(140)는 "어떤 지수에 관심이 있나?"라고 말함으로써 응답할 수 있다. 그 후 사용자는 커맨드 박스에 "다우 존스"라고 타이핑할 수 있다. 그 후 사용자 인터페이스 컴포넌트(140)는 답변을 말하기에 충분한 정보를 갖는다. 커맨드 라인에서 요청된 정보를 리턴하기 위해서, 사용자 인터페이스 컴포넌트(140)는 정보를 검색하도록 기억장치 및 메시징 컴포넌트와 협력해야 한다.
또한 통합 커맨드 라인은 자연 언어 커맨드를 수행하도록 사용될 수 있다. 예를 들어, 사용자는 "홍길동과 3시에 미팅 예정"이라 타이핑할 수 있다. 사용자 인터페이스 컴포넌트(140)는 미팅의 날짜, 시간, 장소를 명확히 한 후에, 사용자 인터페이스는 액세스가 홍길동에 의해 부여되었다면 홍길동의 캘린더에 상담한다. 홍길동에 의해 확립된 규칙 및 프레퍼런스가 요청된 시각, 장소에서, 요청된 시간동안 미팅이 예정될 것을 허용한다면, 미팅은 홍길동의 캘린더 및 요청자의 캘린더 모두에 예정된다.
통합 커맨드/서치 라인은 로컬하게 및 네트워크상에 제공된 서비스에의 커맨드 또는 문의를 파싱 및 브레이킹 아웃한다. 그것은 그들이 어디 있던지 동일한 방식으로 액세스된 사용자 인터페이스에서의 하나의 장소에 존재하고, 입력의 모든 형식-타이핑(키보드), 음성, 수서는 사용자 인터페이스에 의해 수신될 수 있다. 지능의 모든 레벨-키워드, 불린, 및 자연 언어(단어 조각, 구, 및/또는 잘 형성된 문장)는 또한 사용자 인터페이스에 의해 수신 및 프로세싱될 수 있다.
사용자 인터페이스 컴포넌트(140)는 최종 사용자가 예를 들어 학생, 종업원, 매니저, 파이낸서, 환자, 부모, 소비자, 및 피아니스트와 같은 많은 역할을 갖는 하나의 사람임을 인식하는 단일 통합 쉘을 제공할 수 있다. 단일 통합 쉘을 경유하는 사용자 인터페이스는 모든 이들 역할을 불러모아 리치, 심리스 경험을 생성한다.
사용자 인터페이스 컴포넌트(140)의 통합 포탈은 투사 우선순위의 확립을 포함하여 최종 사용자가 통합 포탈의 세팅을 개별화 및 제어하게 함으로써, 다양한 액티비티를 위해 사용되는 애플리케이션, 문서, 및 운영체제 사이의 비쥬얼 세퍼레이션을 최소화한다.
이러한 개별화를 통하여, 사용자 인터페이스 컴포넌트(140)는 페이지를 지능적으로 거주시키고 레이 아웃한다. 이러한 개별화는 나의 상태 디렉토리(905)내에 프레퍼런스의 형식으로 기억된다. 사용자가 클라이언트 디바이스에 로그 온하고 보안 컴포넌트(165)에 인증하고 나면, 서버 연합(120)은 이들 프레퍼런스를 따르는 (아마도 기억장치 컴포넌트(145)의 메가-스토어내에 기억된) 개인화된 정보를 협력하여 얻고 링크(410)를 통하여 사용자 인터페이스에 정보를 제공한다.
또한 사용자는 사용자의 작업 상태를 알고 있는 것을 포함하도록 사용자 인터페이스 컴포넌트(140)의 세팅을 개별화 및 제어하고 따라서 사용자 인터페이스의 외관을 조정하도록 허용된다. 다른 사용자 인터페이스를 요구할 수 있는 전형적인 작업 상태는 사용자가 PC 작업 중인 때, 사용자가 사무실을 나갔을 때, 사용자가 PDA 또는 무선 전화기를 경유하여 데이터에 액세스하고 있을 때, 사용자가 서버 연 합(120)에 부착된 전자 디바이스 또는 다른 위치, 또는 집에서 작업하고 있을 때를 포함한다.
또한, 사용자 인터페이스는 메시지의 확정 및 우선순위 정함을 포함하여, 사용자의 우선순위 정함에 따라 데이터를 수집하도록 최종 사용자가 디바이스에 명령할 수 있게 한다. 예를 들어, 사용자는 그들 사장으로부터의 메시지에 항상 높은 우선순위가 주어져야 하고 그것들을 수신하도록 인터럽팅되어야 하는 프레퍼런스를 세팅할 수 있다. 따라서, 메시지가 수신되는 이벤트 컴포넌트(155)로부터의 알림은 이들 프레퍼런스에 근거하여 필터링될 수 있다. 또한 통합 쉘은 웹-기반 커뮤니티가 개개의 PC로부터의 데이터를 커뮤니티 투사내로 제공할 수 있게 한다. 이것은 매니저가 PC 포탈로부터의 콘텐트를 제어하는 능력을 갖게 하기 때문에 작업 커뮤니티에 있어서 특히 유용하다.
또한 사용자가 통신 리스트상의 누군가와 통신하고 있을 때 어느 당사자가 다른 개인이 당해 윈도우 또는 문서를 볼 수 있게 윈도우 공유 또는 문서 공유를 활성화시킬 수 있도록 윈도우 공유 및 문서 공유가 가능하다. 그러한 윈도우 공유는 서버 연합에서의 메가-스토어내의 문서에 액세스함으로써 및 다른 사람들이 보안 컴포넌트(165)를 통하여 문서로의 적합한 액세스를 가질 수 있도록 보안 세팅을 구성함으로써 달성될 수 있다.
또한 사용자 인터페이스는 사용자가 현존 리포트 및 다른 데이터 구조를 신속하게 재사용할 수 있게 하는 임시 템플릿을 생성한다. 템플릿은 출판되거나, 분산되거나, 통합 포탈을 통하여 작업 커뮤니티의 다른 멤버와 공유되거나, 인트라넷 또는 인터넷상에 출판될 수 있다. 템플릿 발생은 각각의 참여자가 최종 산물에 기여하게 하는 전자 작업 커뮤니티에서 작업할 때 유용한 특성일 수 있다. 어떤 템플릿은 리포트를 마치도록 각각의 작업 커뮤니티 참여자로부터 특정 정보를 요청할 수 있다.
또한 사용자 인터페이스는 리스팅된 개개인이 어떻게 접속 또는 도달될 수 있는가에 대하여 소정 세팅을 갖는 "버디 리스트"의 사용을 가능하게 한다. 전형적인 접속은 전자 메일, 전화기, 팩시밀리, 주소 정보, 비디오 컨퍼런싱 요구, 무선 통신 포탈, 또는 다른 통신 메카니즘을 포함한다. 이들 "버디 리스트"는 개개인이 특정 디바이스에 로그온할 때 이벤트를 트리거링하는 이벤트 컴포넌트(155)에 의해 발생된다. 사용자 인터페이스 컴포넌트(140)는 이들 이벤트를 수신하고 그것들을 사용자에게 제시한다. 최종적으로, 사용자 인터페이스는 이종 시스템이 심리스하게 통신할 수 있도록 표준 퍼스널 및 캘린더링 스키마가 이용되게 한다.
사용자 인터페이스는 퍼스널 디바이스의 사용, 연관 보안 세팅에서 사용자 오브젝트의 컨퍼런스 어웨어니스, 로컬 및 분산 참여자와의 문서 공유, 전 웹에서 인스턴트 액세스하기 위해 로컬 디바이스상에 문서를 이동시키는 능력, 통합 사용자 인터페이스 포탈에서 된 수서 주석에 대한 응답, 및 최종적으로, 이벤트 캘린더링의 결과로서 노티스의 트리거링을 지원한다.
사용자 인터페이스는 사용자가 애플리케이션과 통신 사이에 심리스하게 이동하기 위한 중앙 장소이다. 단일, 통합 편집/제어 또는 편집 및 제어는 동일한 장소가 특정 구조화된 데이터베이스를 통하여 문의를 호스팅하게 한다. 시스템은 애 플리케이션 상태의 어웨어니스 및 적합한 애플리케이션 모델로 액세스할 능력을 받는다.
시스템은 애플리케이션으로의 액세스 및 PC상으로의 서비스를 제공하기 위한 "퍼스널 포탈"을 제공한다. 예를 들어, 그것은 페이지를 지능적으로 거주 및 레이 아웃하도록 사용자 스키마의 지각을 사용한다. 그것은 퍼스널, 공유, 및 글로벌 정보를 항해하고 컴퓨터를 실행시키기 위해 사용자가 요구하는 키 링키지를 제공한다.
따라서, 사용자 인터페이스는 사용자로부터의 입력을 수신하고 출력을 사용자에게 제공함에 있어서 유연성을 허용하는 멀티-모달이다. 또한 사용자 인터페이스는 클라이언트 디바이스의 기능으로까지 적합하게 스케일링하고 사용자가 클라이언트 디바이스 미드-세션을 스위칭하게 한다는 점에서 응답적이다. 사용자 인터페이스는 사용자 인터페이스가 특정 아이템을 인식할 때 특정 아이템에 적합한 연관 액션 메뉴를 갖는 스마트 태그를 제공하는 것과 같이 사용자 액션 뒤의 의도를 추론하고 적합한 액션을 취한다는 점에서 지능적이다.
F. 이벤트
본 발명의 이벤트 컴포넌트(155)는 이벤트를 출판 또는 발생시키는 임의의 소프트웨어 컴포넌트("이벤트 소스")와 이벤트 알림을 서브스크라이빙 또는 수신하는 임의의 소프트웨어 컴포넌트("이벤트 싱크") 사이에서 이벤트의 분산 통신을 투과적으로 용이하게 한다. 본 설명 및 청구항에 있어서, 이벤트는 예를 들어 시스템 컴포넌트의 스테이터스, 사용자의 액티비티, 환경의 측정 등과 같은 하나 이상 의 상태에 관한 관찰이다. 이벤트 시스템은 콘텍스트에 대하여 계속적으로 업데이트된 정보로의 액세스를 갖도록 소프트웨어 컴포넌트 및 아키텍처를 인에이블한다.
도 5는 하나 이상의 이벤트 소스와 하나 이상의 이벤트 싱크 사이에서 이벤트의 전형적인 통신을 제공하는 이벤트 컴포넌트(155)를 일반적으로 도시한다. 이벤트는 다양한 방식으로 이벤트 소스(602)에서 발생된다. 이벤트는 이벤트 싱크(604)로 방송 또는 직접 통신으로서 이벤트 소스(602)에 의해 발생될 수 있다. 이벤트 싱크(604)는 이벤트를 수신하기 위해서 이벤트 소스(602)를 청취 또는 액티브하게 폴링할 수 있다. 더 나아가, 이벤트 싱크(604)는 이벤트 소스(602)에 서브스크라이빙하거나 또는 대안으로 서버 연합(120)에서의 중간 포인트로부터 포워딩되는 이벤트를 청취할 수 있다.
이벤트 컴포넌트(155)는 이벤트 소스(602)에 의해 제공된 기본 또는 어토믹(atomic) 이벤트(606)를 이벤트 합성 메카니즘(608)을 통하여 점진적으로 더 높은 레벨 이벤트로 변환한다. 이벤트 합성의 프로세스는 기억된 이벤트 데이터 및/또는 관찰된 이벤트의 세트로부터 새로운 이벤트 또는 액션의 구축이다. 이벤트 합성은 규칙, 필터에 의해서 및 리치 추론 기구로까지 줄곧 정교의 스펙트럼을 스패닝하는 더 고급 패턴 인식기에 의해서 구동될 수 있다. 따라서, 이벤트 합성은 소프트웨어 컴포넌트의 정보적 요구에 적합하게 매칭하는 관찰(610)내로 이용가능한 어토믹 이벤트(606)의 세트를 적응시키고, 좋은 결정을 하도록 추상화의 정당한 레벨에서의 정보를 그들에게 제공한다.
이벤트 합성(608)은 더 낮은-레벨 이벤트(어토믹 이벤트; 606)를 집합시키 고, 필터링하고, 더 높은-레벨 이벤트(612)로 변환하고, 때때로, 이벤트를 월드 액션(614)과 같은 액션으로 직접 맵핑한다. 액션은 액티브하게 폴링 또는 청취를 경유하여 새로운 이벤트를 축적하는 데 이용될 수 있는 정보-축적 액션(616) 및 리얼-월드 액션(614)을 포함한다. 이벤트 합성(608)은 이벤트가 근접한 시간에서 관찰되던지 또는 매우 다른 시간에서 관찰되던지 이벤트 및 데이터를 조합하기 위한 방법을 제공한다. 이벤트-특정 언어(618) 및 합성 컴파일러(620)는 합성 컴포넌트를 빌딩하는 데 사용될 수 있다. 이벤트 합성(608)은 다양한 방법을 사용할 수 있는 데, 이벤트 및 데이터를 조합하기 위해 정교의 전 스펙트럼에서 간단한 규칙 및 필터로부터 리치 시간적 패턴 매칭 및 솔직한 논리적 및 개연성의 추론으로까지의 범위에 이른다.
예로써 이벤트 스토어(622)와 같은 이벤트의 소비자는 낮은-레벨(어토믹 이벤트; 606) 또는 더 높은 레벨 이벤트(612)의 세트로부터 추론(624)을 수행하고 이들 추론에 근거하여 액션을 취한다. 추론(624)은 정보의 간단한 재송신으로부터 논리적, Bayesian, 및 결정-이론적 추론까지의 범위에 이를 수 있다. 예를 들어, 사용자의 위치, 액티비티, 및 액티브 디바이스에 대한 이벤트의 스트림은 사용자에게 제공할 가장 중요한 서비스 및 알림에 대하여 이상적인 결정을 하도록 순차적으로 사용될 수 있는 사용자의 목표에 대한 확률의 세트를 제공하기 위해서 Bayesian 모델에 의해 분석될 수 있다. 도 5는 이벤트-기반 추론(624)으로부터 분리되어 있는 것으로서 이벤트 합성(608)을 도시하고 있지만, 더 낮은-레벨 이벤트로부터 높은-레벨 이벤트를 합성하기 위한 정교한 합성 메카니즘은 의사결정(decision- making)을 위한 추론과 개념적으로 머징한다.
이벤트 컴포넌트(155)는 이벤트 통신 및 수신을 셀프-모니터링하고, 제어하고, 쓰로틀링하는 능력을 시스템에 부여하는 서브시스템 및 전반적인 이벤트 시스템의 다른 관점에 대하여 일어나도록 "메타리즌잉(metareasoning)"하기 위해 전 서버 연합(120) 및 클라이언트 디바이스(100)에서 분산되고, 등록되고, 액세스될 수 있는 이벤트를 제공한다. 메타리즌잉은 이벤트 시스템의 유지 및 헬스를 보증하는 추론 기구 및 방법을 참조한다.
이벤트 컴포넌트(155)는 광범위하게 또는 스코핑된 도메인내에서 방송되는 이벤트를 임의의 이벤트 소스 또는 싱크가 출판, 서브스크라이빙, 또는 청취하게 한다. 이것은 서브스크립션의 지능적인 분산, 네트워크에서의 중간 노드에서 합성의 배치 및 분해, 및 라우팅을 요구한다. 이벤트 컴포넌트는 이벤트 소스, 이벤트 싱크, 및 중간 노드가 기능을 델리게이팅(delegating)할 수 있게 하도록 보안 컴포넌트(165)의 보안 서비스를 사용한다.
이벤트 컴포넌트(155)는 개개의 싱크/소스 프라이버시 및 전반적인 시스템 보안의 최상 디그리를 유지하면서, 그렇지 않다면 비양립성인 이벤트 소스 및 이벤트 싱크 사이에서 상호운용가능한(interoperable) 통신 및 우선순위결정을 용이하게 하도록 설계되어 있다. 이벤트 컴포넌트(155)는 출판 및 서브스크립션 시스템, 이벤트 합성 메카니즘, 이벤트 라우팅 메카니즘, 이벤트 기억장치 및 로깅 메카니즘, 및 이벤트 시스템 메타리즌잉을 포함하지만 그에 제한되는 것은 아니다. 또한 이벤트 컴포넌트(155)는 스키마 컴포넌트(170)에 의해 제공되는 스키마 및 스키마 서비스와 메시징 컴포넌트(160)에 의해 제공되는 서비스 품질과 통신 프로토콜을 사용한다.
이벤트 스키마는 클래스 기술 및 물리적 이벤트 구조를 정의하는 이들 클래스 사이의 관계의 수집이다. 클래스 사이의 관계는 이벤트 클래스, 소스, 타겟, 시맨틱, 온투로지컬 콘텐트 정보, 관찰적 신뢰도, 및 이벤트 소스에 의해 알려진 서비스 속성의 품질을 포함한다. 바람직한 실시예에 있어서, 클래스 기술은 XML 기반 스키마 클래스이다.
이벤트 기술은 그 구조 및 제약을 표현하기 위한 스키마 기술 언어 및 예정된 거동 및 합성적인 특성을 표현하기 위한 선언적 패턴 언어를 사용한다. 스키마 언어내에서, 이벤트 구조는 간단하다. 이벤트는 패턴 매칭 및 라우팅에서 사용되는 공개 엔벨로프 및 엔드-투-엔드 데이터를 사적으로 운반하도록 사용되는 프라이빗 바디를 갖는다. 이러한 구조에 있어서, 패턴 언어는 파생 이벤트를 생성할 더 높은-레벨 시맨틱 및 규칙을 캡처링하기 위해서 인스턴스 데이터 및 스키마 정보 모두를 사용할 수 있다.
스키마 언어의 사용은 간단한 네임-기반 컨벤션보다 더 광범위한 표현을 허용한다. 개개의 이벤트는 필터링 및 변형되고 멀티플 이벤트는 더 높은-레벨 이벤트로 함께 합성된다. 패턴 언어는 합성 및 엔캡슐레이션을 위한 오퍼레이터, 시간적 관계, 논리적 관계, 스트링 조작 및 XML 오퍼레이션, 엔드포인트 네이밍 및 토폴로지 기술, 및 수학적 관계를 포함한다. 언어는 파라미터화를 통하여 합성 명세의 재사용을 용이하게 한다.
이벤트 스키마는 확장될 수 있다. 계승에 근거한 강력한 관계 모델은 백워드 컴패터블 버젼잉을 허용한다. 이벤트 타입은 강력한 확장가능한 타입 시스템에 근거하여 잘-정의된 특성을 갖는다. 모델은 표준 XML 어휘를 사용하여 프로토콜 독립 기술된다. 이벤트 스키마에 더하여, 다양한 서비스가 분산 이벤트 시스템(예를 들어, 퍼블리셔 기능 스키마, 서브스크라이버 기능 스키마, 이벤트 포워딩 스키마, 토폴로지, 이벤트 스토어 스키마, 합성 및 필터링 등)을 포함하여 모델링된다.
이벤트 서비스의 서비스/컴포넌트를 스키마화하는 것은 상호운용가능성, 발견, 및 이벤트 서비스의 모든 컴포넌트를 브라우징하는 능력의 달성을 허용한다. 또한 스키마화는 합성 시나리오를 정적으로 분석/최적화하고, 롱-러닝 합성 시나리오의 상태를 조사/저장하고, 이벤트 서비스의 오퍼레이션을 모니터링하고, 메타리즌잉을 위한 메인 파운데이션으로서 이용될 수 있는 능력을 가능하게 한다.
이벤트 시스템은 모델-기반 서브스크립션 등록에 의해 구동되고 고도로 최적화된 출판 및 서브스크립션 서비스를 포함한다. 이벤트 시스템은 예를 들어 커널 드라이버 프로그래밍 모델을 이용하는 커널 이벤트(예를 들어 WDM 드라이버 이벤트), 낮은-레벨 운영체제 서비스 프로그래밍 모델을 이용하는 이벤트 출판용 비-COM API(예를 들어, 보안 감사 이벤트, 디렉토리, 서비스 제어 매니저), 정규 애플리케이션용 클랙식 COM 인터페이스, 및 네이티브 COM+ 프로그래밍 모델을 이용하는 높은-레벨 COM+ 클래스와 같은 이벤트를 출판하도록 서비스의 선택 및 유연성을 허용한다.
"이벤트 서브스크립션"은 이벤트 기반구조가 어떤 조건이 일어나는 때를 서브스크라이빙 컴포넌트에 알리는 요청이다. 그러한 조건의 예는 "CPU 이용 90% 초과", "프로세스 A 정지" 등일 수 있다. 이들 명령어는 스키마 리포지토리에 구성 오브젝트로서 기억된다.
각각의 명령어는 2개의 부분으로 이루어진다. 제 1 부분은 관심있는 이벤트를 지정한다(필터). 제 2 부분은 이벤트에 응답하여 수행될 액션을 지정한다. 필터는 관심있는 이벤트를 정의하는 스테이트먼트를 포함한다. 단일 필터는 멀티플 액션을 트리거링할 수 있다. 액션은 사용자-정의 규칙의 세트에 의해 구동될 수 있다. 예를 들어, 사용자는 어떤 높은 우선순위 송신자로부터 이메일을 수신하는 경우에만 전화 통화에서의 인터럽션이 일어날 수 있게 지정할 수 있다. 이것은 사용자가 인터럽팅되기를 원하지 않는다면 인터럽션없이 전화 통화를 계속하게 한다. 따라서, 사용자는 작업 시간이 개인 시간으로 끼어들고 개인 시간이 작업시간으로 끼어드는 규칙을 지정함으로써 작업 및 개인 시간의 균형을 맞출 수 있다. 인터럽션이 적합한 경우에 있어서, 이메일 메시지는 그 때 메가-스토어로부터 제공될 것이다. 이러한 방식으로, 사용자는 정보 및 시간에 대한 제어를 유지한다.
서브스크립션은 리스의 개념에 근거하여, 구성가능한 수명을 가질 수 있다. 시스템 재부팅보다 더 오래 살 필요가 있는 서브스크립션은 스키마 리포지토리내에 기억된다. 그러나, 가치가 낮은 단명의 이벤트 서브스크립션도 지원되어야 한다. 그들은 서브스크라이버가 지속가능한 바인딩을 구현하도록 요구함이 없이 간단한 콜백 및 필터로 구성될 수 있다.
서브스크립션은 포인트-포인트 또는 포인트-그룹일 수 있다. 분산 서비스는 "도메인 X내의 임의의 서버가 페일 오버하는 때를 알려주시오" 또는 "애플리케이션 Y가 인스톨되는 도메인 X내의 모든 머신상의 모든 보안 침입을 로깅"의 시나리오에 관심있다. 그래서 개개의 머신상에서 일어나는 이벤트 대신에 분산 애플리케이션은 서버 연합(120)의 부분인 머신의 그룹에서 일어나는 이벤트에 관심있다. 이들 시나리오는 서브스크립션이 한번 정의되어 그룹에서의 모든 또는 몇몇 머신에 자동으로 분산되고 새로운 머신이 그룹에 들어갈 때 서브스크립션이 그들에게 자동으로 적용될 것을 요구한다.
그룹에서 이벤트로의 분산 서브스크립션은 디렉토리 컴포넌트(150)에 의해 제공되는 분산 네임스페이스에서의 오브젝트에 의해 표시된다. 또한 그들 오브젝트는 이벤트가 송신되어야 하는 포워딩 서비스를 명령하는 라우팅 구성을 포함할 수 있다. 새로운 머신이 무리에 들어갈 때, 분산 네임스페이스의 이용가능성은 모든 서브스크립션이 배치되고 이벤트가 서브스크라이버로의 플로잉을 시작하는 것을 보증한다.
서브스크립션 빌더는 그들 서브스크립션에 대해 요구되는 서비스 품질("QoS")을 지정할 수 있어야 한다. 이벤트 컴포넌트(155)는 적합한 트랜스포트 파라미터를 사용하여 따라서 그 비즈니스의 리셋을 컨덕팅함으로써 QoS가 충족되는 것을 보증하도록 메시징 컴포넌트(160)와 협력한다(예를 들어, 전달이 지정되는 것이 보장된다면 모든 내부 큐는 QoS를 지속해야 한다).
환경에서 발생된 이벤트의 수는 매우 많을 수 있다. 따라서, 이벤트 전달의 코스트는 상당한 오퍼레이셔널 오버헤드를 일으킬 수 있다. 출판 서비스가 시스템을 스케일링하기 위해서, 아무도 기대하고 있지 않은 이벤트는 가능한 일찍 이벤트 라이프사이클에서 폐기되어야 한다. 이것을 달성하기 위해서, 효율적인 필터링 서비스는 현저한 서브스크립션에 대하여 이벤트의 신속한 타당성검사를 한다. 그러나, 현존 서브스크립션의 수는 또한 매우 많을 수 있다. 따라서 필터링 서비스는 디시젼 트리와 같은 메카니즘에 근거한 효율적인 인버스 문의 엔진을 사용한다.
이벤트를 필터링하는 것에 더하여, 이벤트 필터링 엔진은 퍼블리셔에 서브스크립션 분석 서비스를 제공한다. 서비스는 서브스크라이버가 그 이벤트에 관심있을 때 및 아무도 더 이상 관심없을 때를 퍼블리셔에게 알린다. 쓸모없는 이벤트의 공급 대신에 수행할 수 있는 임의의 필터링을 수행하도록 퍼블리셔에 대하여 대비되어 있다.
분산 이벤트-구동 서비스는 개개의 이벤트가 어떤 시퀀스에서 일어나지 않거나 어떤 데이터 상태와 일치하지 않는다면 거의 중요치 않은 시나리오를 포함한다. 그러한 시나리오의 예는 "모든 백업 제어기가 다운될 때를 알림", "로드가 로인 동안 서버가 5번 크래싱되면 알림", 또는 "5초의 수평내에 선택없이 5개의 메뉴 이상을 사용자가 방문하는 상황을 식별"이다. 이들 조합을 검출하기 위해서 시스템은 이벤트 및 데이터를 합성한다.
이벤트 합성 서비스(608)는 이벤트 및 데이터 조건에 의해 구동된 상태 머신일 수 있다. 일실시예에 있어서, 각각의 합성 서비스는 상태 트랜지션을 기술하는 오브젝트의 조합으로서 내부적으로 구성된다. 몇몇 서비스는 매우 복잡할 수 있기 때문에, 합성 언어 또는 템플릿은 합성 서비스를 세팅업하는 태스크를 간소화하도 록 제공될 수 있다. 유사한 이벤트의 집합(예를 들어, 서버가 셧다운된 후에 5분 미만에 일어나는 경우를 제외하고 내 기업내의 임의의 SQL 서버상에 일어나는 모든 트랜잭션-실패 이벤트상에 나를 페이징하시오"); 이벤트 및 데이터의 합성(예를 들어, 내가 다른 것을 읽고 있는 동안 이메일이 도착하면 그것을 브링업하지 마시오"); 시간을 통하여 이벤트로부터 상태를 계산(예를 들어, 마지막 날 동안 내 이메일 큐 사이즈의 경향은 무엇이었는가?"); 및 카운팅 및 하트비트 모니터링(예를 들어, "5분내에 키가 눌러지지 않고 마우스 이동이 없으면 나에게 알려주시오")은 전형적인 시나리오이다.
G. 메시징
본 발명의 메시징 컴포넌트(160)는 클라이언트 디바이스(110)와 서버(140)가 통신할 수 있게 한다. "메시지"라는 용어는 운영환경(100)의 다른 컴포넌트 또는 애플리케이션 사이에서 교환되는 구조화된 데이터로까지 확장한다. 메시징의 예는 애플리케이션-애플리케이션 메시징, 퍼슨-퍼슨 메시징(이-메일), 및 협조 애플리케이션을 포함한다. 바람직한 실시예에 따라, 메시징 컴포넌트(160)는 HTTP-인에이블되고, DMZ, 로드 밸런싱 서버, 및 NAT 서비스를 포함하는 방화벽 구성과 양립한다.
상호운용가능성을 용이하게 하기 위해서, 메시징 컴포넌트(160)는 기초 트랜스포트와 무관하게 공통 시맨틱을 메시지 애플리케이션에 제공하도록 HTTP, SMTP, 및/또는 다른 트랜스포트의 상위에 레이어링하는 서비스의 세트 및 공통 메시징 애플리케이션 프로그램 인터페이스(API)를 제공한다. 이러한 방식으로, 인터넷 및 다른 광역 네트워크는 트랜스포트가 공통 메시징 API와 양립하는 한 특정 디바이스와 연관된 트랜스포트 프로토콜과 실제적으로 무관하게 효율적이고 편재하는 메시징을 제공하도록 레버리징된다(leveraged).
또한, 메시징 컴포넌트(160)는 지원할 수 있는 접속된 디바이스 및 사용자의 수에서 및 또한 사용될 수 있는 네트워크 또는 디바이스의 타입에서 고도로 스케일링될 수 있다. 다시 말하면, 메시징 컴포넌트(160)는 소형 무선 디바이스로부터 "메가-스케일" 네트워크 및 메시징 시스템까지의 범위에 이르는 시스템 및 디바이스로 사용에 용이하게 적합하다. 이러한 스케일가능 특성은 정교한 분산 서비스뿐만 아니라 높은 서비스 품질(QOS) 메시지 교환에 소형 디바이스가 참여하게 하는 메시징 플랫폼상에 메시징 애플리케이션을 빌딩하는 능력에 의해서 특징지어진다. 다시 말하면, 메시징 컴포넌트(160)는 서버상에 고도로 스케일링될 수도 있고 소형 디바이스로 스케일링 다운될 수도 있는데, 적합한 "공간 절감(small footprint)" 서브셋을 빌딩하는 것이 가능하다는 것을 의미한다.
종래 메시징 시스템과 대조하여, 본 발명의 메시징 컴포넌트(160)는 플랫폼 메시징 아키텍처를 이용한다. 레이어링된 제품이라기보다는, 메시징 서비스는 새로운 애플리케이션 및 메시지-기반 서비스, 일예로 이벤트 컴포넌트(155)에 의해 제공되는 바와 같은 분산 이벤팅이 본 발명 또는 제 3자의 메시징 서비스를 오퍼레이팅하는 엔티티에 의해 쓰여질 수 있는 베이스 플랫폼 기판으로서 존재한다. 메시징 컴포넌트(160)는 인터넷-기반 프로토콜을 인식 및 받아들이고 새로운 및 현존 프로토콜을 공통 방식으로 활용하기 위한 방식으로 정의된다. 또한, 메시징 컴포넌트(160)는 비동기, 커넥션리스, 정확히 한번을 갖는 스토어-앤-포워드 신뢰할만한 메시징, 인-오더 메시지 전달을 제공한다.
메시징 컴포넌트(160)는 특정 메시지 타입, 메시지 콘텐트, 또는 서비스 프로토콜에 의존하거나 알고있는 메시징 시스템에 대조적으로, 신뢰할만하게 전달하는 애플리케이션 또는 서비스-정의된 메시지 "블롭(blob)"에 타겟팅된다. 메시징 컴포넌트(160)는 데이터 의존적인 라우팅 스키마, 토픽 또는 서브젝트-기반 출판/서브스크라이브 기반구조, 또는 다른 메시징 변환 서비스를 직접 구현하지 않는다.
메시징 컴포넌트(160)는 분산 이벤트 지원의 트랜스포트 레이어에 적합한 베이시스를 제공한다. 메시징 서비스가 부가적인 기능으로 더 보충될 수 있지만, 본 발명은 완전한 통합 이벤트 시스템을 정의하는 메시지 서비스 없이 실시될 수 있다. 또한, 메시징 서비스는 통합된 높은-레벨 디스커버리 메시지 엔드포인트 디스커버리 서비스를 정의할 필요가 없다.
메시징 컴포넌트(160)의 일실시예가 도 6을 참조하여 이하 더 상세히 설명된다. 애플리케이션, 사용자, 하드웨어 등을 위한 신뢰할만하고 유연한 메시징에 대한 요구를 충족시키기 위해서, 메시징 컴포넌트는 모든 메시징 액티비티를 위한 공통 API(702)를 포함한다. API(702)는 공통 개발자 인터페이스를 노출하고, 인증, 액세스 제어, 및 서비스 품질 보증과 같이 공유된 성능의 공통 구현을 제공한다. 메시징 컴포넌트(160)는 또한 바람직하게는 이하 더 상세히 설명될 메시징 애플리케이션(704), 게이트웨이(706), 라우팅(708), HTTP 통신 서비스 (710), 및 트랜스포트(712)를 포함한다.
도 6에서 큐-기반 API & 서비스(702)로서 명시된 레이어(이하 API;702 또는 레이어;702)는 다른 전 트랜스포트에서 공통 인터페이스 및 공통 서비스를 제공한다. API(702)는 몇몇 URL 네임스페이스 중 하나에서의 URL에 의해 식별될 수 있는 수신지에 메시지를 전달하도록 개발자를 인에이블하는 간단한 프로그래밍 모델을 확립한다. 바람직한 실시예에 있어서, API(702)의 근본적인 수신지 구축은 워싱턴 레드몬드의 마이크로소프트사에 의해 개발된 현존 MICROSOFT® 메시지 큐(MSMQ) 큐-기반 API의 그것과 유사한 큐일 수 있다.
다른 트랜스포트(712)는 선천적으로 내장 서비스의 동일한 레벨을 갖지 않기 때문에, 서비스의 많은 것은 레이어(702)에서 구현된다. 다른 트랜스포트(712)는 통합 서비스의 다른 레벨을 갖기 때문에, 트랜스포트가 인증 또는 더 높은 서비스 품질과 같은 특성에 대하여 고유한 메카니즘을 가질 때 그들을 사용하는 것이 바람직하므로, 레이어(702)와 특정 트랜스포트(712) 사이의 인터페이스는 꽤 정교하다. 그러나, 베이식 기능의 모든 것은 또한 아비트레리 메시지의 간단한 베스트-에포트 전달을 지원하는 임의의 트랜스포트(712)의 상위에 제공된다.
본 발명의 일실시예에 따라서, 레이어(702)는 바람직하게는 그것과 서비스 품질의 범위를 메시지 전달에 연관시킨다. 예를 들어, 표현 QOS는 메시지 호스트 재부팅에 대해 탄력적이지 못한 고성능 인-메모리 기반 메시징으로서 정의된다. 지속하는 QOS는 적어도 한번 전달 보증을 제공하는 디스크-기반 메시징이다. 정확히 한번/인-오더 QOS는 정확히-한번 오더링된 전달을 제공하는 지속하는 메시징에 관련된다(복사본은 식별되어 제거되고, 부적절한 도착은 거절된다).
레이어(702)의 보안 서비스는 보안 컴포넌트(165)에 따라 인증, 액세스 제어 및/또는 시크리시 서비스를 인에이블할 수 있다. 예를 들어, 인증은 사용자-기반 또는 머신-기반일 수 있는 엔드-엔드 모델에 따른 인증서에 기초될 수 있거나, 또는 XMLDSIG, MSMQ, 보안 다목적 인터넷 메일 확장(S/MIME), 또는 다른 적합한 인증 시스템을 포함하는 다른 모델에 따라 제공될 수 있다. 액세스 제어(즉, 누가 큐에 배신 및 조작하도록 허용되는가)는 메시지 인증에서 확립된 신용증명서에 근거하여 사용자-지향 방식으로 제어될 수 있다. 시크리시 서비스(즉, 암호화 및 복호화)는 중간 서버가 신뢰됨을 내포(imply)하는, HTTPS를 통하여 인에이블된 홉-홉 시크리시를 사용하여 확립될 수 있다. 엔드-엔드 시크리시는 키 교환 프로토콜을 통하여 인에이블될 수 있다.
본 발명의 메시징 컴포넌트(160)는 다양한 현존 및 장차의 트랜스포트와 오퍼레이팅하도록 적응될 수 있다. 실로, 다른 트랜스포트와 상호운용하는 능력은 API의 존재 및 설계의 주요 목적이다. 다른 트랜스포트가 사용될 수 있다 하더라도, 도 7은 특히 도달 및 기능을 최대화하는 트랜스포트 프로토콜의 예인 4개의 트랜스포트(712)와 결합하여 사용되고 있는 API(702)를 도시한다. HTTP/HTTPS(712a)는 SOAP-기반 메시지 표시를 사용하는 트랜스포트 프로토콜이다. MSMQ 바이너리 트랜스포트(712b)는 QOS의 리치 세트를 지원한다. 예를 들어, MSMQ는 압축되어 있는 고도로 최적화된 바이너리 포맷을 제공하고 메시지 콘텐트로의 구조화된 액세스를 가능하게 한다. 멀티캐스트 트랜스포트(712c)는 수취인의 높은 스케일링가능성을 갖는 간단한 메시징을 필요로 하는 애플리케이션을 지원한다. SMTP 트랜스포트(712d)는 전통적인 SMTP 모델과 잘 맞는 애플리케이션에 제공된다. SMTP는 더 큰 메시지 사이즈, 및 이메일 트래픽에 전형적인 다른 시나리오에 아주 적합하다. 또한 SMTP는 그것을 현존 기반구조의 사용이 소망되는 비즈니스-비즈니스(B2B) 애플리케이션에 유용하게 하는 (배치 리얼리티에서 및 프로토콜에서) 특성을 갖는다. SMTP는 베이식 "적어도 한번" 서비스 품질 및 간단한 인증을 지원한다 할지라도, 부가적 기능의 꽤 낮은 레벨을 제외하고는 우수한 성능을 갖는다.
게이트웨이(706)는 빌트-인 트랜스포트(712)와 다소 다르게 취급된다. 일반적으로 트랜스포트(712)는 제 3자가 새로운 컴포넌트를 부가할 수 있는 완전히 플러깅가능한 모델을 지원하지 않는다. 대신에, 게이트웨이(706)는 URL 네임스페이스의 일부에 대하여 메시지 트래픽을 수신한다. 그 후 게이트웨이(706)는 MQSERIES? 또는 GROUPWISE? 이메일 커넥터와 같이, 통신 시스템의 다른 타입에 접속할 수 있다.
메시징 컴포넌트(160)는 상호운용가능하고 투과적인 보안 방식으로 멀티플 당사자 사이에서 메시지 교환을 가능하게 한다. 그렇게 하기 위해서, 공통의 자체-기술적인 언어는 메시징 메타데이터 및 페이로드를 인캡슐레이팅한다. 바람직한 실시예에 있어서, XML은 이들 요구를 기술하는 기술 언어로서 사용된다.
확장성은 메시징 애플리케이션(704)이 심리스 방식으로 기초 메시징 컴포넌트(160)에 값을 부가하게 하는 데 중요하다. 예를 들어, 프로토콜은 애플리케이션-특정 모듈을 도입하도록 범용 메카니즘을 가져야 한다. 예는 메시지 트레이싱, 로깅, 및 데이터 변환이다. 이것은 애플리케이션-특정 엘리먼트를 메시 지를 인캡슐레이팅하는 XML 문서내로 삽입하기 위한 표준으로서 노출되어야 한다.
바람직한 실시예에 있어서, 메시징 컴포넌트(160)는 "HTTP 프록시" 서비스가 이용될 수 있는 것으로 규정하고 있는, 트랜스포트로서 HTTP를 사용한다. 마찬가지로, 표준 HTTP 보안 메카니즘(SSL)은 메시징 컴포넌트(160)에 의해 사용될 수 있다.
스케일링하기 위해서, 메시징 컴포넌트(160)는 이용가능한 로드 밸런싱 서비스를 이용할 수 있다. 더 낮은 서비스 품질에 대해서, 메시징은 본질적으로 스테이트리스이고 따라서 사용되고 있는 기초 로드-밸런싱 메카니즘은 투과적이다. 그러나, 더 높은 QOS는 천성적으로 스테이트풀하기 때문에, 메시징 서비스는 외부 메카니즘 (애플리케이션-특정) 및 (메시징 기반구조에 의해 발생된) 내부 메카니즘 모두를 포함하는, 전 메시지 교환에서 상태 보존을 위한 메카니즘을 제공한다. 그렇게 하기 위해서, 메시징 컴포넌트(160)는 엔드-엔드 전달 시맨틱이 보존되는 단일 백-엔드 메시지 스토어 및 외부 주소로부터 내부 메시지 스토어 주소로의 맵핑 퍼실리티를 사용할 수 있다. 맵핑 퍼실리티는 인터넷 프레즌스를 제공하는 것뿐만 아니라 인트라넷과 배치될 수 있는 "들어오는 메시징 프록시" 서비스에 의해 제공될 수 있다는 것을 주목하자.
일반적으로, 트랜스포트로서 HTTP를 사용하는 메시징 호스트는 메시지를 송신 및 수신하는 능력이 필요하다. 이것은 그것이 HTTP "청취" 및 "토킹" 서비스 모두를 갖는다는 것을 내포한다. 바람직한 실시예에 있어서, 유니버설 리스너는 베이식 서버-사이드 HTTP 프로토콜 지원을 제공한다. 머신상에 모든 HTTP 서버에 의해 공유된 시스템 컴포넌트인 유니버설 리스너는 유니버설 리스너 API(UL API)를 경유하여 요청을 들여오는 모든 서버 애플리케이션 및 서피스를 대표하여 포트(80)를 관리한다. 서비스 및 애플리케이션은 요청을 직접 그들 프로세스 환경내로 수신하도록 UL API를 사용할 수 있다. 선택적 프로세스 관리 퍼실리티는 시스템-관리된 프로세스내에서 요청이 서비싱되기를 원하는 서버 애플리케이션(예를 들어, 액티브 서버 페이지)에 제공된다.
유니버설 리스너는 머신상에 모든 HTTP-기반 서버 애플리케이션에 의해 공유된 커널-모드 리스너를 제공한다. 모든 애플리케이션은 포트(80)를 효율적으로 공유할 수 있다. 유니버설 리스너는 또한 파싱을 요청할 수 있고 정적 콘텐트 및 "안정한" 동적 콘텐트의 고성능 전달을 위한 응답 캐시를 제공할 수 있다. 애플리케이션은 UL API 및 구성을 경유하여 캐싱을 제어할 수 있다. 캐싱된 응답은 사용자 모드로 들어가는 일 없이 전달될 수 있다.
유니버설 리스너는 최장 매치 URL 프레픽스에 근거한 사용자-모드 "작업자 프로세스"에 요청을 더 디스패칭(dispatch)할 수 있다. 이들 사용자-모드 애플리케이션은 코어 리스너 컴포넌트로부터 완벽한 아이솔레이션을 갖는다. 작업자 프로세스는 "UL API"를 사용하여 요청을 수신 및 응답할 수 있다. 또한, 작업자 프로세스는 URL 네임스페이스의 멀티플 부분을 서비싱한다. 하나 이상의 작업자 프로세스("가든")는 증가된 스케일링가능성, 이용가능성, 및 인트라-애플리케이션 아이솔레이션을 위한 애플리케이션의 동일한 세트를 서비싱한다.
HTTP-서버 프로세스 매니저는 작업자 프로세스를 관리하기 위해 UL과 결합하 여 선택적으로 사용될 수 있는 시스템 컴포넌트이다. 프로세스 매니저는 (예를 들어, 들어오는 요청에 의해 트리거링된) 작업자 프로세스의 온-디맨드 론치를 제공한다. 또한, 프로세스 매니저는 누설, 헝 서버 등으로부터 회복하기 위해 작업자 프로세스 "사이클링"(셧다운/리스타트) 및 작업자 프로세스 "헬스 모니터링"을 확립할 수 있다. 사이클링은 수신된 요청의 수, 시간에 의해서 또는 헬스 모니터링의 결과로서 트리거링될 수 있다. 더 나아가, 프로세스 매니저는 지속하는 구성 및 제어 및 구성을 위한 관리 인터페이스를 제공할 수 있다.
일실시예에 있어서, HTTP 클라이언트는 커널 모드에서 구현된다. 커널 모드에서 구현하는 이유는 1)성능; 2) 커널 컴포넌트와의 통신; 및 3)리스너/토커 통합을 포함한다. 리스너/토커 통합은 성능 최적화 및 공유된 구현을 포함한다.
메시징 시스템은 선택적으로 HTTP 프로토콜 확장을 구현할 수 있고 리스너 및 토커 구현 모두에서 확립되는 것을 지원한다. 하나의 확장은 하이 볼륨 B2B 시나리오에서 특히 가치있을 수 있는 더 효율적인 접속 멀티플렉싱을 지원하도록 HTTP 접속 관리를 강화하는 "웹 먹스"와 관련된다.
상기한 바와 같이, 메시징 컴포넌트(160)는 HTTP를 포함하는 임의의 다양한 트랜스포트를 사용하여 효율적이고 신뢰할만한 메시징을 제공한다. 메시징 컴포넌트(160)는 정보를 패싱하도록 다른 테크놀로지 플랫폼 컴포넌트에 의해 사용된다. 메시징 컴포넌트(160)는 개발자가 애플리케이션을 쓸 수 있고 본 발명과 연관된 다른 특성 및 메시징 서비스의 전반적인 아키텍처를 이용할 수 있는 표준 인터페이스를 확립한다.
H. 기억장치
분산 컴퓨팅 서비스 플랫폼(155)의 기억장치 컴포넌트(145)를 설명함에 있어서, "데이터 엔진"이라는 용어는 범용 또는 전용 컴퓨팅 디바이스에 의해서 액세스될 수 있는 데이터 구조 또는 컴퓨터-실행가능한 명령어의 형식으로 소망 프로그램 코드 민즈를 운반 또는 기억하도록 사용될 수 있는 임의의 매체를 말한다.
데이터 엔진은 디바이스의 많은 타입과 연관될 수 있다. 예로써, 데이터 엔진은 임의의 클라이언트 디바이스(110; 도 1과 같이 결합되어 상기된 데스크톱 PC, 랩탑 컴퓨터, 퍼스널 디지털 어시스턴트(PDA), 셀룰러 전화기, 페이저 클라이언트 등)와 연관될 수 있다. 또한 데이터 엔진은 예로써 애플리케이션, 오디오, 데이터베이스, 팩스, 파일, 인트라넷, 메일, 머천트, 모뎀, 네트워크 액세스, 프린트, 프록시, 원격 액세스, 전화, 터미널, 비디오, 또는 웹 서버 등처럼 서버 디바이스(140)와 연관될 수 있다. 이들 서버는 서버 연합(120)에 위치될 수 있다.
도 7은 데이터 엔진의 사용, 데이터의 액세스가능성, 및 하나 이상의 애플리케이션의 실행을 설명하는, 기억장치 컴포넌트(145)를 위한 전형적인 아키텍처를 도시한다. 기억장치 컴포넌트(145)는 각각의 특정 영역을 이용하는 엔티티의 타입에 따라 일반적으로 특징지어진 3개의 영역으로 분류될 수 있다. 이들 영역은 도 7에 영역(802, 804, 및 806)으로서 도시되어 있다. 예로써, 사용자는 일반적으로 영역(802)을 이용하고, 개발자는 일반적으로 영역(804)을 이용하고, 관리자는 일반적으로 영역(806)을 이용한다.
기억장치 컴포넌트(145)의 파운데이션은 예로써 MICROSOFT? WINDOWS? 운영 체제와 같은 운영체제의 파일 시스템이다. 도 8에서, 파일 시스템은 파일 시스템(808)으로서 도시되어 있다.
데이터 엔진(810)은 기억장치 컴포넌트의 핵심이다. 바람직한 실시예에 있어서, 데이터 엔진(810)은 마이크로소프트사로부터의 SQL 서버에 근거한 SQL 서버 기억장치 엔진일 수 있다. 예로써 마이크로소프트사로부터의 교환 서버에 근거한 교환 데이터 모델(도시되지 않음)과 같이, 예로써 메시징 데이터 모델(이-메일, 캘린더, 그룹 생산성), 관계 데이터 모델, XML 데이터 모델과 같은 다양한 데이터 모델이 데이터 엔진(810)의 상위에 빌딩되어 있다. 데이터 엔진은 가장 효율적인 포맷으로 데이터를 기억한다. 데이터 엔진의 상위에 레이어링된 데이터 모델 또는 엔진은 어떻게 기억된 데이터에 액세스하고 코렉트 뷰를 개발자에게 제시하는지를 이해한다. 데이터는 예로써 테이블, 계층구조, 또는 일련의 네임/값 페어와 같은 많은 포맷으로 제시될 수 있다. 데이터 모델은 하나 이상의 엔진을 포함할 수 있다. 예로써, XML 데이터 모델은 XML 엔진(812)을 포함한다. 유사하게, 관계 데이터 모델은 관계 엔진(814)을 포함한다.
개발자는 데이터베이스 프로그래밍 언어(DBPL) 테크놀로지를 사용하여 공통 문의 시스템을 통하여 다양한 데이터 모델과 통신한다. DBPL 테크놀로지는 시스템과 통신하기 위해 애플리케이션 프로그램에 의해 사용되는 포맷인 데이터 액세스 애플리케이션 프로그램 인터페이스(API; 816)를 포함한다. 포맷은 실행을 위해 요구되는 서브루틴에 링크를 제공하는 함수 호출을 사용한다. 바람직한 실시예에 있어서, DBPL 테크놀로지는 XML(XML 818)에 근거하고, 관계 모델(관계 820)을 사용할 수 있고, 오브젝트 테크놀로지(오브젝트 822)를 이용한다.
영역(802)으로서 도시된 상위 레이어는 사용자/소비자에 의해 사용되는 다양한 애플리케이션(840a, 840b 등)을 포함한다. 애플리케이션은 예를 들어 문서, 메일, 캘린더링 아이템, 콘택트, 스톡 포트폴리오, 고객, 오더, 미디어 기반 제품 카탈로그 등을 통합시킨다. 애플리케이션은 다양한 데이터 모델의 상위에 있고 특정 프로토콜(824)을 사용하여 시스템과 토킹한다. 바람직한 실시예에 있어서, 프로토콜(824)은 심플 오브젝트 액세스 프로토콜(SOAP; 824)이다.
바람직한 실시예에 있어서, 기억장치 컴포넌트(145)의 컴포넌트는 통합 테크놀로지로서 XML에 근거하고 있어서 데이터의 모든 타입이 XML 문서로서 처리된다. 본 발명의 분산 컴퓨팅 서비스 플랫폼(115)과 연관된 통신 및 서버 연합(120)은 XML 파운데이션상에 빌딩된다. 메시지, 방법 호출, 오브젝트 기술, 및 데이터 엔진 모두 XML을 사용한다. 문의 언어는 계층구조상에서 작업하고 계층구조적인 XML을 리턴한다. 기억장치 컴포넌트(145)는 XML에 근거되어 있기 때문에, 기억장치 및 문의 오퍼레이션은 태뷸러 포맷으로부터 문서까지 전체 데이터 스펙트럼에서 동일하다.
기억장치 컴포넌트(145)는 여기서 "메가-스토어"라 명명된 기억장치 메카니즘을 인에이블하는 키 컴포넌트이다. 메가-스토어에서, 도 1의 서버 연합(120)은 최종-사용자 뷰포인트로부터 통합 기억장치 메카니즘으로서 액팅한다. 메가-스토어는 이하 시나리오에 의해 예시된다. 사용자가 PC로 가서 로그온한다. 이러한 로그온은 보안 컴포넌트(165)에 의해 제공된 인터넷 인증 서비스로 사용자를 인증 한다. 사용자가 인증된 후, 디렉토리 컴포넌트(150)는 사용자의 정보가 어디에 기억되어 있는지를 결정하도록 사용될 수 있다. 그 후 기억장치 컴포넌트(145)는 데이터를 검색하여 그것을 사용자 인터페이스 컴포넌트(140)에 제공한다. 따라서, 개인화된 정보는 부가적인 사용자 개입을 요구하지 않고 히스토리 리스트, 즐겨찾기 리스트, 수신함 등과 같은 사용자 인터페이스에 나타난다. 따라서, 사용자가 디바이스로부터 디바이스로 이동할 때, 그 데이터 및 애플리케이션을 그들을 따른다.
메가-스토어는 최종-사용자 컴포넌트 및 개발자 컴포넌트를 포함한다. 최종 사용자는 그들이 사이트에 로그온하는 때 그들 퍼스널 데이터 및 정보가 그들을 위해 자동으로 액세스가능하게 기억되어 있다는 것을 간단히 이해한다. 그러한 바와 같이, 사용자는 그들 퍼스널 데이터 및 정보가 예를 들어 서버 연합(120)내의 어떤 서버 또는 쿠키에 기억되어 있는지를 이해하거나 관여할 필요가 없다. 오히려, 사용자는 그들이 어디에 가던지, 그것이 집이건, 작업장이건, 또는 그밖의 어디던간에 그들의 퍼스널 데이터 및 정보는 용이하게 액세스될 수 있음을 이해하기만 하면 된다.
I. 디렉토리
통상적으로 디렉토리는 실제로 데이터가 기업의 도처에 종종 흩어져 있을 때 데이터가 편성된 구조에 분류되어 있는 일루젼을 생성하는 엔터프라이즈-와이드 명명 기관(authority)이다. 디렉토리가 포함하는 데이터의 예는 엔티티(예를 들어, 사용자, 컴퓨터, 및 사용자 그룹)에 관한 콘택트 정보와 같은 주소 북 데이터, 엔 티티를 인증하도록 사용되는 인증 데이터, 및 엔티티마다의 베이시스상에서 오브젝트로의 액세스를 제어하도록 사용되는 권한부여 데이터를 포함한다. 디렉토리의 2 종류는 적응 디렉토리 및 메타-디렉토리를 포함한다.
적응 디렉토리는 하나 이상의 특정 목적에 적응되기도 하는 데이터 스토어이다. 디렉토리 기능은 애플리케이션에 특정되기도 한다. 적응 디렉토리내에 기억된 정보는 권위있는 데이터 또는 "참" 데이터(즉, 다른 소스로부터 동기화되지 않은 데이터)이지만, 적응 디렉토리는 또한 중복 데이터(즉, 다른 소스로부터 동기화된 데이터)를 기억할 수 있다. 적응 디렉토리의 예는 이하 더 설명될 것이다.
메타-디렉토리는 적응 또는 다른 메타-디렉토리에서 발견된 오브젝트의 서브셋을 포함 또는 유지하는 데이터 스토어이다. 각각의 오브젝트에 대하여, 메타-디렉토리는 그 오브젝트의 속성의 서브셋을 유지한다. 또한 메타-디렉토리는 오브젝트에 대한 더 완벽한 정보를 포함하는 디렉토리에 대한 레퍼런스를 포함한다. 메타-디렉토리의 예 또한 이하 설명될 것이다.
스키마를 잘 정의한 적응 및 메타-디렉토리는 스키마를 잘 정의하지 않은 그들 디렉토리보다 더 용이하게 동기화된다. 적응 및 메타-디렉토리를 동기화하는 것은 메타-디렉토리내에 기억된 정보가 다양한 적응 디렉토리내의 관련 엔트리 사이의 연관에 관련되기도 하기 때문에 유용하다. 종종, 메타-디렉토리내에 기억된 데이터는 어느 누구에 의해서라도 이용될 수 있거나 읽혀질 수 있다. 그러나, 어떤 경우에 있어서, 더 많은 보안이 요구되고 메타-디렉토리로의 액세스는 더 제어된다.
전 서버 연합(120)을 통하여 협조 및 통신을 가능하게 하기 위해서, 바람직하게는 디렉토리 컴포넌트(150)는 메타-디렉토리 사이에서 동기화된 포탈마다 또는 웹 사이트마다의 메타-디렉토리를 제공한다. 디렉토리 컴포넌트(150)는 적응 디렉토리 및 메타-디렉토리 모두의 사용을 포함한다.
도 8은 본 발명에 따른 디렉토리 컴포넌트(150)를 도시한다. 디렉토리 컴포넌트(150)는 개인 또는 엔티티에 특정하고 여기서 "나의 상태" 디렉토리라 언급되는 적응 디렉토리(905)를 포함한다. 나의 상태 적응 디렉토리(905)는 개인 또는 엔티티에 대한 이름, 주소, 전화 등과 같은 정보를 기억하도록 사용된다.
개인이 하나 이상의 신원(예를 들어, 가정의/개인적인 신원 및 직장의/직업적인 신원)을 가질 수 있기 때문에, 나의 상태 디렉토리는 임의의 소정 사용자에 대하여 단 하나의 신원 이상에 대한 정보를 포함할 수 있다. 예를 들어, 사용자는 가정 또는 개인적인 신원에 특정한 적응 디렉토리 및 사용자의 직장 또는 직업적인 신원에 특정한 적응 디렉토리를 가질 수 있다. 가정에서의 신원에 특정한 적응 디렉토리의 예가 도 8에 홈 프레즌스 디렉토리(910)로서 도시되어 있다.
이들 적응 디렉토리(905 및 910)는 스키마에 따라 구조화된다. 스키마 컴포넌트(170)에 의해 제공된 서비스의 사용을 통하여, 외부 서비스 및 애플리케이션은 이들 적응 디렉토리에 액세스 및 확장할 수 있다. 보안 컴포넌트(165)와 조합하여 스키마는 또한 사용자가 다른 엔티티로 하여금 적응 디렉토리의 특별 또는 특정 부분에 액세스하게 하도록 한다. 이벤트 컴포넌트(155) 및 메시징 컴포넌트(160)의 사용을 통하여, 나의 상태 디렉토리는 또한 엔티티와 나의 상태 디렉토리 사이의 관계를 종결할 수 있을 뿐만 아니라 나의 상태 디렉토리에 대한 변경 및 업데이트를 다른 엔티티에 알릴 수 있다. 또한 디렉토리 컴포넌트(150)는 예를 들어 기업 포탈(915) 및 포탈(920)과 같은 메타-디렉토리를 갖는 포탈을 포함한다. 일예에 있어서, 포탈은 인더스트리 와이드 웹사이트로서 뷰잉될 수 있다. 따라서, 헬스케어 포탈, 쇼핑 포탈, 뮤직 포탈 등이 존재한다. 각각의 포탈은 관련 비즈니스 및 엔티티로부터의 정보를 유지하기 위해 하나 이상의 메타-디렉토리를 구현한다. 예를 들어, 헬스케어 포탈의 메타-디렉토리의 몇몇은 의사, 클리닉, 조제, 및 환자(그에 국한되는 것음 아님)를 포함하는 관련 엔티티 또는 사람에 관한 정보를 수용하고 있을 것이다. 포탈 메타-디렉토리는 각각의 인증된 사용자에 대한 오브젝트를 유지 또는 기억할 것이다. 각각의 오브젝트는, 예를 들어, 이들 메타-디렉토리에 액세스하는 사용자가 종종 인증되어 있기 때문에 사용자에 의해 제공된 권한부여 정보를 수용할 수 있다. 또한 포탈은 다른 포탈과 적응 디렉토리 사이의 관계를 동기화한다. 예를 들어, 의사의 적응 디렉토리는 그 각각의 메타-디렉토리를 통하여 또는 헬스케어 포탈에 의해서 환자의 적응 디렉토리와 동기화될 수 있다.
바람직하게는 디렉토리 컴포넌트(150)는 다양한 엔터프라이즈를 포함한다. 명확을 위해, 도 9에는 이들 엔터프라이즈 중 하나(즉, 엔터프라이즈 925)만이 도시되어 있다. 엔터프라이즈(925)는 지금의 엔터프라이즈에 의해 통상 수용된 것과 같이 내부 메타-디렉토리(930) 및 내부 적응 디렉토리(935)를 포함한다. 따라서, 엔터프라이즈 요구는 디렉토리 컴포넌트(150)에 의해 제공된 방대한 디렉토리 서비스내로 탭핑하기 위해서 엔터프라이즈 포탈(925)과 같은 포탈을 사용하는 것으로 단지 마이그레이팅할 필요가 있다. 마이그레이팅할 내부 엔터프라이즈가 엔터프라이즈 포탈이 되게 함으로써, 제 3자는 엔티티의 정보에 더 쉽게 액세스할 수 있을 것이다.
또한, 디렉토리 컴포넌트(150)는 인터넷 메타-디렉토리 서비스(940)를 포함한다. 인터넷 메타-디렉토리 서비스는 특정 스키마를 갖는 문서 또는 데이터를 찾으려고 인터넷을 검색할 수 있다. 이러한 디렉토리는 회사가 판매하는 제품, 회사가 제공하는 서비스 등과 같은 정보를 포함할 수 있다. 각각의 문서(또는 그 서브셋)는 문서의 URL과 함께 메타-디렉토리내로 편입된다. 따라서 애플리케이션 및 서비스는 그들을 필요한 정보 또는 서비스로 포인팅하도록 인터넷 메타-디렉토리(940)에 액세스할 수 있다.
디렉토리 컴포넌트(150)는 원할 때 포탈에 인증 서비스를 제공하는 (보안 컴포넌트(165)에 의해 제공된) 인터넷 인증 서비스(945)를 사용할 수 있다. 인터넷 인증 서비스(945)의 예는 마이크로소프트사에 의해 제공된 패스포트라고 불린다.
도 9는 다양한 적응 및 메타-디렉토리 사이의 대화의 예이다. 이러한 예는 본 발명의 범위를 제한하는 것이 아니라, 본 발명에 의해 가능하게 된 기능의 일부의 예이다. 이러한 예는 새로운 고용주와 함께 일을 시작하는 새로운 종업원을 예시한다. 고용주는 고용주 메타 디렉토리(1024)를 수용하고 있는 엔터프라이즈 포탈(1022)을 갖는다. 종업원이 작업을 시작할 때, 종업원 레코드 디렉토리(1002)는 본 예에서 고용주에 의해 또한 유지되어 있는 적응 디렉토리(1000)에 부가된다. 따라서, 종업원 레코드 디렉토리(1002)는 스키마에 따라 종업원에 대한 권위있는 데이터를 수용하고 있는 적응 디렉토리이다.
종업원 레코드 디렉토리(1002)는 종업원을 고용주 메타 디렉토리(1024)에 부가하고 많은 속성을 고용주 메타 디렉토리(1024)에 프로모팅한다. 이들 디렉토리 사이의 정보는 자동화된 속성 어그리먼트(AAA)에 의해 동기화된다. 따라서, 고용주 메타 디렉토리(1024)는 종업원 레코드 디렉토리(1002)내에 기억된 권위있는 데이터에 관련된 리던던트 데이터를 수용하고 있는 연관된 속성(1020)을 갖는 종업원 오브젝트(1018)를 갖는다. 고용주 메타 디렉토리(1024)는 또한 적응 디렉토리인 워크 프레즌스 디렉토리(1004), 워크 캘린더 디렉토리(1010), 및 메일 디렉토리(도시되지 않음)를 셋업한다.
다음으로, 새로운 종업원은 보안 뱃지를 얻기 위해서 보안 사무소를 방문한다. 그는 예를 들어 패스포트 키를 갖고 있는 또 다른 적응 디렉토리인 이전부터 존재하고 있는 인증 디렉토리(1008)를 등록하기 위해 퍼스널 디지털 어시스턴트(PDA) 또는 다른 디바이스를 사용한다. 그 후 인증 디렉토리(1008)는 고용주 메타 디렉토리(1024)내에서 종업원의 신원 또는 오브젝트(1018)에 링크된다.
종업원은 주소, 전화 등과 같은 퍼스널 정보로 고용주를 업데이트해 두도록 PDA 디바이스에 명령한다. 이것은 나의 상태 디렉토리(1006)와 고용주 메타 디렉토리(1024) 사이에 AAA를 확립함으로써 달성된다. 나의 상태 디렉토리(1006)는 역시 적응 디렉토리이다. 이러한 접속으로 인해, 종업원의 PDA는 워크 프레즌스 디렉토리(1004) 프레즌스 서버 및 그 프레즌스 서버와의 인터페이스 또는 종업원의 유니버설 수신함으로의 액세스를 갖는 레지스터를 찾기 위해 고용주 메타-디렉토리(1024)를 사용할 수 있다. 이들 연관 및 접속이 이루어지고 나면, 종업원은 헬스 프로바이더를 선택하도록 종업원에게 요구하는 종업원 레코드 디렉토리(1002)로부터 이메일을 수신할 수 있다. 종업원의 선택은 고용주 메타-디렉토리(1024)내에 기억된다. 다음으로, 고용주 메타 디렉토리(1024)는 종업원에 대한 엔트리를 생성하도록 헬스 프로바이더 포탈(1016) 및 헬스 프로바이더 메타 디렉토리(1026)와 접속한다. 따라서, 헬스 프로바이더 메타-디렉토리는 종업원에 대한 오브젝트(1012) 및 속성(1014)을 갖는다. 고용주 메타-디렉토리(1024)와 헬스 프로바이더 메타-디렉토리(1026) 사이의 AAA 어그리먼트는 다른 아이템을 수용할 수 있다. 예를 들어, 어그리먼트는 헬스 프로바이더 메타 디렉토리에 변경을 포워딩하도록 고용주 메타-디렉토리에 의한 어그리먼트뿐만 아니라 주기적인 감사를 포함할 수 있다.
헬스 프로바이더 메타 디렉토리(1026)는 종업원에게 프라이머리 카 프로바이더를 선택하도록 요구하는 웹 페이지를 종업원에게 송신한다. 대답으로, 종업원은 의사의 리스트를 공급할 것을 헬스 프로바이더 메타-디렉토리(1026)에 요구한다. 의사가 선택된 후, 헬스 프로바이더 메타-디렉토리(1026)는 클리닉 또는 의사 포탈에 콘택트하고 클리닉 메타 디렉토리(1028)에 종업원을 위한 엔트리를 생성할 것이다. 클리닉 메타 디렉토리(1028)는 종업원의 메디칼 레코드를 요청하는 이메일을 종업원에게 송신한다. 종업원은 나의 상태 디렉토리(1006)의 메디칼 정보 부분만을 클리닉 메타 디렉토리(1028)에 릴리스할 수 있다. 이것은 종업원 및 클리닉 모 두가 레코드의 완벽한 세트를 모두 유지하는 것을 가능하게 한다. 동시에, 종업원은 서로 주고받을 수 있는 의사와 그들 캘린더를 공유하는 것을 승인할 수 있다. 마지막으로, 클리닉 메타-디렉토리(1028)는 그들의 상호 액세스가능한 캘린더를 사용하여 종업원과의 첫 약속을 스케쥴링하도록 워크플로 서비스를 시그날링할 수 있다.
다시, 따라서 적응 디렉토리에 의해 기억된 권위있는 정보는 본 예에서 메타-디렉토리에 의해 링크된다. 클리닉, 고용주, 및 헬스 프로바이더는 또한 다양한 적응 디렉토리를 갖는 것으로 이해된다. 그들 디렉토리 및 메타-디렉토리와의 그 대화는 도 10에 도시되지 않았다. 메타 디렉토리는 권위있는 정보에 관련된 힌트 정보 또는 리던던트 정보를 기억할 수 있다. 적응 디렉토리의 스키마는 다른 메타 디렉토리가 적응 디렉토리의 특정 부분에 액세스하게 할 수 있다. 권위있고 리던던트 정보는 데이터가 최신인 것을 보증하도록 동기화된다.
도 9에 있어서, 적응 디렉토리(1000)내의 적응 디렉토리의 각각은 특정 목적 또는 목적의 세트를 갖는다. 종업원 레코드 디렉토리(1002)는 직업 신원을 표시하는 반면, 나의 상태 디렉토리(1006)는 퍼스널 또는 홈 신원을 표시한다. 인증 디렉토리(1008) 적응 디렉토리는 개인을 인증하는 데 사용되는 패스워드 등과 같은 정보를 수용할 수 있다. 워크 캘린더 디렉토리(1010)는 캘린더 또는 콘택트 리스트이다. 본 예에서 도시된 바와 같은 적응 및 메타 디렉토리를 사용하는 것은 엔티티 사이의 고급 통신을 가능하게 한다. 본 예에 있어서 종업원이 각각의 개별적인 포탈과 대화하도록 요구되지 않기 때문에 통신은 강화된다. 디렉토리 컴포넌트(150)는 메시징 컴포넌트(160)를 경유하여 그들이 모두 접속 및 링크되어 있기 때문에 통신이 자동으로 일어나게 한다.
J. 보안
상기한 바와 같이, 지난 몇년동안 소비자 및 비즈니스를 막론하고, 인터넷-기반 서비스의 사용에서의 연관된 극적 증가와 함께, 급속도로 인터넷을 채택하여 왔다. 본 발명은 증가된 웹 사이트간 통신과 함께, 더 큰 인터넷 커넥티비티 및 협조를 허용한다. 불행하게도, 인터넷 및 인터넷-기반 서비스의 사용자의 수가 증가함에 따라, 소비자 및 비즈니스는 보안 및 프라이버시 문제에 대하여 점점 더 걱정하게 된다. 예를 들어, 많은 소비자 및 비즈니스는 소비자 및 비즈니스 온-라인 액티비티를 상당히 상세히 트랙킹할 수 있는 다양한 인터넷 서비스 프로바이더(ISP)에 의존한다. 또한 많은 소비자는 넓게 변화하는 비즈니스 관계 및 절대적 신뢰(서브스크립션, 트랜션트 트랜잭션, 논)를 갖는 멀티플 서비스 프로바이더를 사용한다. 또한, '항시 온' 인터넷 접속(디지털 서브스크라이버 라인(DSL), 케이블 모뎀), 멀티플 인터넷 케이퍼블 디바이스(퍼스널 컴퓨터(PC), 셀 폰, 퍼스널 디지털 어시스턴트(PDA)), 및 인터넷 대화와 아주 다른 방식으로 서로 대화할 수 있는 멀티플 홈 네트워크 디바이스의 증가하는 사용과 함께, 소비자 및 비즈니스는 더 큰 커넥티비티를 달성하지만, 비양심적인 개인 또는 비즈니스가 퍼스널 및/또는 기밀 정보를 "얻을" 액세스 포인트의 수를 증가시킨다.
상기 한계를 최소화하기 위해서, 본 발명은 예를 들어 인증, 프라이버시, 및 방화벽 보안 바운더리와 같은 많은 보안 보호 툴을 제공하는 보안 컴포넌트(165)를 선택적으로 포함한다. 도 10은 본 발명의 보안 컴포넌트(165)의 일실시예의 개략도이다. 도 10의 개략적인 표시는 보안 컴포넌트(165)의 선택적 기능을 예시하는 것이며 여기 포함된 가르침을 고려하여 당업자에 의해 인식될 다른 기능의 적용성을 제한하는 것은 아니다.
본 발명의 일 태양에 따라, 보안 컴포넌트(165)는 도 1의 서버 연합(120) 및 클라이언트 디바이스(110)내의 데이터 및 정보에 액세스하는 엔티티의 인증 프로세스를 수행하도록 사용되는 다양한 하드웨어 및/또는 소프트웨어 컴포넌트를 포함하는 인증 모듈(1102)을 포함한다. 엔티티는 예를 들어 엔티티가 소비자-비즈니스이던 또는 비즈니스-비즈니스이던 광범위한 구성 및 트랜잭션 참여자를 포함하는 다수-당사자 대화에 연루될 때 기억된 정보 및 데이터에 액세스할 수 있다.
일실시예에 있어서, 더 상세히는, 인증 모듈(1102)은 시스템(100)의 다른 사용자 또는 엔티티로부터 엔티티 신원의 은폐(hiding) 또는 "거부(repudiation)"를 방지하면서, 도 2의 페이지 컴포넌트(210), 에미세리 컴포넌트(220), 및/또는 피에프돔 컴포넌트(230)로의 엔티티의 액세스를 제어하는 하드웨어 및/또는 소프트웨어 모듈을 포함한다. 여기서 사용되는 "엔티티"라는 용어는 (개별적인 또는 그룹의) 사용자뿐만 아니라 머신, 권한부여된 소프트웨어 아비터(arbiter), 서버 및 프록시 서비스, 다양한 다른 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트 등을 포함한다.
엔티티가 그들이 묘사하고 있는 엔티티인지를 판정하기 위해서, 그것이 소비자이던, 비즈니스이던, 하드웨어 모듈이던, 또는 소프트웨어 모듈이던간에, 각각의 엔티티는 "글로벌 ID"라 불리는 식별자를 가져야 한다. 각각의 글로벌 ID는 사람 또는 다른 엔티티가 취하기로 선택할 수 있는 다양한 "신원" 중 하나에 대응한다. (다른 엔티티를 포함하는) 대부분의 사람들은 비즈니스-관련 액티비티를 수행할 때 사용될 그들의 직업(학생, 어떤 조직의 종업원 등)에 속한 신원 및 다른 대화에 사용될 퍼스널 신원의 최소 2개 신원을 가질 것이다. 부가적인 신원은 사용자가 프라이버시를 유지하거나 그들의 대화의 몇몇과 연관된 보증의 더 높은 레벨에 대한 요구를 설명하기 위해서 이용될 수 있다.
시스템(100) 및/또는 애플리케이션(200)과 조합하여 보안 컴포넌트(165)는 신원이 사용되는 방법 및 각각의 신원과 연관된 기밀성 및 프라이버시의 레벨에 대한 최종 사용자의 완전한 제어를 허용하는 사용자 경험을 제공하면서, 이들 신원 및 연관 인증 신용보증서를 관리할 것이고 신원이 분리되어 유지됨을 보증한다.
이제 도 11을 참조하면, 사용자의 글로벌 ID와 다양한 다른 예시적인 서비스 및 정보 사이의 대화의 개략적인 표시가 설명된다. 일반적으로, 보안 컴포넌트(165)는 다양한 개개인, 비즈니스, 머신 등에 의해 소유된 다양한 글로벌 ID(1220a - 1220n)와 통신할 수 있다. 각각의 글로벌 ID(1220a - 1220n)는 시스템(100)의 일부에 액세스하는 엔티티의 인증을 위해 사용된다. 글로벌 ID(1220a - 1220n)는 그들이 표시하는 엔티티의 프로파일 프로퍼티를 포함하려 의도되지 않는다. 그보다는, 일실시예에 있어서, 프로파일은 디렉토리 컴포넌트(150)에 의해 제공된 상기 "나의 상태" 적응 디렉토리(905)를 사용하여 기억된다. "나의 상태" 적응 디렉토리(905)는 참조 번호(905a - 905n)에 의해 표시 된 다양한 부분을 선택적으로 포함할 수 있다. 나의 상태 적응 디렉토리(905)는 어그리드업온 스키마에 따라 사용자 데이터를 수용하고 있는 사용자 프로파일을 기억할 장소를 제공한다. 일반적으로, 각각의 글로벌 ID(1220a - 1220n)는 애플리케이션에서 또는 사이트-특정 데이터 스토어에서 나의 상태 서비스의 개개의 부분에 기억된 프로파일 정보에 인덱스를 제공한다. 따라서, 엔티티는 멀티플 글로벌 ID(1220a - 1220n)를 가질 수 있고, 그 각각은 그와 연관된 다른 프로파일을 갖는다.
대안으로, 보안 컴포넌트(165)의 일실시예에 있어서, 각각의 글로벌 ID(1220a - 1220n)는 다양한 하위-부분을 선택적으로 포함할 수 있는 여기서 "그룹 멤버쉽" 서비스(1224)라 불리는 아키텍처적으로 구별된 또 다른 서비스와 연관될 수 있고, 그룹 멤버쉽 서비스(1224)의 일부분만이 참조 번호(1224c)에 의해 도시되어 나타나 있다. 하위-부분(1224c)은, 이를테면, 사용자의 각각의 카테고리(1226a - 1226n)에 대한 프로파일 리스트내에 하나 이상의 프로파일을 가질 글로벌 ID(1220b)와 같이 하나의 글로벌 ID를 허용한다. 대안으로 각각의 카테고리(1226a -1226n)는 요청된 또는 정의된 프로파일로의 하나 이상의 포인터를 포함할 수 있다. 예를 들어, 비즈니스-비즈니스 시나리오에 있어서, 그룹 멤버쉽 서비스(1224)는 많은 공급자가 조사할 수 있는 권한분여된 구매자의 리스트를 수용하도록 사용될 수 있다. 협조 시나리오에 있어서, 그룹 멤버쉽 서비스는 프로젝트 기밀 문서에 액세스하도록 허용되는 또 다른 법인의 프로젝트 멤버를 수용할 수 있다. 또 다른 일예에 있어서, 각각의 글로벌 ID(1220a - 1220n)는 키를 신원에 바인딩하고 신원의 거부를 방지하는 하나 이상의 디지털 서명, X.509 인증서, 확장가능한 마크업 언어(XML) 인증서 또는 "라이센스", 또는 다른 인증서 포맷을 포함할 수 있다. 그러한 경우에 있어서, 다양한 인증기관(CA)은 Microsoft? 패스포트, Microsoft? 핫메일 및/또는 다양한 다른 제 3자 비즈니스와 같은(그러나 거기에 국한되는 것은 아님) 그러한 인증서를 발행할 수 있다.
다시 도 10을 참조하면, 본 발명의 또 다른 태양에 따라, 보안 컴포넌트(165)는 권한부여 모듈(1104)을 포함한다. 권한부여 모듈(1104)은 그룹 멤버쉽, 역할, 및 각각의 엔티티의 권리의 델리게이션이 변경될 수 있는 동적 환경에서 인증된 엔티티가 수행할 수 있는 액션을 결정하도록 다양한 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트를 포함한다. 그러한 바와 같이, 보안 컴포넌트(165)의 권한부여 모듈(1104)은 전통적인 "사용자-기반" 허가 모델보다 더 복잡한 방식으로 저작권있는 책, 노래, 및 영화와 같은 "라이센스된 콘텐트" 및 프라이빗 데이터와 같은(그러나 거기에 국한되는 것은 아님) 통제된 자료에 대한 엔티티 사용 제한의 강제를 제어할 수 있다. 또한, 더 넓고 더 유연한 델리게이션 및 권한부여 모듈(1104)의 제어 메카니즘은 권한부여의 전통적인 역할을 확장한다.
보안 컴포넌트(165)의 다른 모듈과 선택적으로 조합하여 권한부여 모듈(1104)이 권한부여 필드 및 테크놀로지에서의 고급을 달성하는 하나의 방법은 디지털 권리 관리를 통해서이다. 디지털 권리 관리(DRM)는 정보 및 콘텐트의 분산 및 사용에 대한 조건 및 규칙의 자동화된 엔포스먼트를 관여시킨다. 전통적인 시스템 보안 인튜이션에 대하여 실행되는 프레미스(premise)는 DRM의 핵심이다. 전형적인 시스템 보안에 있어서, 데이터 또는 정보로 액세스할 기관의 소스는 사용자이다. 사용자가 인증되고 나면, 서비스로의 액세스는 사용자 신원에 근거하여 권한부여된다. 그러한 바와 같이, 소프트웨어는 기반 사용자에게 부여되는 익스텐트 권리에 권한부여된다. 전형적으로, 인증된 슈퍼-유저(또는 관리자)는 임의의 모든 자원으로의 무한 액세스를 본질적으로 부여받는다. DRM은 몇가지 방식으로 이들 전제를 변경한다. DRM에 있어서, 기관의 소스는 콘텐트 또는 정보의 소유자이다. 소유자의 권리(및 사용자에게 부여된 허가)는 표준 언어로 명명된다. 권리는 소유자에 의해 지정된 제한 및 권리를 엔포싱하도록 사전에 인증되고 의무를 진 신뢰된 소프트웨어만이 정보로의 액세스를 부여받는 것을 보증하는 다양한 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트(그러나 거기에 국한되는 것은 아님)와 같은 "디바이스"에 의해 엔포싱된다. 이것은 콘텐트 소유자가, 사용자에게가 아니라, 소유자에 의해 정의된 텀즈에 근거하여 콘텐트로의 액세스를 제한할 하나의 소프트웨어에게 권리를 델리게이팅하게 한다.
DRM이 성취될 수 있는 하나의 예시적인 "디바이스"는 인증된 부트/아이솔레이티드 실행 가능 퍼스널 컴퓨터라 불리는 신뢰된 디바이스이다. "디바이스"는 하드웨어 컴포넌트에 유일한 하나 이상의 개인키를 보유하는 신뢰된(및 탬퍼-레지스턴트) 하드웨어 컴포넌트를 포함할 수 있다. 인증된 부트/아이솔레이티드 실행 가능 퍼스널 컴퓨터의 오퍼레이션에 있어서, 클라이언트류의 소프트웨어는 신뢰된 디바이스가 (예를 들어 그 코드를 해싱하고 하드웨어에 의해서 "신뢰된" 기관에 의해 서명된 해시를 명명하는 인증서와 해시를 비교함으로써) 그 신원을 인증하도록 요청한다. 인증의 부대 효과로서, 요청하는 소프트웨어에 의해 사용되는 물리적 주소는 아이솔레이팅되고 (OS를 포함하는) 다른 프로그램은 그 후 그 물리적 메모리로의 액세스가 거부된다. 마지막으로, 하드웨어에 유일한 개인키의 오퍼레이션은 (이제 신뢰된) 소프트웨어에 이용될 수 있게 된다. 당업자는 다양한 다른 디바이스가, 하드웨어이건, 소프트웨어이건, 또는 그 조합이건간에, DRM에 사용되는 디바이스의 소망 기능을 수행할 수 있다는 것을 인식할 수 있다.
본 발명의 또 다른 태양에 따라, 보안 컴포넌트(165)는 프라이버시 모듈(1106)을 포함한다. 프라이버시 모듈(1106)은 시스템(100) 및 애플리케이션(200)의 유익한 특성을 이용하는 다양한 엔티티에 의해 전송 및 검색되는 정보의 프라이버시 및 기밀성을 보유하는 다양한 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트를 포함한다. 일반적으로, 보안 컴포넌트의 프라이버시 모듈(1106)은 공중 네트워크를 오가며 서버 연합(120)내의 공유된 공중 서버상에 기억된 퍼스널 또는 높은-값 정보가 권한부여된 엔티티에게만 개시되는 것을 보증한다. 또한, 프라이버시 모듈(1106)은 공중 서버상에서 기억 및/또는 오가는 정보 및 데이터의 모든 타입의 데이터 무결성을 유지하고, 따라서 하나 이상의 엔티티 사이에서 트랜짓내에 있는 전송된 데이터의 권한없는 변형을 방지한다. 프라이버시 모듈(1106)이 보안 컴포넌트(165)의 독립 모듈로서 나타나 있지만, 프라이버시 모듈(1106)의 기능은 특정한 독립 모듈러 형식을 갖지 않고 인증 모듈(1102), 권한부여 모듈(1104), 보안 서비스(1100)를 형성하는 다양한 다른 모듈중 하나 이상, 또는 보안 컴포넌트(165)의 단지 함수내에 편입될 수 있음을 당업자는 인식할 것이 다.
여기 포함된 상기 및 다른 가르침에 비추어, 프라이버시 모듈(1106)의 기능은 다양한 방식으로 달성될 수 있다. 예를 들어, 일실시예에 있어서, 디지털 무결성은 신원의 거부를 관리하는 보안 컴포넌트(165) 및/또는 프라이버시 모듈(1106)의 능력 및 디지털 서명의 사용을 통하여 유지될 수 있다. 또 다른 예시적인 실시예에 있어서, 암호화된 트랜스포트는 클라이언트 디바이스(110) 및 서버 연합(120)의 멀티플 호스트 또는 멀티플 포인트 사이에서 데이터 및 정보를 전송하도록 사용된다. 암호화된 트랜스포트가 호스트-호스트인지 또는 포인트-포인트인지는 통신이 온라인 및 오프라인(스토어-앤-포워드) 통신인지에 의존한다. 본 발명의 일실시예의 암호화된 트랜스포트 프로세스의 일태양은 전송된 데이터 및 정보가 선택적으로 부분 또는 전체 암호화되는 것이다. 애플리케이션-특정 트랜잭션을 위한 메시지(엔드-엔드)와 같이, 데이터 및 정보내에서 선택적으로 암호화함으로써, 보안 컴포넌트(165)는 모든 네트워크 트래픽을 암호화하는 코스트없이 안전한 프라이빗 정보를 제공한다.
호스트-호스트 트랜스포트에 대해서 인터넷 프로토콜 보안(IPSEC)이라 불리는 보안 프로토콜은 버츄얼 프라이빗 네트워크(VPN) 터널을 구현하고 참여하는 시스템의 네트워크 접속을 인증하기 위해 필요로 된다. 호스트-호스트 트랜스포트를 위해 사용되는 (국한되지는 않지만 캐시, 에어스트림, 콘텐트 기반 라우터 등과 같은) 중간 서버는 전형적으로 더 낮은-레벨 네트워크 서비스가 각각의 애플리케이션에 유일한 기밀성 폴리시를 엔포싱하지 않기 때문에 선택적인 메시지 암호화를 사 용하도록 설계된다. 선택적 메시지 암호화의 사용은 캐시의 수행 이익을 얻거나 중간 서버가 콘텐트를 필터링하도록 요구하는 애플리케이션 콘텐트만이 그로부터 이익을 받기 때문에 선택적이다. 대조적으로, 퍼스널 또는 높은-값 정보는 기밀성을 위해 암호화되고, 일반적으로 중간 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트와 같은 중간 네트워크 디바이스의 서비스로부터 이익을 얻지 않는다.
포인트-포인트 통신에 있어서, 보안 소켓 레이어(SSL) 프로토콜이 사용되고 선택적 메시지-기반 암호화를 사용하도록 설계되지 않은 애플리케이션에 최소-공통-디나미네이터 레거시로서 계속된다. 당업자는 IPSEC가 포인트-포인트 트랜스포트로서 선택적으로 사용될 수 있음을 인식할 수 있다. 일반적으로, 트랜스포팅된 데이터 및 정보의 기밀성 및 프라이버시는 알려진 방법의 조합을 사용하여 달성될 수 있다.
본 발명의 또 다른 실시예에 있어서, 보안 컴포넌트(165)는 암호화된 형식으로 인터넷을 경유하여 전송된 모든 데이터를 선택적으로 유지한다. 현재, 오늘날 인터넷상에 전송된 정보의 대다수는 암호화되어 있지 않다. 충분한 하드웨어 및 시스템 지원으로, 본 발명의 보안 컴포넌트(165)는 현재의 "(제한된) 디맨드상의 암호화"로부터 "항시 암호화" 솔루션으로 정보 및 데이터의 트랜스포테이션을 선택적으로 시프팅할 수 있다. 암호화는 정보 및 데이터가 보호되는 유용한 방식이지만, 그 자체로서는 모든 보안 요구에 완벽한 솔루션은 아니다. 그러한 바와 같이, 본 발명의 보안 컴포넌트(165)는 유익한 프로퍼티내의 트랜스포트가능한 데이터의 전체 암호화의 특성 및 인증 및/또는 권한부여 하드웨어 및/또는 소프트웨어 모듈, 컴포넌트, 및 기능의 특성을 조합할 수 있다.
본 발명의 또 다른 태양에 따라서, 보안 컴포넌트(165)는 전 서버 연합(120)을 통하여 분산되고 따라서 분산 네트워크 보안을 제공한다. 일반적으로, 보안 컴포넌트(165)의 분산 본성은 중간 프록시 서버가 이벤트 및 메시지를 올바르게 라우팅하도록 허용하면서, 호스트-호스트이건 포인트-포인트이건간에, 메시지 콘텐트의 무결성 및 엔드-엔드 기밀성을 제공한다. 전반적인 네트워크 보안은 컴퓨팅 노드와의 악의적인 간섭(예를 들어, 플루딩, 파괴적인 바이러스) 및 민감한 자료의 권한없는 유포를 방지하도록 데이터 흐름을 제어한다. 전형적으로, 이들 함수의 많은 것은 방화벽에 의해 수행된다. 불행하게도, 하이퍼텍스트 트랜스퍼 프로토콜(HTTP)을 통한 XML 메시징의 출현으로, 전형적인 방화벽은 엔티티와 요청 사이를 구별하는 데 덜 효과적이다. 상기한 바와 같이 메시지 스트림내 암호화의 선택적 사용은 기밀 퍼스널 데이터의 손실없이 메시지 콘텐트 필터링을 허용한다; 그러나 이것은 또한 방화벽에 의해 제공될 수 있는 보호의 종류를 제한한다.
현재, 방화벽은 소스 및 수신지 인터넷 프로토콜(IP) 주소 및 전송 제어 프로토콜/사용자 데이터그램 프로토콜(TCP/UDP) 포트와 같은 트랜스포트 레벨 정보를 검사하는 트랜스포트 레이어에서 대부분 동작한다. 유용할지라도, 많은 전통적인 방화벽은 바이너리에서의 바이러스에 대한 액세스된 데이터를 스캔하거나 불법적인 콘텐트에 대한 텍스트를 스캔하도록 이미 확장되어 있다. 따라서, 클래식 방화벽 모델은 암호화의 사용이 데이터 시찰 또는 포트의 시찰조차 방지하는가 및 단일 TCP 포트를 공유하는 XML-기반 애플리케이션에 의한 HTTP의 사용이 TCP 레벨 필터의 값을 감소시키는가의 2개의 독립된 경향에 의해 문제제기되어 오고 있다. 그러한 바와 같이, 현재의 방화벽은 외부 공격에 대한 보호 및 폴리시의 엔포스먼트라는 2개의 기능을 믹싱하기 때문에 그 효과에 있어서 제한된다. 그러한 바와 같이, 본 발명은 단일 하드웨어 및/또는 소프트웨어 모듈내에 로컬화되거나 대안으로 전 서버 연합(120)을 통하여 분산될 수 있는 3개 이상의 다른 모듈 및 컴포넌트 사이에서 그 기능을 공유함으로써 방화벽의 효과를 증가시키는 방화벽 모듈(1108)을 포함한다.
이제 방화벽 모듈(1108)의 예시적인 엘리먼트를 설명하는 도 12를 참조하면, 고급 방화벽 모듈(1108)의 일부는 퍼스널 방화벽(1310)이다. 퍼스널 방화벽(1310)은 복호화 후에 로컬하게 데이터 시찰을 수행하고 다양한 다른 보호 기능을 수행한다. 예를 들면, 퍼스널 방화벽(1310)은 "바이러스 검사" 시스템의 다양한 기능을 수행한다; 그러나, 새로운 공격이 검출될 때, 공격 서명은 모든 퍼스널 방화벽에 신속하게 전파되고, 따라서 다음 시스템 또는 애플리케이션 업그레이드를 기다려야만 할 필요 없이 공격을 블록킹한다. 퍼스널 방화벽이 모든 내부 호스트상에 인스톨되면, 호스트는 시스템(100)과 같은 네트워크상 또는 다른 호스트로부터 트로이안(Trojan) 액티비티를 검출할 수 있다. 이로써 이것은 페리미터(perimeter) 방화벽에 의해 모니터링되고 있음없이 로컬 호스트에 대하여 직접 선동될 수 있는 트로이안 공격의 가능성을 감소시킨다.
고급 방화벽 모듈(1108)의 제 2 부분은 서버 연합(120)의 부분을 형성하는 특정한 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트를 소유하는 엔티티의 엔티 티 폴리시를 엔포싱하는 보안 게이트웨이(1312)이다. 각각의 보안 게이트웨이(1312)는 HTTP 방법뿐만 아니라 소스 및 수신지 유니폼 리소스 로케이터(URL)에 근거하여 검사를 수행한다: GET, POST, NOTIFY. 보안 게이트웨이(1312)는 HTTP 프록시로서 애플리케이션(200)내에 명시적으로 삽입되고, 예를 들어 어느 외부 페이지가 날의 어느 시간에 용이하게 액세스될 수 있는지, 또는 어느 사용자가 외부 알림을 수신할 수 있는지를 결정할 수 있다. 보안 게이트웨이(1312)는 호스트이고 따라서 IPSEC 또는 SSL 엔드포인트일 수 있다. 더하여, 각각의 보안 게이트웨이(1312)는 XML 구조화된 데이터로의 액세스를 가질 수 있고, 따라서 특정 호스트로부터 전송된 메시지의 콘텐트로의 액세스를 가질 수 있다.
보안 게이트웨이(1312)의 하나의 선택적인 함수는 엔드-엔드 미디어 스트림을 권한부여하도록, 페리미터 또는 트랜스포트 레벨 방화벽(1314; 이하 논의됨)내에 "홀을 펀칭"하는 것이다. 스트림은 보안 게이트웨이(1312)에 의해 모니터링되는 HTTP 또는 SIP 교환에 의해서 셋업될 수 있지만, HTTP가 아니라 사용자 데이터그램 프로토콜/리얼-타임 트랜스포트 프로토콜(UDP/RTP)을 사용하여 전송될 것이다. 보안 게이트웨이(1312)는 권한부여되는 IP 주소 및 TCP/UDP 포트의 페어를 결정한다. 각각의 보안 게이트웨이(1312)는 또한 IP 주소의 2개의 페어 사이에서 IPSEC의 사용을 권한부여하는 능력을 갖는다.
고급 방화벽의 제 3 부분은 아마도 보안 게이트웨이(1312)의 제어하에 시스템(100)의 로컬 네트워크로의 액세스를 부여 또는 부인하는 페리미터(트랜스포트 레이어) 방화벽(1314)이다. 트랜스포트 레이어 방화벽(1314)은 어느 "아웃사이드" 트래픽이 인사이드상의 머신에 도달하는지를 제어하고 잘 관리되는 그들 "아웃사이드" 소스로만의 그러한 액세스를 제한하는 책임을 갖는다. 디폴트 구성에 있어서, 그들 권한부여된 머신은 보안 게이트웨이(1312)를 포함한다.
일반적으로, "트랜스포트 레벨 방화벽"과 "보안 게이트웨이" 사이의 페리미터 제어 함수의 스플릿은 시스템(100) 및/또는 애플리케이션(200)의 스케일가능성 및 성능을 고려한다. 본성에 있어서 라우터에 유사한 트랜스포트 레벨 방화벽(1314)은 애플리케이션 서버인 보안 게이트웨이(1312)가 스케일링 웹 서버를 위해 사용되는 스케일링 테크놀로지를 이용할 수 있으면서, 스케일링을 달성하도록 병렬로 접속될 수 있다.
도 12는 방화벽 모듈(1308)의 각각의 부분(1310, 1312, 및 1314)이 통합되어 있는 것을 도시하고 있지만, 각각의 부분(1310, 1312, 및 1314)은 전 서버 연합(120)을 통하여 분산될 수 있다. 더 나아가, 보안 서비스 컴포넌트(165)는 멀티플 방화벽 모듈(1108) 및 멀티플 부분(1310, 1312, 및 1314)을 포함할 수 있다.
본 발명의 또 다른 태양에 따라, 보안 컴포넌트(165)는 전자서명, 타임-스탬핑, 및 공증 서비스의 사용을 허용하는 다양한 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트를 포함할 수 있다. 전자서명의 사용은 후속 분쟁의 경우에 법률상의 보상, 권한부여의 증명, 근원의 증명 등과 같이(그러나 거기에 국한되지는 않음), 전자 트랜잭션에서의 물리적 서명의 이점의 많은 것을 사용자에게 제공한다. 더 나아가, 문서를 무결성 봉인하는 능력(임의의 변형은 서명을 무효화시킨다)은 정보가 신뢰할 수 없는 통신 및 프로세싱 채널을 오가기도 하는 전자 세계에서 또한 가치있다.
본 발명의 보안 컴포넌트(165)는 국한되지는 않지만 전자서명 알고리즘(DSA), 및 RSA 데이터 보안 인코포레이티드에 의해 개발된 엘립틱 커브, 및 암호화 테크놀로지(RSA)와 같이 전자서명을 위해 현재 사용되는 테크놀로지를 지원하도록 구성될 수 있다. 또한, 보안 컴포넌트(165)는 XML 및 XML 스키마와 사용하기 위한 보안 전자서명을 발생시키도록 조작될 수 있다는 점에서 유연하다. 예를 들어, 전형적인 서명된 이메일 시스템(시큐어/멀티퍼포스 인터넷 메일 익스텐션(S/MIME) 또는 프리티 굿 프라이버시(PGP) 테크놀로지)에 있어서, 사용자는 그들이 합성한 이메일의 이메일 인코딩을 서명할 그 이메일 프로그램을 절대적으로 신뢰한다. 불행하게도, 높은 값 및 포텐션 라이어빌리티를 관여시키는 문서에 대하여 더 많은 보호가 요구될 수 있다. 그러한 중요한 문서를 표시하도록 XML 또는 일반적인 XML 스키마의 사용은 XML 문서의 카노니컬(canonical) 표시를 제공하는 범용 툴의 생성을 허용한다. 문서의 카노니컬 표시의 발생은 전자서명을 생성 및 검증하기 위한 요구이다.
보안 컴포넌트(165)는 전자서명 기능 및 서비스를 수행하는 하드웨어 및/또는 소프트웨어 모듈내에 선택적으로 편입될 수 있는 타임 스탬핑 및 공증 서비스를 더 포함할 수 있다. 전자서명과 마찬가지로, 타임-스탬핑 서비스는 (가장 일반적인 의미의) 문서가 시간의 어떤 포인트에서 존재했다는 강력한 증거를 제공한다. 마찬가지로, 디지털 공증 서비스는 누군가 시간의 한 포인트에서 소정 문서를 전자서명했다는 증거를 제공한다. 보안 서비스(300)내에 편입될 수 있는 서비스의 이들 타입의 예는 사용되고 있는 X.509-기반 및 PGP-기반 신뢰 모델을 모두 갖는 슈어티(Surety), 엔트로픽(Entropic), 이-타임스탬프를 포함하지만 이에 국한되지는 않는다. 더하여, 그러한 서비스로의 인터페이스를 망라하는 드래프트 표준 타임-스탬핑 프로토콜이 제안되어 있다. 본 발명의 보안 서비스는 현재 진화하는 관련 서비스를 따르도록 하드웨어 및/또는 소프트웨어 유연성을 제공하면서, 존재하는 서비스의 상호운용가능성을 허용한다.
일반적으로, 보안 컴포넌트(165)는 디바이스의 플랫폼 코어 운영체제(OS)내에 편입될 수 있고, 따라서 플랫폼의 툴, 애플리케이션, 서비스, 및 OS의 모든 다른 모듈 및 함수에 영향을 미칠 수 있다. 대안으로, 보안 컴포넌트(165); 거기에 제공된 모듈(1102, 1104, 1106, 및 1108) 및 기능은 서버 연합(120), 클라이언트 디바이스(110) 및/또는 애플리케이션(200)내의 다양한 위치에 배치될 수 있거나 또는 도처에 분산될 수 있다. 또 다른 구성에 있어서, 보안 컴포넌트(165)는 애플리케이션(200)의 에미세리 컴포넌트(220) 및 피에프돔 컴포넌트(230) 사이에 위치결정될 수 있다. 또한, 도 10에 도시된 바와 같이, 보안 컴포넌트(165)의 각각의 모듈은 점선으로 도시된 바와 같이, 거기에 포함된 하나 이상의 다른 모듈(1102, 1104, 1106, 및 1108)과 통신할 수도 하지 않을 수도 있다.
보안 컴포넌트(165)는 소비자, 비즈니스, 정부 등에게, 증가된 웹 사이트간 통신으로, 더 큰 인터넷 커넥티비티 및 협조를 허용하는데 도움을 주는 다양한 통신 시나리오에서 이용될 수 있다. 예를 들어, 제 1 시나리오는 소비자-서비스 또는 비즈니스 환경에서이다. 본 발명의 보안 컴포넌트(165)는 "항시 온" 디지털 서브스크라이버 라인(DSL) 및/또는 케이블 모뎀 시스템 및 다른 홈 네트워킹 시나리오를 갖는 홈 컴퓨터 보안에 대하여서던간에 더 큰 통신, 알림, 스트리밍 미디어, 게임잉, 및 협조 서비스를 허용한다. 보안 컴포넌트(165)는 ⅰ)대문에서 무작위의 초인종 울림의 등가에 대하여 인스턴트 메시지 또는 인터넷 전화통신과 같은 인터넷 시그널링 메시지의 남용, ⅱ)사용자의 액티비티를 트랙킹함으로써 광고주 및 다른 사람들에 의한 사용자의 "프리시젼 타겟팅"을 감소시키는 액티비티, ⅲ)제 3자를 향하여 장착되는 공격의 부분으로서 개인의 컴퓨터를 사용하는 트로이안 프로세스를 통한 퍼스널 자원의 남용, ⅳ)인터넷 서비스의 거부, 및 ⅴ)문자그대로 소비자로부터 훔치는 원치않는 구매, 머니 트랜스퍼 등을 초래하는 개개인의 컴퓨터의 불법적인 액세스와 같은 범죄 행위로부터 소비자-서비스 환경에서의 소비자를 보호한다.
또 다른 시나리오는 애플리케이션 서비스 프로바이더(ASP) 호스팅을 위한 소형 비즈니스 지향 서비스 플랫폼이다. 본 발명의 보안 컴포넌트(165)는 통합 전자 문서 관리 및 온라인 비즈니스 서비스, 종업원 퍼스널 웹 기억장치 등과 같은 온라인 비즈니스 액티비티, 엔터프라이즈 자원 플랜잉(ERP) 애플리케이션의 호스팅, 메시징, 파일 및 프린트 서비스를 위한 증가된 보호를 제공한다. 또한, 보안 컴포넌트(165)는 다양한 비즈니스가 호스팅된 웹 프레즌스, 델리게이팅된 역할-기반 관리, 및 배니티(vanity) 도메인을 갖게 한다. 그러한 바와 같이, 본 발명 및 더 상세히는 보안 컴포넌트(165)는 소형 비즈니스가 어드레싱된 그들 비즈니스 애플리케이션 요구의 모두를 얻기 위해 멀티플 ASP로의 안전한 액세스를 갖는 기능을 갖게 한다.
또 다른 시나리오는 소비자-비즈니스-비즈니스 환경이다. 이 시나리오는 소비자-서비스 시나리오에 관해서 이미 상기된 요구의 많은 것을 포함하는 반면, 비즈니스-비즈니스 관계의 요구 및 문제를 포함한다. 그러한 바와 같이, 보안 컴포넌트(165)는 이종 환경에서의 멀티플 엔티티에 보안을 제공한다. 보안 컴포넌트(165)는 고객 정보 기능의 비-거부를 공급하면서, 온-와이어 퍼시스턴트 정보 보호를 제공한다. 더 나아가, 보안 컴포넌트(165)는 미들 티어 트랜잭션, 클라이언트-서버 액티비티를 인증 및 권한부여할 수 있고, 피어-투-피어 신뢰를 수수할 수 있다.
마지막 예시적인 시나리오는 비즈니스-비즈니스 환경이다. 보안 컴포넌트(165)는 서플라이 체인 애플리케이션, 비즈니스-비즈니스 협조 등을 지원하도록 구성될 수 있다. 더 나아가, 특정한 인증 메카니즘에 독립한 크로스-엔터프라이즈 신뢰 관계의 관리가 공급된다. 더하여, 보안 컴포넌트(165)는 (ⅰ)재정 손실에 이르는 권한없는 트랜잭션, (ⅱ)신용보증서가 우연히 개시되었기 때문에 트랜잭션에 대한 요청은 진정한 것이 아니다라는 비즈니스 파트너에 의한 사기 청구, (ⅲ)권한없는 퍼스넬에 의한 서버(140) 또는 클라이언트(110)로의 권한없는 액세스, (ⅳ)데이터 액세스 요청 및 응답을 관할하고 기밀 데이터를 얻는 경쟁자로의 정보 누설, (ⅴ)데이터 검색 요청에 있어서 비즈니스 파트너인 척하고 잘못된 데이터를 반환하여 잘못된 결정을 하게 하는 공격자, (ⅵ)넷을 통하여 송신함으로써 가치있는 데이터를 공모자에게 누설하도록 데이터가 기억되어 있는 사이트에서의 신뢰할만하지 못한 시스템 오퍼레이터, (ⅶ)적합하지않은 정보를 아웃사이더에게 송신하도록 인터넷을 사용하는 인사이더, 및 (ⅷ)누설된 정보, 권한없는 트랜잭션, 또는 권한없는 트랜잭션과의 간섭을 초래하는 잘못 이해된 또는 잘못 적용된 폴리시의 생성의 가능성을 감소시킨다.
K. 코드 관리
코드 관리 컴포넌트(175)는 사용자가 가장 최근에 업데이트된 애플리케이션 및 그들이 필요로 하는 코드로의 액세스를 투과적으로 갖는 것을 보증한다. 도 13은 코드 관리의 다양한 태양에 있어서 매니페스트의 사용을 도시한다. 코드 관리는 상호운용하는 컴포넌트, 서비스, 및 애플리케이션 사이의 대화 및 추상화를 형식화하는 데 주로 관여한다. 이러한 형식화는 이들 기초 빌딩 블록으로 이루어진 소프트웨어를 관리하기 위해 각각의 레벨에서 아이솔레이션의 레이어를 제공한다. 매니페스트는 본질적으로 컴포넌트, 서비스, 또는 애플리케이션을 좀 더 상세히 기술하는 데이터베이스이다. 코드 컴포넌트, 코드 컴포넌트 사이의 관계, 및 그들로부터 이루어진 애플리케이션을 기술함으로써, 매니페스트는 시스템으로 하여금 애플리케이션이 무엇인지를 이해하고 따라서 그 애플리케이션을 효과적으로 관리하게 한다. 애플리케이션 또는 서비스는 루트 매니페스트가 애플리케이션 또는 서비스를 실행하기 위한 스타팅 포인트를 포함한다는 것을 제외하고는, 코드 컴포넌트 매니페스트에 유사한 루트 매니페스트에 의해 정의된다.
매니페스트(1400)는 매니페스트와 연관된 소프트웨어를 기술하기 위한 정보의 다양한 카테고리를 포함한다. 식별된 카테고리는 예시일뿐이며 어떠한 방식으 로든 본 발명을 반드시 제한하는 것은 아님을 이해해야 한다. 마찬가지로, 각각의 카테고리내의 정보의 기술은 또한 예시적이다. 특정 카테고리의 콘텍스트에서의 정보의 어떠한 기술도 그 정보가 그 카테고리에서만 나타나거나 전형 나타나지 않거나 하는 요구로서 해석되어서는 안된다. "소프트웨어"라는 용어가 도 13과 결합하여 사용되는 경우에 그 용어는 컴포넌트, 서버, 애플리케이션 등을 포함하는 것으로 넓게 해석되어야 함을 주목하자.
매니페스트(1400)는 하나 이상의 컴퓨팅 환경에서 그 연관된 소프트웨어가 사용될 수 있게 하기 위한 정보의 슈퍼셋이다. 예를 들어, 매니페스트(1400)는 소프트웨어의 부분인 자원(1420)과 실행가능한 코드(1410)를 식별한다. 오퍼레이셔널 요구 및 연관 소프트웨어의 요구에 의존하여, 실행가능한 코드(1410) 및 자원(1420)은 프라이빗(로컬) 또는 외부 의존도를 참조할 수 있다. 매니페스트(1400)는 모든 소프트웨어와 연관되어 있고 모든 매니페스트는 임의의 외부 의존도를 기술하기 때문에, 소프트웨어 오브젝트는 종래기술에서의 실시인 바와 같은 공유된 DLL에 대한 레퍼런스 카운트를 관리하지 않고 수집된 가비지일 수 있다.
의존적 매니페스트(1430)는 매니페스트(1400)의 외부 의존도를 식별한다. 이것은 매니페스트(1400)에 로컬하지 않은 매니페스트 및 소프트웨어에 대한 레퍼런스이다. 예를 들어, 매니페스트는 하나의 소프트웨어 오브젝트가 단지 어떤 다른 소프트웨어 오브젝트의 확장인 경우에 캐스케이딩할 수 있다. 이것은 간단한 개별화된 애플리케이션의 용이한 구축을 허용한다. 개별화된 애플리케이션은 애플리케이션의 외관 및 그 거동을 변경하도록 베이스 애플리케이션에 의해 사용되는 몇몇 셋팅 또는 자원을 오버라이딩할 수 있다. 베이스 애플리케이션은 그 자체의 어떤 부분이 의도된 영역으로 개별화의 범위를 적절하게 제한하도록 변형의 이러한 종류에 개방되는가에 대한 제약을 제공한다. 매니페스트(1400)에 외부적인 매니페스트 및 다른 소프트웨어에 대한 이들 레퍼런스는 의존적 매니페스트(1430)내에 기억된다. 또한 의존 매니페스트(1430)는 매니페스트(1400)에 로컬이지만 개별적으로 정의된 매니페스트를 식별할 수 있다. 대안으로, 의존 매니페스트(1430)는 논리적으로 포함되거나 또는 매니페스트(1400)와 링크된 별개로 기억된 매니페스트를 포함할 수 있다. 그러한 배열은 정보가 소프트웨어의 개발과 같은 단지 제한된 목적을 위해서만 관련되고 정상 동작 동안에는 필요로 되지 않는 경우에 유익할 수 있다.
엔트리 포인트(1440)는 매니페스트(1400) 및 그 연관 소프트웨어가 외부 소프트웨어에 이용가능하게 하는 (엔트리-포인트, 자원, 및 서비스와 같은) 소프트웨어 오브젝트를 위해 공개 이름을 노출한다. 매니페스트(1400)에 로컬인 소프트웨어 오브젝트 이름은 또한 엔트리 포인트(1440)내에 존재할 수 있다. 이름 및 메타데이터는 특정 소프트웨어 오브젝트 및 그 소프트웨어 오브젝트에 의해 사용되는 모든 다른 소프트웨어 오브젝트를 식별하도록 사용된다. (메타데이터는 버전, 로케일, 및 플랫폼과 같은 정보를 포함한다.) 빌딩은 이름 의존도가 리졸빙되는 프로세스이다. 이름이 그 결과 오브젝트로 리졸빙되고 나면, 그 오브젝트는 애플리케이션에서 사용될 수 있다. 소프트웨어 오브젝트 사이의 모든 바인딩은 매니페스 트를 통하여 가고, 컴퓨팅 환경 자체, 관리자, 또는 독립한 소프트웨어 개발자에 의해 매니페스트에 적용된 폴리시에 의해 영향받을 수 있다. 따라서, 이름 리졸루션은 폴리시 및 보안 디시젼을 삽입할 기회를 제공한다. 이름은 실제로 코드 또는 데이터를 제공하는 것이 아니라 코드 및 데이터에 액세스하도록 리졸빙되는 간접이기 때문에, 빌딩 프로세스동안 필요할 때 액세스를 리디렉팅 또는 제약하는 것이 가능하다.
예를 들어, 애플리케이션의 매니페스트(1400)는 메타데이터 요청하는 버전 1을 갖는 특정 런타임 소프트웨어 오브젝트를 사용하도록 요청할 수 있다. 그러나, 관리자는 특정 런타임 소프트웨어 오브젝트의 더 새로운 버전이 모든 요청에 대하여 사용되도록 폴리시를 세팅할 수 있다. 메타데이터 정보로 인하여 애플리케이션이 더 새로운 버전을 사용하여 브레이킹한다면 관리자는 애플리케이션과의 작업에 알려져 있는 런타임의 버전을 애플리케이션이 사용하게 하도록 폴리시를 변경할 수 있음을 주목하자. 또한 이름 리졸루션은 시스템내의 보안 폴리시에 의존하는 어떤 이름의 리졸루션을 허용하지 않음으로써 프로세스내로 보안을 삽입할 기회를 제공한다.
구성 정보(1450)는 소프트웨어에 의해 필요로 되는 데이터 테이블 및 플랫폼 서비스를 식별한다. 구성 정보(1450)는 또한 매니페스트(1400)와 연관된 소프트웨어가 어떻게 사용될 수 있는지 또는 어떻게 거동해야 하는지를 기술할 수 있다. 예를 들어, 소프트웨어는 크레디트 카드 클리어링 서비스를 제공할 수 있다. 크레디트 카드 트랜잭션을 관리하기 위한 2개의 옵션이 있다: (1)서비스 프로바이더가 프로세싱에 대한 제어를 유지하거나, 또는 (2)서비스 프로바이더는 서비스를 편입하는 개발자가 개발자 자신의 크레디트 카드 트랜잭션을 관리하게 한다. 서비스 프로바이더가 이들 옵션 중 하나만을 구현한다면, 그 정보는 서비스를 실행시키도록 사용되는 구성 정보(1450)내에 캡처링될 수 있다. 또한 개발자에게 성능 및 디버깅 정보를 제공하도록 구성 정보(1450)내에 모니터가 포함될 수 있다.
상기한 바와 같이, 매니페스트(1400)는 소프트웨어의 다양한 버전을 유지하는 것을 용이하게 한다. 이러한 특성은 새로운 소프트웨어를 배치할 때 매우 유용할 수 있다. 매니페스트(1400)의 본성은 다양한 컴포넌트, 서비스, 및 애플리케이션의 다양한 상태 및 구성 정보가 서로로부터 아이솔레이팅되게 한다. 이러한 아이솔레이션은 컴포넌트, 서비스, 및 애플리케이션의 다른 버전이 나란히 실행될 수 있고, 그들이 설계되고 테스팅되는 소프트웨어의 특정 버전으로의 다른 소프트웨어 오브젝트 액세스를 허용한다는 것을 의미한다. 결과로서, 새로운 버전이 스타트업하는 동안 구 버전은 작업을 끝내는 페이징된 배치, 아이솔레이팅되고 공유된 배치, 및 (프론트 엔드 서버로부터 백 서버로의) 멀티-티어 배치가 가능하다.
매니페스트(1400)와 같은 매니페스트는 코드 관리에 상당한 이익을 제공한다. 예를 들어, 매니페스트는 (1)컴포넌트, 서비스, 및 애플리케이션의 자체-기술을 허용하고, (2)개발자 및 관리자에 의해 컴포넌트, 서비스, 또는 다른 애플리케이션으로부터 애플리케이션 합성을 가능하게 하고, (3)컴포넌트/서비스/애플리케이션 명명, 디스커버리, 및 런타임에서 바인딩을 용이하게 하고, (4)라이센싱, 버전잉, 분산, 및 다큐멘팅의 부가된 이슈를 갖는 개발/설계 타임 시나리오를 가능하게 하고, (5)레거시 시스템의 상호운용가능성을 가능하게 하고, (6)컴포넌트, 서비스, 및 애플리케이션의 쉬운 분산/인스톨, (7)애플리케이션/서비스/컴포넌트 헬스의 온고잉 관리를 가능하게 한다.
상기 코드 관리는 개발자, 관리자, 및 최종 사용자가 도 1 및 도 2에 도시된 전 클라이언트 및 서버 티어에서 애플리케이션을 쓰고, 소비하고, 배치하고, 업데이트하고, 명명하고, 위치시키게 하도록 매니페스트를 사용한다. 이하의 예는 도 1 및 도 2를 참조하여 매니페스트가 클라이언트로부터의 애플리케이션을 인스톨 및 실행하도록 어떻게 사용될 수 있는가를 설명한다.
이러한 예에 있어서, 검색 엔진 또는 다른 쉘을 경유하여, 사용자는 특정 워드 프로세싱 애플리케이션을 위해 유니폼 리소스 로케이터(URL)에 네비게이팅하도록 도 1의 클라이언트(110) 중 하나를 사용하는데, URL은 서버 연합(120)내에 위치하고 있다. 이러한 애플리케이션이 이미 클라이언트상에 "인스톨"되어 있다면(즉, 이미 실행되고 있으면), 애플리케이션은 URL로 네비게이팅될 때 로컬 캐시로부터 실행된다. 애플리케이션이 클라이언트상에 "인스톨"되어 있지 않으면(즉, 클라이언트상에서 사전 실행되고 있지 않으면), 애플리케이션은 다운로딩되어 이제 설명되는 프로세스를 사용하여 실행될 것이다.
인스톨러 모듈은 애플리케이션과 연관된 매니페스트를 다운로딩한다. 그 후 인스톨러는 플랫폼 요구 및 알려진 비양립성의 어셈블리 모두에 대한 클라이언트의 구성과 매니페스트를 비교한다. 애플리케이션이 클라이언트상에서 실행될 수 없는 이벤트에 있어서, 에러 메시지가 클라이언트상에 나타난다. 애플리케이션이 클라 이언트상에서 실행될 수 있다면, 인스톨러는 URL을 사용하여 서버 연합(120)내의 사이트에 접속한다. 그 후 클라이언트는 최종 사용자 라이센싱 어그리먼트(EULA)뿐만 아니라 구매/리스/인증 디시젼과 같은 어떤 사용자 인터페이스를 디스플레이한다. 그 후 애플리케이션은 온 디맨드 또는 전형적인 기능의 패키지로서 다운로딩된다. 애플리케이션의 자동 서비싱은 본 발명에 따라 비동기 메시징을 사용하여 인스톨 URL로부터 매니페스트의 정기적인 업데이트를 경유하여 구동될 것이다.
L. 시나리오
이하 시나리오는 본 발명의 분산 컴퓨팅 서비스 플랫폼(115)이 어떻게 더 쉬운 협조 및 통신을 가능하게 함으로써 사용자를 엠파워링하는가를 예시한다. 시나리오는 사용자의 3개의 카테고리로 나뉜다: (1)날리지(knowledge) 작업자, (2)소비자, 및 (3)개발자.
날리지 작업자/비즈니스 시나리오
7사이클이라 불리는 소형 비즈니스 바이크 제조자는 알렉스에 의해 소유된다. 7사이클은 새로운 하이-엔드 바이크를 막 설계하였고 스포츠 상품 배급업자에게 새로운 바이크를 마켓팅할 필요가 있다. 이러한 시나리오는 몇몇 비즈니스 테마(예를 들어, 어느때/어느곳에서 정보로의 액세스 및 통합) 및 테크놀로지 테마(예를 들어, 전 디바이스에서 연합, 차세대 생산성 툴, 스키마 기반 통합)를 예시한다.
알렉스의 퍼스널 컴퓨터(PC)는 메시지, 캘린더, 콘택트/"버디 리스트" 등을 나타내는 그녀의 "시작 페이지" 또는 "홈 페이지"를 포함하는 개인화된 사용자 인 터페이스를 디스플레이한다. 사용자 인터페이스는 단일 통합 인터페이스에서 이-메일 메시지 및 음성 메시지를 포함한다는 점에서 멀티-모달이다. 음성 메시지는 텍스트 메시지로 변환될 수 있고 이-메일 메시지는 원할 때 음성 메시지로 변환될 수 있다. 또한, 사용자 인터페이스는 애플리케이션-기반이 아니라 콘텐트-기반이다. 예를 들어, 시작 페이지는 다양한 애플리케이션에 의해 통상 제공되는 정보(즉, 음성 메일 메시지, 캘린더, 콘택트 등)를 포함한다.
알렉스는 관리 비즈니스를 돕도록 설계된 서비스(예를 들어, 마이크로소프트사에 의해 제공되는 bCentralTM)에 로그온하기 위해 그녀의 PC를 사용하고 새로운 바이크를 7사이클의 온라인 카탈로그에 부가하기 위해 서비스를 사용한다. 서비스는 카탈로그 엔트리를 위한 템플릿을 브링업한다. 그 후 그녀는 새로운 바이크에 대한 정보(사진, 마켓팅 코우트, 제품 명세 등)를 찾으려고 (그녀의 퍼스널 데이터 스토어 및 다른 소스를 포함하는) 7사이클의 법인 인트라넷을 검색하고 적합한 정보를 카탈로그 템플릿으로 드래그 앤 드롭핑한다. 바이크에 대한 제품 명세는 공통 기술 언어(즉, XML)에서 제공되고 카탈로그 템플릿 서비스가 명세내의 정보를 이해하고 적합한 정보를 템플릿에 거주시키도록 스키마(상기 스키마 절을 보라)에 따른다. 알렉스는 업데이트된 카탈로그 페이지를 미리보고 출판한다. 그 후 새로운 바이크는 7사이클의 웹사이트에 리스팅된다.
그 후 알렉스는 새로운 바이크의 특징을 이룰 수 있는 다른 사이트/회사의 리스팅에 대한 디렉토리를 문의하도록 서비스를 사용한다. 디렉토리 서비스(상기 디렉토리 절 참조)는 엔터프라이즈 레벨 메타-디렉토리의 스키마-용이하게된 동기화를 통하여 인터넷-와이드 디렉토리 서비스를 제공하기 때문에, 로버스트 인터넷-와이드 디렉토리 리스팅의 이들 종류는 대단히 용이하게 된다. 그 후 알렉스는 새로운 바이크에 대한 정보를 이들 다른 회사에 공유한다.
또한 알렉스는 사람들이 새로운 바이크에 대한 정보를 즉시 찾을 수 있도록, 새로운 바이크에 대한 키워드의 리스트를 자동으로 발생시키고 이들을 몇몇 검색 엔진에 공유하기 위해 서비스를 사용한다.
알렉스는 웹상에서 7사이클의 새로운 바이크를 본 스포츠 상품 배급업자의 종업원인 산드라로부터 이메일을 받는다. 산드라는 알렉스가 트레이드쇼에서 그녀를 만날것을 제안한다. 알렉스는 셀 폰과 같은 휴대용 클라이언트 디바이스상에서 메시지를 수신한다. 이러한 클라이언트 디바이스의 사용자 인터페이스는 PC의 그것보다 더 작지만, 사용자 인터페이스에 의해 제공되는 특성은 PC의 사용자 인터페이스에 의해 제공되는 것들과 일관된다. 예를 들어, 폰은 콘택트 및 긴급 메시지를 나타내는 개별화된 하이라이트 페이지를 갖는 알렉스의 시작 페이지의 스케일링 다운 버전을 디스플레이한다.
알렉스가 산드라의 스케쥴에 링크하게 하고 트레이드쇼에서 그녀의 부스에 맵을 제공하는 콘택트 관리 페이지로 알렉스는 항해한다. 산드라의 스케쥴은 그러한 스케쥴 발행을 인에이블하는 알렉스의 나의 상태 디렉토리(디렉토리 절 참조)에 링크된 적응 디렉토리를 통하여 액세스될 수 있다. 알렉스는 스피치-텍스트 변환을 사용하여 산드라의 메시지에 회답하는데, 알렉스가 이-메일 메시지를 구술하게 한다. 그녀는 산드라의 캘린더를 검사하고 2시경에 만날 것을 제안한다.
알렉스는 트레이드쇼에 도착하고 그녀의 퍼스널 위치 및 산드라의 부스의 위치를 보여주는 그녀의 셀 폰상의 맵을 브링업하도록 프록시미티/위치 어웨어니스 서비스를 사용한다. 맵은 그녀가 부스에 다가감에 따라 그녀의 위치를 트랙킹한다.
그녀가 산드라를 만날 때, 산드라는 새로운 바이크에 대한 명세를 볼 수 있는지를 묻는다. 모든 정보는 7사이클의 법인 인트라넷상에 위치해 있다고 알렉스가 말한다. 그녀는 산드라의 태블릿 PC를 빌리고 게스트 사용자로서 로그인한다-(그녀의 작업 PC상에서의 것과 같은) 그녀의 시작 페이지가 하부의 지오-관련 정보(예를 들어, 알렉스로의 인터레스트의 로컬 것)와 함께 디스플레이된다. 따라서, 상기된 기억장치, 디렉토리, 및 보안 컴포넌트는 알렉스로 하여금 새로운 클라이언트 디바이스상에 자신을 인증하고 모든 그녀의 개인화된 정보를 클라이언트 디바이스를 통하여 이용할 수 있게 한다. 최근 콘택트 리스트로부터, 알렉스는 바이크 명세를 찾고 정보가 산드라에게 공유될 것을 요청한다. 산드라가 로그인한 후에, 연합된 보안 도메인을 통하여 보안 방식으로 그녀의 태블릿 PC상에서 바이크 명세가 이용될 수 있다.
산드라가 트레이드쇼로부터 돌아간 후에, 산드라는 음성 및 이-메일 메시지에 액세스하도록 그녀의 작업 PC를 사용한다. 산드라의 시작 페이지는 퍼스널, 프로페셔널, 및 웹 정보의 믹스를 디스플레이한다. 산드라는 새로운 바이크에 대하여 스포츠 상품 체인 소매상에게 제안을 준비하기 위해 필요한 공동-작업자에게 메 시지를 송신한다. 그녀가 타이핑할 때, 시스템은 예를 들어 또 다른 공동 작업자의 이름 및 제안 기일과 같이 액션 메뉴에 적합한 어떤 콘텐트를 인식한다. 시스템은 콘택트 & 캘린더 정보에 자동으로 및 적합하게 링크되도록 그들을 인에이블하는 데이터 타입의 관련성을 인식한다. 이러한 의미적 통신은 스키마 절에서 설명되어 있다.
그 후 산드라는 제안을 위해 "프로젝트 페이지"를 생성하는데, 스키마 절에서 설명된 자동-완성 특성을 사용하여 이-메일의 모든 이름을 자동으로 포함하고 정보/협조를 공유하기 위한 웹 페이지를 셋업하고 문서가 프로젝트내에 포함되도록 제안한다. (다른 회사/보안 도메인으로부터의) 알렉스는 또한 프로젝트상에 포함되어 있다. 그 후 산드라는 다른 팀 멤버와 실시간으로 공유되는 제안을 쓰기 시작한다. 이것은 메시징 절에서 설명된 비동기 메시징을 사용하여 달성될 수 있다. 그들은 행해지고 있는 변경을 논의하기 위해 인스턴트 메시징/챗을 사용한다. 제안은 텍스트, 그래픽스, 비디오 등을 포함하는 멀티미디어 문서이다. 제 3자의 콘텐트(예를 들어, 이미지 하우스로부터의 사진)는 쉘내로 직접 통합될 수 있다. 비디오 콘텐트는 애노테이팅될 수 있다.
산드라는 직장에서 집으로 운전해 가면서, 그녀의 오토PC가 그녀가 (그녀가 인터럽팅되어야함을 지정한) 제안에 관련한 메시지를 받았음을 그녀에게 알려줄 때 그녀의 카 폰으로부터 남편과 이야기하고 있다. 이들 알림은 이벤트 절에서 상기된 바와 같이 소정 이벤트에 응답하여 발행된다. 이들 소정 이벤트의 부분은 사용자-정의된 규칙을 포함한다. 예를 들어, 산드라는 그녀의 카 폰상에서 그녀가 인 터럽팅되어야 할 조건을 지정하였다. 이메일은 제안에 포함된 부가적인 데모그래픽 정보를 그들이 원한다는 소매상으로부터의 메시지이다. 집에 도착시, 산드라는 그녀의 (시작 페이지상에 퍼스널 "스킨"을 갖고 그녀의 프로파일이 약간 다를 수 있는) 홈 PC를 사용한다. 퍼스널 "스킨"을 형성하는 프레퍼런스 정보는 디렉토리 절에서 논의된 홈 프레즌스 또는 나의 상태 적응 디렉토리내에 기억될 수 있다. 그녀는 외부 웹사이트 및 그녀 회사의 데이터베이스로부터 문서내로 정보를 필터링/머징/맵핑함으로써 부가적인 데모그래픽 정보를 제안내로 편입한다. 다른 웹사이트로부터의 정보의 이러한 머징은 스키마에 의해 용이하게 된다.
다음날, 알렉스는 원래 프로세싱된 바와 같이 산드라의 비즈니스로보다는 30개의 다른 소매상으로 하룻밤동안 바이크를 수송하도록 오더를 변경할 필요가 있다는 메시지를 산드라로부터 수신한다. 알렉스는 알림 형식에 의해 이미 알렉스에게 플래깅되어 있는 변경된 구매 오더용 템플릿에 산드라가 기입한 비즈니스 서비스에 로그온한다. 알렉스는 재검토하고 툴바상의 "변경 수락"을 치면, 그 결과 시스템은 UPS를 경유하여 선적을 확인하기를 원하는지 알렉스에게 문의해야 하는 것을 실현하도록 스키마를 사용한다. 그녀가 "예"라고 말하면 시스템은 새로운 선적 이벤트를 생성하고, 선적을 배열하도록 UPS와 알렉스를 접속한다. UPS와 7사이클 사이의 캘린더 수수는 알렉스의 캘린더에 자동으로 나타내어지는 픽업 시간을 세팅한다. 산드라는 변경 오더가 처리되었다는 알림을 수신한다. 비즈니스 서비스는 분산 이벤트 시스템을 사용함으로써 사용자를 위한 이벤트(수신된 오더, 선적된 오더 등)를 트랙킹할 수 있다. 비즈니스 서비스는 알림 매니저를 경유하여 산드라에게 알림을 송신한다. 그녀에게 콘텍스트-센시티브 알림 서비스를 제공하는 전반적인 알림 시스템의 부분인 알림 매니저는 다양한 들어오는 알림을 모니터링하는 데 이용될 수 있다. 알림 매니저는 산드라의 현재 콘텍스트, 어텐션, 위치, 및 디바이스의 이용가능성에 대한 추론에 의존하여 중요하고 콘텍스트-센시티브 메시지를 산드라에게 포워딩한다.
소비자 시나리오
이 시나리오는 일반적인 사용자 또는 소비자를 위한 본 발명의 이점에 초점을 맞춘다. 시나리오는 휴가가는 가족 및 십대 딸의 생활의 하루를 설명한다.
이 시나리오는 본 발명에 의해 제공되는 고급 메시징, 일상 태스크의 간소화, 및 고급 엔터테인먼트를 예시한다. 몇몇 키 특성은 어디에나 존재하는 소정인을 위한 공통 퍼스나, 전 디바이스 스페이스에서 대화의 일관된 세트, 일관된 데이터 캡처, 디지털 에라의 모든 자원으로의 액세스를 포함한다(프라이버시, 전 디바이스 스페이스에서 자연 양방향 통신, 일관된 사용자 경험, 개인화된 엔터테인먼트, 사람 생활의 자연 부분인 웹).
가장(아버지)은 로스 앤젤레스 및 샌 디에고 동물원으로의 가족 휴가를 계획하기 위해 홈 PC를 사용한다. 하나의 서비스를 사용하여, 아버지는 몇몇 키류의 데이터를 PC에 주고 시스템은 단 한번 정보를 입력함으로써 항공편, 호텔, 차를 제안 및 예약하고 동물원 티켓을 얻는다. 서버는 스키마 기반 메시징하에서 정보를 의미적으로 교환할 능력을 누리기 때문에, 서버는 단일 사용자 요청을 사용하여 항공편, 호텔, 및 차 예약 데이터 및 동물원 티켓 이용가능성과 같은 다양한 데이터 를 얻음에 있어서 서버 연합으로서 통신할 수 있다. 따라서, 아버지는 이러한 정보를 독립적으로 얻기 위해 각각의 서버에 접속해야만할 필요가 없다.
또한 시스템은 하루 일찍 떠남으로써 돈을 절약할 수 있다는 것을 나타내고 모든 사람의 캘린더를 검사하여 그들이 이용될 수 있는지를 알아본다. 캘린더 정보는 XML 포맷으로 기억되어 있기 때문에, 시스템은 모든 사람의 캘린더를 동기화하여 어느 시간이 이용가능한지를 알아볼 수 있다. 시스템은 할인과 관련된 정보(예를 들어 프라임 카드, AAA 멤버쉽)를 제안함으로써 돈을 더 절약할 수 있다. 저장된 퍼스널 프레퍼런스에 근거하여, 서비스는 또한 가족이 휴가중인 동안 신문을 중단하고, 고양이에게 먹이를 주라는 이메일을 이웃에 송신하고 등을 한다. 이것은 프로파일 및 규칙에 근거하여 일상 태스크를 자동화하는 시스템 능력을 예시한다. 이벤트 절에서 설명된 이벤팅은 이벤트를 검출하고 이벤트에 근거하여 태스크를 수행하도록 사용될 수 있다.
그 후 어머니와 아버지는 조부모 기념일이라는 리마인더를 PC상에서 얻는다. 그들은 레스토런트에 예약하고 특별한 케이크를 주문하도록 비디오컨퍼런싱을 사용한다. 이것은 사용자 인터페이스의 멀티-모달 본성을 증명한다. 조부모는 (웹TV 유닛 또는 PC를 경유하여) 초대장을 수신하고 수락한다.
버스를 타고 학교에 가는 아이들이 계획된 여행 통지를 받는다. 이러한 통지는 메시징 절에서 설명된 비동기 메시징을 경유하여 일어날 수 있다. 동물원 애플리케이션/서비스로의 링크는 아이들이 동물원 지도, 쇼타임등을 점검할 수 있게 한다.
가족이 공항에서 렌탈 카를 픽업할 때, 그것은 각각의 가족 멤버에 대한 다운로딩된 음악/비디오 프레퍼런스를 갖추고 있다(아버지는 차가 예약될 때 이러한 옵션을 지정하고 돈을 지불하였다). 개개인에 대한 프레퍼런스 정보는 기억장치 절에서 설명된 바와 같은 메가-스토어로부터 액세스되었다. 따라서, 이용가능한 프레퍼런스는 렌탈 카에 쉽게 이용될 수 있다.
차 안에 있는 동안, 딸이 배고프다 하고 프록시미티/위치 어웨어니스 서비스를 사용하여 차의 어떤 반경내에 있는 그녀가 즐겨찾는 패스트 푸드 음식점 중 하나의 위치를 파악하고, 방향을 얻어서 가족을 위한 음식을 미리 주문한다. 프록시미티/위치 어웨어니스 애플리케이션은 디렉토리 절에서 설명된 디렉토리 아키텍처를 통하여 적응 디렉토리에 액세스한다. 가족은 더 짧은 사전 주문 라인으로 가서 음식을 가져오는 옵션을 갖는다. 그들은 스마트 카드로 지불한다.
동물원에 들어갈 때, 아들은 동물원의 애플리케이션의 카피를 그의 PDA에 다운로딩한다. 동물원의 애플리케이션은 맵, 이벤트(동물 먹이주기), 동물원에서의 개개의 디스플레이에 대한 데이터(예를 들어 침팬지 상세), 쇼핑 프로모션 등을 포함한다. 그는 학교로부터의 그의 버디 중 하나가 또한 동물원에 있다는 알림을 수신하고 그들은 메시지를 교환하고 후에 만날 계획을 한다. 이러한 알림을 용이하게 하기 위해서, PDA와 연관된 위치 센서는 위치 어웨어니스 애플리케이션 프로그램에 데이터를 제공할 수 있다. 이러한 애플리케이션은 디렉토리 절에서 설명된 인터넷-와이드 디렉토리 아키텍처에 위치를 제공한다. 버디는 또한 버디의 위치를 인터넷-와이드 디렉토리 서비스에 포워딩하는 애플리케이션을 갖는다. 위치 어웨 어니스 프로그램에 의해 호스팅된 이벤트는 버디가 아들의 어떤 거리내에 있거나 또는 아들과 공통 지역(예를 들어 동물원)내에 있을 때 트리거링된다. 이러한 이벤트는 비동기 메시징을 통하여 애플리케이션의 페이지 컴포넌트로 애플리케이션의 피에프돔 컴포넌트로부터 통신된다. 그 후 이벤트는 PDA의 사용자 인터페이스를 통하여 아들에게 통신될 알림을 트리거링한다.
어머니는 그들 커뮤니티 웹사이트에 포스팅하는 디지털 가족 사진을 동물원에서 찍는다. 조부모는 TV를 보고 있는 동안 새로운 사진이 있다는 알림을 텔레비전 인터넷 브라우저상에서 수신한다. 그들은 사진을 좋아하고 집 도처의 전자 프레임에 그들을 다운로딩한다. 조부모는 새로운 사진에 대해 웹사이트를 모니터링하는 이벤트를 호스팅하는 피에프돔 레이어를 갖는 애플리케이션을 실행시키고 있다. 이벤트는 새로운 사진이 포스팅될 때 트리거링되어 그 결과 메시징이 조부모에게 송신된다. 메시지는, 예를 들어, 이벤트에 응답하여 피에프돔 컴포넌트내에서 코드의 바디에 의해 발생될 수 있다(프로그래밍 모델 절 참조).
휴가로부터 돌아오면, 십대 딸 제나는 그녀의 방에서 PC를 사용하고 그녀가 멀리 있을 때부터 메시지를 검색한다. 제나는 그녀의 UI상에 "십대 소녀" 스킨을 갖는다. 친구는 콘서트 가는 것에 대한 메시지를 남겼으나 그것은 다 팔렸다고 말했다. 메시지를 듣는 동안, 그녀는 관련 메시지를 갖고 있다는 알림을 수신한다. 그녀는 그 메시지를 개봉하고 2장의 티켓이 예약되었다고 그녀에게 알려준다(운좋게도, 제나는 그녀가 즐겨찾는 밴드가 타운에 있을 때 그녀를 위해 자동으로 티켓을 구매하는 뮤직 서비스에 서브스크라이빙한다). 또한 서비스는 그녀의 즐겨찾는 밴드로부터의 새로운 뮤직 클립을 제공한다. 제나는 이벤트 절에 설명된 이벤팅으로 인해 자동으로 티켓을 구입하고 이들 새로운 뮤직 클립을 얻을 수 있었다.
제나는 콘서트 티켓에 대하여 친구와 비디오컨퍼런싱하고 따라서 UI의 멀티-모달 특성을 증명한다. 그 후 그들은 숙제(레인 포레스트 이슈에 대한 비디오 레포트)에 대해 협조한다. 비디오컨퍼런스동안 그들은 프로젝트 사이트에 링크하여 비디오/텍스트의 실시간 편집을 한다. 제나는 동물원에 있는 동안 만든 비디오를 기고한다. 끝나면, 학교 웹사이트에 리포트를 제출한다.
제나는 학교의 웹사이트를 사용하여 그녀가 놓친 클래스의 비디오를 다운로딩하고 임의의 숙제를 업로딩한다. 그녀는 현재의 환경 이슈에 대해 리포팅해야 하는 것을 배운다. 그녀는 선택된 소스로부터 최근 환경 뉴스 클립을 찾아 그녀가 일어날 때 그것들을 이용할 수 있도록 지능적인 뉴스 에이전트에게 명령한다. 환경 뉴스 클립 검색은 디렉토리 절에서 설명된 적응 디렉토리의 인터넷-와이드 동기화에 의해 용이하게 된다.
제나가 일어나면, 그녀의 뉴스 클립이 이용될 수 있다는 알림을 수신한다. 이러한 알림은 뉴스 클립이 이용가능할 때 트리거링된 이벤트에 의해 발생되었다. 그녀는 그것들을 전부 스캔하기 시작하고 그러나 늦게 실행되고 있고 그녀의 오토PC에 전달된 오디오를 갖고 있어서 학교 가는 중에 다 들을 수 있다. 차 안에 있는 동안, 그녀는 그녀의 클립을 선택하고 그것이 그녀의 태블릿 PC에 다운로딩되게 한다. 이것은 제나가 오디오를 서버 연합에 기억하고 그후 다른 클라이언트 디바이스상에 있는 동안 서버 연합으로부터 오디오를 다시 얻기 위해 기억장치 절에 서 설명된 메가-스토어를 사용하였음을 증명한다. 학교에 도착시, 제나는 그녀의 태블릿PC상에서 학교 웹사이트를 검사하고 학교 신문을 읽고 점심 메뉴를 점검한다.
방과후에, 제나는 그녀의 PC를 사용하여 친구와 비디오 게임을 원격 플레잉한다. 게임은 제나의 얼굴이 비디오 게임 캐릭터상에 나타나는 얼굴 맵핑/스캔잉 테크놀로지를 포함한다. 게임동안, 제나는 그녀의 리포트에 대하여 그녀를 칭찬한 그녀의 선생님으로부터 인스턴트 메시지를 수신한다. 또한 제나는 그녀의 즐겨찾는 영화 중 하나가 이제 다운로드 이용될 수 있다는 알림을 수신한다. 이러한 알림은 즐겨찾는 영화가 이용가능하였을 때 트리거링되는 이벤트에 응답하여 발생되었다.
개발자
이 시나리오는 비즈니스 여행중에 사고 당하기 쉬운 사람(즉, 스티브)을 설명한다. 이 시나리오의 키 포인트는 메가-스토어 또는 "클라우드"내의 퍼스널 정보로의 유니버설 보안 액세스, 정보로의 티어링된 사용자 액세스, 및 정보의 쉬운 교환이다.
스티브는 공항내의 렌탈 폰 장소에 있고 그는 그의 스마트 폰을 집에 놔두고 왔기 때문에 매우 당황스럽고 그의 정보로의 액세스가 필요하다. 운좋게도, 스티브는 스마트 카드를 소지하고 있고 그는 스마트 카드를 사용하여 폰을 렌트하고 서버 연합내의 메가-스토어로부터 그의 퍼스널 정보를 다운로딩할 수 있다. 이것은 정보에 액세스하기 위해 단일 방식으로서 스키마를 사용하는 것과 인터넷을 사용하 는 것을 예시한다. 어디에서로부터나 "메가-스토어"로부터의 정보에 액세스하기 위한 인증이 보안 절에서 설명되었다. 스마트 카드는 스티브를 인증하고 스티브의 정보가 위치한 곳을 렌탈 폰에 말해준다(즉, 캘린더 정보는 X에 기억되어 있고, 콘택트 정보는 Y에 기억되어 있다 등). 그 후 폰은 이러한 정보를 검색하여 스티브를 위해 그것을 다운로딩한다.
공항에서 나가는 길에, 스티브는 바이크 메신저와 충돌하여 발목을 다쳤다. 그는 낯선 도시에 있고 메디칼 어텐션을 위해 어디로 가야할지를 모른다. 스티브는 그의 홈 닥터를 호출하고 그의 보험을 받아들이는 근처 클리닉을 물어본다. 리셉션은 그 및 와이프의 현존 헬스 플랜하에 퍼센트 커버리지 및 스티브 근처의 클리닉의 위치를 파악하기 위해서, 정보의 더 효율적인 집합을 위해 클리닉 리퍼럴(referral) 서비스를 사용한다. 또한 그녀는 스티브가 즉시 약속을 찾도록 캘린더링 공유를 사용하고 클리닉과 직접 대화한다. 이것은 비즈니스 및 퍼스널 스키마의 자동 맵핑을 예시한다. 또한, 리스팅 또는 클리닉 및 클리닉 캘린더는 디렉토리 절에서 설명된 디렉토리 아키텍처를 통하여 이용가능하게 될 수 있다.
리셉션은 새로운 클리닉과 그의 메디칼 레코드를 공유하는 것을 승인하는지를 스티브에게 묻는다. 스티브는 그 자신을 인증하고 그의 메디칼 레코드의 리스트를 수신한다(그의 스마트 폰상에서). 그 후 그는 어느 레코드가 클리닉에 이용될 수 있게 하기를 원하는지 검사한다. 이것은 "티어링된 액세스"를 예시한다 - 시스템 레벨에 내장되어 있고 리치 스키마 및 데이터 기억장치/액세스에 의해 지원되는 보안을 갖는, 임의의 애플리케이션에 의한 정보로의 액세스의 거절 및 규칙- 기반 타당성검사. 새로운 클리닉은 스티브가 발목이 삐었다고 말한다. 그들은 스티브의 레귤러 닥터에게 알림을 송신한다. 또한 그들은 X-레이를 송신하여서 닥터가 진단을 확인할 수 있다.
M. 결어
프로그래밍 모델, 스키마, 사용자 인터페이스, 이벤트, 메시징, 기억장치, 디렉토리, 보안, 및 코드 관리 컴포넌트를 포함하는 분산 컴퓨팅 서비스 플랫폼은 더 우수한 인터넷 기반 협조 및 더 우수한 웹 사이트간 통신을 용이하게 한다.
본 발명은 본 취지 또는 본질적인 특성으로부터 벗어남이 없이 다른 특정 형식으로 구체화될 수 있다. 설명된 실시예는 모든 면에서 예시로서만 생각되어야지 제한하는 것으로 생각되어서는 안된다. 따라서, 본 발명의 범위는 상기 설명에 의해서보다는 첨부된 청구항에 의해서 나타내어진다. 청구항의 균등의 범위 및 의미내에서의 모든 변경이 그 범위내에 포함될 것이다.

Claims (56)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 복수의 클라이언트 디바이스와 통신하는 복수의 서버를 포함하는 서버 연합에서 요청을 수행하기 위한 방법에 있어서,
    복수의 서버 중 제 1 서버가, 상기 복수의 서버 및 상기 복수의 클라이언트 디바이스가 액세스 가능한 스키마에 따라 구조화되고, 상기 스키마에 의해 그 의미가 내포되는, 서비스에 대한 네트워크 요청을 트랜스포트-독립적 메시징 기반구조를 통하여 수신하는 단계,
    상기 제 1 서버가 상기 스키마에 의해 내포되는 상기 네트워크 요청의 의미를 인식하는 단계,
    상기 제 1 서버가 상기 인식된 네트워크 요청의 의미에 기초하여 다른 서버에 접촉함이 없이 상기 네트워크 요청에 응답하기 위해 필요한 정보의 일부를 액세스할 수 있는 지를 판정하는 단계,
    상기 제 1 서버가 상기 인식된 네트워크 요청의 의미에 기초하여 상기 네트워크 요청에 응답하기 위해 적어도 제 2 서버로부터 부가 정보가 요구되는지를 판정하는 단계,
    상기 제 1 서버가, 상기 부가 정보가 요구되는지의 판정에 응답하여 상기 부가 정보에 대한 부가 네트워크 요청을 제 2 스키마에 따라 구조화하는 단계,
    상기 제 1 서버가 상기 트랜스포트-독립적 메시징 기반구조를 사용하여 상기 부가 네트워크 요청을 상기 제 2 서버에 디스패칭하는 단계,
    상기 제 1 서버가 상기 트랜스포트-독립적 메시징 기반구조를 통해, 상기 부가 정보를 포함하고 있고, 상기 제 2 스키마에 따라 구조화된 네트워크 응답을 상기 제 2 서버로부터 수신하는 단계, 및
    상기 제 1 서버가 상기 서비스에 대한 상기 네트워크 요청에 응답하기 위해 상기 부가 정보를 사용하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 제 15 항에 있어서, 상기 제 1 서버가 부가 정보에 대한 부가 네트워크 요청을 구조화하는 단계는, 상기 제 1 서버가 확장가능한 마크업 언어(XML)에 따라 상기 부가 네트워크 요청을 구조화하는 단계를 포함하는 것을 특징으로 하는 방법.
  17. 제 15 항에 있어서, 상기 제 1 서버가 상기 제 2 서버로부터 네트워크 응답을 수신하는 단계는, 상기 제 1 서버가 확장가능한 마크업 언어(XML)에 따라 구조화된 데이터 구조의 형식으로 상기 제 2 서버로부터 상기 네트워크 응답을 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
  18. 제 15 항에 있어서, 상기 제 1 서버가 트랜스포트-독립적 메시징 기반구조를 사용하여 부가 정보에 대한 부가 네트워크 요청을 상기 제 2 서버에 디스패칭하는 단계는, 상기 제 1 서버가 심플 오브젝트 액세스 프로토콜(SOAP)을 사용하여 상기 부가 정보에 대한 상기 부가 네트워크 요청을 디스패칭하는 단계를 포함하는 것을 특징으로 하는 방법.
  19. 제 18 항에 있어서, 상기 제 1 서버가 부가 정보에 대한 부가 네트워크 요청을 구조화하는 단계는, 상기 제 1 서버가 확장가능한 마크업 언어(XML)에 따라 상기 부가 네트워크 요청을 구조화하는 단계를 포함하는 것을 특징으로 하는 방법.
  20. 제 15 항에 있어서, 상기 제 1 서버가 상기 제 2 서버로부터 네트워크 응답을 수신하는 단계는, 상기 제 1 서버가 심플 오브젝트 액세스 프로토콜(SOAP)을 사용하여 상기 제 2 서버로부터 상기 네트워크 응답을 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
  21. 제 20 항에 있어서, 상기 제 1 서버가 상기 제 2 서버로부터 네트워크 응답을 수신하는 단계는, 상기 제 1 서버가 확장가능한 마크업 언어(XML)에 따라 구조화된 데이터 구조의 형식으로 상기 제 2 서버로부터 상기 네트워크 응답을 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  22. 제 15 항에 있어서, 상기 제 1 서버가 트랜스포트-독립적 메시징 기반구조를 사용하여 부가 정보에 대한 부가 네트워크 요청을 상기 제 2 서버에 디스패칭하는 단계는, 메시징 컴포넌트가 복수의 트랜스포트를 지원하는 공통 애플리케이션 프로그램 인터페이스와 통신하는 단계를 포함하고, 상기 애플리케이션 프로그램 인터페이스는 네트워크 메시지와 연관된 기본 트랜스포트와 상관없이 상기 복수의 클라이언트 중의 클라이언트에서 메시징 애플리케이션 및 상기 복수의 서버 중의 서버에서 메시징 컴포넌트에 공통 시맨틱을 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  23. 제 22 항에 있어서, 상기 제 1 서버가 트랜스포트-독립적 메시징 기반구조를 사용하여 부가 정보에 대한 부가 네트워크 요청을 상기 제 2 서버에 디스패칭하는 단계는, 상기 공통 애플리케이션 프로그램 인터페이스와 통신하는 메시징 컴포넌트에 응답하여 상기 공통 애플리케이션 프로그램 인터페이스가 복수의 트랜스포트 중 적합한 하나와 통신하는 단계를 포함하는 것을 특징으로 하는 방법.
  24. 제 23 항에 있어서, 상기 공통 애플리케이션 프로그램 인터페이스가 복수의 트랜스포트 중 적합한 하나와 통신하는 단계는, 상기 공통 애플리케이션 프로그램 인터페이스가 하이퍼텍스트 트랜스포트 프로토콜(HTTP) 트랜스포트와 통신하는 단계를 포함하는 것을 특징으로 하는 방법.
  25. 제 23 항에 있어서, 상기 공통 애플리케이션 프로그램 인터페이스가 복수의 트랜스포트 중 적합한 하나와 통신하는 단계는, 상기 공통 애플리케이션 프로그램 인터페이스가 MSMQ 바이너리 트랜스포트와 통신하는 단계를 포함하는 것을 특징으로 하는 방법.
  26. 제 23 항에 있어서, 상기 공통 애플리케이션 프로그램 인터페이스가 복수의 트랜스포트 중 적합한 하나와 통신하는 단계는, 상기 공통 애플리케이션 프로그램 인터페이스가 멀티캐스트 트랜스포트와 통신하는 단계를 포함하는 것을 특징으로 하는 방법.
  27. 제 23 항에 있어서, 상기 공통 애플리케이션 프로그램 인터페이스가 복수의 트랜스포트 중 적합한 하나와 통신하는 단계는, 상기 공통 애플리케이션 프로그램 인터페이스가 SMTP 트랜스포트와 통신하는 단계를 포함하는 것을 특징으로 하는 방법.
  28. 제 15 항에 있어서, 상기 제 1 서버가 서비스에 대한 네트워크 요청을 수신하는 단계는, 상기 제 1 서버가 상기 서버 연합의 제 3 서버로부터 서비스에 대한 상기 네트워크 요청을 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
  29. 제 15 항에 있어서, 상기 복수의 서버 중 제 1 서버가 서비스에 대한 네트워크 요청을 수신하는 단계는, 상기 제 1 서버가 상기 복수의 클라이언트중의 하나의 클라이언트로부터 서비스에 대한 상기 네트워크 요청을 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
  30. 제 15 항에 있어서, 상기 복수의 서버 중 제 1 서버가 스키마에 따라 구조화된 네트워크 요청을 수신하는 단계는, 상기 제 1 서버가 스키마 스토어에 저장된 스키마에 따라 구조화된 네트워크 요청을 수신하는 단계를 포함하고, 상기 스키마 스토어는 상기 서버 연합에서의 서버 및 하나 이상의 클라이언트에서의 클라이언트가 액세스가능하고, 상기 서버와 클라이언트를 통해 의미적 통신과 정보 교환을 하기 위하여 상기 서버와 클라이언트에게 표준화된 스키마 서비스를 제공하는 것을 특징으로 하는 방법.
  31. 제 30 항에 있어서, 상기 표준화된 스키마 서비스는 스키마 정보의 기억, 검색, 문의, 출판 및 공유를 포함하는 것을 특징으로 하는 방법.
  32. 제 30 항에 있어서, 상기 스키마 스토어는 상기 서버 연합의 서버에 걸쳐 분산되어 있는 것을 특징으로 하는 방법.
  33. 제 30 항에 있어서, 상기 스키마 스토어는 상기 서버 연합의 서버에 상주하는 복수의 상이한 애플리케이션에 의해 사용되는 공통 데이타 아이템의 서브세트에 대한 데이타 포맷을 정의하는 코어 스키마를 저장하는 것을 특징으로 하는 방법.
  34. 제 22 항에 있어서, 메시징 컴포넌트가 복수의 트랜스포트를 지원하는 공통 애플리케이션 프로그램 인터페이스와 통신하는 단계는, 하나 이상의 서비스를 지원하는 트랜스포트와 하나 이상의 서비스를 지원하지 않는 트랜스포트와의 호환성을 증가시키기 위하여 하나 이상의 서비스를 본래 구현하지 않는 트랜스포트에 대해 하나 이상의 서비스를 제공하는 공통 애플리케이션 프로그램 인터페이스와 메시징 컴포넌트가 통신하는 단계를 포함하는 것을 특징으로 하는 방법.
  35. 제 15 항에 있어서, 상기 제 1 서버가 상기 네트워크 요청에 응답하기 위해 적어도 제 2 서버로부터 부가 정보가 요구되는지를 판정하는 단계는, 상기 제 1 서버가 상기 네트워크 요청에 응답하기 위해 필요한 정보의 일부만을 가지고 있는 지를 판정하는 단계를 포함하는 것을 특징으로 하는 방법.
  36. 제 15 항에 있어서, 상기 스키마 및 상기 제 2 스키마는 동일한 스키마인것을 특징으로 하는 방법.
  37. 복수의 클라이언트 디바이스와 통신하는 복수의 서버를 포함하는 서버 연합 중의 제 1 서버에서 사용하기 위한 프로그램을 기록한 컴퓨터-읽기가능한 기록매체에 있어서,
    상기 복수의 서버 및 상기 복수의 클라이언트 디바이스가 액세스가능한 스키마에 따라 구조화되고, 상기 스키마에 의해 그 의미가 내포되는, 서비스에 대한 네트워크 요청을 트랜스포트-독립적 메시징 기반구조를 통하여 수신하는 것을 검지하기 위한 컴퓨터-실행가능한 명령어,
    상기 스키마에 의해 내포되는 네트워크 요청의 의미를 인식하기 위한 컴퓨터-실행가능한 명령어,
    상기 인식된 네트워크 요청의 의미에 기초하여 다른 서버에 접촉함이 없이 상기 네트워크 요청에 응답하기 위해 필요한 정보의 일부를 상기 제 1 서버가 액세스할 수 있는 지를 판정하기 위한 컴퓨터-실행가능한 명령어,
    상기 인식된 네트워크 요청의 의미에 기초하여 상기 네트워크 요청에 응답하기 위해 적어도 제 2 서버로부터 부가 정보가 요구되는지를 판정하기 위한 컴퓨터-실행가능한 명령어,
    상기 부가 정보가 요구되는지의 판정에 응답하여, 상기 부가 정보에 대한 부가 네트워크 요청을 제 2 스키마에 따라 구조화하기 위한 컴퓨터-실행가능한 명령어,
    상기 트랜스포트-독립적 메시징 기반구조를 사용하여 상기 부가 네트워크 요청이 상기 제 2 서버에 디스패칭되도록 하는 컴퓨터-실행가능한 명령어,
    상기 트랜스포트-독립적 메시징 기반구조를 통해, 상기 부가 정보를 포함하고 있고, 상기 제 2 스키마에 따라 구조화된 네트워크 응답을 상기 제 2 서버로부터 수신하는 것을 감지하기 위한 컴퓨터-실행가능한 명령어, 및
    상기 서비스에 대한 네트워크 요청에 응답하도록 부가 정보를 사용하기 위한 컴퓨터-실행가능한 명령어가 기록되어 있는 것을 특징으로 하는 컴퓨터-읽기가능한 기록매체.
  38. 제 37 항에 있어서, 상기 컴퓨터-읽기가능한 매체는 물리적 기억장치 매체인 것을 특징으로 하는 컴퓨터-읽기가능한 기록매체.
  39. 제 37 항에 있어서, 상기 제 2 스키마를 이용하여 부가 정보에 대한 부가 네트워크 요청을 구조화하기 위한 컴퓨터-실행가능한 명령어는, 확장가능한 마크업 언어(XML)에 따라 상기 네트워크 요청을 구조화하기 위한 컴퓨터-실행가능한 명령어를 포함하는 것을 특징으로 하는 컴퓨터-읽기가능한 기록매체.
  40. 제 37 항에 있어서, 상기 트랜스포트-독립적 메시징 기반구조를 사용하여 부가 정보에 대한 상기 부가 네트워크 요청이 제 2 서버에 디스패칭되게 하기 위한 컴퓨터-실행가능한 명령어는 복수의 트랜스포트를 지원하는 공통 애플리케이션 프로그램 인터페이스와 통신하기 위한 컴퓨터-실행가능한 명령어를 포함하는 것을 특징으로 하는 컴퓨터-읽기가능한 기록매체.
  41. 제 40 항에 있어서, 상기 트랜스포트-독립적 메시징 기반구조를 사용하여 부가 정보에 대한 상기 부가 네트워크 요청이 제 2 서버에 디스패칭되게 하기 위한 컴퓨터-실행가능한 명령어는, 공통 애플리케이션 프로그램 인터페이스와 통신하기 위한 컴퓨터-실행가능한 명령어의 실행에 응답하여 상기 공통 애플리케이션 프로그램 인터페이스가 복수의 트랜스포트 중 적합한 하나와 통신하도록 상기 공통 애플리케이션 프로그램 인터페이스를 구현하기 위한 컴퓨터-실행가능한 명령어를 포함하는 것을 특징으로 하는 컴퓨터-읽기가능한 기록매체.
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
KR1020027017574A 2000-06-22 2001-06-22 분산 컴퓨팅 서비스 플랫폼 KR100890209B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US21356200P 2000-06-22 2000-06-22
US60/213,562 2000-06-22
PCT/US2001/019935 WO2001098936A2 (en) 2000-06-22 2001-06-22 Distributed computing services platform

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020087021829A Division KR100919606B1 (ko) 2000-06-22 2008-09-05 분산 컴퓨팅 서비스 플랫폼

Publications (2)

Publication Number Publication Date
KR20030017559A KR20030017559A (ko) 2003-03-03
KR100890209B1 true KR100890209B1 (ko) 2009-03-25

Family

ID=22795582

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020027017574A KR100890209B1 (ko) 2000-06-22 2001-06-22 분산 컴퓨팅 서비스 플랫폼
KR1020087021829A KR100919606B1 (ko) 2000-06-22 2008-09-05 분산 컴퓨팅 서비스 플랫폼

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020087021829A KR100919606B1 (ko) 2000-06-22 2008-09-05 분산 컴퓨팅 서비스 플랫폼

Country Status (5)

Country Link
EP (1) EP1421479A2 (ko)
KR (2) KR100890209B1 (ko)
AU (1) AU6867401A (ko)
BR (1) BR0111748A (ko)
MX (1) MXPA02012350A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461488B2 (en) 2020-04-02 2022-10-04 Allstate Insurance Company Universal access layer for accessing heterogeneous data stores

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030066942A (ko) * 2002-02-06 2003-08-14 (주) 자이오넥스 네트웍 상의 시스템 통합 및 통신 방법
KR100788138B1 (ko) * 2003-06-09 2007-12-21 주식회사 케이티 네트워크 기반의 서비스 플랫폼을 이용한 통신 서비스제공 시스템 및 방법
US7760704B2 (en) 2004-06-29 2010-07-20 Interdigital Technology Corporation System and method for call routing and paging across different types of networks
US9330183B2 (en) 2013-05-08 2016-05-03 Facebook, Inc. Approximate privacy indexing for search queries on online social networks
US10116616B2 (en) * 2014-04-23 2018-10-30 Remote Media, Llc Smart routing synchronization system and methods for socializing a synthetic rebroadcast and group stream
KR102464337B1 (ko) * 2014-09-25 2022-11-07 오라클 인터내셔날 코포레이션 멀티테넌트 어플리케이션 서버 환경에서 파티션 식별자들의 결정을 위한 시스템 및 방법
US10055260B2 (en) * 2017-01-05 2018-08-21 Guardknox Cyber Technologies Ltd. Specially programmed computing systems with associated devices configured to implement centralized services ECU based on services oriented architecture and methods of use thereof
CN113377354B (zh) * 2021-05-31 2024-04-05 北京沃东天骏信息技术有限公司 移动端应用的组件化开发系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5252951A (en) * 1989-04-28 1993-10-12 International Business Machines Corporation Graphical user interface with gesture recognition in a multiapplication environment
US5265014A (en) 1990-04-10 1993-11-23 Hewlett-Packard Company Multi-modal user interface
US6021403A (en) 1996-07-19 2000-02-01 Microsoft Corporation Intelligent user assistance facility

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6223289B1 (en) * 1998-04-20 2001-04-24 Sun Microsystems, Inc. Method and apparatus for session management and user authentication
US20040068572A1 (en) * 2002-10-04 2004-04-08 Zhixue Wu Methods and systems for communicating over a client-server network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5252951A (en) * 1989-04-28 1993-10-12 International Business Machines Corporation Graphical user interface with gesture recognition in a multiapplication environment
US5265014A (en) 1990-04-10 1993-11-23 Hewlett-Packard Company Multi-modal user interface
US6021403A (en) 1996-07-19 2000-02-01 Microsoft Corporation Intelligent user assistance facility

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461488B2 (en) 2020-04-02 2022-10-04 Allstate Insurance Company Universal access layer for accessing heterogeneous data stores

Also Published As

Publication number Publication date
AU6867401A (en) 2002-01-02
EP1421479A2 (en) 2004-05-26
KR100919606B1 (ko) 2009-09-29
KR20080089672A (ko) 2008-10-07
MXPA02012350A (es) 2004-09-06
BR0111748A (pt) 2004-08-10
KR20030017559A (ko) 2003-03-03

Similar Documents

Publication Publication Date Title
CA2808275C (en) Distributed computing services platform
AU2001268674A1 (en) Distributed computing services platform
KR100919606B1 (ko) 분산 컴퓨팅 서비스 플랫폼
EP2761489B1 (en) External service application discovery method
US8700738B2 (en) Dynamic feed generation
US20030126136A1 (en) System and method for knowledge retrieval, management, delivery and presentation
US20080126178A1 (en) Surge-Based Online Advertising
US20080046369A1 (en) Password Management for RSS Interfaces
US20080046471A1 (en) Calendar Synchronization using Syndicated Data
JP2006522388A (ja) 意味論的知識の取得、管理、取り込み、共有、発見、伝達および提示用のシステムおよび方法
WO2008036464A2 (en) Syndication-based application connectors
CN102968437A (zh) 外部服务应用的发现方法
Brugman et al. Collaborative annotation of sign language data with peer-to-peer technology
Boari et al. Middleware for automatic dynamic reconfiguration of context-driven services
Bowen Using a peer-to-peer architecture to support distributed software development
Klavins Instant Messaging Tool for Collaboration in a Peer-to-Peer Network: MyBook Instant Messenger
Yuan Cloud Services Provider
Polgar et al. Portals
Tao JatWing: A distributed enhanced tuple space-based mobile agent computation model in a Ubicomp world
Harvey et al. OSMOS Base Technology Selection
Hu Secure collaboration environments in a service oriented architecture
AU2002345906A1 (en) System and method for knowledge retrieval, management, delivery and presentation
MXPA06005002A (en) Method and system for collaboration

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
E902 Notification of reason for refusal
A107 Divisional application of patent
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130218

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140217

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150217

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 12