KR100919606B1 - Distributed computing services platform - Google Patents

Distributed computing services platform

Info

Publication number
KR100919606B1
KR100919606B1 KR1020087021829A KR20087021829A KR100919606B1 KR 100919606 B1 KR100919606 B1 KR 100919606B1 KR 1020087021829 A KR1020087021829 A KR 1020087021829A KR 20087021829 A KR20087021829 A KR 20087021829A KR 100919606 B1 KR100919606 B1 KR 100919606B1
Authority
KR
South Korea
Prior art keywords
client device
information
session
component
user
Prior art date
Application number
KR1020087021829A
Other languages
Korean (ko)
Other versions
KR20080089672A (en
Inventor
조세프 디. 벨피오레
데이비드 지. 캠프벨
스티브 갭프스
스티븐 엠. 셀리니
비베크 군도트라
마크 에이치. 루코브스키
폴 에이. 마리츠
아미트 미탈
에릭 디. 루더
케이스 더블유. 쇼트
카비라지 싱
피터 엠. 스피로
탠디 더블유. 트로워
데이비드 바스케비치
찰즈 티. 핏저랄드
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080089672A publication Critical patent/KR20080089672A/en
Application granted granted Critical
Publication of KR100919606B1 publication Critical patent/KR100919606B1/en

Links

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

Abstract

서버 연합은 통신된 데이터의 의미가 스키마에 의해 내포되는 스키마를 따르는 데이터 구조를 사용하여 통신함으로써 서비스 요청을 수행하도록 협력적으로 대화한다. 따라서, 통신되고 있는 데이터에 부가하여, 데이터의 의미가 또한 통신되고 데이터의 의미에 근거하여 지능적 디시젼 및 추론을 허용한다. 협력적 대화는 멀티플 트랜스포트 메카니즘을 지원하는 공통 API를 통한 메시징에 의해 광범위한 네트워크를 통하여 용이하게 된다. 또한, 클라이언트 디바이스 사이의 미드-세션 트랜스퍼는 스키마 및 트랜스포트-독립적 메시징 구조에 의해 용이하게 된다. 클라이언트 디바이스의 사용자 인터페이스는 클라이언트 디바이스가 다른 사용자 인터페이스 기능을 갖더라도 일관되게 보일 것이다.Server federation collaboratively communicates to fulfill a service request by communicating using a data structure that conforms to a schema in which the meaning of the communicated data is implied by the schema. Thus, in addition to the data being communicated, the meaning of the data is also communicated and allows intelligent decision and reasoning based on the meaning of the data. Collaborative conversations are facilitated over a wide network by messaging through a common API that supports multiple transport mechanisms. In addition, mid-session transfers between client devices are facilitated by schema and transport-independent messaging structures. The user interface of the client device will look consistent even if the client device has other user interface functions.

Description

분산 컴퓨팅 서비스 플랫폼{DISTRIBUTED COMPUTING SERVICES PLATFORM}Distributed Computing Services Platform {DISTRIBUTED COMPUTING SERVICES PLATFORM}

본 발명은 통신 분야에 관한 것이다. 더 구체적으로, 본 발명은 (인터넷과 같은) 전 컴퓨터 네트워크에서 고급 통신 및 협조를 용이하게 하기 위한 분산 컴퓨팅 서비스 플랫폼을 설명한다.The present invention relates to the field of communications. More specifically, the present invention describes a distributed computing services platform to facilitate advanced communications and coordination in all computer networks (such as the Internet).

인터넷은 사람들이 통신하는 방식에 대변혁을 일으켰고 인간의 역사에 있어서 "정보시대"라 불리기도 하는 새로운 시대의 도래를 알렸다. 본질적으로, 인터넷은 세계의 대부분에 걸쳐 퍼져있는 네트워크 컴퓨터의 많은 무리를 포함한다. 고성능 컴퓨터, 소프트웨어, 및 네트워킹 테크놀로지는 최종 사용자의 입장에서 인터넷을 통한 통신을 상당히 용이하게 하였다.The Internet has revolutionized the way people communicate and signaled the arrival of a new era in human history, sometimes called the "information age." In essence, the Internet involves a large crowd of networked computers spread throughout most of the world. High performance computers, software, and networking technologies have made communication over the Internet quite easy for end users.

예를 들어, 사용자는 일반적으로 이용가능한 전자 메일 소프트웨어를 사용하여 전자 메일 또는 "이-메일" 메시지를 작성할 수 있다. 수취인의 주소를 지정한 후에, 사용자는 예를 들어 마우스를 사용하여 컴퓨터 디스플레이상의 "송신" 아이콘을 활성화시킴으로써 간단히 메시지를 송신한다. 그 후 메시지가 수신지 컴퓨팅 디바이스에 도착할 때까지 메시지는 하나의 컴퓨터 시스템으로부터 다음의 시스템으로 인터넷을 통하여 라우팅된다.For example, a user can compose an e-mail or "e-mail" message using commonly available e-mail software. After addressing the recipient, the user simply sends the message by activating the "send" icon on the computer display, for example using a mouse. The message is then routed through the Internet from one computer system to the next until the message arrives at the destination computing device.

더하여, 통상의 브라우저 소프트웨어는 사용자가 원격 컴퓨터로부터의 웹 페이지와 같은 정보를 요청하도록 허용한다. 사용자가 웹 페이지의 주소를 입력한 후에, 브라우저는 예를 들어 하이퍼텍스트 트랜스포트 프로토콜(HTTP)과 같은 광범위하게 인식된 통신 프로토콜을 사용하여 사용자의 컴퓨터가 요청을 송신하도록 허용한다. 그 후 요청은 수신지 주소를 사용하여 수신지 컴퓨터 또는 웹 사이트로 라우팅된다.In addition, conventional browser software allows a user to request information such as a web page from a remote computer. After the user enters the address of the web page, the browser allows the user's computer to send the request using a widely recognized communication protocol such as, for example, Hypertext Transport Protocol (HTTP). The request is then routed to the destination computer or website using the destination address.

원격 웹 사이트는 요청을 평가하고 요청된 정보를 포함하기도 하는 적합한 응답을 반환한다. 요청된 웹 페이지는 웹 브라우저에 의해 파싱가능한, 하이퍼텍스트 마크업 언어("HTML") 포맷과 같은, 포맷으로 반환된다. 그 후 파싱된 웹 페이지는 렌더링되고 컴퓨터 디스플레이상에서 사용자에게 보여진다.The remote web site evaluates the request and returns a suitable response that may also contain the requested information. The requested web page is returned in a format, such as a hypertext markup language ("HTML") format, which is parseable by the web browser. The parsed web page is then rendered and shown to the user on a computer display.

웹 브라우저 소프트웨어는 범용 퍼스널 컴퓨터(PC), 텔레비전 셋톱 박스, 퍼스널 디지털 어시스턴트, 셀룰러 전화기 등을 포함하는 광범위하게 이용가능한 컴퓨터의 많은 타입에 이용될 수 있다. 더하여, 그러한 통상의 브라우저 소프트웨어에 액세스하여 인터넷 접속을 함으로써 누구라도 공공연하게 이용할 수 있는 웹 사이트가 수없이 많이 있다. 이들 요인들이 조합되어 사람들이 이전보다 더 많은 정보로 더 많이 액세스하도록 허용한다. Web browser software can be used in many types of widely available computers, including general purpose personal computers (PCs), television set top boxes, personal digital assistants, cellular telephones, and the like. In addition, there are numerous Web sites that are openly available to anyone by accessing such ordinary browser software and making an Internet connection. These factors combine to allow people to access more information with more information than ever before.

요컨대, 인터넷은 많은 사용자에게 간이한 글로벌 커넥티비티를 제공한다. 현재 인터넷의 사용은 정보로의 액세스를 제공함에 있어서 기업 및 개인에게 한결같이 많은 이점을 제공하고 있지만, 인터넷은 더 유연한 방식으로 정보를 액세스 및 사용하도록 더 효율적으로 사용될 수 있다. 예를 들어, 인터넷의 하나의 지배적인 사용은 일반적으로 "읽기-전용"으로서 특징지어질 수 있다. 퍼블리셔가 웹 페이지를 생성 및 출판한 후에, 인터넷은 본질적으로 페이지상의 정보를 사용자가 읽도록 허용하는 프리젠테이션 툴로서 이용될 수 있다. 인터넷 자체는 사용자가 쓰기, 편집 또는 달리 웹 페이지와 대화하는 기능을 거의 또는 전혀 제공하지 않는다.In short, the Internet provides simple global connectivity for many users. While the use of the Internet today provides a number of benefits to businesses and individuals in providing access to information, the Internet can be used more efficiently to access and use information in a more flexible manner. For example, one dominant use of the Internet can generally be characterized as "read-only". After the publisher has created and published a web page, the Internet can be used as a presentation tool that essentially allows the user to read the information on the page. The Internet itself provides little or no ability for users to write, edit or otherwise interact with web pages.

또한, 인터넷은 개인이 수많은 웹 사이트로 직접 액세스하도록 허용하지만, 웹 사이트가 서로 통신하거나 또는 정보를 공유하도록 허용하는 표준은 있다 하더라도 거의 존재하지 않는다. 각각의 웹 사이트는 전형적으로 다른 ID, 프레퍼런스, 데이터 포맷 및 스키마, 커넥티비티 등을 유지한다. 이러한 이유로, 많은 웹 사이트는 물론 2개의 웹 사이트 사이에서 대화를 가능하게 하기 위해서는 상당한 시간 및 비용이 들 수 있다. 따라서, 웹 사이트는 전형적으로 인터넷상의 다른 웹 사이트에 의해 제공되는 정보의 방대하고 풍부한 스펙트럼을 얻지 않는다. 대신에, 많은 웹 사이트는 정보가 이미 다른 웹 사이트로부터 이용될 수 있는 것일지라도 독립적으로 정보를 수집하고 다소 정적인 형식으로 컴파일할 수 밖에 없다. 따라서, 인터넷을 통하여 방대한 수의 사이트 및 컴퓨터 사이에 널리 보급된 커넥티비티가 있더라도, 대분분 실현되지 않은 채로 남아있게 될 수 있는 혁신적인 진보 및 자동화된 대화의 형식으로 그러한 커넥티비티를 이용하는 것은 거의 행해지지 않아 왔다.In addition, the Internet allows individuals to directly access numerous websites, although few standards exist, although there are standards that allow websites to communicate with each other or share information. Each web site typically maintains different identities, preferences, data formats and schemas, and connectivity. For this reason, it can take considerable time and money to enable a conversation between two websites as well as many websites. Thus, web sites typically do not obtain the vast and rich spectrum of information provided by other web sites on the Internet. Instead, many Web sites are forced to collect information independently and compile it into a somewhat static format, even if the information is already available from other Web sites. Thus, although there is a widespread connectivity between a vast number of sites and computers over the Internet, it has rarely been done using such connectivity in the form of innovative advances and automated conversations that can remain largely unrealized. .

또한, 인터넷의 효율성 및 유연성은 정보 및 서비스로 사용자가 액세스하는 것을 제약하는 다른 요인들에 의해 제한된다. 예를 들어, 퍼스널 컴퓨터를 갖춘 사용자는 예를 들어 기초 플랫폼과 연관된 제약을 받는 셀룰러 폰의 사용자보다 상당히 더 많은 세트의 인터넷 자원에 액세스할 수 있다. 플랫폼 제약이 쟁점이 아닐 때, (보안 및 기억장치와 같은) 다른 문제는 동일한 사용자가 인터넷 자원으로 액세스하는 것을 여전히 제한할 수 있고, 전 플랫폼에서의 다른 사용자의 경우는 더 그럴 수 있다. 동일한 정보 및 서비스가 액세스될 수 있더라도, 예를 들어 사용자가 그들 자원에 액세스하도록 다른 프로토콜을 따르거나 상당히 다른 사용자 인터페이스를 수수해야 할 때 전반적인 효율성 및 유연성은 손상된다.In addition, the efficiency and flexibility of the Internet is limited by other factors that restrict users from accessing information and services. For example, a user with a personal computer may have access to a significantly larger set of Internet resources than, for example, a user of a restricted cellular phone associated with the underlying platform. When platform constraints are not an issue, other issues (such as security and storage) can still restrict access to the same user to Internet resources, and more so for other users on all platforms. Even though the same information and services can be accessed, the overall efficiency and flexibility are compromised, for example, when a user has to follow different protocols or receive quite different user interfaces to access their resources.

더 나아가, 인터넷 사용자는 필터링 및 편성하기 어려운 너무 많은 정보와 직면하기도 한다. 예를 들어, 웹 검색 엔진은 간단한 질의에 대하여 수많은 가능한 "히트"를 반환하는 것이 일반적이다. 사용자는 관련 정보를 얻기 위해 이들 히트를 전부 수동으로 필터링해야 한다. 또한, 사용자의 이메일 수신함은 사용자에게 우선순위가 낮거나 무관하기도 한 정크 이메일 또는 "스팸"으로 공격당하기도 한다. 몇몇 수신함 필터가 존재한다 할지라도, 사용자는 우선순위가 높거나 또는 중요한 메시지를 찾기 위해서 나머지 메시지를 여전히 전부 스캔해야 한다.Furthermore, Internet users face too much information that is difficult to filter and organize. For example, web search engines typically return a number of possible "hits" for simple queries. The user must manually filter all of these hits to get relevant information. In addition, a user's email inbox may be attacked by junk email or "spam", which may be low priority or irrelevant to the user. Even if there are some inbox filters, the user still has to scan the rest of the messages to find high priority or important messages.

따라서, 더 일관된 사용자 대화 및 협조, 및 인터넷을 통한 웹 사이트간 통신을 용이하게 하는 시스템 및 방법이 필요하다. 또한, 사용자에게 제공될 관련 정보가 너무 많은 정보로 사용자를 압도함이 없이 개개인에게 더 개인화될 필요가 있다.Thus, what is needed is a system and method that facilitates more consistent user conversations and coordination, and communication between Web sites over the Internet. In addition, the relevant information to be provided to the user needs to be more personalized to the individual without overwhelming the user with too much information.

종래기술에서의 상기 문제들은 더 우수한 인터넷-기반 협조(collaboration) 및 더 우수한 웹 사이트간 통신을 용이하게 하는 분산(distributed) 컴퓨팅 서비스 플랫폼인 본 발명에 의하여 극복된다. 첫째로, 플랫폼의 일반적 개념 아키텍처가 요약설명된다. 그 후, 플랫폼의 통합 테크놀로지 컴포넌트가 요약설명된다. 이들 컴포넌트는 프로그래밍된 모델, 스키마, 사용자 인터페이스, 이벤트, 메시징, 기억장치, 디렉토리, 보안, 및 코드 관리를 포함한다. 마지막으로, 직장 및 가정에서의 사람들의 일생활에 있어서 고급(advanced) 협조 및 통신을 본 발명이 어떻게 용이하게 하는지 예시하는 시나리오가 설명된다.The above problems in the prior art are overcome by the present invention, which is a distributed computing services platform that facilitates better internet-based collaboration and better inter-site communication. First, the general conceptual architecture of the platform is summarized. Thereafter, the platform's integrated technology components are summarized. These components include programmed models, schemas, user interfaces, events, messaging, storage, directories, security, and code management. Finally, a scenario is illustrated that illustrates how the present invention facilitates advanced coordination and communication in the lives of people at work and at home.

본 발명의 분산 컴퓨팅 서비스 플랫폼은 클라이언트 디바이스와 서버 연합(federation) 사이, 및 서버 연합내의 서버 사이에서의 통신을 용이하게 한다. 서버 연합은, 예를 들어, 인터넷 및/또는 법인 인트라넷상의 서비스 및 서버로 이루어질 수 있다. 클라이언트 및 서버는, 어느 정도의 자치를 유지하면서, 의미적(meaningful) 통신 및 정보 교환을 통하여 통합되어 있다. 이러한 의미적 교환은 전 트랜스포트-독립적 메시징 기반구조(infrastructure)에서 공통(common) 스키마를 통하여 정보를 교환함으로써 가능하다.The distributed computing services platform of the present invention facilitates communication between client devices and server federations and between servers in server federations. Server federation may, for example, consist of servers and services on the Internet and / or corporate intranets. Clients and servers are integrated through semantic communication and information exchange, while maintaining some autonomy. This semantic exchange is possible by exchanging information through a common schema in the entire transport-independent messaging infrastructure.

플랫폼은 프로그래밍 모델, 스키마, 사용자 인터페이스, 이벤트, 메시징, 기억장치, 디렉토리, 보안 및 코드 관리를 포함하는, 분산되어 있지만 통합된 많은 테크놀로지 컴포넌트 및 서비스를 포함한다. 프로그래밍 모델은 클라이언트와 서버 연합 사이에 유연하게 분산될 수 있는 애플리케이션을 위한 구조를 정의한다. 프로그래밍 모델을 따르는 애플리케이션은 페이지, 에미세리(emissary), 및 피에프돔(fiefdom) 컴포넌트를 포함한다. 페이지 컴포넌트는 서버 연합과 통신하고 있는 특정 클라이언트 디바이스에 대하여 사용자 인터페이스를 투사(project)하도록 전형적으로 사용되는 제어를 호스팅한다. 에미세리 컴포넌트는 서버 연합에 클라이언트를 포괄적으로 표시한다. 피에프돔 컴포넌트는 애플리케이션의 1차 자원을 구성하는 데이터를 소유한다. 일반적으로 이들 컴포넌트는 비동기 메시징을 통하여 서로 통신한다. 메시지는 컴포넌트에 내재하는 로직에 의해서, 컴포넌트에 내재하여 발생된 이벤트에 의해서, 또는 다른 컴포넌트로부터 수신된 메시지에 응답하여 발생될 수 있다. The platform includes many distributed but integrated technology components and services, including programming models, schemas, user interfaces, events, messaging, storage, directories, security, and code management. The programming model defines a structure for applications that can be flexibly distributed between client and server federation. Applications that follow the programming model include pages, emissary, and fiefdom components. The page component hosts the controls typically used to project the user interface to a particular client device that is communicating with a server federation. The emission component provides a comprehensive representation of the client to the server federation. The FD dome component owns the data that makes up the primary resource of the application. Typically these components communicate with each other via asynchronous messaging. The message may be generated by logic inherent in the component, by an event inherent in the component, or in response to a message received from another component.

플랫폼은 통신을 의미적이게 하도록 스키마에 의존한다. 스키마는 데이터의 특정 타입이 어떻게 구조화될 수 있는지를 정의하는 표준 또는 규칙의 세트이다. 따라서, 연합의 컴퓨터 시스템은 특정 구조에 순응하는 데이터가 전 연합을 통하여 사용된 특정 타입의 아이템을 표시함을 인식하도록 스키마를 사용한다. 따라서, 단지 데이터 자체보다는 데이터의 의미(meaning)가 컴퓨터 시스템 사이에서 통신될 수 있다. 예를 들어, 컴퓨터 디바이스는, 컴퓨터가 주소의 컴포넌트 파트를 "이해"하게 하여, 특정 주소 스키마를 따르는 데이터 구조가 주소를 표시함을 인식할 수 있다. 그 후 컴퓨터 디바이스는 데이터 구조가 주소를 표시함을 이해한 것에 근거하여 지능적인 액션을 수행할 수 있다. 그러한 액션은, 예를 들어, 주소를 가지고 할 일을 표시하는 액션 메뉴를 사용자에게 제시하는 것을 포함할 수 있다. 스키마는 디바이스상에 로컬하게 및/또는 연합의 "메가-스토어"에 글로벌하게 기억될 수 있다. 디바이스는 스키마가 업데이트될 때 디바이스에 자동으로 메시지를 패싱하는 이벤트 알림 서비스(이러한 경우에서는, 스키마 업데이트 서비스)에 서브스크라이빙함으로써 로컬하게 기억된 스키마를 계속 업데이트할 수 있다. 글로벌하게 기억된 스키마로의 액세스는 보안 기반구조에 의해 제어된다.The platform depends on the schema to make the communication meaningful. A schema is a set of standards or rules that define how a particular type of data can be structured. Thus, a federated computer system uses a schema to recognize that data conforming to a particular structure represents a particular type of item used throughout the federation. Thus, the meaning of data may be communicated between computer systems rather than just the data itself. For example, a computer device may allow a computer to “understand” a component part of an address, so that a data structure conforming to a particular address scheme represents an address. The computer device can then perform intelligent actions based on understanding that the data structure represents an address. Such an action may include, for example, presenting an action menu to the user indicating the todo with the address. The schema may be stored locally on the device and / or globally in the "mega-store" of the federation. A device can continue to update its locally stored schema by subscribing to an event notification service (in this case, a schema update service) that automatically passes messages to the device when the schema is updated. Access to globally stored schemas is controlled by the security infrastructure.

디바이스와의 사용자 대화(interaction)는 주로 사용자 인터페이스를 통하여 일어난다. 본 발명의 사용자 인터페이스(UI)는 멀티-모달(modal)이고, 지능적이고, 응답적이다. 사용자 인터페이스는 서버 디바이스 및 다양한 클라이언트의 테크니컬 기능(capability)으로 적절하게 스케일링한다. 사용자 인터페이스는 또한 전 디바이스에서 사용자의 프레퍼런스 스테이터스, 세션, 및 상태를 기억한다. 따라서, 사용자는 모든 상태 및 프레퍼런스 정보가 양립되게 있으면서 하나의 디바이스로부터 또 다른 미드-세션으로 스위칭할 수 있거나, 또는 다른 사용자는 동일한 디바이스를 공유할 수 있고 그들 프레퍼런스에 근거한 다른 인터페이스를 제공받을 수 있다. 사용자가 보안 기반구조를 경유하여 그들 자신을 적절하게 인증한 후에, 사용자 프레퍼런스 정보는 스키마에 의해 지정된 (즐겨찾기, 콘택트 등과 같은) 사용자-특정 정보를 기억하는 디렉토리 서비스를 통하여 액세스될 수 있다. 또한 사용자 인터페이스는 사용자가 멀티플 모드를 통하여 UI와 대화할 수 있음을 의미하는 멀티-모달이다. 예를 들어, 사용자 입력은 키보드 엔트리 또는 마우스 클릭과 같은 "전통적인" 방법을 통하여서일 수 있다. 또한, UI는 마이크로폰을 갖춘 디바이스에 대한 오디오/음성 입력 또는 터치 스크린 또는 패드를 갖춘 디바이스에 대한 스틸러스/터치 입력과 같은 다른 입력 방법을 허용한다.User interaction with the device occurs primarily through the user interface. The user interface (UI) of the present invention is multi-modal, intelligent and responsive. The user interface scales appropriately with the technical capabilities of the server device and various clients. The user interface also remembers the user's preference status, session, and state at all devices. Thus, a user can switch from one device to another mid-session while all state and preference information is compatible, or another user can share the same device and be provided with another interface based on their preferences. Can be. After users have properly authenticated themselves via the security infrastructure, user preference information can be accessed through a directory service that stores user-specific information (such as favorites, contacts, etc.) specified by the schema. The user interface is also multi-modal, meaning that the user can interact with the UI through multiple modes. For example, user input may be through "traditional" methods such as keyboard entry or mouse click. In addition, the UI allows other input methods such as audio / voice input for devices with microphones or stylus / touch input for devices with touch screens or pads.

플랫폼내의 이벤트는 특정 액티비티에 대한 알림을 제공하거나, 리포팅하거나, 동기화하도록 사용된다. 플랫폼의 이벤트 컴포넌트는 전 연합에 걸쳐서 이벤트 싱크에 통신되는 이벤트를 발생시키는 이벤트 소스를 포함한다. 시스템은 입력 이벤트에 대한 논리적인 또는 개연적인 추론을 통하여 입력 이벤트를 더 높은 레벨 이벤트로 변환하는 추론 기구를 포함하기도 하여 어토믹(atomic) 이벤트를 점차로 더 높은 레벨 이벤트로 변환하는 이벤트 합성(composition) 메카니즘을 포함한다. 이벤트 합성 메카니즘은 이용가능한 어토믹 이벤트의 세트를 소프트웨어 컴포넌트의 정보적 요구에 적합하게 매칭되는 관찰기록으로 고쳐, 좋은 결정을 하도록 추상화(abstraction)의 알맞은 레벨에서의 정보를 컴포넌트에 제공한다. 1)하나 이상의 이벤트 소스에 의해 제공되는 특정 클래스의 이벤트로 소프트웨어 컴포넌트에 의한 서브스크립션; 2)하나 이상의 소스의 단속적인 폴링에 의해서; 또는 3)이벤트 소스에 의한 이벤트의 더 넓은 방송의 청취에 의해서를 포함하는 수개의 메카니즘을 경유하여 소프트웨어 컴포넌트는 이벤트에 액세스할 수 있다. 이벤트에 액세스하는 이들 방법 중 임의의 것에 대하여, 메시지 전달 타입이 이벤트의 타입에 의존적일 수 있을 지라도, 메시징 기반구조를 경유하여 애플리케이션은 이벤트에 액세스할 수 있다. 예를 들어, 이벤트는 이벤트의 통신이 송신에서의 딜레이와 연관된 코스트에 의해 가이드될 수 있도록, 대기시간(latency)에서의 다른 톨러런스와 연관될 수 있다. 이러한 이유 때문에, 미션-크리티컬 서버가 다운된다는 이벤트 알림은 그 수신지로의 즉시 전달(delivery)의 보증을 요구한다. 사용자의 일반적인 위치상에서의 업데이트와 같은 다른 이벤트는 딜레이의 더 낮은 코스트와 연관될 수 있다. 또한, 사용자 인터페이스는 알림의 긴급성에 비례하는 방식으로 특정 이벤트를 사용자에게 알려줄 수 있다. 예를 들어, 네트워크 관리자는 서버가 다운된다는 긴급한 팝-업 메시지를 수신할 수 있거나, 또는 틴에이저는 인스턴트 메신저 또는 챗 인터페이스를 통한 구역에 친구 중 하나가 있다는 알림을 수신할 수 있다. 또한, 이벤트 알림은 인증 및 권한부여 보안 메카니즘에 의해 제어된다.Events within the platform are used to provide notifications, reports, or synchronization for specific activities. The platform's event component includes an event source that generates an event that is communicated to an event sink across all federations. The system also includes an inference mechanism that converts input events to higher level events through logical or probabilistic inferences about the input events, thereby converting atomic events to higher level events. Include mechanisms Event synthesis mechanisms modify the set of available atomic events into observations that match the informational requirements of the software component, providing the component with information at the appropriate level of abstraction to make good decisions. 1) Subscription by a software component with events of a particular class provided by one or more event sources; 2) by intermittent polling of one or more sources; Or 3) the software component may access the event via several mechanisms, including by listening to a broader broadcast of the event by the event source. For any of these methods of accessing an event, an application may access the event via a messaging infrastructure, although the message delivery type may be dependent on the type of event. For example, an event may be associated with another tolerance in latency such that communication of the event may be guided by the cost associated with the delay in the transmission. For this reason, event notification that a mission-critical server is down requires assurance of immediate delivery to its destination. Other events, such as updates on the user's general location may be associated with a lower cost of delay. In addition, the user interface may inform the user of a particular event in a manner proportional to the urgency of the notification. For example, the network administrator may receive an urgent pop-up message that the server is down, or the teenager may receive a notification that one of the friends is in the zone via an instant messenger or chat interface. Event notification is also controlled by authentication and authorization security mechanisms.

메시징 컴포넌트(160)는 전 플랫폼에서 이벤트 및 다른 정보가 교환될 수 있는 메카니즘이다. 메시징 서비스는 HTTP를 포함하는, 임의의 다양한 트랜스포트를 사용하여 인터넷을 통하여 효율적이고 신뢰할만한 메시징을 제공한다. 메시징 기반구조는 본 발명과 연관된 다른 특성 및 메시징 서비스의 전반적인 아키텍처를 이용하는 애플리케이션을 쓰도록 애플리케이션 개발자에 대하여 표준 인터페이스를 확립한다. 메시징은 비동기식으로 일어날 수 있고 따라서 사용자-개시 페이지 리프레싱을 요구함이 없이 페이지의 일정한 업데이트를 가능하게 한다.Messaging component 160 is a mechanism by which events and other information can be exchanged across platforms. The messaging service provides efficient and reliable messaging over the Internet using any of a variety of transports, including HTTP. The messaging infrastructure establishes a standard interface for application developers to write applications that take advantage of the overall architecture of messaging services and other features associated with the present invention. Messaging can occur asynchronously and thus allow for constant updating of pages without requiring user-initiated page refreshing.

기억장치 서비스는 전 서버 연합을 통한 분산 기억장치를 허용한다. 상기한 바와 같이, 사용자 프레퍼런스 및 파일은 연합에서의 "메가-스토어"내에 기억될 수 있고, 적절한 인증 후에, 사용자는 임의의 디바이스를 사용하여 임의의 위치로부터 이러한 정보에 액세스할 수 있다. "메가-스토어"는 모두 반드시 단일 서버상에 있어야만 하는 것은 아니다; 기억장치는 효율성, 메모리 할당, 액세스의 빈도 등에 근거하여 연합내의 전 서버에서 분산될 수 있다. 서버 연합내에 기억된 정보는 또한 사용자의 오프-라인 작업을 허용하도록 로컬하게 복제될 수 있다. 사용자가 다시 온-라인으로 돌아갈 때, 오프-라인 및 온-라인 데이터의 자동 동기화를 트리거링하는 이벤트가 발생된다. 기억장치 서비스는 통상의 파일 시스템상에 빌딩되어 있는 데이터 엔진을 포함한다. 로컬 캐싱을 위해 정보의 우선순위를 정하고, 캐싱된 정보의 연령 및/또는 콘텍스트에서의 변환에 근거하여 캐싱된 정보가 제거될 수 있게 하는 방법이 캐싱된 정보의 값을 최대화하도록 사용될 수 있다.The storage service allows distributed storage across all server federations. As noted above, user preferences and files can be stored in a "mega-store" in the federation, and after proper authentication, the user can access this information from any location using any device. "Mega-stores" do not all have to be on a single server; Storage can be distributed across all servers in the federation based on efficiency, memory allocation, frequency of access, and the like. The information stored in the server federation can also be replicated locally to allow the user's off-line work. When the user goes back on-line, an event is generated that triggers the automatic synchronization of off-line and on-line data. The storage service includes a data engine built on a normal file system. A method of prioritizing information for local caching and allowing cached information to be removed based on the age and / or translation in the cached information may be used to maximize the value of the cached information.

다양한 서비스에 의해 용이하게 사용자가 인식 또는 식별될 수 있는 개념을 지원하기 위해서, 디렉토리 컴포넌트가 제공된다. 본 발명의 디렉토리 서비스는 메타-디렉토리 사이를 동기화하여 기업마다 또는 웹 사이트마다의 메타-디렉토리를 포함함으로써 연합을 지원한다. 이러한 동기화는 디렉토리 사이에 통신하도록 사용되는 표준화된 스키마에 의해서 용이하게 된다. 이들 메타-디렉토리는 더 상세한 정보가 발견될 수 있는 특정 적응(adapted) 디렉토리에 레퍼런스를 제공한다. 예를 들어, 디렉토리는 사용자 신원 정보(이름, 주소 등), 보안 정보(사용자가 액세스하도록 권한부여된 정보가 무엇인가) 등을 포함할 수 있다.In order to support the concept that a user can be easily recognized or identified by various services, a directory component is provided. The directory service of the present invention supports federation by synchronizing between meta-directories and including meta-directories per company or per web site. This synchronization is facilitated by a standardized schema used to communicate between directories. These meta-directories provide a reference to a specific adapted directory where more detailed information can be found. For example, the directory may include user identity information (name, address, etc.), security information (what information the user is authorized to access), and the like.

본 발명의 보안 기반구조는 전 서버 연합에서 고급 보안을 제공한다. 사용자 모빌리티 및 프라이버시를 보증하기 위하여, 보안 기반구조는 한 사람이 다중 신원을 갖는 것에 대비한다. 예를 들어, 개인은 직업상의 신원 및 사적인 신원을 가질 수 있다. 본 발명은 이들 멀티플 엔티티가 하나의 엔티티로서 취급되는 인증 및 권한부여를 용이하게 한다. 더 나아가, 개인 방화벽, 페리미터(perimeter) 방화벽, 및 보안 게이트웨이가 서로로부터 독립적으로 작동하는 고급 방화벽 테크놀로지가 설명된다. 보안은 패스워드, 스마트카드, 생체인식(지문, 망막 스캔, 등), 키 교환, 암호화 등과 같은 테크놀로지의 임의의 조합에 의해 구현될 수 있다.The security infrastructure of the present invention provides advanced security in all server federations. To ensure user mobility and privacy, the security infrastructure prepares for one person having multiple identities. For example, an individual may have a professional and personal identity. The present invention facilitates authentication and authorization in which these multiple entities are treated as one entity. Further, advanced firewall technology is described in which personal firewalls, perimeter firewalls, and security gateways operate independently from each other. Security can be implemented by any combination of technologies such as passwords, smart cards, biometrics (fingerprints, retinal scans, etc.), key exchange, encryption, and the like.

플랫폼의 하나의 목표는 사용자가 필요로 하는 가장 최근에 업데이트된 애플리케이션 및 코드에 투과적으로 액세스할 수 있도록 보증하는 것이다. 본 발명의 코드 관리 시스템은 애플리케이션 및 그 구성 컴포넌트에 대한 구성 정보, 엔트리 포인트, 자원, 및 코드를 포함하는 애플리케이션의 구조를 기술하는(describe) 매니페스트(manifest)를 포함한다. 코드 관리 시스템은 프로그래밍 모델에 순응하는 애플리케이션이 효율적인 방식으로 전 연합에서 배치 및 업데이트되게 한다.One goal of the platform is to ensure transparent access to the most recently updated applications and code that users need. The code management system of the present invention includes a manifest that describes the structure of the application, including configuration information, entry points, resources, and code for the application and its constituent components. Code management systems enable applications that conform to the programming model to be deployed and updated across all federations in an efficient manner.

본 발명의 부가적인 특성 및 이점은 이하 설명될 것이고, 어느 정도는 설명으로부터 명백할 것이거나, 또는 본 발명의 실시로부터 알 수 있다. 본 발명의 특성 및 이점은 첨부된 청구항에서 구체적으로 지적된 기구 및 조합에 의해 실현되고 얻어질 수 있다. 본 발명의 이들 및 다른 특성은 이하 설명 및 첨부된 청구항으로부터 아주 더 명백해질 것이거나, 또는 이하 설명되는 바와 같이 본 발명의 실시에 의해 알 수 있다.Additional features and advantages of the invention will be described below, and to some extent will be apparent from the description, or may be learned from the practice of the invention. The features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present invention will become even more apparent from the following description and the appended claims, or may be learned by practice of the invention as described below.

본 발명의 상기 및 다른 이점 및 특성이 얻어지는 방식을 위해서, 상기 간략히 설명된 본 발명은 첨부 도면에 도시된 특정 실시예를 참조하여 더 상세히 설명될 것이다. 이들 도면은 본 발명의 전형적인 실시예를 도시할 뿐이므로 본 발명의 범위를 제한하는 것으로 생각되어서는 안됨을 알 것이고, 본 발명은 이하 첨부 도면을 이용하여 더 상세히 설명될 것이다.BRIEF DESCRIPTION OF THE DRAWINGS For the above and other advantages and features of the present invention to be obtained, the present invention briefly described above will be described in more detail with reference to specific embodiments shown in the accompanying drawings. It is to be understood that these drawings are only illustrative of exemplary embodiments of the invention and therefore should not be considered as limiting the scope of the invention, which will be described in more detail below with reference to the accompanying drawings.

프로그래밍 모델, 스키마, 사용자 인터페이스, 이벤트, 메시징, 기억장치, 디렉토리, 보안, 및 코드 관리 컴포넌트를 포함하는 분산 컴퓨팅 서비스 플랫폼은 더 우수한 인터넷 기반 협조 및 더 우수한 웹 사이트간 통신을 용이하게 한다.Distributed computing services platforms, including programming models, schemas, user interfaces, events, messaging, storage, directories, security, and code management components, facilitate better internet-based collaboration and better inter-site communication.

도 1은 본 발명의 적합한 운영환경(operating environment)을 제공하는 아키텍처를 도시하는 도,1 illustrates an architecture that provides a suitable operating environment of the present invention;

도 2는 도 1의 전 아키텍처에서 분산 방식으로 구현될 수 있는 애플리케이션을 위한 프로그래밍 모델을 도시하는 도,FIG. 2 illustrates a programming model for an application that may be implemented in a distributed fashion in all architectures of FIG. 1;

도 3은 본 발명에 따른 스키마 스토어 및 스키마 서비스를 도시하는 도,3 is a diagram illustrating a schema store and a schema service according to the present invention;

도 4는 본 발명에 따른 사용자 인터페이스 컴포넌트의 개략도,4 is a schematic diagram of a user interface component in accordance with the present invention;

도 5는 본 발명에 따라 복수의 이벤트 소스와 복수의 이벤트 싱크 사이에서 이벤트 알림을 제공하는 이벤트 시스템의 개략도,5 is a schematic diagram of an event system for providing event notification between a plurality of event sources and a plurality of event sinks in accordance with the present invention;

도 6은 본 발명에 대하여 사용하기 위한 메시징 아키텍처의 개략도,6 is a schematic diagram of a messaging architecture for use with the present invention,

도 7은 본 발명에 대하여 사용하기 위한 기억장치 아키텍처의 개략도,7 is a schematic diagram of a storage architecture for use with the present invention,

도 8은 본 발명에 대하여 사용하기 위한 디렉토리 아키텍처의 개략도,8 is a schematic diagram of a directory architecture for use with the present invention,

도 9는 도 8의 디렉토리 아키텍처를 사용하는 예시적인 통신 흐름을 도시하는 도,9 illustrates an example communication flow using the directory architecture of FIG. 8;

도 10은 본 발명에 대하여 사용하기 위한 보안 서비스의 개략도,10 is a schematic diagram of a security service for use with the present invention;

도 11은 프로파일 정보를 유지하기 위해 글로벌 식별자가 어떻게 사용되는가를 보여주는 데이터 구조를 도시하는 도,11 illustrates a data structure showing how a global identifier is used to maintain profile information;

도 12는 본 발명에 대하여 사용하기 위한 고급 방화벽 구성을 도시하는 도,12 illustrates an advanced firewall configuration for use with the present invention;

도 13은 소프트웨어 개발에 있어서 사용하기 위한 코드 관리 매니페스트를 도시하는 도.13 illustrates a code management manifest for use in software development.

A. 서설A. Introduction

본 발명은 더 우수한 인터넷 기반 협조 및 웹 사이트간 통신을 용이하게 하는 분산 네트워크 서비스 플랫폼을 포함하는 컴퓨터 프로그램 제품, 시스템, 및 방법으로까지 확대된다. 본 발명의 다양한 아키텍처 컴포넌트는, 이하 더 상세히 논의되는 바와 같이, 퍼스널 컴퓨터, 서버, 랩탑, 핸드-헬드 디바이스, 셀 폰 등과 같은 다양한 하드웨어 컴포넌트를 포함하는 다양한 전용 또는 범용 전 컴퓨팅 디바이스에서 분산될 수 있다.The present invention extends to computer program products, systems, and methods including distributed network services platforms that facilitate better Internet-based coordination and inter-website communication. The various architectural components of the present invention may be distributed in a variety of dedicated or general purpose pre-computing devices, including various hardware components such as personal computers, servers, laptops, hand-held devices, cell phones, and the like, as discussed in more detail below. .

본 발명의 범위내의 실시예는 또한 기억된 컴퓨터-실행가능한 명령어 또는 데이터 구조를 전하거나 갖기 위한 컴퓨터-읽기가능한 매체를 포함한다. 그러한 컴퓨터-읽기가능한 매체는 범용 또는 전용 컴퓨팅 디바이스에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예로서, 그러한 컴퓨터-읽기가능한 매체는 소망의 프로그램 코드 수단을 컴퓨터-실행가능한 명령어 또는 데이터 구조의 형식으로 전하거나 기억하도록 사용될 수 있고 범용 또는 전용 컴퓨팅 디바이스에 의해 액세스될 수 있는 RAM, ROM, EEPROM, CD-ROM, 또는 다른 광디스크 기억장치, 자기 디스크 기억장치 또는 다른 자기 기억장치 디바이스, 또는 임의의 다른 매체와 같은 물리적 기억장치 매체일 수 있다. 네트워크 또는 다른 통신 접속(하드와이어드, 무선, 또는 하드와이어드 또는 무선의 조합)을 통하여 컴퓨팅 디바이스로 정보가 전달될 때, 컴퓨팅 디바이스는 컴퓨터-읽기가능한 매체로서 접속을 적절하게 뷰잉한다. 따라서, 임의의 그러한 접속은 컴퓨터-읽기가능한 매체라 적절하게 불린다. 상기 조합은 또한 컴퓨터-읽기가능한 매체의 범위내에 포함되어야 한다. 컴퓨터-실행가능한 명령어는, 예를 들어, 임의의 범용 또는 전용 컴퓨팅 디바이스가 특정 함수 또는 함수 그룹을 수행하게 하는 데이터 및 명령어를 포함한다.Embodiments within the scope of the present invention also include computer-readable media for conveying or having stored computer-executable instructions or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or dedicated computing device. By way of example, and not limitation, such computer-readable media may be used to convey or store desired program code means in the form of computer-executable instructions or data structures, and may be accessed by a general purpose or dedicated computing device, Physical storage medium such as a ROM, EEPROM, CD-ROM, or other optical disk storage, magnetic disk storage or other magnetic storage device, or any other media. When information is transferred to the computing device via a network or other communication connection (hardwired, wireless, or a combination of hardwired or wireless), the computing device properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of computer-readable media. Computer-executable instructions include, for example, data and instructions that cause any general purpose or dedicated computing device to perform a particular function or group of functions.

이러한 설명에 있어서, 본 발명의 일반적인 아키텍처는 아키텍처 절에서 우선 설명되는 바와 같이 구현될 수 있다. 그 후, 아키텍처의 몇몇 테크놀로지 컴포넌트의 각각이 설명된다. 이들 절은 프로그래밍 모델, 스키마, 사용자 인터페이스, 이벤트, 메시징, 기억장치, 디렉토리, 보안, 및 코드 관리를 포함한다. 마지막으로, 아키텍처 및 테크놀로지 컴포넌트가 어떻게 고급 인터넷 통신 및 협조를 용이하게 하는지를 예시하는 시나리오 절에서 다양한 시나리오가 설명될 것이다.In this description, the general architecture of the present invention may be implemented as described first in the architecture section. Then, each of several technology components of the architecture is described. These sections include programming models, schemas, user interfaces, events, messaging, storage, directories, security, and code management. Finally, various scenarios will be described in the Scenarios section, which illustrates how architecture and technology components facilitate advanced Internet communications and collaboration.

B. 아키텍처B. Architecture

도 1은 본 발명이 구현될 수 있는 운영환경(100)을 개략적으로 도시한다. 클라이언트 디바이스(110)는 다양한 프로세싱 및 메모리 능력을 갖는다. 예를 들어, 클라이언트 디바이스(110)는 데스크톱 퍼스널 컴퓨터(PC)와 같은 고도의 데이터 프로세싱을 수행할 수 있는 "리치(rich)" 클라이언트(예를 들어, 리치 클라이언트;112) 및 셀룰러 폰 및 페이저와 같이 데이터 프로세싱을 더 적게 할 수 있는 "씬(thin)" 클라이언트(114)를 포함한다. 리치 클라이언트와 씬 클라이언트 사이의 차이점은 스펙트럼이라 이해된다; 예를 들어 스펙트럼의 중앙에 들어있는 많은 디바이스(핸드-헬드 또는 태블릿 PC)가 존재한다.1 schematically illustrates an operating environment 100 in which the present invention may be implemented. Client device 110 has various processing and memory capabilities. For example, client device 110 may include a " rich " client (e.g., rich client; 112) and cellular phones and pagers capable of performing a high degree of data processing, such as a desktop personal computer (PC). Likewise, it includes a "thin" client 114 that can do less data processing. The difference between rich and thin clients is understood to be a spectrum; For example, there are many devices (hand-held or tablet PCs) in the middle of the spectrum.

클라이언트의 프로세싱 기능 또는 디바이스 타입과 무관하게, 대부분의 클라이언트 디바이스는 온라인 또는 오프라인 상태에서 사용자에 의해 작동될 수 있다. 온라인에 있는 동안, 각각의 클라이언트 디바이스는 본 발명의 분산 컴퓨팅 서비스 플랫폼(115)을 경유하여 서버 연합(120)과 통신할 수 있다. 개념적으로, 서버 연합(120)은, 예를 들어, 법인 인트라넷(130)과 같은 하나 이상의 프라이빗 컴퓨터 네트워크뿐만 아니라 일반적으로 "인터넷"(125)이라 불리는 컴퓨터 시스템의 월드-와이드 네트워크를 포함한다. 연합내의 서버(즉, 인터넷(125)에서의 서버(140a, 140b) 및 법인 인트라넷(130)에서의 서버(140c, 140d)는 또한 플랫폼(115)을 경유하여 서로 통신한다.Regardless of the client's processing function or device type, most client devices can be operated by a user online or offline. While online, each client device may communicate with the server federation 120 via the distributed computing services platform 115 of the present invention. Conceptually, server federation 120 includes one or more private computer networks, such as, for example, corporate intranet 130, as well as a world-wide network of computer systems, commonly referred to as “Internet” 125. Servers in the federation (ie, servers 140a and 140b in the Internet 125 and servers 140c and 140d in the corporate intranet 130) also communicate with each other via the platform 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)의 분산되는 성질은 본 발명의 고급 특성 및 이점에 기여하고 용이하게 한다.Conceptually, the platform 115 may include a programming model component 135, a user interface component 140, a storage component 145, a directory component 150, an event component 155, a messaging component 160, a security component ( 165, several platform components including technologies and services, including schema components 170, and code management components 175. Although conceptually illustrated as distinguished from FIG. 1, each of the platform components 135, 140, 145, 150, 155, 160, 165, 170, and 175, through the entire server federation 120 and the client device 110 Can be dispersed. Furthermore, many of the platform components provide services to client device 110 and server federation 120. Each platform component is loosely-coupled to other platform components as indicated by arrow 180, and enables platform 115 to provide integrated technology and services. In addition to the integration of supporting services and platform components, the distributed nature of the platform 115 contributes to and facilitates the advanced features and advantages of the present invention.

클라이언트(110) 및 서버 연합(120)의 서버(140)는, 어느 정도의 자치를 유지하는 동안, 이하 더 상세히 논의되는 스키마 플랫폼 컴포넌트(170) 및 메시징 플랫폼 컴포넌트(160)에 의해 제공되는 바와 같이 전 트랜스포트-독립 메시징 기반구조에서 공통 스키마를 사용하여 의미적 통신 및 정보 교환을 통하여 통합된다. 양방향성의 화살표(190)는 서버와 클라이언트 사이에 일어나는 이러한 통신을 표시한다. 양방향성의 통신은 클라이언트 디바이스(110)가 서버 연합(120)으로부터 읽고, 서버 연합에 쓰고, 서버 연합과 대화하게 한다. 본 발명은 스키마에 따라 양방향성으로 데이터를 통신할 수 있는 임의의 통신 메카니즘을 사용하여 구현될 수 있다. 일예에 있어서, 통신은 이름/값 페어의 통신을 가능하게 하는 확장가능 마크업 언어("XML")를 통하여 일어난다.The server 140 of the client 110 and server federation 120 may, while maintaining some autonomy, as provided by the schema platform component 170 and the messaging platform component 160 discussed in more detail below. In the entire transport-independent messaging infrastructure, it is integrated through semantic communication and information exchange using a common schema. The bidirectional arrow 190 indicates this communication taking place between the server and the client. Bidirectional communication allows client device 110 to read from, write to, and talk to a server federation 120. The present invention may be implemented using any communication mechanism capable of communicating data bidirectionally according to a schema. In one example, the communication occurs via extensible markup language (“XML”) that enables communication of name / value pairs.

어떤 경우에 있어서, 클라이언트 디바이스(110)와 서버 연합(120) 사이의 통신은 또한 단방향 또는 "읽기-전용"일 수 있다. 이러한 단방향 통신은 오늘날 인터넷상에서 통신의 지배적인 형식이다. "읽기-전용" 통신의 이러한 타입에 있어서, 퍼블리셔가 웹 페이지를 생성하고 출판한 후에, 인터넷은 사용자가 페이지상의 정보를 읽게 하는 프리젠테이션 툴로 본질적으로 이용될 수 있다. 이러한 프리젠테이션을 허용하는 테크놀로지는 무선 디바이스에 통신을 허용하는 무선 애플리케이션 프로토콜("WAP")을 포함한다. 또한, 하이퍼텍스트 마크업 언어("HTML")라 불리는 웹 페이지 포맷은 네트워크 사이트로부터 다운로딩될 정보를 허용한다. 그 후, 정보는 파싱(parsing)되고 렌더링되어 클라이언트 디스플레이상에 제시된다. 그러나, 본 발명의 플랫폼(115)은 리치, 대화형, 양방향성 통신을 허용하도록 종래의 웹 프리젠테이션 모델을 확대한다.In some cases, the communication between client device 110 and server federation 120 may also be unidirectional or “read-only”. This one-way communication is the dominant form of communication on the Internet today. In this type of "read-only" communication, after the publisher has created and published a web page, the Internet can be used essentially as a presentation tool that allows the user to read the information on the page. Technologies that allow this presentation include a wireless application protocol ("WAP") that allows communication to wireless devices. In addition, a web page format called Hypertext Markup Language ("HTML") allows information to be downloaded from a network site. The information is then parsed and rendered and presented on the client display. However, the platform 115 of the present invention extends the conventional web presentation model to allow rich, interactive, bidirectional communication.

플랫폼(115)은 연합(120)내의 서버(140)가 협력하여 정보를 공유 및/또는 기능을 수행하게 한다. 각각의 서버가 스스로 정보를 수집 및 컴파일해야 한다기보다, 대신에 서버는 효율적인 분업을 구현하도록 정보가 수월하게 이용될 수 있는 또 다른 서버의 서비스에 의존할 수 있다. 그 후 사용자는 리치 정보를 생산하기 위하여 서버 연합에서 일어난 모든 복잡한 서버간 통신을 걱정해야만 할 필요없이 리치 정보를 받는다. 예를 들어, 서버 연합(120)에서의 서버(140)는 하나의 서버로부터의 주식 시세가 클라이언트 디바이스(110)의 사용자 인터페이스의 일부분에 디스플레이되게 하고, 다른 하나의 서버로부터의 뉴스 기사가 클라이언트 디바이스의 사용자 인터페이스의 다른 일부분에 디스플레이되게 하고, 또 다른 하나의 서버로부터의 인스턴트 메시지가 클라이언트 디바이스의 사용자 인터페이스의 또 다른 일부분에 디스플레이되게 하는 정보를 교환할 수 있다.Platform 115 allows servers 140 in federation 120 to cooperate to share and / or perform information. Rather than having each server collect and compile the information on its own, the server can instead rely on the services of another server where information can be readily used to implement efficient division of labor. The user then receives the rich information without having to worry about all the complex server-to-server communication that takes place in the server federation to produce the rich information. For example, server 140 in server federation 120 causes stock quotes from one server to be displayed in a portion of the user interface of client device 110, and news articles from another server are displayed on the client device. And exchange information such that the instant message from another server is displayed on another portion of the user interface of the client device.

서버 연합(120)내의 서버(140)는 스키마 플랫폼 컴포넌트(170)에 의해 제공되는 표준화된 데이터 구조 또는 스키마를 사용하여 통신하고 정보를 공유한다. 스키마는 서버 사이에서 정보를 단지 교환만 한다기보다 서버와 애플리케이션 사이에 더 의미적인 대화를 허용한다. 의미의 이러한 인식은 서버가 정보의 인식된 의미에 근거하여 기능을 수행하게 한다. 애플리케이션이 정보를 예를 들어 소정 엔티티의 주소와 같은 의미로서 인식하면, 애플리케이션은 그 인식된 의미에 근거한 특정 기능을 수행할 수 있다. 예를 들어, 애플리케이션은 주소 정보를 갖는 소정 엔티티에 대응하는 템플릿의 주소 필드에 자동으로 기입할 수 있다. 또한 애플리케이션은 주소내에 집 코드 또는 상태가 결손(missing)되어 있는지를 검출할 수 있고 따라서 사용자의 개입없이 모든 주소 필드가 자동으로 기입될 수 있도록 결손 정보에 대해 다른 서버에 자동으로 문의(query)할 수 있다. 따라서, 각각의 서버가 데이터와 연관된 의미를 인식하고 그 후 사람의 개입을 요구함이 없이 그 정보에 대해 액팅할 수 있다는 점에서 지능적이기 때문에 서버 사이의 협력은 더 생산적이다.Servers 140 in server federation 120 communicate and share information using standardized data structures or schemas provided by schema platform component 170. The schema allows a more semantic conversation between the server and the application than just exchanging information between the servers. This recognition of meaning allows the server to perform a function based on the recognized meaning of the information. If the application recognizes the information as meaning, for example, the address of a given entity, the application can perform a specific function based on the recognized meaning. For example, an application may automatically fill in an address field of a template corresponding to a given entity with address information. The application can also detect if a house code or status is missing in the address and thus automatically query the other server for missing information so that all address fields can be filled in automatically without user intervention. Can be. Thus, cooperation between servers is more productive because each server is intelligent in that it can recognize the meaning associated with the data and then act on that information without requiring human intervention.

C. 프로그래밍 모델C. Programming Model

도 2는 플랫폼(115)의 멀티-티어(tier) 프로그래밍 모델 컴포넌트(135)를 도시한다. 프로그래밍 모델은 애플리케이션(200)이 도 1의 클라이언트 디바이스(110)와 서버 연합(120) 사이에서 디그리를 변화시키도록 어떻게 분산될 수 있는가를 설명한다. "애플리케이션"은 기능을 수행하는 소프트웨어의 바디로서 정의되고 웹 사이트를 포함할 수 있다. 분산 애플리케이션에 있어서, 애플리케이션의 컴포넌트는 다른 컴포넌트가 웹 사이트의 부분인 동안 클라이언트 디바이스상에 기억될 수 있다. 일반적으로, 애플리케이션(200)은 페이지 컴포넌트(210), 에미세리 컴포넌트(220), 및 피에프돔 컴포넌트(230)를 포함하는 많은 애플리케이션 컴포넌트로 이루어져 있다. 페이지 컴포넌트(210)는 적합한 클라이언트 디바이스(110)에 대하여 사용자 인터페이스 또는 경험을 투사하도록 제어를 호스팅한다. 에미세리 컴포넌트(220)는 클라이언트를 서버 연합에 포괄적으로 표시하고, 따라서, 클라이언트와 서버 연합 사이에서 에미세리로서 역할한다. 피에프돔 컴포넌트(230)는 애플리케이션(200)의 중대한 자원을 구성하는 라이브 데이터를 대부분 직접 제어한다. 단일 애플리케이션은 변화하는 수의 이들 컴포넌트(예를 들어, 하나 이상의 페이지 컴포넌트)를 가질 수 있다. 또한, 어떤 애플리케이션은 모든 컴포넌트를 갖지는 않을 수 있다.2 illustrates a multi-tier programming model component 135 of the platform 115. The programming model describes how the application 200 can be distributed to vary the degree between the client device 110 and the server federation 120 of FIG. 1. An "application" is defined as the body of software that performs a function and may include a website. In a distributed application, components of the application may be stored on the client device while other components are part of the web site. In general, application 200 is comprised of a number of application components, including page component 210, emission component 220, and FPM component 230. The page component 210 hosts the control to project a user interface or experience to the appropriate client device 110. Emissory component 220 presents the client comprehensively to the server federation, thus acting as an etymology between the client and server federation. The FPM component 230 directly controls most of the live data that constitutes a significant resource of the application 200. A single application can have a varying number of these components (eg, one or more page components). Also, some applications may not have all components.

클라이언트의 기능에 의존하여, 페이지 및 에미세리 컴포넌트는 클라이언트 또는 서버 연합상에서 실행될 수 있다. 프로세싱 기능을 거의 또는 전혀 갖지 않는 씬 클라이언트에 있어서, 페이지 및 에미세리 컴포넌트는 서버 연합상에서 실행될 가능성이 더 많을 것이다. 데스크톱 퍼스널 컴퓨터(PC)와 같은, 더 우수한 프로세싱 기능을 갖는 리치 클라이언트에 있어서, 페이지 및 에미세리 컴포넌트는 클라이언트상에서 실행될 가능성이 더 많을 수 있다.Depending on the functionality of the client, the page and emission components can run on the client or server federation. For thin clients with little or no processing capability, the page and edge components will be more likely to run on server federation. For rich clients with better processing capabilities, such as desktop personal computers (PCs), the page and edge components may be more likely to run on the client.

이들 애플리케이션 컴포넌트(페이지, 에미세리, 및 피에프돔)의 각각은 하나의 컴포넌트로부터 다른 하나로, 메시징 컴포넌트(160)를 통하여, 비동기 메시지를 송신 및 수신하기 위해 사용되는 로직(240; 즉, 컴퓨터-실행가능한 명령어)의 바디를 포함한다. 예를 들어, 페이지 레벨 로직(240a)은 메시징 큐(250a)를 통하여 페이지 컴포넌트(210)로부터 에미세리 컴포넌트(220)로 메시지를 비동기 송신하도록 사용된다. 에미세리 레벨 로직(240b)은 메시징 큐(250b)를 통하여 에미세리 컴포넌트(220)로부터 페이지 컴포넌트(210)로 메시지를 비동기 송신하도록 사용된다. 또한 에미세리 레벨 로직(240b)은 메시징 큐(250c)를 통하여 에미세리 컴포넌트(220)로부터 피에프돔 컴포넌트(230)로 메시지를 비동기 송신하도록 사용된다. 피에프돔 레벨 로직(240c)은 메시징 큐(250d)를 통하여 피에프돔 컴포넌트(230)로부터 에미세리 컴포넌트(220)로 메시지를 비동기 송신하도록 사용된다. 따라서, 비동기 정보 교환은 애플리케이션(200)의 페이지, 에미세리, 및 피에프돔 컴포넌트 사이에서 일어난다. 메시징 컴포넌트(160)에 따라, 메시지 큐는 컴포넌트 사이에서 메시지를 송신하기 위한 신뢰할만한 채널을 제공하고 다양한 송신 시맨틱을 지원한다(즉, 정확히 한번 보증 전달, 트랜잭션 전달, 및 무보증 전달). 메시지는 스키마(예를 들어, XML 스키마)를 통하여 정의된다.Each of these application components (pages, emissaries, and piedoms) are logic 240 (ie, computer-generated) used to send and receive asynchronous messages from one component to the other, through messaging component 160. Body of executable instructions). For example, page level logic 240a may be used to asynchronously send a message from page component 210 to economy component 220 via messaging queue 250a. Emissory level logic 240b is used to asynchronously send a message from emissory component 220 to page component 210 via messaging queue 250b. Emissory level logic 240b is also used to asynchronously transmit messages from anesthetic component 220 to a FP dome component 230 via messaging queue 250c. The FD dome level logic 240c is used to asynchronously send a message from the FD dome component 230 to the accessory component 220 via the messaging queue 250d. Thus, asynchronous information exchange takes place between the pages, emissaries, and F. dome components of the application 200. In accordance with messaging component 160, message queues provide a reliable channel for transmitting messages between components and support various transmission semantics (ie, exactly once, delivery of guarantees, and delivery of guarantees). Messages are defined through schemas (eg, XML schemas).

또한 각각의 애플리케이션 컴포넌트의 내의 로직(240)의 바디는 제어(260)를 호스팅하도록 사용된다. 일반적으로, 제어는 프로그램 컴포넌트의 기능에 의해 액세스될 수 있고 그 부분일 수 있는 기능을 표시한다. 예를 들어, 페이지 레벨 로직(240a)은 제어(260a)를 호스팅하고, 에미세리 레벨 로직(240b)은 제어(260b)를 호스팅하고, 피에프돔 레벨 로직(240c)은 제어(260c)를 호스팅한다. 각각의 제어(260)는 호출가능한 방법, 동기적으로 읽혀지거나 쓰여질 수 있는 프로퍼티, 및 비동기적으로 파이어링할 수 있는 이벤트를 노출(expose)하고 페이지, 에미세리, 및/또는 피에프돔 컴포넌트내의 로직이 실행하게 한다. 일반적으로, 제어에 의해 트리거링되는 이벤트는 오브젝트상의 방법의 호출과 같은 낮은-레벨 이벤트이다. 따라서, 메시지가 컴포넌트에 의해 수신될 때, 그것은 컴포넌트내의 코드가 실행하게 하는 이벤트를 발생시킨다.In addition, the body of logic 240 within each application component is used to host the control 260. In general, control is indicative of the functionality that can be accessed and part of the functionality of a program component. For example, page level logic 240a hosts control 260a, emmy level logic 240b hosts control 260b, and F. dome level logic 240c hosts control 260c. do. Each control 260 exposes a callable method, properties that can be read or written synchronously, and events that can be fired asynchronously, and that can be invoked in a page, an aesthetic, and / or a Feddom component. Let the logic execute In general, the event triggered by the control is a low-level event, such as invocation of a method on an object. Thus, when a message is received by a component, it generates an event that causes code in the component to execute.

페이지 컴포넌트(210)는 사용자 인터페이스 또는 경험을 투사하기 위해서 제어(260a)를 직접 동기적으로 조작하기 위해 페이지 레벨 로직(240a)을 사용한다. 클라이언트의 사용자 인터페이스 기능에 의존하여, 페이지 컴포넌트는 클라이언트와 양립가능한 페이지의 특정 버전으로 호출을 조용히 리디렉팅(redirect)할 수 있다. 예를 들어, 하나의 페이지는 리치 클라이언트에 적합할 수 있고, 다른 페이지는 폰 또는 다른 그러한 디바이스와 같은 씬 클라이언트에 대한 사용에 적합할 수 있다. 페이지 컴포넌트(210)는 클라이언트의 유니폼 리소스 로케이터 또는 URL을 사용함으로써 클라이언트의 신원을 인식할 수 있고 따라서 페이지의 적합한 버전으로 리디렉팅할 수 있다. 그러나, 페이지 버전과 무관하게 사용자 인터페이스는, 사용자 인터페이스 컴포넌트(140)와 관련되어 이하 논의되는 바와 같이 어떤 특성이 페이지의 더 높은 리치 버전에서 존재하거나 또는 더 완전히 개발될 것이더라도, 넓은 범위의 전 클라이언트 디바이스에서 일관되게(consistent) 보일 것이다.Page component 210 uses page level logic 240a to directly and synchronously manipulate control 260a to project a user interface or experience. Depending on the user interface functionality of the client, the page component can silently redirect the call to a specific version of the page that is compatible with the client. For example, one page may be suitable for a rich client and another page may be suitable for use with a thin client such as a phone or other such device. The page component 210 can recognize the client's identity by using the client's uniform resource locator or URL and can therefore redirect to the appropriate version of the page. However, regardless of the page version, the user interface may have a wide range of full clients, even if certain characteristics will be present or more fully developed in the higher rich version of the page, as discussed below in connection with the user interface component 140. It will look consistent on the device.

또한 페이지 컴포넌트는 클라이언트에 이용될 수 있는 사용자 인터페이스와 무관하게, 페이지 컴포넌트를 구현할 디바이스의 프로세싱 기능에 의존하여 다른 페이지 버전을 호출할 수 있다. 예를 들어, 페이지 컴포넌트가 높은 프로세싱 파워를 갖는 서버 또는 클라이언트 퍼스널 컴퓨터상에 구현될 것이라면, 페이지 컴포넌트는 페이지와의 확대적인 사용자 대화를 허용하는 리치 제어 페이지로 리디렉팅할 수 있다. 또 한편, 페이지 컴포넌트가 씬, 낮은 로버스트 클라이언트상에 구현될 것이라면, 페이지 컴포넌트는 사용자가 페이지와 대화하게 하는 제어 특성을 포함한다 하더라도 전형적으로 거의 포함하지 않는 페이지의 HTML-전용 버전으로 리디렉팅할 수 있다.The page component can also invoke other page versions depending on the processing capabilities of the device that will implement the page component, regardless of the user interface available to the client. For example, if the page component is to be implemented on a server or client personal computer with high processing power, the page component can redirect to a rich control page that allows for extensive user conversation with the page. On the other hand, if the page component is to be implemented on a thin, low-robust client, the page component will typically redirect to an HTML-only version of the page that rarely contains, even if it contains control features that allow the user to interact with the page. Can be.

에미세리 컴포넌트(220)는 제어(260b)와 동기적으로 대화할 수 있는 로직(240b)의 바디를 캡슐화한다. 또한 로직(240b)은 클라이언트 디바이스 타입이 어떠한 것이든간에 표준화된 방식으로 클라이언트를 서버에 추상적으로 표시하도록 설계되어 있다. 에미세리 컴포넌트는 피에프돔 컴포넌트에 의해 출판된 읽기-전용 데이터에 액세스할 수 있고 그러한 데이터를 복제 데이터 기억장치(271)내에 기억한다. 또한 에미세리 컴포넌트는 사용자마다의 읽기/쓰기(R/W) 데이터 기억장치(272)내에 기억되어 있는 장바구니 데이터와 같은 사용자마다의 R/W 데이터를 포함한다. 로직(240b)의 바디는 메시지 큐(250a 또는 250d)로부터 들어오는 메시지에 응답하여 실행될 수 있다.Emissary component 220 encapsulates a body of logic 240b that can interact synchronously with control 260b. Logic 240b is also designed to abstractly present the client to the server in a standardized manner whatever the client device type. Emissary components can access read-only data published by the FPM dome component and store such data in the replica data storage 271. The emission component also includes R / W data for each user, such as shopping cart data stored in the read / write (R / W) data storage device 272 for each user. The body of logic 240b may be executed in response to a message coming from message queue 250a or 250d.

피에프돔 컴포넌트(230)는 라이브 데이터 기억장치(280)내에 기억된 라이브 데이터를 논리적으로 "소유"하는 로직(240c)의 바디를 캡슐화한다. 로직(240c)의 바디는 피에프돔 컴포넌트와 연관된 에미세리 컴포넌트(220)와 같은 에미세리 컴포넌트로부터 수신된 메시지에 응답하여 실행된다. 피에프돔 컴포넌트(230)는 서비스로의 액세스를 요청하는 임의의 에미세리 컴포넌트상에서 보안 서비스를 수행한다.The FD dome component 230 encapsulates a body of logic 240c that logically "owns" the live data stored in the live data store 280. The body of logic 240c executes in response to a message received from an anesthetic component, such as an anesthetic component 220 associated with the FPM component. The FD dome component 230 performs a security service on any emissory component that requests access to the service.

애플리케이션에서의 각각의 컴포넌트는 명시적인 사용자 및 세션 상태에 관한 상태 정보를 관리한다. 따라서, 각각의 컴포넌트는 그러한 사용자 및 세션 상태 정보의 복제를 위해 사용되는 오브젝트를 지원한다. 이러한 상태 정보는 그러한 상태 정보의 통신을 지원하는 비동기 메시징을 통하여 애플리케이션내의 다른 컴포넌트와 공유될 수 있다. 따라서, 각각의 컴포넌트는 세션에서의 임의의 소정 포인트에서 사용자 인터페이스 상태를 인지하게 될 수 있다. 또한, 각각의 컴포넌트는 사용자의 프레퍼런스를 인지하게 될 수 있다.Each component in the application manages state information about explicit user and session state. Thus, each component supports an object used for the duplication of such user and session state information. Such state information may be shared with other components in the application through asynchronous messaging that supports communication of such state information. Thus, each component may be made aware of the user interface state at any given point in the session. In addition, each component may become aware of the user's preferences.

프로그래밍 모델 컴포넌트(135)의 이점이 이제 설명될 것이다. 애플리케이션내의 컴포넌트는 비동기 메시징을 할 수 있다. 따라서, 컴포넌트는 메시지를 수신하기 위해서 정보를 명시적으로 요청하도록 요구되지는 않는다. 또한, 컴포넌트는 그러한 정보를 포함하는 메시지를 송신하기 위해서 정보에 대한 명시적 요청을 수신하도록 요구되지는 않는다. 따라서, 프로그래밍 모델은 사용자가 웹 사이트를 명시적으로 리프레싱해야 함이 없이 페이지 컴포넌트로의 메시지의 송신(및 따라서 사용자 인터페이스의 업데이트)을 지원한다. 따라서, 페이지는 페이지 컴포넌트가 에미세리 컴포넌트로부터 메시지를 수신하는 때 페이지가 자동으로 업데이트되는 비동기 사용자 인터페이스를 표시할 수 있다. 또한, 그러한 상황에 있어서, 라이브 데이터는 피에프돔을 통하여 이용될 수 있기 때문에 에미세리가 복제 데이터에 액세스하는 것이 반드시 필요한 것은 아닐 수 있다.The benefits of programming model component 135 will now be described. Components in the application can do asynchronous messaging. Thus, a component is not required to explicitly request information in order to receive a message. In addition, the component is not required to receive an explicit request for information in order to send a message containing such information. Thus, the programming model supports the sending of messages to page components (and thus updating the user interface) without the user having to explicitly refresh the web site. Thus, the page may display an asynchronous user interface in which the page is automatically updated when the page component receives a message from the asset component. Also in such a situation, it may not necessarily be necessary for the misery to access the duplicate data since live data may be available through the FPM.

더하여, 프로그래밍 모델은 정의된 이벤트의 발생시 비동기 파이어링할 수 있는 제어를 포함하고, 따라서 컴포넌트내의 로직이 실행하게 한다. 이러한 로직은 이벤트에 응답하여 다른 컴포넌트에 비동기 메시지를 송신하고 따라서 애플리케이션내의 임의의 컴포넌트가 정의된 이벤트에 응답하여 실행하게 한다. 따라서, 애플리케이션은 고도로 이벤트 구동된다. 이들 이벤트는 애플리케이션의 임의의 컴포넌트에서 비동기 실행될 방법을 구동시킬 수 있다.In addition, the programming model includes control that can be asynchronously fired upon the occurrence of a defined event, thus allowing logic within the component to execute. This logic sends an asynchronous message to other components in response to the event and thus causes any component in the application to execute in response to the defined event. Thus, the application is highly event driven. These events can drive how to run asynchronously in any component of the application.

예를 들어, 피에프돔 컴포넌트는 소정 단어를 포함하는 임의의 새로운 기사가 데이터베이스에 부가되는 이벤트에서 파이어링하도록 구성되어 있는 제어를 호스팅할 수 있다. 이벤트의 트리거링은 피에프돔이 에미세리 컴포넌트를 통하여 페이지 컴포넌트로 비동기 메시지를 송신하게 할 수 있다. 이러한 비동기 메시지에 응답하여, 페이지 컴포넌트는 클라이언트상에 프리젠테이션을 위해 알림 메시지를 렌더링할 수 있고 그로써 사용자에게 새로운 기사를 알려준다. 예를 들어, 클라이언트 디바이스가 씬 클라이언트라면 사용자 인터페이스는 그러한 새로운 기사의 존재를 나타내는 작은 알림창을 포함할 수 있다. 클라이언트 디바이스가 리치 클라이언트라면, 사용자 인터페이스는 스크린상에 전체로 새로운 기사를 디스플레이할 수 있다. 또한, 페이지, 에미세리, 또는 피에프돔 컴포넌트의 임의의 또는 모든 것은 소정 단어를 포함하는 기사에 또한 관심있는 동료에게 기사를 포워딩하는 이-메일의 작성과 같이 동일한 이벤트에 근거하여 다른 액션을 맡을 수 있다. 따라서, 프로그래밍 모델은 복잡한 이벤트 구동 애플리케이션을 인에이블한다.For example, a FPM component may host a control that is configured to fire on an event when any new article containing a given word is added to the database. Triggering of the event may cause the FD dome to send an asynchronous message to the page component via the component component. In response to this asynchronous message, the page component can render a notification message for presentation on the client, thereby informing the user of a new article. For example, if the client device is a thin client, the user interface may include a small notification window indicating the presence of such a new article. If the client device is a rich client, the user interface can display the new article as a whole on the screen. In addition, any or all of the pages, emissaries, or F. dome components may take on other actions based on the same event, such as the creation of an e-mail that forwards the article to a colleague who is also interested in the article containing the given word. Can be. Thus, the programming model enables complex event driven applications.

또한, 프로그래밍 모델은 클라이언트와 서버 연합 사이에서 이들 컴포넌트의 유연한 위치결정을 용이하게 하고, 애플리케이션의 오프라인 사용뿐만 아니라 온라인 사용을 허용한다. 예를 들어, 애플리케이션은 오프라인 또는 온라인 실행을 허용하기 위해서 구축될 수 있다. 이것은 페이지 컴포넌트가 클라이언트상에 또한 호스팅된 에미세리 컴포넌트와 직접 통신하면서 그들 페이지 컴포넌트가 클라이언트상에 직접 호스팅되게 함으로써 행해질 수 있다. 오프라인 때, 애플리케이션은 라이브 데이터 기억장치(280)내의 라이브 데이터 대신에 복제 데이터 기억장치(271)내의 복제 데이터에 액세스한다. 온라인이 되고 나면 액세스는 복원되고, 에미세리 컴포넌트는 피에프돔에 큐잉된 업데이트를 송신하고, 복제 데이터는 피에프돔 컴포넌트에 의해 관리되는 라이브 데이터의 현재 상태를 반영하도록 업데이트된다.In addition, the programming model facilitates the flexible positioning of these components between client and server federation and allows for online as well as offline use of applications. For example, an application can be built to allow offline or online execution. This can be done by having the page components hosted directly on the client while the page components communicate directly with the component that is also hosted on the client. When offline, the application accesses duplicate data in duplicate data storage 271 instead of live data in live data storage 280. Once online, access is restored, the epoxy component sends an update queued to the FD, and the duplicate data is updated to reflect the current state of the live data managed by the FD dome component.

또한 애플리케이션은 모든 컴포넌트, 페이지, 에미세리, 및 피에프돔이 서버 연합상에 호스팅되도록 구축될 수 있다. 이러한 경우에 있어서, 클라이언트는 페이지, 에미세리, 및/또는 피에프돔 컴포넌트의 서비스에 액세스하기 위해서 서버 연합과 온라인되어야만 한다.The application can also be built so that all components, pages, assets, and FPMs are hosted on a server federation. In this case, the client must be online with the server federation to access the services of the page, the miscellaneous, and / or the Feddom component.

더하여, 애플리케이션의 어떤 부분은 오프라인일 때 이용될 수 있고(이하, "오프라인 부분") 애플리케이션의 다른 부분은 클라이언트가 온라인일 때만 이용될 수 있다(이하, "온라인 부분"). 애플리케이션의 오프라인 컴포넌트를 인에이블하는 페이지 및 에미세리 컴포넌트는 클라이언트에 의해 호스팅되는 반면, 애플리케이션의 온라인 부분을 인에이블하는 페이지 및 에미세리 컴포넌트는 서버 연합에 의해 호스팅된다.In addition, some portions of the application may be used when offline (hereinafter, the "offline portion") and other portions of the application may be used only when the client is online (hereinafter, the "online portion"). The page and ancillary components that enable offline components of the application are hosted by the client, while the page and anesthetic components that enable the online portion of the application are hosted by a server federation.

따라서, 본 발명의 분산 컴퓨팅 서비스 플랫폼(115)의 많은 다른 테크놀로지 컴포넌트는 프로그래밍 모델 컴포넌트(135)에 따라 구현될 수 있다.Thus, many other technology components of the distributed computing services platform 115 of the present invention may be implemented in accordance with the programming model component 135.

D. 스키마D. Schema

더 우수한 인터넷 기반 협조 및 웹 사이트간 통신을 가능하게 하는 하나의 방법은 데이터의 더 의미적인 통신을 통해서이다. 이러한 의미적 또는 지능적 통신은 단지 데이터보다 더 많은 것을 제공하고, 또한 데이터가 통신되고 있는 이유 및/또는 내용의 추론을 공급한다. 이것은 표준 방식으로 데이터를 구조화함으로써 또는 표준 데이터 구조, 프로토콜, 통신 트랜스포트, 및 다른 구조화된 데이터 교환을 통해서와 같은 "스키마"에 의해서 성취될 수 있다. 클라이언트 디바이스(110)에, 서버(140)내에, 및/또는 기억장치 컴포넌트(145)에 따라 기억된 정보는 스키마에 따라 기억될 수 있다. 스키마는 또한 서버 연합(120)내의 서버 사이, 서버 연합(120)과 클라이언트(110)의 사이, 및 플랫폼 컴포넌트 사이에서 정보를 통신할 때 사용된다. 더하여, 도 2의 애플리케이션의 다양한 컴포넌트(210, 220, 및 230) 사이에서 통신되는 비동기 메시지는 스키마를 사용하여 통신될 수 있다.One way to enable better Internet-based coordination and inter-website communication is through more semantic communication of data. Such semantic or intelligent communication provides more than just data, and also provides inferences as to why and / or the content the data is being communicated with. This may be accomplished by "schema" such as by structuring the data in a standard manner or through standard data structures, protocols, communication transports, and other structured data exchanges. Information stored in the client device 110, in the server 140, and / or in accordance with the storage component 145 may be stored in accordance with the schema. The schema is also used when communicating information between servers in server federation 120, between server federation 120 and clients 110, and between platform components. In addition, asynchronous messages communicated between the various components 210, 220, and 230 of the application of FIG. 2 may be communicated using a schema.

많은 상황에 있어서, 사용자는 작동 조건에서 리포트를 생성하고, 경과를 분석하고, 필요한 것을 예측하고, 변경을 검출하도록 멀티플 애플리케이션 및 데이터 소스로부터의 데이터를 사용하기를 원한다. 불행하게도 이러한 타입의 데이터는, 이용될 수도 있다 하더라도, 각각의 애플리케이션이 전형적으로 그 자신의 스키마의 세트를 사용할 때 완전히 다른 포맷으로 곧 발견된다. 다시 말하면, 애플리케이션이 콘택트 및 시간과 같은 유사한 데이터 타입을 기술한다 하더라도 이들 데이터 타입은 다른 어휘를 사용하기도 하고 애플리케이션으로부터 애플리케이션으로 다른 속성을 갖는다. 따라서, 다른 스키마를 따르는 애플리케이션이 통신하게 하기 위해서 특수화된 번역 또는 임포트/익스포트 기능이 통상 필요하다.In many situations, a user wants to use data from multiple applications and data sources to generate reports, analyze progress, predict what is needed, and detect changes in operating conditions. Unfortunately this type of data, though available, is soon found in a completely different format as each application typically uses its own set of schemas. In other words, even if the application describes similar data types such as contact and time, these data types may use different vocabulary and have different attributes from the application to the application. Thus, specialized translation or import / export functionality is usually required to allow applications that follow different schemas to communicate.

서버 연합(120)에서의 협조 및 통신을 촉진하기 위해서, 본 발명의 스키마 및 스키마 서비스 컴포넌트는 날짜, 주소, 프리스크립션, 쇼 타임, 제품 설명, 가격, 영수증, 프레퍼런스, 진찰 기록, 영화 리뷰, 또는 다른 관련 데이터 타입과 같은 다양한 데이터 구조에 대하여 서버 연합(120)상에서의 대화 및 협조를 위한 파운데이션을 제공한다.In order to facilitate cooperation and communication in the server federation 120, the schema and schema service components of the present invention may include dates, addresses, subscriptions, show times, product descriptions, prices, receipts, preferences, medical records, movie reviews. Provide a foundation for dialogue and cooperation on server federation 120 for various data structures such as, or other related data types.

범용 스키마는 다른 애플리케이션이 다른 요구 및 레거시를 가질 것이고 크로스-플랫폼 애플리케이션이 지원될 필요가 있을 것이기 때문에 아마도 현실적이지 않다. 대신에, 본 발명의 스키마 컴포넌트(170)는 대부분의 애플리케이션이 공통으로 갖고 있을 것만을 정의하는 최소 공통 스키마인 "코어 스키마"를 정의하려 한다. 코어 스키마는 확장가능한 것이여서, 데이터 대화 및 협조를 용이하게 하는데 유용한 중요한 데이터 엔티티를 기술하는 새로운 스키마가 정의되어 이하 설명되는 코어 스키마에 추가될 수 있다. 또한, 스키마는 도 1의 클라이언트 디바이스 및 서버 연합의 운영체제 또는 사용자 인터페이스를 포함하는 네트워크와 몇몇 레이어에서 기능할 수 있다.Generic schemas are probably not realistic because different applications will have different needs and legacy and cross-platform applications will need to be supported. Instead, the schema component 170 of the present invention seeks to define a "core schema" which is the minimum common schema that defines only what most applications have in common. Since the core schema is extensible, new schemas may be defined and added to the core schemas described below that describe important data entities useful for facilitating data conversation and cooperation. In addition, the schema may function at several layers with a network that includes an operating system or user interface of the client device and server federation of FIG. 1.

코어 스키마의 몇몇 타입은 (ⅰ)베이스 타입, (ⅱ)소셜 타입, (ⅲ)비즈니스 타입, (ⅳ)시스템 타입, 및 (ⅴ)애플리케이션 타입을 포함한다.Some types of core schemas include (i) base types, (ii) social types, (i) business types, (i) system types, and (i) application types.

(ⅰ)베이스 타입은 다른 타입에 대하여 베이직 빌딩 블록으로서 사용된다. 전형적인 베이스 타입은 오브젝트, 아이템, 컨테이너, 데이터베이스, 폴더, 메시지, 텍스트, 또는 다른 베이스 데이터 구조와 같은 타입을 포함한다. 다양한 애플리케이션에 의해 사용되는 다양한 스키마의 베이스 타입 스키마로의 번역은 이하 설명되는 번역 필터에 의해 성취될 수 있다.(Iii) Base types are used as basic building blocks for other types. Typical base types include types such as objects, items, containers, databases, folders, messages, text, or other base data structures. Translation of various schemas to base type schemas used by various applications can be accomplished by translation filters described below.

(ⅱ)소셜 타입은 일상적인 태스크 및 대화에서 사용되는 아이템을 표시 또는 기술한다. 전형적인 소셜 타입은 콘택트, 프로파일, 캘린더, 태스크, 시간, 위치, 파이낸스, 및 다른 소셜하게 교환된 정보 또는 식별과 같은 아이템을 포함한다. 베이스 타입과 마찬가지로, 번역 필터가 생성되어 비양립성의 데이터 구조를 소셜 타입 스키마로 변모시킬 수 있다.(Ii) The social type represents or describes items used in everyday tasks and conversations. Typical social types include items such as contacts, profiles, calendars, tasks, times, locations, finances, and other socially exchanged information or identification. As with the base type, a translation filter can be created to transform the incompatible data structure into a social type schema.

(ⅲ)비즈니스 타입은 비즈니스 환경 및 비즈니스-비즈니스(B2B) 트랜잭션에서 공통의 것을 기술하도록 사용된다. 전형적인 비즈니스 타입은 제품, 어카운트, 고객, 종업원, 배급업자, 소매상, 공급자, 및 다른 비즈니스 데이터와 같은 타입을 포함한다.(Iii) Business types are used to describe what is common in business environments and business-business (B2B) transactions. Typical business types include such types as products, accounts, customers, employees, distributors, retailers, suppliers, and other business data.

(ⅳ)시스템 타입은 시스템을 관리하는 데 사용되는 정보의 구조를 정의한다. 전형적인 시스템 타입은 폴리시, 스케쥴, 서비스, 디바이스, 및 다른 시스템 관련 정보와 같은 타입을 포함한다.(Iii) The system type defines the structure of the information used to manage the system. Typical system types include such types as policies, schedules, services, devices, and other system related information.

(ⅴ)애플리케이션 타입은 애플리케이션 및 서비스의 구조를 정의한다. 전형적인 애플리케이션 타입은 애플리케이션 매니페스트, 어셈블리 매니페스트, 및 COM+ 타입 기술과 같은 타입을 포함한다. 시스템 및 애플리케이션 타입은 시스템 및 하드웨어 구성에 특정한 정보에 근거한다.(V) Application types define the structure of applications and services. Typical application types include types such as application manifests, assembly manifests, and COM + type technologies. System and application types are based on information specific to the system and hardware configuration.

또한 스키마 컴포넌트(170)는 스키마 정보 및 데이터를 기억, 검색, 문의, 출판, 및 공유하도록 사용되는 몇몇 스키마 서비스(292)를 제공한다. 도 3을 참조하면, 스키마 스토어(290)는 스키마 정보가 수집되고 공유되는 위치이다. 예를 들어, 스키마 스토어(290)는 알려진 스키마와 코어 스키마 타입 사이의 맵핑 및 코어 스키마 타입의 기술을 포함할 수 있다. 본 발명의 일실시예에 있어서, 스키마는 XML 스키마이고 스키마 기술 언어에 의해 스키마 스토어(290)에서 기술된다. (스키마 기술 언어의 일예는 본 발명과 사용하기 위해 확장될 수 있는 XSD이다). 스키마 스토어(290)는 (이하 더 상세히 설명되는) 본 발명의 기억장치 컴포넌트(145)의 인스턴스이다. 따라서, 스키마 스토어(290)는 전 서버 연합(120)을 통하여 분산될 수 있다. 스키마 스토어(290)는 이 위치에 스키마를 기억함으로써 애플리케이션이 스키마를 기억할 수 있는 유일한 장소는 아니지만, 애플리케이션은 스키마 서비스(292) 및 그들을 사용하는 애플리케이션이 그 스키마를 발견하고 그것으로 작업할 수 있을 것을 보증할 수 있다. 또한, 애플리케이션은 이하 더 상세히 설명되는 바와 같이 스키마 스토어(290) 및 스키마 서비스(292)를 사용하여 스키마를 로컬하게 복제 및 기억하고 그들을 업데이트할 수 있다. 스키마 스토어(290) 및 스키마 서비스(292)로의 액세스는 보안 컴포넌트(165)에 의해 제공되는 다양한 보안 인증, 권한부여, 및 방화벽 서비스에 의해 제어될 수 있다.Schema component 170 also provides several schema services 292 that are used to store, retrieve, query, publish, and share schema information and data. Referring to FIG. 3, the schema store 290 is a location where schema information is collected and shared. For example, schema store 290 may include mapping between known schemas and core schema types and descriptions of core schema types. In one embodiment of the invention, the schema is an XML schema and described in schema store 290 by a schema description language. (An example of a schema description language is XSD that can be extended for use with the present invention). Schema store 290 is an instance of the storage component 145 of the present invention (described in more detail below). Thus, schema store 290 may be distributed across all server federations 120. The schema store 290 is not the only place where an application can remember a schema by storing the schema in this location, but the application does not know that the schema service 292 and the application using them can discover and work with the schema. I can guarantee it. In addition, an application can use schema store 290 and schema service 292 to replicate and store schemas locally and update them as described in more detail below. Access to schema store 290 and schema service 292 may be controlled by various security authentication, authorization, and firewall services provided by security component 165.

일반적으로 스키마 서비스(292)는 스키마 정보를 기억, 검색, 문의, 및 출판하도록 애플리케이션을 위한 메카니즘인 스키마 등록 서비스를 포함한다. 예를 들어, 스키마 스토어(290)는 예를 들어 스키마 등록 API(애플리케이션 프로그래밍 인터페이스)를 포함할 수 있는 예를 들어 스키마 등록 서비스를 경유하여 다양한 스키마를 수집 및 참조할 수 있다. 스키마 등록 서비스는 애플리케이션이 스키마 스토어로부터의 스키마 정보를 제거 또는 추가하게 한다.Schema service 292 generally includes a schema registration service, a mechanism for applications to store, retrieve, query, and publish schema information. For example, schema store 290 may collect and reference various schemas via, for example, a schema registration service, which may include, for example, a schema registration API (application programming interface). The schema registration service allows an application to remove or add schema information from a schema store.

또한 스키마 서비스(292)는 관리자, 운영체제, 또는 다른 백그라운드 스키마 모더레이터(moderator)가 스키마를 업데이트하게 하는 스키마 업데이트 서비스를 포함할 수 있다. 또한 스키마 서비스(292)는 인스턴스 데이터에서의 레퍼런스를 따름으로써 스토어내에 지속되지 않는 스키마를 페칭(fetch)하기 위해서 분산 스키마 서비스를 포함할 수 있다. 이러한 서비스를 용이하게 하기 위해서, 스키마는 기억장치 컴포넌트(145)에 따라 전 서버 연합(120)을 통하여 기억될 수 있고 이벤팅 컴포넌트(155)는 새로운 스키마가 출판되는 때를 애플리케이션에게 알려주도록 사용될 수 있고, 따라서 스키마의 글로벌 분산을 허용한다. 스키마 서비스(292)는 스토어에서의 맵핑 및 스키마의 일관성(consistency) 및 무결성을 유지하기 위해서 스키마 타당성검사(validation) 서비스를 더 포함할 수 있다. 이러한 서비스는 스키마 기술 언어의 구조적 타당성검사, 중복(redundant) 및 상반(conflicting) 엔트리에 대한 검사, 및 스키마 사이의 연관의 일관성 검증을 제공한다. 또한 스키마 스토어(290)는 스키마에 대한 변경의 알림을 제공하기 위해서 본 발명의 이벤팅 컴포넌트(155)에 의존할 수 있다. 스키마 스토어(290)는 또한 업데이트, 이벤트, 서브스크립션, 및 알림을 분산하기 위해서 트랜스포트로서 본 발명의 메시징 컴포넌트(160)에 의존할 수 있다.Schema service 292 may also include a schema update service that allows an administrator, operating system, or other background schema modulator to update the schema. Schema service 292 may also include a distributed schema service to fetch a schema that does not persist in the store by following a reference in the instance data. To facilitate this service, the schema can be stored throughout the server federation 120 in accordance with the storage component 145 and the eventing component 155 can be used to inform the application when a new schema is published. And, therefore, allows global distribution of schemas. The schema service 292 may further include a schema validation service to maintain the consistency and integrity of the mapping and schema in the store. These services provide structural validation of the schema description language, checking for redundant and conflicting entries, and verifying the consistency of associations between schemas. Schema store 290 may also rely on the eventing component 155 of the present invention to provide notification of changes to the schema. Schema store 290 may also rely on the messaging component 160 of the present invention as a transport to distribute updates, events, subscriptions, and notifications.

예를 들어, 로컬 스키마 스토어는 코어 타입 및 스키마를 업데이트하기 위해서 스키마 업데이트 서비스에 서브스크라이빙할 수 있다. 하나의 구성은 관심있는 사용자가 어떤 관련 스키마 변경이 일어날 때를 검출하게 하는 스키마 이벤트를 위한 등록을 지원하도록 오브젝트 매니저를 사용한다. 로컬 스키마 스토어는 업데이트를 위한 하나 이상의 소스에 서브스크라이빙할 수 있다. 업데이트 서비스는 사람 및 시간과 같은 코어 타입, 및 이들 코어 타입으로의 MAPI, vCard, LDAP, 및 WMI와 같은 공통 스키마의 맵핑을 스키마 스토어에 미리 거주시킨다. 기업은 그들 조직 네트워크내에 스키마 스토어를 유지하기 위해서 유사한 업데이트 서비스를 호스팅할 수 있다.For example, a local schema store may subscribe to a schema update service to update core types and schemas. One configuration uses an object manager to support registration for schema events that allows interested users to detect when any relevant schema change occurs. The local schema store can subscribe to one or more sources for updates. The update service pre-residents in the schema store the core types such as people and time, and the mapping of common schemas such as MAPI, vCard, LDAP, and WMI to these core types. Companies can host similar update services to maintain a schema store within their organizational network.

(또한 스키마 서비스(292)의 부분인) 스키마 변환 서비스는 의미를 공유하도록 다른 스키마를 사용하는 애플리케이션을 인에이블한다. 예를 들어 스키마 변환 서비스는 스키마 어댑터 서비스, 스키마 인식기 서비스, 및 스키마 맵핑 서비스를 포함한다. 스키마 변환 서비스는 데이터를 인식하도록 공유된 메카니즘을 제공하고 하나의 스키마에서의 데이터를 다른 하나의 스키마로 변환함으로써 애플리케이션이 새로운 스키마를 동적으로 지원하게 한다. 스키마 변환 서비스는 데이터를 인식하여 하나의 스키마에서의 데이터를 다른 하나의 스키마에서의 데이터로 변환하도록 공유된 메카니즘을 제공함으로써, 애플리케이션이 광범위한 스키마를 이해하는 것을 더 쉽게 하고, 전 애플리케이션에서 로버스트니스 및 일관성을 증가시키고, 애플리케이션이 새로운 스키마를 동적으로 지원하게 한다. The schema conversion service (which is also part of the schema service 292) enables applications that use other schemas to share meaning. For example, schema conversion services include schema adapter services, schema recognizer services, and schema mapping services. The Schema Conversion Service provides a shared mechanism to recognize data and allows applications to dynamically support new schemas by converting data from one schema to another. Schema Conversion Services makes it easier for applications to understand a wide range of schemas by providing a shared mechanism for recognizing data and converting data from one schema to data in another schema, and robustness across all applications. And increase consistency and allow applications to dynamically support new schemas.

예를 들어, 스키마 어댑터 서비스는 XML과 같은 표준화된 언어로 구조화되지 않는 데이터와 작업하는 것을 가능하게 한다. 스키마 어댑터 서비스는 비-XML 데이터를 수신하고 그것을 XML 데이터 또는 스키마와 통신하도록 사용되는 데이터의 임의의 다른 타입으로 변환한다.For example, a schema adapter service makes it possible to work with unstructured data in standardized languages such as XML. The schema adapter service receives non-XML data and converts it to XML data or any other type of data used to communicate with a schema.

스키마 인식기 서비스는 데이터를 가지고 무엇을 할지를 애플리케이션이 알도록 데이터 인스턴스의 스키마 타입을 식별한다. 스키마 인식기 서비스는 입력으로서 XML 데이터 또는 평문을 수신한다. XML에 대하여, 스키마 인식기 서비스는 가능성의 리스트를 좁히도록 XML 네임스페이스를 사용하여, 스키마 타입을 결정하도록 표준 기억장치 문의 서비스(294)를 사용하여 스키마 스토어(290)에 문의한다. 평문으로부터 스키마 타입을 추론하기 위해서, 스키마 인식기 서비스는 스키마 스토어(290)를 순차적으로 사용할 수 있는 자연 언어 서비스에 의존한다. 스키마 타입이 알려지고 나면, 애플리케이션은 그 자신의 사용자 인터페이스를 제공하거나 시스템-와이드 사용자 인터페이스를 인에이블하도록 이러한 정보를 사용할 수 있다.The schema recognizer service identifies the schema type of the data instance so that the application knows what to do with the data. The schema recognizer service receives XML data or plain text as input. For XML, the schema recognizer service uses the XML namespace to narrow the list of possibilities, and uses the standard storage query service 294 to query the schema store 290 to determine the schema type. To infer schema types from plain text, the schema recognizer service relies on natural language services that can use the schema store 290 sequentially. Once the schema type is known, the application can use this information to provide its own user interface or to enable a system-wide user interface.

스키마 맵핑 서비스는 하나의 스키마에서의 XML 데이터를 취하고, 스키마 스토어(290)내에 정의된 맵핑에 근거하여 데이터를 변환하고, 다른 하나의 스키마의 XML 표시에서의 데이터를 리턴한다. 일 구성에 있어서 스키마 맵핑 서비스는 스키마 어댑터 서비스와 종종 결합하여, 쓰기 임포트 또는 익스포트 기능을 갖는 애플리케이션에 의해 사용된다.The schema mapping service takes XML data in one schema, transforms the data based on the mapping defined in schema store 290, and returns data in the XML representation of the other schema. In one configuration, the schema mapping service is often used by applications with write import or export functionality in combination with the schema adapter service.

스키마 스토어(290)내에 지속된 스키마는 특정 스키마 타입을 표시 또는 액트온하도록 사용될 수 있는 애플리케이션, 스크립트, 컴포넌트, 방법 바인딩, 또는 데이터 소스를 기술할 수 있다. 예를 들어, 애플리케이션은 특정 스키마 타입의 데이터를 디스플레이하도록 표준 사용자 인터페이스를 제공할 수 있고, 반면에 다른 하나의 애플리케이션은 그 데이터상에 작동하도록 비즈니스 로직을 가질 수 있다. 어느 액션이 소정 시나리오에 적합한가는 콘텍스트의 사용자 프레퍼런스에 의존한다. 이들 스키마 서비스는 (이하 설명되는) 액션 메뉴, 자동-완성, 및 스마트 클립보드 드래그 앤 드롭과 같은 몇몇 최종 사용자 특성을 가능하게 하도록 사용자 인터페이스 컴포넌트(140)와 협력한다.A schema persisted within schema store 290 may describe an application, script, component, method binding, or data source that can be used to display or act on a particular schema type. For example, an application may provide a standard user interface to display data of a particular schema type, while another application may have business logic to operate on that data. Which action is appropriate for a given scenario depends on the user preferences of the context. These schema services work with the user interface component 140 to enable some end user features such as action menus (described below), auto-completion, and smart clipboard drag and drop.

액션 메뉴 특성은 임의의 애플리케이션에서 일 데이터상에 이용가능한 액션의 선택을 제시한다. 일 구성에 있어서, 이들 이용가능한 액션은 사용자가 선택 또는 무시하게 하는 "팩토이드" 방식으로 제시된다. 애플리케이션은 특정 데이터 타입과 관련된 등록된 액션에 대하여 기억장치 문의 서비스(294)를 사용하여 스키마 스토어(290)에 문의한다. 검색된 액션은 액션 메뉴를 발생시키도록 사용된다. 예를 들어, 사용자가 주소상을 클릭할 때, 애플리케이션은 타입 "주소"에 대하여 문의하고 스키마 스토어(290)는 콘텍스트 메뉴에 거주하는 "엔벨로프(envelope)를 프린트" 또는 "이 주소를 맵핑"으로서 액션을 리턴한다. 액션 메뉴 API는 개발자가 그들 애플리케이션에서 이러한 메뉴 및 다른 애플리케이션-특정 액션을 노출하게 한다. 스키마 스토어내에 각각의 코어 타입에 대하여 미리-거주하는 액션 메뉴는 운영체제, 인터넷 브라우저, 및 다양한 액티브 애플리케이션에서 노출될 수 있다.The action menu feature presents a selection of actions available on one data in any application. In one configuration, these available actions are presented in a "factoroid" manner that allows the user to select or ignore. The application queries the schema store 290 using the storage query service 294 for registered actions associated with a particular data type. The retrieved action is used to generate an action menu. For example, when a user clicks on an address, the application inquires about the type "address" and the schema store 290 may print as "envelope" or "map this address" residing in the context menu. Return the action. The Action Menu API allows developers to expose these menus and other application-specific actions in their applications. Pre-resident action menus for each core type in the schema store can be exposed to the operating system, the Internet browser, and various active applications.

또한 스키마 서비스는 가능한 값을 리스팅하는 데이터 소스로부터의 선택을 제시함으로써 사용자가 웹 형식 및 문서에서 데이터 필드를 다 기입하는 것을 더 쉽게 하는 현행 "자동-완성" 특성을 강화할 수 있다. 사용자에게 제시된 가능한 값의 리스트는 스키마 스토어(290)에서의 등록에 근거할 수 있다. 예를 들어, 친구를 파티에 초대하기 위해서 "Evite" 또는 "electronic invitation"을 다 기입할 때, 이메일 주소 필드는 스키마 스토어(290)에서의 등록을 통하여 이메일 주소 프로퍼티에 바인딩된 사용자 콘택트 리스트로부터 주소 리스트를 제공한다. 이러한 동일한 기능은 레터, 인보이스, 스프레드시트, 메일링 리스트, 데이터베이스, 또는 다른 문서에서 자동-완성을 제공하도록 다른 애플리케이션을 통해 노출될 수 있다. 값의 동일한 리스트는 이러한 기능을 노출하도록 선택하는 임의의 애플리케이션에서 디스플레이된다.Schema services can also enhance the current "auto-completion" feature that makes it easier for users to fill out data fields in web formats and documents by presenting a selection from a data source that lists possible values. The list of possible values presented to the user may be based on registration in the schema store 290. For example, when filling out "Evite" or "electronic invitation" to invite a friend to a party, the email address field is the address from the user contact list bound to the email address property through registration in the schema store 290. Provide a list. This same functionality can be exposed through other applications to provide auto-completion in letters, invoices, spreadsheets, mailing lists, databases, or other documents. The same list of values is displayed in any application that chooses to expose this functionality.

스마트 클립보드 드래그 앤 드롭은 다른 스키마를 사용하는 애플리케이션 사이에서 데이터가 교환되게 하도록 스키마 변환 서비스를 사용한다. 따라서, 스키마 변환 서비스는 데이터가 표시하는 것의 공유된 이해를 보존하면서, 다른 스키마를 지원하는 애플리케이션 사이에서 데이터를 이동시키도록 현행 드래그 앤 드롭 및 클립보드 루틴을 강화한다.Smart clipboard drag and drop uses a schema conversion service to allow data to be exchanged between applications that use different schemas. Thus, Schema Conversion Services enhances current drag and drop and clipboard routines to move data between applications that support different schemas, while preserving a shared understanding of what the data represents.

따라서, 이벤트, 메시징, 기억장치, 스키마, 보안 등과 같이, 플랫폼(115)의 다른 테크놀로지 컴포넌트와 협력하여 작업하는 스키마 컴포넌트는 전 클라이언트 및 서버 디바이스에서 의미적 정보를 공유하기 위한 메카니즘을 제공한다.Thus, schema components working in concert with other technology components of platform 115, such as events, messaging, storage, schema, security, and the like, provide a mechanism for sharing semantic information across client and server devices.

E. 사용자 인터페이스E. User Interface

도 1의 플랫폼(115)의 사용자 인터페이스 컴포넌트(140)는 다양한 전 클라이언트 디바이스에서 멀티-모달, 응답적, 및 지능적인 사용자 인터페이스를 제공한다. 도 4는 사용자 인터페이스 컴포넌트(140)를 개략적으로 도시한다.The user interface component 140 of the platform 115 of FIG. 1 provides a multi-modal, responsive, and intelligent user interface at various full client devices. 4 schematically illustrates a user interface component 140.

사용자 인터페이스 컴포넌트(140)는 사용자가 멀티플 모드를 통하여 UI와 대화할 수 있고 모드가 심리스하게(seamlessly) 온-더-플라이로 변경될 수 있음을 의미하는 멀티-모달 사용자 인터페이스(UI)를 제공한다. 사용자 인터페이스 컴포넌트(140)는 멀티-모달 입력 및 출력을 허용하기 위해 어드밴스트 입력/출력 컴포넌트(400)를 포함한다. 입력/출력 컴포넌트(400)는 키보드 엔트리 또는 마우스 클릭과 같은 "전통적인" 방법을 사용하여 사용자-입력된 입력을 수신할 수 있다. 예를 들어, 입력/출력 컴포넌트는 텍스트(402)를 수신한다. 그러나 또한 UI는 마이크로폰을 갖춘 디바이스에 대한 오디오/스피치 입력(예를 들어, 오디오/스피치; 404), 터치 스크린 또는 패드를 갖춘 디바이스에 대한 스틸러스/터치 입력, 및 수서(handwriting) 입력 능력을 갖는 디바이스에 대한 수서 입력(예를 들어, 수서;406)과 같은 다른 입력 방법을 허용한다. 양방향성 화살표(408)에 의해 표시된 바와 같이, 입력/출력 컴포넌트(400)는 또한 오디오/스피치(404) 및 수서(406)와 같은 비전통적인 컴퓨터화된 출력뿐만 아니라 텍스트(402)와 같은 전통적인 출력을 제공할 수 있다.User interface component 140 provides a multi-modal user interface (UI), which means that a user can interact with the UI via multiple modes and the mode can be changed seamlessly on-the-fly. . User interface component 140 includes an advanced input / output component 400 to allow for multi-modal input and output. The input / output component 400 may receive user-entered input using "traditional" methods such as keyboard entry or mouse clicks. For example, the input / output component receives text 402. However, the UI is also a device that has audio / speech input (eg, audio / speech) 404 for devices with microphones, stylus / touch input for devices with touch screens or pads, and handwriting input capabilities. Accept other input methods, such as a bibliographic input (e.g., suseo; 406) for. As indicated by the bidirectional arrow 408, the input / output component 400 can also display traditional output such as text 402 as well as non-traditional computerized output such as audio / speech 404 and Suseo 406. Can provide.

또한, 입력/출력 컴포넌트(400)는 정보를 디바이스에 입력할 때 특히 유용한 다양한 변환 테크놀로지를 편입한다. 그러한 변환은 사용자의 오디오/스피치 입력을 텍스트로 변환하는 스피치-텍스트 테크놀로지를 포함한다. 이러한 변환은 사용자가 차량을 운전하고 있거나 그렇지 않으면 타이핑할 능력이 부족할 때와 같이 전통적인 타이핑을 사용하여 텍스트를 입력하는 것이 불편하거나 불가할 때 도움이 된다. 입력에 유용한 다른 하나의 변환은 사용자의 수서된 스틸러스/터치 입력을 텍스트로 변환하는 수서-텍스트 테크놀로지를 포함한다. 이러한 변환은 키보드와 같은 텍스트 입력 디바이스가 디바이스와 함께 포함되어 있지 않을 때 텍스트가 입력되게 한다.In addition, the input / output component 400 incorporates a variety of conversion technologies that are particularly useful when entering information into the device. Such conversion includes speech-text technology that converts the user's audio / speech input into text. This conversion is helpful when it is inconvenient or impossible to enter text using traditional typing, such as when a user is driving a vehicle or otherwise lacks the ability to type. Another transformation useful for input includes the Sustain-Text technology, which converts the user's written stealth / touch input into text. This conversion causes text to be entered when a text input device such as a keyboard is not included with the device.

예를 들어, 태블릿의 형식에서의 퍼스널 컴퓨터(즉, "태블릿 PC")는 예를 들어 스틸러스를 사용하여 스크린상에 직접 씀으로써 수서 입력을 허용하는 디바이스이다. 그 후 태블릿 PC는 페이퍼상에의 수서로써는 가능하지 않은 방식으로 텍스트가 편집될 수 있도록 수서를 텍스트로 변환하기 위해 입력/출력 컴포넌트(400)를 사용할 수 있다. 예를 들어, 코멘트가 삽입되게 하도록 패러그래프 사이에 스페이스가 삽입될 수 있다. 태블릿 PC는 수서 자체 또는 소망되는 수서의 텍스트를 디스플레이할 수 있다.For example, a personal computer (ie, "tablet PC") in the form of a tablet is a device that allows handwriting input by writing directly on the screen, for example using a stylus. The tablet PC can then use the input / output component 400 to convert the curriculum to text so that the text can be edited in a manner not possible with the curriculum on the paper. For example, a space may be inserted between the paragraphs to cause comments to be inserted. The tablet PC may display the handbook itself or the text of the desired handbook.

또한 입력/출력 컴포넌트(400)는 "전통적인" 텍스트 및 그래픽 디스플레이 이상의 멀티플 모드에서 사용자에게 데이터를 제시할 수 있다. 예를 들어, UI는 (타이핑된 이메일 메시지와 같은) 텍스트를 (디바이스상의 스피커를 통하여 메시지를 "읽는") 오디오로 변환하는 텍스트-스피치 테크놀로지를 편입할 수 있다. 또한, 음성 메일은 텍스트-기반 이-메일 메시지와 함께 통합 메시징 쉘내로 편입될 수 있다. 스피치-텍스트 변환은 원한다면 이러한 음성 메일이 텍스트로 변환되게 한다.Input / output component 400 may also present data to the user in multiple modes beyond “traditional” text and graphical displays. For example, the UI may incorporate text-speech technology that converts text (such as a typed email message) into audio ("reading" a message through a speaker on the device). Voice mail can also be incorporated into a unified messaging shell with text-based email messages. Speech-to-text conversion allows this voice mail to be converted to text if desired.

멀티-모달 사용자 인터페이스는 사용자의 상태 및 프록시미티(proximity)에 근거하여 사용자가 다양한 디바이스와 대화하게 한다. 예를 들어, PC와 같은 리치 클라이언트를 사용하는 동안, 사용자는 메시지가 비디오/오디오를 통하여 디스플레이되게 하여 텍스트에 의해 회답하도록 선택할 수 있다. 그러나, 차에 있는 동안, 사용자는 메시지가 오디오에 의해서만 플레이되고 또한 오디오에 의해 회답하도록 선택할 수 있다.The multi-modal user interface allows the user to interact with various devices based on the user's status and proximity. For example, while using a rich client such as a PC, a user may choose to have a message displayed via video / audio and reply by text. However, while in the car, the user may choose to have the message played only by audio and also to be answered by audio.

자연 언어 통신은 사용자 특정 통합 사용자 인터페이스 포탈 개념에 근거하여 가능하게 된다. 전형적인 통합 사용자 인터페이스 포탈 개념은 입력 스트링의 분석, 논리적 형식 매칭을 경유하는 매칭 개념, 결과와 함께 적합한 언어-같은 센턴스의 발생, 사용자를 위해 개별화된(customized) 검색 파라미터에 근거한 유용한 피드백, 및 사용자의 전통적인 기억장치 위치에 우선순위 세트를 가지고 멀티플 이종의 데이터베이스 스토어를 통하여 스마트 실행을 할 수 있는 검색 기반구조를 포함한다.Natural language communication is enabled based on the concept of user specific integrated user interface portal. Typical integrated user interface portal concepts include analysis of input strings, matching concepts via logical formal matching, generation of appropriate language-like sensations with results, useful feedback based on customized search parameters customized for the user, and user It includes a search infrastructure that allows smart execution through multiple heterogeneous database stores with a set of priorities at traditional storage locations.

멀티-모달인 것에 더하여, 사용자 인터페이스 컴포넌트(140)는 많은 전 클라이언트 디바이스(110)에서 사용자의 상태 및 콘텍스트에 근거하여 적응 및/또는 변경된다는 점에서 응답적이다. 예를 들어, 사용자 인터페이스는, 사용자가 하나의 클라이언트 디바이스로부터 다른 하나로 미드-세션을 스위칭하면 전 클라이언트 디바이스에서 (이하 논의되는 바와 같이, 아마 수정된다 할지라도) 일관되게 보이는 사용자 인터페이스를 갖는 다른 클라이언트 디바이스를 사용하여 세션을 계속할 수 있도록, 사용자의 프레퍼런스 및 세션 스테이터스에 따라 구성되고 렌더링될 것이다.In addition to being multi-modal, the user interface component 140 is responsive in that it is adapted and / or changed based on the user's state and context at many former client devices 110. For example, the user interface may be a different client device having a user interface that is consistent across the entire client device (although possibly modified, as discussed below) when the user switches the mid-session from one client device to another. It will be configured and rendered according to the user's preferences and session status so that the session can continue using.

도 4를 참조하면, 프레퍼런스 정보는 서버 연합(120)내의 나의 상태 적응(adapted) 디렉토리(905)에 기억될 수 있다. 사용자가 클라이언트 디바이스상에서 작업할 때, 세션 스테이터스 정보는 나의 상태 디렉토리(905)내에서 정기적으로 업데이트된다. 사용자가 다른 하나의 클라이언트 디바이스로 스위칭할 때, 보안 컴포넌트(165)를 사용하여 적절한 인증 후에, 프레퍼런스 및 세션 정보는 새로운 클라이언트 디바이스에 제공된다. 프레퍼런스 정보는 새로운 클라이언트의 디스플레이가 옛 클라이언트와 일관되어 보이게 한다. 더 나아가, 세션 상태 정보는 옛 클라이언트 디바이스가 중단시킨 세션에서 새로운 클라이언트 디바이스가 계속하게 한다.Referring to FIG. 4, preference information may be stored in my state-adapted directory 905 in server federation 120. As the user works on the client device, the session status information is updated regularly in my state directory 905. When a user switches to another client device, after proper authentication using the security component 165, preference and session information is provided to the new client device. The preference information makes the display of the new client look consistent with the old client. Further, the session state information causes the new client device to continue in the session interrupted by the old client device.

또한, 사용자 인터페이스는 클라이언트 디바이스의 테크니컬 기능으로 적합하고 매끄럽게 스케일링한다. 예를 들어, 모바일 전화기는 입력 키 및 디스플레이 영역에 대한 공간 한계로 인해 그 사용자 인터페이스에서 명백한 테크니컬 한계를 갖는다. 이들 모바일 전화기에 대한 사용자 인터페이스는 사용자 인터페이스의 더 중요한 특성만을 강조하기 위해서 스케일링 다운된다. 따라서, 모바일 전화기의 사용자 인터페이스가 세션의 더 제한된 사용자 경험을 제공할 것이라 하더라도, 사용자는 리치 클라이언트 퍼스널 컴퓨터로부터 씬 클라이언트 모바일 전화기로 미드-세션을 옮길 수 있다. 클라이언트 디바이스 사이의 이러한 매끄러운 스케일링은 코드 관리 컴포넌트(175)에 의해 공급되는 매니페스트의 사용을 통하여 성취될 수 있고 이하 상세히 설명된다. 예를 들어, 매니페스트는 클라이언트 디바이스상에 디스플레이되도록 요구되는 최소 사용자 인터페이스 특성을 기술하고, 그 후 모든 컴포넌트가 클라이언트상에 디스플레이될 수는 없을 때 디스플레이될 사용자 인터페이스 특성의 우선순위를 기술할 수 있다.In addition, the user interface scales seamlessly and with the technical capabilities of the client device. For example, mobile telephones have obvious technical limitations in their user interface due to space limitations on input keys and display area. The user interface for these mobile phones is scaled down to highlight only the more important characteristics of the user interface. Thus, although the user interface of the mobile phone will provide a more limited user experience of the session, the user can move the mid-session from the rich client personal computer to the thin client mobile phone. Such smooth scaling between client devices can be achieved through the use of a manifest supplied by the code management component 175 and described in detail below. For example, the manifest can describe the minimum user interface characteristic that is required to be displayed on the client device, and then describe the priority of the user interface characteristic to be displayed when not all components can be displayed on the client.

도 4에는 클라이언트 디바이스의 능력에 의존하여 클라이언트 디바이스에 대해 이용될 수 있는 사용자 인터페이스의 전체 스펙트럼(412)이 도시되어 있다. 스펙트럼은 잘 개발된 멀티-모달 기능 및 이용가능한 프로세싱 파워를 갖는 클라이언트 디바이스에 대하여 더 높은 리치 대화적 UI 페이지 컴포넌트(예를 들어, 페이지 컴포넌트 R)를 포함한다. 또한 라이브러리는 덜 개발된 사용자 인터페이스 및 더 낮은 프로세싱 파워를 갖는 클라이언트에 대하여 씬 페이지 컴포넌트(예를 들어, 페이지 컴포넌트 T)를 포함한다. 도 4에 도시된 사용자 인터페이스(UI)는 이러한 스펙트럼(412)내의 어딘가에서 페이지 컴포넌트(414)로부터 도출된다.4 shows a full spectrum 412 of a user interface that may be used for a client device depending on the capabilities of the client device. The spectrum includes higher rich interactive UI page components (eg, page component R) for client devices with well developed multi-modal functionality and available processing power. The library also includes a thin page component (eg, page component T) for clients with less developed user interfaces and lower processing power. The user interface (UI) shown in FIG. 4 is derived from the page component 414 somewhere in this spectrum 412.

또한, 사용자 인터페이스는 사용자 액티비티에 지능적으로 응답한다. 예를 들어, 상기한 바와 같이, 사용자 인터페이스 컴포넌트(140)는 사용자에게 "스마트 태그"의 액션 메뉴를 제공하도록 스키마 컴포넌트(170; 및 스키마 서비스(292))와 협력한다. 사용자가 주소상에(웹 페이지, 문서, 또는 콘택트 리스트에) 타이핑한다면, 스키마 서비스(292)는 주소가 주소로서 인식되게 하고 따라서 핫 태그를 제공한다. 스마트 태그는, 예를 들어, 푸른 점선의 밑줄과 같은 구별 마크로 인식된 아이템을 마킹함으로써 표시될 수 있다.In addition, the user interface intelligently responds to user activity. For example, as noted above, user interface component 140 cooperates with schema component 170 (and schema service 292) to provide a user with an action menu of “smart tags”. If a user types on an address (in a web page, document, or contact list), the schema service 292 makes the address recognized as an address and thus provides a hot tag. The smart tag may be displayed by marking an item recognized as a distinguishing mark, for example, underlined by a blue dotted line.

그 후 사용자는 인식된 아이템의 타입에 적합한 액션 메뉴를 얻기 위해 예를 들어 마우스를 오른쪽 클릭함으로써 마킹된 주소를 선택할 수 있다. 예를 들어, 주소로서 인식된 아이템을 위한 액션 메뉴는 맵을 보고, 주소 라벨을 프린트하고, 콘택트 리스트에 추가하는 등의 능력을 제공할 수 있다. 적합한 액션 중의 하나는, 예를 들어, 주소를 엔콤파싱(encompassing)하는 맵과 같은 정보를 더 찾도록 주소를 사용하는 것을 포함할 수 있다. 그렇게 함에 있어서, 사용자 인터페이스는 디렉토리 서비스 컴포넌트(150)를 통하여 이용가능하게 된 맵핑 서비스에 조언을 구할 수 있다.The user can then select the marked address, for example by right-clicking the mouse, to obtain an action menu suitable for the type of recognized item. For example, an action menu for an item recognized as an address may provide the ability to view a map, print an address label, add to a contact list, and so on. One suitable action may include using the address to find further information such as, for example, a map that encompasses the address. In doing so, the user interface can consult the mapping service made available through the directory service component 150.

또한, 사용자 인터페이스는 사용자가 타이핑하고 있는 것을 검출할 수 있고 따라서 사용자 인터페이스 특성을 워드 프로세싱 액티비티에 초점맞출 수 있다. 예를 들어, 타이핑은 사용자가 워드 프로세싱을 수행하려 의도하는 것 같다고 사용자 인터페이스가 판정하는 이벤트를 트리거링할 수 있다. 그러한 이벤트 트리거링 및 추론 빌딩은 이벤트 컴포넌트(155)에 의해 제공된다.In addition, the user interface can detect that the user is typing and thus can focus the user interface characteristics on the word processing activity. For example, typing may trigger an event that the user interface determines that the user appears to intend to perform word processing. Such event triggering and inference building is provided by event component 155.

또한 사용자 인터페이스는 검색, 웹 사이트로의 항해, 파일 시스템내의 파일로의 액세스를 수행하거나 자연 언어 문의 또는 커맨드를 수행하도록 사용될 수 있는 통합 커맨드 라인을 가질 수 있다. 바람직한 실시예에 있어서, 통합 커맨드 라인은 디바이스의 모든 타입상에 어떤 형태로 제공될 것이다. 문의를 수행함에 있어서, 사용자 인터페이스 컴포넌트(140)는 커맨드, 제어 또는 논리적 프로세스의 실행을 위해 확인을 구하거나 명확을 일으키도록 지능적인 피드백 프로세스를 사용한다. 예를 들어, 사용자는 통합 커맨드 라인에 "오늘 시장 어때?"라고 타이핑할 수 있다. 이 질문은 약간 애매모호하고 분명치 않다. 그 후 사용자 인터페이스 컴포넌트(140)는 "어떤 지수에 관심이 있나?"라고 말함으로써 응답할 수 있다. 그 후 사용자는 커맨드 박스에 "다우 존스"라고 타이핑할 수 있다. 그 후 사용자 인터페이스 컴포넌트(140)는 답변을 말하기에 충분한 정보를 갖는다. 커맨드 라인에서 요청된 정보를 리턴하기 위해서, 사용자 인터페이스 컴포넌트(140)는 정보를 검색하도록 기억장치 및 메시징 컴포넌트와 협력해야 한다.The user interface can also have an integrated command line that can be used to perform searches, navigate to web sites, access files in the file system, or perform natural language queries or commands. In a preferred embodiment, the integrated command line will be provided in some form on all types of devices. In performing the query, the user interface component 140 uses an intelligent feedback process to seek confirmation or clarify for the execution of a command, control or logical process. For example, a user may type "How is the market today?" On the integrated command line. This question is a bit vague and unclear. The user interface component 140 can then respond by saying, "What index are you interested in?" The user can then type "Dow Jones" in the command box. The user interface component 140 then has enough information to speak the answer. In order to return the requested information from the command line, the user interface component 140 must cooperate with the storage and messaging components to retrieve the information.

또한 통합 커맨드 라인은 자연 언어 커맨드를 수행하도록 사용될 수 있다. 예를 들어, 사용자는 "홍길동과 3시에 미팅 예정"이라 타이핑할 수 있다. 사용자 인터페이스 컴포넌트(140)는 미팅의 날짜, 시간, 장소를 명확히 한 후에, 사용자 인터페이스는 액세스가 홍길동에 의해 부여되었다면 홍길동의 캘린더에 상담한다. 홍길동에 의해 확립된 규칙 및 프레퍼런스가 요청된 시각, 장소에서, 요청된 시간동안 미팅이 예정될 것을 허용한다면, 미팅은 홍길동의 캘린더 및 요청자의 캘린더 모두에 예정된다.The integrated command line can also be used to perform natural language commands. For example, a user may type "Meeting with Hong Gil-dong at 3 o'clock". After the user interface component 140 clarifies the date, time, and location of the meeting, the user interface consults Hong Gil-dong's calendar if access has been granted by Hong. If the rules and preferences established by Hong Gil Dong allow the meeting to be scheduled for the requested time, at the time and place of the request, the meeting is scheduled on both Hong Gil Dong's calendar and the requestor's calendar.

통합 커맨드/서치 라인은 로컬하게 및 네트워크상에 제공된 서비스에의 커맨드 또는 문의를 파싱 및 브레이킹 아웃한다. 그것은 그들이 어디 있던지 동일한 방식으로 액세스된 사용자 인터페이스에서의 하나의 장소에 존재하고, 입력의 모든 형식-타이핑(키보드), 음성, 수서는 사용자 인터페이스에 의해 수신될 수 있다. 지능의 모든 레벨-키워드, 불린, 및 자연 언어(단어 조각, 구, 및/또는 잘 형성된 문장)는 또한 사용자 인터페이스에 의해 수신 및 프로세싱될 수 있다.The integrated command / search line parses and breaks out commands or queries to services provided locally and on the network. It resides in one place in the user interface accessed in the same way wherever they are, and all form-typing (keyboard), voice, and sequence of input can be received by the user interface. All level-keywords, booleans, and natural language (word fragments, phrases, and / or well-formed sentences) of intelligence can also be received and processed by the user interface.

사용자 인터페이스 컴포넌트(140)는 최종 사용자가 예를 들어 학생, 종업원, 매니저, 파이낸서, 환자, 부모, 소비자, 및 피아니스트와 같은 많은 역할을 갖는 하나의 사람임을 인식하는 단일 통합 쉘을 제공할 수 있다. 단일 통합 쉘을 경유하는 사용자 인터페이스는 모든 이들 역할을 불러모아 리치, 심리스 경험을 생성한다. The user interface component 140 may provide a single integrated shell that recognizes that the end user is a single person with many roles such as, for example, students, employees, managers, financers, patients, parents, consumers, and pianists. . The user interface via a single integrated shell brings together all these roles to create a rich, seamless experience.

사용자 인터페이스 컴포넌트(140)의 통합 포탈은 투사 우선순위의 확립을 포함하여 최종 사용자가 통합 포탈의 세팅을 개별화 및 제어하게 함으로써, 다양한 액티비티를 위해 사용되는 애플리케이션, 문서, 및 운영체제 사이의 비쥬얼 세퍼레이션을 최소화한다. The integrated portal of the user interface component 140 allows the end user to personalize and control the settings of the integrated portal, including the establishment of projection priorities, thereby creating a visual separation between the applications, documents, and operating systems used for the various activities. Minimize.

이러한 개별화를 통하여, 사용자 인터페이스 컴포넌트(140)는 페이지를 지능적으로 거주시키고 레이 아웃한다. 이러한 개별화는 나의 상태 디렉토리(905)내에 프레퍼런스의 형식으로 기억된다. 사용자가 클라이언트 디바이스에 로그 온하고 보안 컴포넌트(165)에 인증하고 나면, 서버 연합(120)은 이들 프레퍼런스를 따르는 (아마도 기억장치 컴포넌트(145)의 메가-스토어내에 기억된) 개인화된 정보를 협력하여 얻고 링크(410)를 통하여 사용자 인터페이스에 정보를 제공한다.Through this personalization, the user interface component 140 intelligently resides and layouts the page. This personalization is stored in the form of preferences in my state directory 905. After the user logs on to the client device and authenticates to the secure component 165, the server federation 120 cooperates with these preferences (possibly stored in the mega-store of the storage component 145). And provide information to the user interface via link 410.

또한 사용자는 사용자의 작업 상태를 알고 있는 것을 포함하도록 사용자 인터페이스 컴포넌트(140)의 세팅을 개별화 및 제어하고 따라서 사용자 인터페이스의 외관을 조정하도록 허용된다. 다른 사용자 인터페이스를 요구할 수 있는 전형적인 작업 상태는 사용자가 PC 작업 중인 때, 사용자가 사무실을 나갔을 때, 사용자가 PDA 또는 무선 전화기를 경유하여 데이터에 액세스하고 있을 때, 사용자가 서버 연합(120)에 부착된 전자 디바이스 또는 다른 위치, 또는 집에서 작업하고 있을 때를 포함한다. The user is also allowed to personalize and control the settings of the user interface component 140 to include knowing the user's working status and thus adjust the appearance of the user interface. Typical working conditions that may require a different user interface include when a user is working on a PC, when the user leaves the office, when the user is accessing data via a PDA or cordless phone, when the user attaches to the server federation 120. Electronic device or other location, or when working at home.

또한, 사용자 인터페이스는 메시지의 확정 및 우선순위 정함을 포함하여, 사용자의 우선순위 정함에 따라 데이터를 수집하도록 최종 사용자가 디바이스에 명령할 수 있게 한다. 예를 들어, 사용자는 그들 사장으로부터의 메시지에 항상 높은 우선순위가 주어져야 하고 그것들을 수신하도록 인터럽팅되어야 하는 프레퍼런스를 세팅할 수 있다. 따라서, 메시지가 수신되는 이벤트 컴포넌트(155)로부터의 알림은 이들 프레퍼런스에 근거하여 필터링될 수 있다. 또한 통합 쉘은 웹-기반 커뮤니티가 개개의 PC로부터의 데이터를 커뮤니티 투사내로 제공할 수 있게 한다. 이것은 매니저가 PC 포탈로부터의 콘텐트를 제어하는 능력을 갖게 하기 때문에 작업 커뮤니티에 있어서 특히 유용하다.The user interface also includes the confirmation and prioritization of messages, allowing the end user to instruct the device to collect data as the user prioritizes. For example, a user can set preferences that should always be given high priority to messages from their owners and interrupted to receive them. Thus, notifications from the event component 155 where the message is received may be filtered based on these preferences. The integrated shell also allows web-based communities to provide data from individual PCs into community projections. This is particularly useful in the work community because it gives the manager the ability to control content from the PC portal.

또한 사용자가 통신 리스트상의 누군가와 통신하고 있을 때 어느 당사자가 다른 개인이 당해 윈도우 또는 문서를 볼 수 있게 윈도우 공유 또는 문서 공유를 활성화시킬 수 있도록 윈도우 공유 및 문서 공유가 가능하다. 그러한 윈도우 공유는 서버 연합에서의 메가-스토어내의 문서에 액세스함으로써 및 다른 사람들이 보안 컴포넌트(165)를 통하여 문서로의 적합한 액세스를 가질 수 있도록 보안 세팅을 구성함으로써 달성될 수 있다.Window sharing and document sharing are also possible so that when a user is communicating with someone on the communication list, either party can activate window sharing or document sharing so that other individuals can view the window or document. Such window sharing can be accomplished by accessing a document in the mega-store at the server federation and by configuring security settings such that others can have appropriate access to the document through the security component 165.

또한 사용자 인터페이스는 사용자가 현존 리포트 및 다른 데이터 구조를 신속하게 재사용할 수 있게 하는 임시 템플릿을 생성한다. 템플릿은 출판되거나, 분산되거나, 통합 포탈을 통하여 작업 커뮤니티의 다른 멤버와 공유되거나, 인트라넷 또는 인터넷상에 출판될 수 있다. 템플릿 발생은 각각의 참여자가 최종 산물에 기여하게 하는 전자 작업 커뮤니티에서 작업할 때 유용한 특성일 수 있다. 어떤 템플릿은 리포트를 마치도록 각각의 작업 커뮤니티 참여자로부터 특정 정보를 요청할 수 있다.The user interface also creates temporary templates that allow users to quickly reuse existing reports and other data structures. Templates can be published, distributed, shared with other members of the working community through an integrated portal, or published on an intranet or the Internet. Template generation can be a useful property when working in the electronic work community where each participant contributes to the end product. Some templates may request specific information from each working community participant to complete a report.

또한 사용자 인터페이스는 리스팅된 개개인이 어떻게 접속 또는 도달될 수 있는가에 대하여 소정 세팅을 갖는 "버디 리스트"의 사용을 가능하게 한다. 전형적인 접속은 전자 메일, 전화기, 팩시밀리, 주소 정보, 비디오 컨퍼런싱 요구, 무선 통신 포탈, 또는 다른 통신 메카니즘을 포함한다. 이들 "버디 리스트"는 개개인이 특정 디바이스에 로그온할 때 이벤트를 트리거링하는 이벤트 컴포넌트(155)에 의해 발생된다. 사용자 인터페이스 컴포넌트(140)는 이들 이벤트를 수신하고 그것들을 사용자에게 제시한다. 최종적으로, 사용자 인터페이스는 이종 시스템이 심리스하게 통신할 수 있도록 표준 퍼스널 및 캘린더링 스키마가 이용되게 한다.The user interface also allows the use of a "buddy list" with certain settings as to how the listed individuals can be connected or reached. Typical connections include electronic mail, telephones, faxes, address information, video conferencing requests, wireless communication portals, or other communication mechanisms. These "buddy lists" are generated by an event component 155 that triggers an event when an individual logs on to a particular device. User interface component 140 receives these events and presents them to the user. Finally, the user interface allows standard personal and calendaring schemes to be used so that heterogeneous systems can communicate seamlessly.

사용자 인터페이스는 퍼스널 디바이스의 사용, 연관 보안 세팅에서 사용자 오브젝트의 컨퍼런스 어웨어니스, 로컬 및 분산 참여자와의 문서 공유, 전 웹에서 인스턴트 액세스하기 위해 로컬 디바이스상에 문서를 이동시키는 능력, 통합 사용자 인터페이스 포탈에서 된 수서 주석에 대한 응답, 및 최종적으로, 이벤트 캘린더링의 결과로서 노티스의 트리거링을 지원한다.The user interface includes the use of personal devices, the conferenceware of the user object in the associated security settings, the sharing of documents with local and distributed participants, the ability to move documents on the local device for instant access across the web, and the integrated user interface portal. Response to the written method annotations, and finally triggering the notifications as a result of event calendaring.

사용자 인터페이스는 사용자가 애플리케이션과 통신 사이에 심리스하게 이동하기 위한 중앙 장소이다. 단일, 통합 편집/제어 또는 편집 및 제어는 동일한 장소가 특정 구조화된 데이터베이스를 통하여 문의를 호스팅하게 한다. 시스템은 애플리케이션 상태의 어웨어니스 및 적합한 애플리케이션 모델로 액세스할 능력을 받는다.The user interface is the central place for the user to seamlessly move between the application and the communication. A single, integrated edit / control or edit and control allows the same place to host a query through a specific structured database. The system is given the ability to access the appropriate state of the application state and the application.

시스템은 애플리케이션으로의 액세스 및 PC상으로의 서비스를 제공하기 위한 "퍼스널 포탈"을 제공한다. 예를 들어, 그것은 페이지를 지능적으로 거주 및 레이 아웃하도록 사용자 스키마의 지각을 사용한다. 그것은 퍼스널, 공유, 및 글로벌 정보를 항해하고 컴퓨터를 실행시키기 위해 사용자가 요구하는 키 링키지를 제공한다.The system provides a "personal portal" for providing access to applications and services on a PC. For example, it uses perception of the user schema to intelligently live and layout pages. It provides key linkages required by the user to navigate personal, shared, and global information and to run a computer.

따라서, 사용자 인터페이스는 사용자로부터의 입력을 수신하고 출력을 사용자에게 제공함에 있어서 유연성을 허용하는 멀티-모달이다. 또한 사용자 인터페이스는 클라이언트 디바이스의 기능으로까지 적합하게 스케일링하고 사용자가 클라이언트 디바이스 미드-세션을 스위칭하게 한다는 점에서 응답적이다. 사용자 인터페이스는 사용자 인터페이스가 특정 아이템을 인식할 때 특정 아이템에 적합한 연관 액션 메뉴를 갖는 스마트 태그를 제공하는 것과 같이 사용자 액션 뒤의 의도를 추론하고 적합한 액션을 취한다는 점에서 지능적이다.Thus, the user interface is multi-modal that allows flexibility in receiving input from the user and providing output to the user. The user interface is also responsive in that it scales properly to the functionality of the client device and allows the user to switch the client device mid-session. The user interface is intelligent in that when the user interface recognizes a particular item, it infers the intention behind the user action and takes the appropriate action, such as providing a smart tag with an associated action menu appropriate for the particular item.

F. 이벤트F. Events

본 발명의 이벤트 컴포넌트(155)는 이벤트를 출판 또는 발생시키는 임의의 소프트웨어 컴포넌트("이벤트 소스")와 이벤트 알림을 서브스크라이빙 또는 수신하는 임의의 소프트웨어 컴포넌트("이벤트 싱크") 사이에서 이벤트의 분산 통신을 투과적으로 용이하게 한다. 본 설명 및 청구항에 있어서, 이벤트는 예를 들어 시스템 컴포넌트의 스테이터스, 사용자의 액티비티, 환경의 측정 등과 같은 하나 이상의 상태에 관한 관찰이다. 이벤트 시스템은 콘텍스트에 대하여 계속적으로 업데이트된 정보로의 액세스를 갖도록 소프트웨어 컴포넌트 및 아키텍처를 인에이블한다.The event component 155 of the present invention distributes an event between any software component that publishes or raises an event ("event source") and any software component that subscribes to or receives event notifications ("event sink"). It facilitates communication transparently. In the present description and claims, events are observations about one or more states, such as, for example, the status of system components, activities of users, measurements of the environment, and the like. The event system enables software components and architectures to have access to continuously updated information about the context.

도 5는 하나 이상의 이벤트 소스와 하나 이상의 이벤트 싱크 사이에서 이벤트의 전형적인 통신을 제공하는 이벤트 컴포넌트(155)를 일반적으로 도시한다. 이벤트는 다양한 방식으로 이벤트 소스(602)에서 발생된다. 이벤트는 이벤트 싱크(604)로 방송 또는 직접 통신으로서 이벤트 소스(602)에 의해 발생될 수 있다. 이벤트 싱크(604)는 이벤트를 수신하기 위해서 이벤트 소스(602)를 청취 또는 액티브하게 폴링할 수 있다. 더 나아가, 이벤트 싱크(604)는 이벤트 소스(602)에 서브스크라이빙하거나 또는 대안으로 서버 연합(120)에서의 중간 포인트로부터 포워딩되는 이벤트를 청취할 수 있다.5 generally illustrates an event component 155 that provides for typical communication of events between one or more event sources and one or more event sinks. Events are generated at event source 602 in a variety of ways. The event may be generated by the event source 602 as broadcast or direct communication to the event sink 604. The event sink 604 can listen or actively poll the event source 602 to receive the event. Further, event sink 604 may subscribe to event source 602 or, alternatively, listen for events forwarded from intermediate points in server federation 120.

이벤트 컴포넌트(155)는 이벤트 소스(602)에 의해 제공된 기본 또는 어토믹(atomic) 이벤트(606)를 이벤트 합성 메카니즘(608)을 통하여 점진적으로 더 높은 레벨 이벤트로 변환한다. 이벤트 합성의 프로세스는 기억된 이벤트 데이터 및/또는 관찰된 이벤트의 세트로부터 새로운 이벤트 또는 액션의 구축이다. 이벤트 합성은 규칙, 필터에 의해서 및 리치 추론 기구로까지 줄곧 정교의 스펙트럼을 스패닝하는 더 고급 패턴 인식기에 의해서 구동될 수 있다. 따라서, 이벤트 합성은 소프트웨어 컴포넌트의 정보적 요구에 적합하게 매칭하는 관찰(610)내로 이용가능한 어토믹 이벤트(606)의 세트를 적응시키고, 좋은 결정을 하도록 추상화의 정당한 레벨에서의 정보를 그들에게 제공한다.The event component 155 gradually converts the basic or atomic event 606 provided by the event source 602 to a higher level event through the event synthesis mechanism 608. The process of event synthesis is the construction of a new event or action from a set of stored event data and / or observed events. Event synthesis can be driven by rules, filters, and by more advanced pattern recognizers that span the elaborate spectrum all the way up to the rich inference mechanism. Thus, event synthesis adapts the set of available atomic events 606 into observations 610 that match the informational needs of the software components and provides them with information at the right level of abstraction to make good decisions. do.

이벤트 합성(608)은 더 낮은-레벨 이벤트(어토믹 이벤트; 606)를 집합시키고, 필터링하고, 더 높은-레벨 이벤트(612)로 변환하고, 때때로, 이벤트를 월드 액션(614)과 같은 액션으로 직접 맵핑한다. 액션은 액티브하게 폴링 또는 청취를 경유하여 새로운 이벤트를 축적하는 데 이용될 수 있는 정보-축적 액션(616) 및 리얼-월드 액션(614)을 포함한다. 이벤트 합성(608)은 이벤트가 근접한 시간에서 관찰되던지 또는 매우 다른 시간에서 관찰되던지 이벤트 및 데이터를 조합하기 위한 방법을 제공한다. 이벤트-특정 언어(618) 및 합성 컴파일러(620)는 합성 컴포넌트를 빌딩하는 데 사용될 수 있다. 이벤트 합성(608)은 다양한 방법을 사용할 수 있는 데, 이벤트 및 데이터를 조합하기 위해 정교의 전 스펙트럼에서 간단한 규칙 및 필터로부터 리치 시간적 패턴 매칭 및 솔직한 논리적 및 개연성의 추론으로까지의 범위에 이른다.Event synthesis 608 aggregates, filters, and converts lower-level events (atomic events) 606 into higher-level events 612 and sometimes converts the events into actions such as world action 614. Map directly. The action includes an information-accumulation action 616 and a real-world action 614 that can be used to actively accumulate new events via polling or listening. Event synthesis 608 provides a method for combining events and data whether an event is observed at a close time or at a very different time. Event-specific language 618 and composite compiler 620 may be used to build composite components. Event synthesis 608 may use a variety of methods, ranging from simple rules and filters in sophisticated full spectrum to combining events and data, to rich temporal pattern matching and inference of frank logical and plausibility.

예로써 이벤트 스토어(622)와 같은 이벤트의 소비자는 낮은-레벨(어토믹 이벤트; 606) 또는 더 높은 레벨 이벤트(612)의 세트로부터 추론(624)을 수행하고 이들 추론에 근거하여 액션을 취한다. 추론(624)은 정보의 간단한 재송신으로부터 논리적, Bayesian, 및 결정-이론적 추론까지의 범위에 이를 수 있다. 예를 들어, 사용자의 위치, 액티비티, 및 액티브 디바이스에 대한 이벤트의 스트림은 사용자에게 제공할 가장 중요한 서비스 및 알림에 대하여 이상적인 결정을 하도록 순차적으로 사용될 수 있는 사용자의 목표에 대한 확률의 세트를 제공하기 위해서 Bayesian 모델에 의해 분석될 수 있다. 도 5는 이벤트-기반 추론(624)으로부터 분리되어 있는 것으로서 이벤트 합성(608)을 도시하고 있지만, 더 낮은-레벨 이벤트로부터 높은-레벨 이벤트를 합성하기 위한 정교한 합성 메카니즘은 의사결정(decision-making)을 위한 추론과 개념적으로 머징한다. By way of example, a consumer of an event, such as event store 622, performs inference 624 from a set of low-level (atomic events) 606 or higher level events 612 and takes action based on these inferences. . Reasoning 624 may range from simple retransmission of information to logical, Bayesian, and decision-theoretic reasoning. For example, the user's location, activity, and stream of events for the active device provide a set of probabilities for the user's goals that can be used sequentially to make ideal decisions about the most important services and notifications to provide to the user. This can be analyzed by Bayesian model. Although FIG. 5 illustrates event synthesis 608 as separate from event-based inference 624, a sophisticated synthesis mechanism for synthesizing high-level events from lower-level events is decision-making. Inference and conceptual merging

이벤트 컴포넌트(155)는 이벤트 통신 및 수신을 셀프-모니터링하고, 제어하고, 쓰로틀링하는 능력을 시스템에 부여하는 서브시스템 및 전반적인 이벤트 시스템의 다른 관점에 대하여 일어나도록 "메타리즌잉(metareasoning)"하기 위해 전 서버 연합(120) 및 클라이언트 디바이스(100)에서 분산되고, 등록되고, 액세스될 수 있는 이벤트를 제공한다. 메타리즌잉은 이벤트 시스템의 유지 및 헬스를 보증하는 추론 기구 및 방법을 참조한다.The event component 155 is " metareasoning " to occur with respect to subsystems and other aspects of the overall event system that give the system the ability to self-monitor, control and throttle event communication and reception. Provide events that can be distributed, registered, and accessed at all server federations 120 and client devices 100. Metarising refers to reasoning mechanisms and methods that ensure the maintenance and health of the event system.

이벤트 컴포넌트(155)는 광범위하게 또는 스코핑된 도메인내에서 방송되는 이벤트를 임의의 이벤트 소스 또는 싱크가 출판, 서브스크라이빙, 또는 청취하게 한다. 이것은 서브스크립션의 지능적인 분산, 네트워크에서의 중간 노드에서 합성의 배치 및 분해, 및 라우팅을 요구한다. 이벤트 컴포넌트는 이벤트 소스, 이벤트 싱크, 및 중간 노드가 기능을 델리게이팅(delegating)할 수 있게 하도록 보안 컴포넌트(165)의 보안 서비스를 사용한다.Event component 155 allows any event source or sink to publish, subscribe, or listen to an event that is broadcast within a broad or scoped domain. This requires intelligent distribution of subscriptions, placement and decomposition of synthesis at intermediate nodes in the network, and routing. The event component uses the security service of the security component 165 to enable event sources, event sinks, and intermediate nodes to delegate functionality.

이벤트 컴포넌트(155)는 개개의 싱크/소스 프라이버시 및 전반적인 시스템 보안의 최상 디그리를 유지하면서, 그렇지 않다면 비양립성인 이벤트 소스 및 이벤트 싱크 사이에서 상호운용가능한(interoperable) 통신 및 우선순위결정을 용이하게 하도록 설계되어 있다. 이벤트 컴포넌트(155)는 출판 및 서브스크립션 시스템, 이벤트 합성 메카니즘, 이벤트 라우팅 메카니즘, 이벤트 기억장치 및 로깅 메카니즘, 및 이벤트 시스템 메타리즌잉을 포함하지만 그에 제한되는 것은 아니다. 또한 이벤트 컴포넌트(155)는 스키마 컴포넌트(170)에 의해 제공되는 스키마 및 스키마 서비스와 메시징 컴포넌트(160)에 의해 제공되는 서비스 품질과 통신 프로토콜을 사용한다.The event component 155 maintains the best degree of individual sink / source privacy and overall system security, while facilitating interoperable communication and prioritization between otherwise incompatible event sources and event sinks. It is designed. Event component 155 includes, but is not limited to, a publishing and subscription system, event synthesis mechanisms, event routing mechanisms, event storage and logging mechanisms, and event system metazoning. Event component 155 also uses the schema and schema services provided by schema component 170 and the quality of service and communication protocols provided by messaging component 160.

이벤트 스키마는 클래스 기술 및 물리적 이벤트 구조를 정의하는 이들 클래스 사이의 관계의 수집이다. 클래스 사이의 관계는 이벤트 클래스, 소스, 타겟, 시맨틱, 온투로지컬 콘텐트 정보, 관찰적 신뢰도, 및 이벤트 소스에 의해 알려진 서비스 속성의 품질을 포함한다. 바람직한 실시예에 있어서, 클래스 기술은 XML 기반 스키마 클래스이다.An event schema is a collection of relationships between these classes that define class descriptions and physical event structures. Relationships between classes include event classes, sources, targets, semantics, on-to-logical content information, observable reliability, and quality of service attributes known by the event source. In a preferred embodiment, the class description is an XML based schema class.

이벤트 기술은 그 구조 및 제약을 표현하기 위한 스키마 기술 언어 및 예정된 거동 및 합성적인 특성을 표현하기 위한 선언적 패턴 언어를 사용한다. 스키마 언어내에서, 이벤트 구조는 간단하다. 이벤트는 패턴 매칭 및 라우팅에서 사용되는 공개 엔벨로프 및 엔드-투-엔드 데이터를 사적으로 운반하도록 사용되는 프라이빗 바디를 갖는다. 이러한 구조에 있어서, 패턴 언어는 파생 이벤트를 생성할 더 높은-레벨 시맨틱 및 규칙을 캡처링하기 위해서 인스턴스 데이터 및 스키마 정보 모두를 사용할 수 있다.Event descriptions use a schema description language to express their structure and constraints and a declarative pattern language to express predetermined behaviors and synthetic characteristics. Within the schema language, the event structure is simple. The event has a private body that is used to privately carry the public envelope and end-to-end data used in pattern matching and routing. In this structure, the pattern language can use both instance data and schema information to capture the higher-level semantics and rules that will generate derived events.

스키마 언어의 사용은 간단한 네임-기반 컨벤션보다 더 광범위한 표현을 허용한다. 개개의 이벤트는 필터링 및 변형되고 멀티플 이벤트는 더 높은-레벨 이벤트로 함께 합성된다. 패턴 언어는 합성 및 엔캡슐레이션을 위한 오퍼레이터, 시간적 관계, 논리적 관계, 스트링 조작 및 XML 오퍼레이션, 엔드포인트 네이밍 및 토폴로지 기술, 및 수학적 관계를 포함한다. 언어는 파라미터화를 통하여 합성 명세의 재사용을 용이하게 한다.The use of a schema language allows a wider representation than a simple name-based convention. Individual events are filtered and transformed, and multiple events are combined together into higher-level events. Pattern languages include operators for synthesis and encapsulation, temporal relationships, logical relationships, string manipulation and XML operations, endpoint naming and topology descriptions, and mathematical relationships. The language facilitates reuse of synthetic specifications through parameterization.

이벤트 스키마는 확장될 수 있다. 계승에 근거한 강력한 관계 모델은 백워드 컴패터블 버젼잉을 허용한다. 이벤트 타입은 강력한 확장가능한 타입 시스템에 근거하여 잘-정의된 특성을 갖는다. 모델은 표준 XML 어휘를 사용하여 프로토콜 독립 기술된다. 이벤트 스키마에 더하여, 다양한 서비스가 분산 이벤트 시스템(예를 들어, 퍼블리셔 기능 스키마, 서브스크라이버 기능 스키마, 이벤트 포워딩 스키마, 토폴로지, 이벤트 스토어 스키마, 합성 및 필터링 등)을 포함하여 모델링된다.The event schema can be extended. A strong relational model based on inheritance allows backward compatible versioning. Event types have well-defined characteristics based on a powerful extensible type system. The model is described as protocol independent using the standard XML vocabulary. In addition to the event schema, various services are modeled including distributed event systems (e.g., publisher function schema, subscriber function schema, event forwarding schema, topology, event store schema, synthesis and filtering, etc.).

이벤트 서비스의 서비스/컴포넌트를 스키마화하는 것은 상호운용가능성, 발견, 및 이벤트 서비스의 모든 컴포넌트를 브라우징하는 능력의 달성을 허용한다. 또한 스키마화는 합성 시나리오를 정적으로 분석/최적화하고, 롱-러닝 합성 시나리오의 상태를 조사/저장하고, 이벤트 서비스의 오퍼레이션을 모니터링하고, 메타리즌잉을 위한 메인 파운데이션으로서 이용될 수 있는 능력을 가능하게 한다.Schemaizing the services / components of the event service allows the achievement of interoperability, discovery, and the ability to browse all components of the event service. Schemaization also enables the ability to statically analyze / optimize synthesis scenarios, investigate / store the state of long-running synthesis scenarios, monitor the operation of event services, and use them as the main foundation for metarising. Let's do it.

이벤트 시스템은 모델-기반 서브스크립션 등록에 의해 구동되고 고도로 최적화된 출판 및 서브스크립션 서비스를 포함한다. 이벤트 시스템은 예를 들어 커널 드라이버 프로그래밍 모델을 이용하는 커널 이벤트(예를 들어 WDM 드라이버 이벤트), 낮은-레벨 운영체제 서비스 프로그래밍 모델을 이용하는 이벤트 출판용 비-COM API(예를 들어, 보안 감사 이벤트, 디렉토리, 서비스 제어 매니저), 정규 애플리케이션용 클랙식 COM 인터페이스, 및 네이티브 COM+ 프로그래밍 모델을 이용하는 높은-레벨 COM+ 클래스와 같은 이벤트를 출판하도록 서비스의 선택 및 유연성을 허용한다.The event system includes a highly optimized publishing and subscription service driven by model-based subscription registration. The event system includes, for example, kernel events using the kernel driver programming model (eg WDM driver events), non-COM APIs for event publishing using the low-level operating system services programming model (eg security audit events, directories, Service selection manager, a classic COM interface for regular applications, and a high-level COM + class that uses the native COM + programming model.

"이벤트 서브스크립션"은 이벤트 기반구조가 어떤 조건이 일어나는 때를 서브스크라이빙 컴포넌트에 알리는 요청이다. 그러한 조건의 예는 "CPU 이용 90% 초과", "프로세스 A 정지" 등일 수 있다. 이들 명령어는 스키마 리포지토리에 구성 오브젝트로서 기억된다.An "event subscription" is a request that the event infrastructure informs the subscribing component when certain conditions occur. Examples of such conditions may be "more than 90% CPU utilization", "Process A stop", and the like. These commands are stored as configuration objects in the schema repository.

각각의 명령어는 2개의 부분으로 이루어진다. 제 1 부분은 관심있는 이벤트를 지정한다(필터). 제 2 부분은 이벤트에 응답하여 수행될 액션을 지정한다. 필터는 관심있는 이벤트를 정의하는 스테이트먼트를 포함한다. 단일 필터는 멀티플 액션을 트리거링할 수 있다. 액션은 사용자-정의 규칙의 세트에 의해 구동될 수 있다. 예를 들어, 사용자는 어떤 높은 우선순위 송신자로부터 이메일을 수신하는 경우에만 전화 통화에서의 인터럽션이 일어날 수 있게 지정할 수 있다. 이것은 사용자가 인터럽팅되기를 원하지 않는다면 인터럽션없이 전화 통화를 계속하게 한다. 따라서, 사용자는 작업 시간이 개인 시간으로 끼어들고 개인 시간이 작업시간으로 끼어드는 규칙을 지정함으로써 작업 및 개인 시간의 균형을 맞출 수 있다. 인터럽션이 적합한 경우에 있어서, 이메일 메시지는 그 때 메가-스토어로부터 제공될 것이다. 이러한 방식으로, 사용자는 정보 및 시간에 대한 제어를 유지한다.Each command consists of two parts. The first part specifies the event of interest (filter). The second part specifies the action to be performed in response to the event. The filter contains a statement that defines the event of interest. A single filter can trigger multiple actions. The action can be driven by a set of user-defined rules. For example, a user may specify that interruptions in phone calls can occur only when receiving an email from some high priority sender. This allows the user to continue the phone call without interruption if he does not want to be interrupted. Thus, a user can balance work and personal time by specifying a rule that interrupts work time to personal time and personal time to work. If interruption is appropriate, the email message will then be served from the mega-store. In this way, the user maintains control over information and time.

서브스크립션은 리스의 개념에 근거하여, 구성가능한 수명을 가질 수 있다. 시스템 재부팅보다 더 오래 살 필요가 있는 서브스크립션은 스키마 리포지토리내에 기억된다. 그러나, 가치가 낮은 단명의 이벤트 서브스크립션도 지원되어야 한다. 그들은 서브스크라이버가 지속가능한 바인딩을 구현하도록 요구함이 없이 간단한 콜백 및 필터로 구성될 수 있다.Subscriptions can have a configurable lifetime, based on the concept of a lease. Subscriptions that need to live longer than a system reboot are stored in the schema repository. However, low-value, short-lived event subscriptions must also be supported. They can consist of simple callbacks and filters without requiring the subscriber to implement sustainable binding.

서브스크립션은 포인트-포인트 또는 포인트-그룹일 수 있다. 분산 서비스는 "도메인 X내의 임의의 서버가 페일 오버하는 때를 알려주시오" 또는 "애플리케이션 Y가 인스톨되는 도메인 X내의 모든 머신상의 모든 보안 침입을 로깅"의 시나리오에 관심있다. 그래서 개개의 머신상에서 일어나는 이벤트 대신에 분산 애플리케이션은 서버 연합(120)의 부분인 머신의 그룹에서 일어나는 이벤트에 관심있다. 이들 시나리오는 서브스크립션이 한번 정의되어 그룹에서의 모든 또는 몇몇 머신에 자동으로 분산되고 새로운 머신이 그룹에 들어갈 때 서브스크립션이 그들에게 자동으로 적용될 것을 요구한다.Subscriptions can be point-point or point-group. The distributed service is interested in the scenario "Inform when any server in domain X fails over" or "Log all security intrusions on all machines in domain X where application Y is installed." So instead of events happening on individual machines, distributed applications are interested in events that occur in groups of machines that are part of server federation 120. These scenarios require that a subscription be defined once and automatically distributed to all or several machines in the group and the subscription automatically applied to them as new machines enter the group.

그룹에서 이벤트로의 분산 서브스크립션은 디렉토리 컴포넌트(150)에 의해 제공되는 분산 네임스페이스에서의 오브젝트에 의해 표시된다. 또한 그들 오브젝트는 이벤트가 송신되어야 하는 포워딩 서비스를 명령하는 라우팅 구성을 포함할 수 있다. 새로운 머신이 무리에 들어갈 때, 분산 네임스페이스의 이용가능성은 모든 서브스크립션이 배치되고 이벤트가 서브스크라이버로의 플로잉을 시작하는 것을 보증한다.Distributed subscriptions from groups to events are represented by objects in the distributed namespace provided by directory component 150. They may also contain routing configurations that instruct the forwarding service to which events should be sent. When a new machine enters the cluster, the availability of distributed namespaces ensures that all subscriptions are deployed and events start flowing to the subscribers.

서브스크립션 빌더는 그들 서브스크립션에 대해 요구되는 서비스 품질("QoS")을 지정할 수 있어야 한다. 이벤트 컴포넌트(155)는 적합한 트랜스포트 파라미터를 사용하여 따라서 그 비즈니스의 리셋을 컨덕팅함으로써 QoS가 충족되는 것을 보증하도록 메시징 컴포넌트(160)와 협력한다(예를 들어, 전달이 지정되는 것이 보장된다면 모든 내부 큐는 QoS를 지속해야 한다).The subscription builder must be able to specify the quality of service ("QoS") required for those subscriptions. The event component 155 cooperates with the messaging component 160 to ensure that QoS is met by using the appropriate transport parameters and thus conducting a reset of the business (e.g., if delivery is guaranteed to be specified, all Internal queues must persist QoS).

환경에서 발생된 이벤트의 수는 매우 많을 수 있다. 따라서, 이벤트 전달의 코스트는 상당한 오퍼레이셔널 오버헤드를 일으킬 수 있다. 출판 서비스가 시스템을 스케일링하기 위해서, 아무도 기대하고 있지 않은 이벤트는 가능한 일찍 이벤트 라이프사이클에서 폐기되어야 한다. 이것을 달성하기 위해서, 효율적인 필터링 서비스는 현저한 서브스크립션에 대하여 이벤트의 신속한 타당성검사를 한다. 그러나, 현존 서브스크립션의 수는 또한 매우 많을 수 있다. 따라서 필터링 서비스는 디시젼 트리와 같은 메카니즘에 근거한 효율적인 인버스 문의 엔진을 사용한다.The number of events that occur in the environment can be very large. Thus, the cost of event delivery can incur significant operational overhead. In order for the publishing service to scale the system, events that no one expects should be discarded as early as possible in the event lifecycle. To achieve this, an efficient filtering service quickly validates the event for significant subscriptions. However, the number of existing subscriptions can also be very large. Therefore, the filtering service uses an efficient inverse query engine based on mechanisms such as decision trees.

이벤트를 필터링하는 것에 더하여, 이벤트 필터링 엔진은 퍼블리셔에 서브스크립션 분석 서비스를 제공한다. 서비스는 서브스크라이버가 그 이벤트에 관심있을 때 및 아무도 더 이상 관심없을 때를 퍼블리셔에게 알린다. 쓸모없는 이벤트의 공급 대신에 수행할 수 있는 임의의 필터링을 수행하도록 퍼블리셔에 대하여 대비되어 있다.In addition to filtering events, the event filtering engine provides subscription analysis services to publishers. The service informs the publisher when the subscriber is interested in the event and when no one is interested anymore. It is prepared for the publisher to perform any filtering that can be done instead of supplying useless events.

분산 이벤트-구동 서비스는 개개의 이벤트가 어떤 시퀀스에서 일어나지 않거나 어떤 데이터 상태와 일치하지 않는다면 거의 중요치 않은 시나리오를 포함한다. 그러한 시나리오의 예는 "모든 백업 제어기가 다운될 때를 알림", "로드가 로인 동안 서버가 5번 크래싱되면 알림", 또는 "5초의 수평내에 선택없이 5개의 메뉴 이상을 사용자가 방문하는 상황을 식별"이다. 이들 조합을 검출하기 위해서 시스템은 이벤트 및 데이터를 합성한다.Distributed event-driven services include scenarios that are rarely important if individual events do not occur in any sequence or match any data state. Examples of such scenarios include "Notify me when all backup controllers are down", "Notify me when server crashes 5 times during load", or "User visits more than 5 menus without selection within 5 seconds of horizontality." Identification ". To detect these combinations, the system synthesizes events and data.

이벤트 합성 서비스(608)는 이벤트 및 데이터 조건에 의해 구동된 상태 머신일 수 있다. 일실시예에 있어서, 각각의 합성 서비스는 상태 트랜지션을 기술하는 오브젝트의 조합으로서 내부적으로 구성된다. 몇몇 서비스는 매우 복잡할 수 있기 때문에, 합성 언어 또는 템플릿은 합성 서비스를 세팅업하는 태스크를 간소화하도록 제공될 수 있다. 유사한 이벤트의 집합(예를 들어, "서버가 셧다운된 후에 5분 미만에 일어나는 경우를 제외하고 내 기업내의 임의의 SQL 서버상에 일어나는 모든 트랜잭션-실패 이벤트상에 나를 페이징하시오"); 이벤트 및 데이터의 합성(예를 들어, "내가 다른 것을 읽고 있는 동안 이메일이 도착하면 그것을 브링업하지 마시오"); 시간을 통하여 이벤트로부터 상태를 계산(예를 들어, "마지막 날 동안 내 이메일 큐 사이즈의 경향은 무엇이었는가?"); 및 카운팅 및 하트비트 모니터링(예를 들어, "5분내에 키가 눌러지지 않고 마우스 이동이 없으면 나에게 알려주시오")은 전형적인 시나리오이다.Event synthesis service 608 may be a state machine driven by event and data conditions. In one embodiment, each composition service is configured internally as a combination of objects describing state transitions. Since some services can be very complex, a composite language or template can be provided to simplify the task of setting up the composite service. A set of similar events (eg, "page me on all transaction-failure events that occur on any SQL server in my enterprise except when it happens in less than 5 minutes after the server is shut down"); Synthesis of events and data (eg, "don't bring it up if an email arrives while I'm reading something else"); Calculating status from events over time (eg, “What was the trend of my email queue size during the last days?”); And counting and heartbeat monitoring (eg, "Please let me know if no key is pressed and no mouse movement within 5 minutes") is a typical scenario.

G. G. 메시징Messaging

본 발명의 메시징 컴포넌트(160)는 클라이언트 디바이스(110)와 서버(140)가 통신할 수 있게 한다. "메시지"라는 용어는 운영환경(100)의 다른 컴포넌트 또는 애플리케이션 사이에서 교환되는 구조화된 데이터로까지 확장한다. 메시징의 예는 애플리케이션-애플리케이션 메시징, 퍼슨-퍼슨 메시징(이-메일), 및 협조 애플리케이션을 포함한다. 바람직한 실시예에 따라, 메시징 컴포넌트(160)는 HTTP-인에이블되고, DMZ, 로드 밸런싱 서버, 및 NAT 서비스를 포함하는 방화벽 구성과 양립한다.The messaging component 160 of the present invention allows the client device 110 and the server 140 to communicate. The term "message" extends to structured data exchanged between other components or applications of operating environment 100. Examples of messaging include application-application messaging, person-person messaging (e-mail), and cooperative applications. According to a preferred embodiment, the messaging component 160 is HTTP-enabled and is compatible with firewall configurations including a DMZ, load balancing server, and NAT service.

상호운용가능성을 용이하게 하기 위해서, 메시징 컴포넌트(160)는 기초 트랜스포트와 무관하게 공통 시맨틱을 메시지 애플리케이션에 제공하도록 HTTP, SMTP, 및/또는 다른 트랜스포트의 상위에 레이어링하는 서비스의 세트 및 공통 메시징 애플리케이션 프로그램 인터페이스(API)를 제공한다. 이러한 방식으로, 인터넷 및 다른 광역 네트워크는 트랜스포트가 공통 메시징 API와 양립하는 한 특정 디바이스와 연관된 트랜스포트 프로토콜과 실제적으로 무관하게 효율적이고 편재하는 메시징을 제공하도록 레버리징된다(leveraged).To facilitate interoperability, messaging component 160 provides a common set of services and common messaging layered on top of HTTP, SMTP, and / or other transports to provide common semantics to message applications independent of underlying transports. Provide an application program interface (API). In this way, the Internet and other wide area networks are leveraged to provide efficient and ubiquitous messaging independently of the transport protocol associated with a particular device as long as the transport is compatible with a common messaging API.

또한, 메시징 컴포넌트(160)는 지원할 수 있는 접속된 디바이스 및 사용자의 수에서 및 또한 사용될 수 있는 네트워크 또는 디바이스의 타입에서 고도로 스케일링될 수 있다. 다시 말하면, 메시징 컴포넌트(160)는 소형 무선 디바이스로부터 "메가-스케일" 네트워크 및 메시징 시스템까지의 범위에 이르는 시스템 및 디바이스로 사용에 용이하게 적합하다. 이러한 스케일가능 특성은 정교한 분산 서비스뿐만 아니라 높은 서비스 품질(QOS) 메시지 교환에 소형 디바이스가 참여하게 하는 메시징 플랫폼상에 메시징 애플리케이션을 빌딩하는 능력에 의해서 특징지어진다. 다시 말하면, 메시징 컴포넌트(160)는 서버상에 고도로 스케일링될 수도 있고 소형 디바이스로 스케일링 다운될 수도 있는데, 적합한 "공간 절감(small footprint)" 서브셋을 빌딩하는 것이 가능하다는 것을 의미한다.In addition, messaging component 160 may be highly scaled in the number of connected devices and users that may support and also in the type of network or device that may be used. In other words, messaging component 160 is readily suited for use with systems and devices ranging from small wireless devices to "mega-scale" networks and messaging systems. This scalable feature is characterized by the ability to build messaging applications on a messaging platform that allows small devices to participate in sophisticated distributed services as well as high quality of service (QOS) message exchanges. In other words, messaging component 160 may be highly scaled on a server or scaled down to a small device, meaning that it is possible to build a suitable "small footprint" subset.

종래 메시징 시스템과 대조하여, 본 발명의 메시징 컴포넌트(160)는 플랫폼 메시징 아키텍처를 이용한다. 레이어링된 제품이라기보다는, 메시징 서비스는 새로운 애플리케이션 및 메시지-기반 서비스, 일예로 이벤트 컴포넌트(155)에 의해 제공되는 바와 같은 분산 이벤팅이 본 발명 또는 제 3자의 메시징 서비스를 오퍼레이팅하는 엔티티에 의해 쓰여질 수 있는 베이스 플랫폼 기판으로서 존재한다. 메시징 컴포넌트(160)는 인터넷-기반 프로토콜을 인식 및 받아들이고 새로운 및 현존 프로토콜을 공통 방식으로 활용하기 위한 방식으로 정의된다. 또한, 메시징 컴포넌트(160)는 비동기, 커넥션리스, 정확히 한번을 갖는 스토어-앤-포워드 신뢰할만한 메시징, 인-오더 메시지 전달을 제공한다.In contrast to conventional messaging systems, the messaging component 160 of the present invention utilizes a platform messaging architecture. Rather than being a layered product, a messaging service may be a new application and message-based service, for example distributed events such as provided by event component 155 may be written by an entity operating the present invention or a third party messaging service. Present as a base platform substrate. Messaging component 160 is defined in a manner to recognize and accept Internet-based protocols and to utilize new and existing protocols in a common manner. In addition, messaging component 160 provides asynchronous, connectionless, exactly-once store-and-forward reliable messaging, in-order message delivery.

메시징 컴포넌트(160)는 특정 메시지 타입, 메시지 콘텐트, 또는 서비스 프로토콜에 의존하거나 알고있는 메시징 시스템에 대조적으로, 신뢰할만하게 전달하는 애플리케이션 또는 서비스-정의된 메시지 "블롭(blob)"에 타겟팅된다. 메시징 컴포넌트(160)는 데이터 의존적인 라우팅 스키마, 토픽 또는 서브젝트-기반 출판/서브스크라이브 기반구조, 또는 다른 메시징 변환 서비스를 직접 구현하지 않는다.Messaging component 160 is targeted to an application or service-defined message "blob" that reliably delivers, in contrast to a messaging system that depends on or knows a particular message type, message content, or service protocol. The messaging component 160 does not directly implement a data dependent routing schema, topic or subject-based publishing / subscribe infrastructure, or other messaging conversion services.

메시징 컴포넌트(160)는 분산 이벤트 지원의 트랜스포트 레이어에 적합한 베이시스를 제공한다. 메시징 서비스가 부가적인 기능으로 더 보충될 수 있지만, 본 발명은 완전한 통합 이벤트 시스템을 정의하는 메시지 서비스 없이 실시될 수 있다. 또한, 메시징 서비스는 통합된 높은-레벨 디스커버리 메시지 엔드포인트 디스커버리 서비스를 정의할 필요가 없다.Messaging component 160 provides a basis for the transport layer of distributed event support. Although messaging services can be further supplemented with additional functionality, the present invention may be practiced without a message service defining a complete integrated event system. In addition, the messaging service does not need to define an integrated high-level discovery message endpoint discovery service.

메시징 컴포넌트(160)의 일실시예가 도 6을 참조하여 이하 더 상세히 설명된다. 애플리케이션, 사용자, 하드웨어 등을 위한 신뢰할만하고 유연한 메시징에 대한 요구를 충족시키기 위해서, 메시징 컴포넌트는 모든 메시징 액티비티를 위한 공통 API(702)를 포함한다. API(702)는 공통 개발자 인터페이스를 노출하고, 인증, 액세스 제어, 및 서비스 품질 보증과 같이 공유된 성능의 공통 구현을 제공한다. 메시징 컴포넌트(160)는 또한 바람직하게는 이하 더 상세히 설명될 메시징 애플리케이션(704), 게이트웨이(706), 라우팅(708), HTTP 통신 서비스 (710), 및 트랜스포트(712)를 포함한다.One embodiment of messaging component 160 is described in greater detail below with reference to FIG. 6. To meet the need for reliable and flexible messaging for applications, users, hardware, and the like, the messaging component includes a common API 702 for all messaging activities. API 702 exposes a common developer interface and provides a common implementation of shared performance, such as authentication, access control, and quality of service assurance. Messaging component 160 also preferably includes messaging application 704, gateway 706, routing 708, HTTP communication service 710, and transport 712, which will be described in greater detail below.

도 6에서 큐-기반 API & 서비스(702)로서 명시된 레이어(이하 API;702 또는 레이어;702)는 다른 전 트랜스포트에서 공통 인터페이스 및 공통 서비스를 제공한다. API(702)는 몇몇 URL 네임스페이스 중 하나에서의 URL에 의해 식별될 수 있는 수신지에 메시지를 전달하도록 개발자를 인에이블하는 간단한 프로그래밍 모델을 확립한다. 바람직한 실시예에 있어서, API(702)의 근본적인 수신지 구축은 워싱턴 레드몬드의 마이크로소프트사에 의해 개발된 현존 MICROSOFT® 메시지 큐(MSMQ) 큐-기반 API의 그것과 유사한 큐일 수 있다.The layer (hereinafter API; 702 or layer; 702) designated as queue-based API & service 702 in FIG. 6 provides a common interface and common service in all other transports. API 702 establishes a simple programming model that enables a developer to deliver a message to a destination that can be identified by a URL in one of several URL namespaces. In a preferred embodiment, the underlying destination establishment of the API 702 may be a queue similar to that of the existing MICROSOFT® Message Queue (MSMQ) queue-based API developed by Microsoft Corporation of Redmond, Washington.

다른 트랜스포트(712)는 선천적으로 내장 서비스의 동일한 레벨을 갖지 않기 때문에, 서비스의 많은 것은 레이어(702)에서 구현된다. 다른 트랜스포트(712)는 통합 서비스의 다른 레벨을 갖기 때문에, 트랜스포트가 인증 또는 더 높은 서비스 품질과 같은 특성에 대하여 고유한 메카니즘을 가질 때 그들을 사용하는 것이 바람직하므로, 레이어(702)와 특정 트랜스포트(712) 사이의 인터페이스는 꽤 정교하다. 그러나, 베이식 기능의 모든 것은 또한 아비트레리 메시지의 간단한 베스트-에포트 전달을 지원하는 임의의 트랜스포트(712)의 상위에 제공된다.Since other transports 712 do not have the same level of intrinsic services inherently, many of the services are implemented in layer 702. Since different transports 712 have different levels of integration services, it is desirable to use them when transports have unique mechanisms for characteristics such as authentication or higher quality of service, so that layer 702 and specific transports The interface between the ports 712 is quite sophisticated. However, all of the basic functionality is also provided on top of any transport 712 that supports simple best-effort delivery of Abiteri messages.

본 발명의 일실시예에 따라서, 레이어(702)는 바람직하게는 그것과 서비스 품질의 범위를 메시지 전달에 연관시킨다. 예를 들어, 표현 QOS는 메시지 호스트 재부팅에 대해 탄력적이지 못한 고성능 인-메모리 기반 메시징으로서 정의된다. 지속하는 QOS는 적어도 한번 전달 보증을 제공하는 디스크-기반 메시징이다. 정확히 한번/인-오더 QOS는 정확히-한번 오더링된 전달을 제공하는 지속하는 메시징에 관련된다(복사본은 식별되어 제거되고, 부적절한 도착은 거절된다).In accordance with one embodiment of the present invention, layer 702 preferably associates it with a range of quality of service to message delivery. For example, the presentation QOS is defined as high performance in-memory based messaging that is not resilient to message host reboots. Ongoing QOS is disk-based messaging that provides at least one delivery guarantee. Exactly once / in-order QOS relates to ongoing messaging that provides exactly-once ordered delivery (copy is identified and removed, and inappropriate arrival is rejected).

레이어(702)의 보안 서비스는 보안 컴포넌트(165)에 따라 인증, 액세스 제어 및/또는 시크리시 서비스를 인에이블할 수 있다. 예를 들어, 인증은 사용자-기반 또는 머신-기반일 수 있는 엔드-엔드 모델에 따른 인증서에 기초될 수 있거나, 또는 XMLDSIG, MSMQ, 보안 다목적 인터넷 메일 확장(S/MIME), 또는 다른 적합한 인증 시스템을 포함하는 다른 모델에 따라 제공될 수 있다. 액세스 제어(즉, 누가 큐에 배신 및 조작하도록 허용되는가)는 메시지 인증에서 확립된 신용증명서에 근거하여 사용자-지향 방식으로 제어될 수 있다. 시크리시 서비스(즉, 암호화 및 복호화)는 중간 서버가 신뢰됨을 내포(imply)하는, HTTPS를 통하여 인에이블된 홉-홉 시크리시를 사용하여 확립될 수 있다. 엔드-엔드 시크리시는 키 교환 프로토콜을 통하여 인에이블될 수 있다.The security service of layer 702 may enable authentication, access control, and / or secret services in accordance with security component 165. For example, authentication may be based on a certificate according to an end-end model, which may be user-based or machine-based, or may be XMLDSIG, MSMQ, Secure Multipurpose Internet Mail Extensions (S / MIME), or other suitable authentication system. It may be provided according to other models including. Access control (i.e., who is allowed to distribute and manipulate the queue) can be controlled in a user-oriented manner based on the credentials established in the message authentication. Secret services (ie, encryption and decryption) can be established using hop-hop secrets enabled over HTTPS, implying that the intermediate server is trusted. End-end secrets may be enabled via a key exchange protocol.

본 발명의 메시징 컴포넌트(160)는 다양한 현존 및 장차의 트랜스포트와 오퍼레이팅하도록 적응될 수 있다. 실로, 다른 트랜스포트와 상호운용하는 능력은 API의 존재 및 설계의 주요 목적이다. 다른 트랜스포트가 사용될 수 있다 하더라도, 도 7은 특히 도달 및 기능을 최대화하는 트랜스포트 프로토콜의 예인 4개의 트랜스포트(712)와 결합하여 사용되고 있는 API(702)를 도시한다. HTTP/HTTPS(712a)는 SOAP-기반 메시지 표시를 사용하는 트랜스포트 프로토콜이다. MSMQ 바이너리 트랜스포트(712b)는 QOS의 리치 세트를 지원한다. 예를 들어, MSMQ는 압축되어 있는 고도로 최적화된 바이너리 포맷을 제공하고 메시지 콘텐트로의 구조화된 액세스를 가능하게 한다. 멀티캐스트 트랜스포트(712c)는 수취인의 높은 스케일링가능성을 갖는 간단한 메시징을 필요로 하는 애플리케이션을 지원한다. SMTP 트랜스포트(712d)는 전통적인 SMTP 모델과 잘 맞는 애플리케이션에 제공된다. SMTP는 더 큰 메시지 사이즈, 및 이메일 트래픽에 전형적인 다른 시나리오에 아주 적합하다. 또한 SMTP는 그것을 현존 기반구조의 사용이 소망되는 비즈니스-비즈니스(B2B) 애플리케이션에 유용하게 하는 (배치 리얼리티에서 및 프로토콜에서) 특성을 갖는다. SMTP는 베이식 "적어도 한번" 서비스 품질 및 간단한 인증을 지원한다 할지라도, 부가적 기능의 꽤 낮은 레벨을 제외하고는 우수한 성능을 갖는다.The messaging component 160 of the present invention may be adapted to operate with various existing and future transports. Indeed, the ability to interoperate with other transports is a major goal of the existence and design of the API. Although other transports may be used, FIG. 7 illustrates the API 702 being used in conjunction with four transports 712, which are examples of transport protocols that specifically maximize reach and functionality. HTTP / HTTPS 712a is a transport protocol that uses SOAP-based message presentation. MSMQ binary transport 712b supports a rich set of QOS. For example, MSMQ provides a highly optimized binary format that is compressed and enables structured access to message content. Multicast transport 712c supports applications that require simple messaging with high scalability of the recipient. The SMTP transport 712d is provided for applications that fit well with the traditional SMTP model. SMTP is well suited for larger message sizes and other scenarios typical of email traffic. SMTP also has the property (in deployment reality and protocol) to make it useful for business-business (B2B) applications where the use of existing infrastructure is desired. Although SMTP supports basic "at least once" quality of service and simple authentication, it has good performance except for a fairly low level of additional functionality.

게이트웨이(706)는 빌트-인 트랜스포트(712)와 다소 다르게 취급된다. 일반적으로 트랜스포트(712)는 제 3자가 새로운 컴포넌트를 부가할 수 있는 완전히 플러깅가능한 모델을 지원하지 않는다. 대신에, 게이트웨이(706)는 URL 네임스페이스의 일부에 대하여 메시지 트래픽을 수신한다. 그 후 게이트웨이(706)는 MQSERIES® 또는 GROUPWISE® 이메일 커넥터와 같이, 통신 시스템의 다른 타입에 접속할 수 있다.Gateway 706 is treated somewhat differently than built-in transport 712. In general, the transport 712 does not support a fully pluggable model in which third parties can add new components. Instead, gateway 706 receives message traffic for a portion of the URL namespace. Gateway 706 can then connect to other types of communication systems, such as MQSERIES® or GROUPWISE® email connectors.

메시징 컴포넌트(160)는 상호운용가능하고 투과적인 보안 방식으로 멀티플 당사자 사이에서 메시지 교환을 가능하게 한다. 그렇게 하기 위해서, 공통의 자체-기술적인 언어는 메시징 메타데이터 및 페이로드를 인캡슐레이팅한다. 바람직한 실시예에 있어서, XML은 이들 요구를 기술하는 기술 언어로서 사용된다.The messaging component 160 enables message exchange between multiple parties in an interoperable and transparent security manner. To do so, a common self-descriptive language encapsulates messaging metadata and payloads. In a preferred embodiment, XML is used as the description language to describe these needs.

확장성은 메시징 애플리케이션(704)이 심리스 방식으로 기초 메시징 컴포넌트(160)에 값을 부가하게 하는 데 중요하다. 예를 들어, 프로토콜은 애플리케이션-특정 모듈을 도입하도록 범용 메카니즘을 가져야 한다. 예는 메시지 트레이싱, 로깅, 및 데이터 변환이다. 이것은 애플리케이션-특정 엘리먼트를 메시지를 인캡슐레이팅하는 XML 문서내로 삽입하기 위한 표준으로서 노출되어야 한다.Scalability is important for having messaging application 704 add a value to underlying messaging component 160 in a seamless manner. For example, the protocol should have a general mechanism to introduce application-specific modules. Examples are message tracing, logging, and data conversion. This should be exposed as a standard for inserting application-specific elements into an XML document that encapsulates a message.

바람직한 실시예에 있어서, 메시징 컴포넌트(160)는 "HTTP 프록시" 서비스가 이용될 수 있는 것으로 규정하고 있는, 트랜스포트로서 HTTP를 사용한다. 마찬가지로, 표준 HTTP 보안 메카니즘(SSL)은 메시징 컴포넌트(160)에 의해 사용될 수 있다.In the preferred embodiment, messaging component 160 uses HTTP as a transport, which specifies that an "HTTP proxy" service can be used. Similarly, standard HTTP security mechanism (SSL) can be used by messaging component 160.

스케일링하기 위해서, 메시징 컴포넌트(160)는 이용가능한 로드 밸런싱 서비스를 이용할 수 있다. 더 낮은 서비스 품질에 대해서, 메시징은 본질적으로 스테이트리스이고 따라서 사용되고 있는 기초 로드-밸런싱 메카니즘은 투과적이다. 그러나, 더 높은 QOS는 천성적으로 스테이트풀하기 때문에, 메시징 서비스는 외부 메카니즘 (애플리케이션-특정) 및 (메시징 기반구조에 의해 발생된) 내부 메카니즘 모두를 포함하는, 전 메시지 교환에서 상태 보존을 위한 메카니즘을 제공한다. 그렇게 하기 위해서, 메시징 컴포넌트(160)는 엔드-엔드 전달 시맨틱이 보존되는 단일 백-엔드 메시지 스토어 및 외부 주소로부터 내부 메시지 스토어 주소로의 맵핑 퍼실리티를 사용할 수 있다. 맵핑 퍼실리티는 인터넷 프레즌스를 제공하는 것뿐만 아니라 인트라넷과 배치될 수 있는 "들어오는 메시징 프록시" 서비스에 의해 제공될 수 있다는 것을 주목하자.To scale, messaging component 160 can use the available load balancing service. For lower quality of service, messaging is essentially stateless and thus the underlying load-balancing mechanism being used is transparent. However, since higher QOS is inherently stateful, the messaging service is a mechanism for state preservation in all message exchanges, including both external mechanisms (application-specific) and internal mechanisms (generated by the messaging infrastructure). To provide. To do so, messaging component 160 may use a single back-end message store where end-end delivery semantics are preserved and a mapping facility from an external address to an internal message store address. Note that the mapping facility may be provided by an "incoming messaging proxy" service that may be deployed with the intranet as well as providing Internet presence.

일반적으로, 트랜스포트로서 HTTP를 사용하는 메시징 호스트는 메시지를 송신 및 수신하는 능력이 필요하다. 이것은 그것이 HTTP "청취" 및 "토킹" 서비스 모두를 갖는다는 것을 내포한다. 바람직한 실시예에 있어서, 유니버설 리스너는 베이식 서버-사이드 HTTP 프로토콜 지원을 제공한다. 머신상에 모든 HTTP 서버에 의해 공유된 시스템 컴포넌트인 유니버설 리스너는 유니버설 리스너 API(UL API)를 경유하여 요청을 들여오는 모든 서버 애플리케이션 및 서피스를 대표하여 포트(80)를 관리한다. 서비스 및 애플리케이션은 요청을 직접 그들 프로세스 환경내로 수신하도록 UL API를 사용할 수 있다. 선택적 프로세스 관리 퍼실리티는 시스템-관리된 프로세스내에서 요청이 서비싱되기를 원하는 서버 애플리케이션(예를 들어, 액티브 서버 페이지)에 제공된다.In general, a messaging host that uses HTTP as a transport needs the ability to send and receive messages. This implies that it has both HTTP "listen" and "talking" services. In a preferred embodiment, the universal listener provides basic server-side HTTP protocol support. The universal listener, a system component shared by all HTTP servers on the machine, manages port 80 on behalf of all server applications and surfaces that make requests through the Universal Listener API (UL API). Services and applications can use the UL API to receive requests directly into their process environment. Optional process management facilities are provided to server applications (eg, active server pages) that wish to have their requests serviced within a system-managed process.

유니버설 리스너는 머신상에 모든 HTTP-기반 서버 애플리케이션에 의해 공유된 커널-모드 리스너를 제공한다. 모든 애플리케이션은 포트(80)를 효율적으로 공유할 수 있다. 유니버설 리스너는 또한 파싱을 요청할 수 있고 정적 콘텐트 및 "안정한" 동적 콘텐트의 고성능 전달을 위한 응답 캐시를 제공할 수 있다. 애플리케이션은 UL API 및 구성을 경유하여 캐싱을 제어할 수 있다. 캐싱된 응답은 사용자 모드로 들어가는 일 없이 전달될 수 있다.Universal listeners provide a kernel-mode listener shared by all HTTP-based server applications on a machine. All applications can share port 80 efficiently. The universal listener can also request parsing and provide a response cache for high performance delivery of static content and "stable" dynamic content. The application can control caching via the UL API and configuration. The cached response can be delivered without entering user mode.

유니버설 리스너는 최장 매치 URL 프레픽스에 근거한 사용자-모드 "작업자 프로세스"에 요청을 더 디스패칭(dispatch)할 수 있다. 이들 사용자-모드 애플리케이션은 코어 리스너 컴포넌트로부터 완벽한 아이솔레이션을 갖는다. 작업자 프로세스는 "UL API"를 사용하여 요청을 수신 및 응답할 수 있다. 또한, 작업자 프로세스는 URL 네임스페이스의 멀티플 부분을 서비싱한다. 하나 이상의 작업자 프로세스("가든")는 증가된 스케일링가능성, 이용가능성, 및 인트라-애플리케이션 아이솔레이션을 위한 애플리케이션의 동일한 세트를 서비싱한다.The universal listener can further dispatch the request to a user-mode "worker process" based on the longest match URL prefix. These user-mode applications have complete isolation from the core listener components. Worker processes can receive and respond to requests using the "UL API". In addition, the worker process serves multiple parts of the URL namespace. One or more worker processes (“gardens”) serve the same set of applications for increased scalability, availability, and intra-application isolation.

HTTP-서버 프로세스 매니저는 작업자 프로세스를 관리하기 위해 UL과 결합하여 선택적으로 사용될 수 있는 시스템 컴포넌트이다. 프로세스 매니저는 (예를 들어, 들어오는 요청에 의해 트리거링된) 작업자 프로세스의 온-디맨드 론치를 제공한다. 또한, 프로세스 매니저는 누설, 헝 서버 등으로부터 회복하기 위해 작업자 프로세스 "사이클링"(셧다운/리스타트) 및 작업자 프로세스 "헬스 모니터링"을 확립할 수 있다. 사이클링은 수신된 요청의 수, 시간에 의해서 또는 헬스 모니터링의 결과로서 트리거링될 수 있다. 더 나아가, 프로세스 매니저는 지속하는 구성 및 제어 및 구성을 위한 관리 인터페이스를 제공할 수 있다.The HTTP-server process manager is a system component that can optionally be used in conjunction with the UL to manage worker processes. The process manager provides on-demand launch of worker processes (eg triggered by incoming requests). In addition, the process manager may establish worker process "cycling" (shutdown / restart) and worker process "health monitoring" to recover from leaks, hung servers, and the like. Cycling can be triggered by the number, time of requests received, or as a result of health monitoring. Furthermore, process managers can provide management interfaces for ongoing configuration and control and configuration.

일실시예에 있어서, HTTP 클라이언트는 커널 모드에서 구현된다. 커널 모드에서 구현하는 이유는 1)성능; 2) 커널 컴포넌트와의 통신; 및 3)리스너/토커 통합을 포함한다. 리스너/토커 통합은 성능 최적화 및 공유된 구현을 포함한다.In one embodiment, the HTTP client is implemented in kernel mode. Reasons to implement in kernel mode include: 1) performance; 2) communication with kernel components; And 3) listener / talker integration. Listener / talker integration includes performance optimization and shared implementation.

메시징 시스템은 선택적으로 HTTP 프로토콜 확장을 구현할 수 있고 리스너 및 토커 구현 모두에서 확립되는 것을 지원한다. 하나의 확장은 하이 볼륨 B2B 시나리오에서 특히 가치있을 수 있는 더 효율적인 접속 멀티플렉싱을 지원하도록 HTTP 접속 관리를 강화하는 "웹 먹스"와 관련된다.The messaging system can optionally implement an HTTP protocol extension and supports being established in both listener and talker implementations. One extension involves "web muxes" that enhance HTTP connection management to support more efficient connection multiplexing, which can be particularly valuable in high volume B2B scenarios.

상기한 바와 같이, 메시징 컴포넌트(160)는 HTTP를 포함하는 임의의 다양한 트랜스포트를 사용하여 효율적이고 신뢰할만한 메시징을 제공한다. 메시징 컴포넌트(160)는 정보를 패싱하도록 다른 테크놀로지 플랫폼 컴포넌트에 의해 사용된다. 메시징 컴포넌트(160)는 개발자가 애플리케이션을 쓸 수 있고 본 발명과 연관된 다른 특성 및 메시징 서비스의 전반적인 아키텍처를 이용할 수 있는 표준 인터페이스를 확립한다. As noted above, messaging component 160 provides efficient and reliable messaging using any of a variety of transports, including HTTP. Messaging component 160 is used by other technology platform components to pass information. Messaging component 160 establishes a standard interface that allows developers to write applications and to take advantage of the overall architecture of messaging services and other features associated with the present invention.

H. 기억장치H. Memory

분산 컴퓨팅 서비스 플랫폼(155)의 기억장치 컴포넌트(145)를 설명함에 있어서, "데이터 엔진"이라는 용어는 범용 또는 전용 컴퓨팅 디바이스에 의해서 액세스될 수 있는 데이터 구조 또는 컴퓨터-실행가능한 명령어의 형식으로 소망 프로그램 코드 민즈를 운반 또는 기억하도록 사용될 수 있는 임의의 매체를 말한다.In describing the storage component 145 of the distributed computing services platform 155, the term “data engine” is a desired program in the form of a data structure or computer-executable instructions that can be accessed by a general purpose or dedicated computing device. It refers to any medium that can be used to carry or store code mints.

데이터 엔진은 디바이스의 많은 타입과 연관될 수 있다. 예로써, 데이터 엔진은 임의의 클라이언트 디바이스(110; 도 1과 같이 결합되어 상기된 데스크톱 PC, 랩탑 컴퓨터, 퍼스널 디지털 어시스턴트(PDA), 셀룰러 전화기, 페이저 클라이언트 등)와 연관될 수 있다. 또한 데이터 엔진은 예로써 애플리케이션, 오디오, 데이터베이스, 팩스, 파일, 인트라넷, 메일, 머천트, 모뎀, 네트워크 액세스, 프린트, 프록시, 원격 액세스, 전화, 터미널, 비디오, 또는 웹 서버 등처럼 서버 디바이스(140)와 연관될 수 있다. 이들 서버는 서버 연합(120)에 위치될 수 있다.Data engines can be associated with many types of devices. By way of example, the data engine may be associated with any client device 110 (such as a desktop PC, laptop computer, personal digital assistant (PDA), cellular telephone, pager client, etc., as described above in conjunction with FIG. 1). The data engine may also be a server device 140, such as an application, audio, database, fax, file, intranet, mail, merchant, modem, network access, print, proxy, remote access, telephone, terminal, video, or web server. May be associated with These servers may be located in server federation 120.

도 7은 데이터 엔진의 사용, 데이터의 액세스가능성, 및 하나 이상의 애플리케이션의 실행을 설명하는, 기억장치 컴포넌트(145)를 위한 전형적인 아키텍처를 도시한다. 기억장치 컴포넌트(145)는 각각의 특정 영역을 이용하는 엔티티의 타입에 따라 일반적으로 특징지어진 3개의 영역으로 분류될 수 있다. 이들 영역은 도 7에 영역(802, 804, 및 806)으로서 도시되어 있다. 예로써, 사용자는 일반적으로 영역(802)을 이용하고, 개발자는 일반적으로 영역(804)을 이용하고, 관리자는 일반적으로 영역(806)을 이용한다.FIG. 7 illustrates a typical architecture for storage component 145, illustrating the use of a data engine, accessibility of data, and execution of one or more applications. The storage component 145 may be classified into three areas that are generally characterized according to the type of entity that uses each particular area. These regions are shown as regions 802, 804, and 806 in FIG. 7. By way of example, a user generally uses area 802, a developer generally uses area 804, and an administrator typically uses area 806.

기억장치 컴포넌트(145)의 파운데이션은 예로써 MICROSOFT® WINDOWS® 운영체제와 같은 운영체제의 파일 시스템이다. 도 8에서, 파일 시스템은 파일 시스템(808)으로서 도시되어 있다.The foundation of the storage component 145 is, for example, a file system of an operating system, such as the MICROSOFT® WINDOWS® operating system. In FIG. 8, the file system is shown as file system 808.

데이터 엔진(810)은 기억장치 컴포넌트의 핵심이다. 바람직한 실시예에 있어서, 데이터 엔진(810)은 마이크로소프트사로부터의 SQL 서버에 근거한 SQL 서버 기억장치 엔진일 수 있다. 예로써 마이크로소프트사로부터의 교환 서버에 근거한 교환 데이터 모델(도시되지 않음)과 같이, 예로써 메시징 데이터 모델(이-메일, 캘린더, 그룹 생산성), 관계 데이터 모델, XML 데이터 모델과 같은 다양한 데이터 모델이 데이터 엔진(810)의 상위에 빌딩되어 있다. 데이터 엔진은 가장 효율적인 포맷으로 데이터를 기억한다. 데이터 엔진의 상위에 레이어링된 데이터 모델 또는 엔진은 어떻게 기억된 데이터에 액세스하고 코렉트 뷰를 개발자에게 제시하는지를 이해한다. 데이터는 예로써 테이블, 계층구조, 또는 일련의 네임/값 페어와 같은 많은 포맷으로 제시될 수 있다. 데이터 모델은 하나 이상의 엔진을 포함할 수 있다. 예로써, XML 데이터 모델은 XML 엔진(812)을 포함한다. 유사하게, 관계 데이터 모델은 관계 엔진(814)을 포함한다.The data engine 810 is the heart of the storage component. In a preferred embodiment, the data engine 810 may be a SQL server storage engine based on a SQL server from Microsoft Corporation. For example, various data models such as messaging data models (e-mail, calendar, group productivity), relational data models, XML data models, such as exchange data models (not shown) based on exchange servers from Microsoft. It is built on top of this data engine 810. The data engine stores the data in the most efficient format. A data model or engine layered on top of the data engine understands how to access the stored data and present the correct view to the developer. The data can be presented in many formats such as, for example, tables, hierarchies, or a series of name / value pairs. The data model may include one or more engines. By way of example, the XML data model includes an XML engine 812. Similarly, the relationship data model includes a relationship engine 814.

개발자는 데이터베이스 프로그래밍 언어(DBPL) 테크놀로지를 사용하여 공통 문의 시스템을 통하여 다양한 데이터 모델과 통신한다. DBPL 테크놀로지는 시스템과 통신하기 위해 애플리케이션 프로그램에 의해 사용되는 포맷인 데이터 액세스 애플리케이션 프로그램 인터페이스(API; 816)를 포함한다. 포맷은 실행을 위해 요구되는 서브루틴에 링크를 제공하는 함수 호출을 사용한다. 바람직한 실시예에 있어서, DBPL 테크놀로지는 XML(XML 818)에 근거하고, 관계 모델(관계 820)을 사용할 수 있고, 오브젝트 테크놀로지(오브젝트 822)를 이용한다.Developers use Database Programming Language (DBPL) technology to communicate with various data models through a common query system. DBPL technology includes a data access application program interface (API) 816, which is a format used by application programs to communicate with a system. The format uses a function call that provides a link to the subroutine required for execution. In a preferred embodiment, DBPL technology is based on XML (XML 818), can use a relational model (relationship 820), and uses object technology (object 822).

영역(802)으로서 도시된 상위 레이어는 사용자/소비자에 의해 사용되는 다양한 애플리케이션(840a, 840b 등)을 포함한다. 애플리케이션은 예를 들어 문서, 메일, 캘린더링 아이템, 콘택트, 스톡 포트폴리오, 고객, 오더, 미디어 기반 제품 카탈로그 등을 통합시킨다. 애플리케이션은 다양한 데이터 모델의 상위에 있고 특정 프로토콜(824)을 사용하여 시스템과 토킹한다. 바람직한 실시예에 있어서, 프로토콜(824)은 심플 오브젝트 액세스 프로토콜(SOAP; 824)이다.The upper layer, shown as area 802, includes various applications 840a, 840b, etc. used by the user / consumer. The application integrates documents, mail, calendaring items, contacts, stock portfolios, customers, orders, media-based product catalogs, for example. The application sits on top of various data models and talks to the system using specific protocols 824. In a preferred embodiment, the protocol 824 is a simple object access protocol (SOAP) 824.

바람직한 실시예에 있어서, 기억장치 컴포넌트(145)의 컴포넌트는 통합 테크놀로지로서 XML에 근거하고 있어서 데이터의 모든 타입이 XML 문서로서 처리된다. 본 발명의 분산 컴퓨팅 서비스 플랫폼(115)과 연관된 통신 및 서버 연합(120)은 XML 파운데이션상에 빌딩된다. 메시지, 방법 호출, 오브젝트 기술, 및 데이터 엔진 모두 XML을 사용한다. 문의 언어는 계층구조상에서 작업하고 계층구조적인 XML을 리턴한다. 기억장치 컴포넌트(145)는 XML에 근거되어 있기 때문에, 기억장치 및 문의 오퍼레이션은 태뷸러 포맷으로부터 문서까지 전체 데이터 스펙트럼에서 동일하다.In the preferred embodiment, the components of the storage component 145 are based on XML as integrated technology so that all types of data are processed as XML documents. The communication and server federation 120 associated with the distributed computing services platform 115 of the present invention is built on an XML Foundation. Messages, method calls, object descriptions, and data engines all use XML. The language of the statement works on the hierarchy and returns the hierarchical XML. Because storage component 145 is based on XML, storage and query operations are the same in the entire data spectrum from tabular format to document.

기억장치 컴포넌트(145)는 여기서 "메가-스토어"라 명명된 기억장치 메카니즘을 인에이블하는 키 컴포넌트이다. 메가-스토어에서, 도 1의 서버 연합(120)은 최종-사용자 뷰포인트로부터 통합 기억장치 메카니즘으로서 액팅한다. 메가-스토어는 이하 시나리오에 의해 예시된다. 사용자가 PC로 가서 로그온한다. 이러한 로그온은 보안 컴포넌트(165)에 의해 제공된 인터넷 인증 서비스로 사용자를 인증한다. 사용자가 인증된 후, 디렉토리 컴포넌트(150)는 사용자의 정보가 어디에 기억되어 있는지를 결정하도록 사용될 수 있다. 그 후 기억장치 컴포넌트(145)는 데이터를 검색하여 그것을 사용자 인터페이스 컴포넌트(140)에 제공한다. 따라서, 개인화된 정보는 부가적인 사용자 개입을 요구하지 않고 히스토리 리스트, 즐겨찾기 리스트, 수신함 등과 같은 사용자 인터페이스에 나타난다. 따라서, 사용자가 디바이스로부터 디바이스로 이동할 때, 그 데이터 및 애플리케이션을 그들을 따른다.Storage component 145 is a key component that enables a storage mechanism named herein "mega-store". In a mega-store, the server federation 120 of FIG. 1 acts as an integrated storage mechanism from the end-user viewpoint. Mega-stores are illustrated by the following scenario. The user goes to the PC and logs on. This logon authenticates the user with an Internet authentication service provided by security component 165. After the user is authenticated, directory component 150 may be used to determine where the user's information is stored. Storage component 145 then retrieves the data and provides it to user interface component 140. Thus, personalized information appears in user interfaces such as history lists, favorites lists, inboxes, etc. without requiring additional user intervention. Thus, when a user moves from device to device, they follow their data and applications.

메가-스토어는 최종-사용자 컴포넌트 및 개발자 컴포넌트를 포함한다. 최종 사용자는 그들이 사이트에 로그온하는 때 그들 퍼스널 데이터 및 정보가 그들을 위해 자동으로 액세스가능하게 기억되어 있다는 것을 간단히 이해한다. 그러한 바와 같이, 사용자는 그들 퍼스널 데이터 및 정보가 예를 들어 서버 연합(120)내의 어떤 서버 또는 쿠키에 기억되어 있는지를 이해하거나 관여할 필요가 없다. 오히려, 사용자는 그들이 어디에 가던지, 그것이 집이건, 작업장이건, 또는 그밖의 어디던간에 그들의 퍼스널 데이터 및 정보는 용이하게 액세스될 수 있음을 이해하기만 하면 된다.Mega-store includes end-user components and developer components. End users simply understand that when they log on to the site their personal data and information are automatically accessible and stored for them. As such, the user does not need to understand or engage in what servers or cookies their personal data and information are stored, for example, in server federation 120. Rather, the user only needs to understand that their personal data and information can be easily accessed wherever they go, whether at home, at work, or elsewhere.

I. I. 디렉토리Directory

통상적으로 디렉토리는 실제로 데이터가 기업의 도처에 종종 흩어져 있을 때 데이터가 편성된 구조에 분류되어 있는 일루젼을 생성하는 엔터프라이즈-와이드 명명 기관(authority)이다. 디렉토리가 포함하는 데이터의 예는 엔티티(예를 들어, 사용자, 컴퓨터, 및 사용자 그룹)에 관한 콘택트 정보와 같은 주소 북 데이터, 엔티티를 인증하도록 사용되는 인증 데이터, 및 엔티티마다의 베이시스상에서 오브젝트로의 액세스를 제어하도록 사용되는 권한부여 데이터를 포함한다. 디렉토리의 2 종류는 적응 디렉토리 및 메타-디렉토리를 포함한다.Typically, a directory is an enterprise-wide naming authority that creates an illusion that data is sorted into an organized structure when data is often scattered throughout the enterprise. Examples of data contained in the directory include address book data, such as contact information about an entity (eg, user, computer, and user group), authentication data used to authenticate the entity, and a basis from entity to object to object. Contains authorization data used to control access. Two kinds of directories include adaptive directories and meta-directories.

적응 디렉토리는 하나 이상의 특정 목적에 적응되기도 하는 데이터 스토어이다. 디렉토리 기능은 애플리케이션에 특정되기도 한다. 적응 디렉토리내에 기억된 정보는 권위있는 데이터 또는 "참" 데이터(즉, 다른 소스로부터 동기화되지 않은 데이터)이지만, 적응 디렉토리는 또한 중복 데이터(즉, 다른 소스로부터 동기화된 데이터)를 기억할 수 있다. 적응 디렉토리의 예는 이하 더 설명될 것이다.An adaptation directory is a data store that is also adapted to one or more specific purposes. Directory functionality may be application-specific. The information stored in the adaptation directory is either authoritative data or "true" data (ie, data that is not synchronized from other sources), but the adaptation directory can also store duplicate data (ie, data synchronized from other sources). Examples of adaptation directories will be described further below.

메타-디렉토리는 적응 또는 다른 메타-디렉토리에서 발견된 오브젝트의 서브셋을 포함 또는 유지하는 데이터 스토어이다. 각각의 오브젝트에 대하여, 메타-디렉토리는 그 오브젝트의 속성의 서브셋을 유지한다. 또한 메타-디렉토리는 오브젝트에 대한 더 완벽한 정보를 포함하는 디렉토리에 대한 레퍼런스를 포함한다. 메타-디렉토리의 예 또한 이하 설명될 것이다.A meta-directory is a data store that contains or maintains a subset of objects found in an adaptation or other meta-directory. For each object, the meta-directory maintains a subset of the attributes of that object. The meta-directory also contains a reference to a directory that contains more complete information about the object. Examples of meta-directories will also be described below.

스키마를 잘 정의한 적응 및 메타-디렉토리는 스키마를 잘 정의하지 않은 그들 디렉토리보다 더 용이하게 동기화된다. 적응 및 메타-디렉토리를 동기화하는 것은 메타-디렉토리내에 기억된 정보가 다양한 적응 디렉토리내의 관련 엔트리 사이의 연관에 관련되기도 하기 때문에 유용하다. 종종, 메타-디렉토리내에 기억된 데이터는 어느 누구에 의해서라도 이용될 수 있거나 읽혀질 수 있다. 그러나, 어떤 경우에 있어서, 더 많은 보안이 요구되고 메타-디렉토리로의 액세스는 더 제어된다.Well-defined schema and meta-directories are more easily synchronized than those directories with poorly defined schema. Synchronizing the adaptation and meta-directories is useful because the information stored in the meta-directory may also be related to the association between related entries in the various adaptation directories. Often, data stored in meta-directories can be used or read by anyone. In some cases, however, more security is required and access to the meta-directory is more controlled.

전 서버 연합(120)을 통하여 협조 및 통신을 가능하게 하기 위해서, 바람직하게는 디렉토리 컴포넌트(150)는 메타-디렉토리 사이에서 동기화된 포탈마다 또는 웹 사이트마다의 메타-디렉토리를 제공한다. 디렉토리 컴포넌트(150)는 적응 디렉토리 및 메타-디렉토리 모두의 사용을 포함한다.In order to enable coordination and communication through the entire server federation 120, the directory component 150 preferably provides a meta-directory per portal or per web site synchronized between meta-directories. Directory component 150 includes the use of both adaptive directories and meta-directories.

도 8은 본 발명에 따른 디렉토리 컴포넌트(150)를 도시한다. 디렉토리 컴포넌트(150)는 개인 또는 엔티티에 특정하고 여기서 "나의 상태" 디렉토리라 언급되는 적응 디렉토리(905)를 포함한다. 나의 상태 적응 디렉토리(905)는 개인 또는 엔티티에 대한 이름, 주소, 전화 등과 같은 정보를 기억하도록 사용된다.8 illustrates a directory component 150 in accordance with the present invention. Directory component 150 includes an adaptation directory 905 that is specific to an individual or entity and referred to herein as a "my state" directory. My state adaptation directory 905 is used to store information such as name, address, phone, etc. for an individual or entity.

개인이 하나 이상의 신원(예를 들어, 가정의/개인적인 신원 및 직장의/직업적인 신원)을 가질 수 있기 때문에, 나의 상태 디렉토리는 임의의 소정 사용자에 대하여 단 하나의 신원 이상에 대한 정보를 포함할 수 있다. 예를 들어, 사용자는 가정 또는 개인적인 신원에 특정한 적응 디렉토리 및 사용자의 직장 또는 직업적인 신원에 특정한 적응 디렉토리를 가질 수 있다. 가정에서의 신원에 특정한 적응 디렉토리의 예가 도 8에 홈 프레즌스 디렉토리(910)로서 도시되어 있다.Since an individual can have more than one identity (eg, family / personal and workplace / occupational identity), my status directory may contain information about more than one identity for any given user. Can be. For example, a user may have an adaptation directory specific to a home or personal identity and an adaptation directory specific to a user's work or professional identity. An example of an adaptation directory specific to an identity at home is shown in FIG. 8 as the home presence directory 910.

이들 적응 디렉토리(905 및 910)는 스키마에 따라 구조화된다. 스키마 컴포넌트(170)에 의해 제공된 서비스의 사용을 통하여, 외부 서비스 및 애플리케이션은 이들 적응 디렉토리에 액세스 및 확장할 수 있다. 보안 컴포넌트(165)와 조합하여 스키마는 또한 사용자가 다른 엔티티로 하여금 적응 디렉토리의 특별 또는 특정 부분에 액세스하게 하도록 한다. 이벤트 컴포넌트(155) 및 메시징 컴포넌트(160)의 사용을 통하여, 나의 상태 디렉토리는 또한 엔티티와 나의 상태 디렉토리 사이의 관계를 종결할 수 있을 뿐만 아니라 나의 상태 디렉토리에 대한 변경 및 업데이트를 다른 엔티티에 알릴 수 있다. 또한 디렉토리 컴포넌트(150)는 예를 들어 기업 포탈(915) 및 포탈(920)과 같은 메타-디렉토리를 갖는 포탈을 포함한다. 일예에 있어서, 포탈은 인더스트리 와이드 웹사이트로서 뷰잉될 수 있다. 따라서, 헬스케어 포탈, 쇼핑 포탈, 뮤직 포탈 등이 존재한다. 각각의 포탈은 관련 비즈니스 및 엔티티로부터의 정보를 유지하기 위해 하나 이상의 메타-디렉토리를 구현한다. 예를 들어, 헬스케어 포탈의 메타-디렉토리의 몇몇은 의사, 클리닉, 조제, 및 환자(그에 국한되는 것음 아님)를 포함하는 관련 엔티티 또는 사람에 관한 정보를 수용하고 있을 것이다. 포탈 메타-디렉토리는 각각의 인증된 사용자에 대한 오브젝트를 유지 또는 기억할 것이다. 각각의 오브젝트는, 예를 들어, 이들 메타-디렉토리에 액세스하는 사용자가 종종 인증되어 있기 때문에 사용자에 의해 제공된 권한부여 정보를 수용할 수 있다. 또한 포탈은 다른 포탈과 적응 디렉토리 사이의 관계를 동기화한다. 예를 들어, 의사의 적응 디렉토리는 그 각각의 메타-디렉토리를 통하여 또는 헬스케어 포탈에 의해서 환자의 적응 디렉토리와 동기화될 수 있다.These adaptation directories 905 and 910 are structured according to the schema. Through the use of services provided by schema component 170, external services and applications can access and extend these adaptation directories. In combination with security component 165, the schema also allows a user to have other entities access special or specific portions of the adaptation directory. Through the use of event component 155 and messaging component 160, my state directory can also terminate the relationship between an entity and my state directory, as well as notify other entities of changes and updates to my state directory. have. Directory component 150 also includes portals with meta-directories such as, for example, enterprise portal 915 and portal 920. In one example, the portal can be viewed as an industry wide website. Thus, there exists a healthcare portal, a shopping portal, a music portal, and the like. Each portal implements one or more meta-directories to maintain information from related business and entities. For example, some of the healthcare portal's meta-directories may contain information about related entities or people, including but not limited to doctors, clinics, pharmacies, and patients. The portal meta-directory will maintain or store an object for each authenticated user. Each object may, for example, accept authorization information provided by the user because the user accessing these meta-directories is often authenticated. Portals also synchronize the relationships between other portals and the adaptation directory. For example, the physician's adaptation directory may be synchronized with the patient's adaptation directory via its respective meta-directory or by a healthcare portal.

바람직하게는 디렉토리 컴포넌트(150)는 다양한 엔터프라이즈를 포함한다. 명확을 위해, 도 9에는 이들 엔터프라이즈 중 하나(즉, 엔터프라이즈 925)만이 도시되어 있다. 엔터프라이즈(925)는 지금의 엔터프라이즈에 의해 통상 수용된 것과 같이 내부 메타-디렉토리(930) 및 내부 적응 디렉토리(935)를 포함한다. 따라서, 엔터프라이즈 요구는 디렉토리 컴포넌트(150)에 의해 제공된 방대한 디렉토리 서비스내로 탭핑하기 위해서 엔터프라이즈 포탈(925)과 같은 포탈을 사용하는 것으로 단지 마이그레이팅할 필요가 있다. 마이그레이팅할 내부 엔터프라이즈가 엔터프라이즈 포탈이 되게 함으로써, 제 3자는 엔티티의 정보에 더 쉽게 액세스할 수 있을 것이다.Directory component 150 preferably includes various enterprises. For clarity, only one of these enterprises (ie, enterprise 925) is shown in FIG. 9. Enterprise 925 includes an internal meta-directory 930 and an internal adaptation directory 935 as commonly accepted by today's enterprise. Thus, enterprise needs only need to be migrated by using a portal such as enterprise portal 925 to tap into the vast directory services provided by directory component 150. By making the internal enterprise to be migrated an enterprise portal, third parties will be able to access the entity's information more easily.

또한, 디렉토리 컴포넌트(150)는 인터넷 메타-디렉토리 서비스(940)를 포함한다. 인터넷 메타-디렉토리 서비스는 특정 스키마를 갖는 문서 또는 데이터를 찾으려고 인터넷을 검색할 수 있다. 이러한 디렉토리는 회사가 판매하는 제품, 회사가 제공하는 서비스 등과 같은 정보를 포함할 수 있다. 각각의 문서(또는 그 서브셋)는 문서의 URL과 함께 메타-디렉토리내로 편입된다. 따라서 애플리케이션 및 서비스는 그들을 필요한 정보 또는 서비스로 포인팅하도록 인터넷 메타-디렉토리(940)에 액세스할 수 있다.Directory component 150 also includes Internet meta-directory service 940. Internet meta-directory services can search the Internet to find documents or data with a particular schema. Such a directory may include information such as products sold by the company, services provided by the company, and the like. Each document (or a subset thereof) is incorporated into the meta-directory along with the document's URL. Applications and services may thus access the Internet meta-directory 940 to point them to the information or services they need.

디렉토리 컴포넌트(150)는 원할 때 포탈에 인증 서비스를 제공하는 (보안 컴포넌트(165)에 의해 제공된) 인터넷 인증 서비스(945)를 사용할 수 있다. 인터넷 인증 서비스(945)의 예는 마이크로소프트사에 의해 제공된 패스포트라고 불린다.Directory component 150 may use Internet authentication service 945 (provided by security component 165) to provide an authentication service to the portal as desired. An example of an Internet authentication service 945 is called a passport provided by Microsoft Corporation.

도 9는 다양한 적응 및 메타-디렉토리 사이의 대화의 예이다. 이러한 예는 본 발명의 범위를 제한하는 것이 아니라, 본 발명에 의해 가능하게 된 기능의 일부의 예이다. 이러한 예는 새로운 고용주와 함께 일을 시작하는 새로운 종업원을 예시한다. 고용주는 고용주 메타 디렉토리(1024)를 수용하고 있는 엔터프라이즈 포탈(1022)을 갖는다. 종업원이 작업을 시작할 때, 종업원 레코드 디렉토리(1002)는 본 예에서 고용주에 의해 또한 유지되어 있는 적응 디렉토리(1000)에 부가된다. 따라서, 종업원 레코드 디렉토리(1002)는 스키마에 따라 종업원에 대한 권위있는 데이터를 수용하고 있는 적응 디렉토리이다.9 is an example of a conversation between various adaptations and meta-directories. These examples do not limit the scope of the present invention, but are examples of some of the functions made possible by the present invention. This example illustrates a new employee starting work with a new employer. Employer has enterprise portal 1022 which houses employer meta directory 1024. When an employee starts work, an employee record directory 1002 is added to the adaptation directory 1000, which is also maintained by the employer in this example. Thus, employee record directory 1002 is an adaptation directory that holds authoritative data for employees according to a schema.

종업원 레코드 디렉토리(1002)는 종업원을 고용주 메타 디렉토리(1024)에 부가하고 많은 속성을 고용주 메타 디렉토리(1024)에 프로모팅한다. 이들 디렉토리 사이의 정보는 자동화된 속성 어그리먼트(AAA)에 의해 동기화된다. 따라서, 고용주 메타 디렉토리(1024)는 종업원 레코드 디렉토리(1002)내에 기억된 권위있는 데이터에 관련된 리던던트 데이터를 수용하고 있는 연관된 속성(1020)을 갖는 종업원 오브젝트(1018)를 갖는다. 고용주 메타 디렉토리(1024)는 또한 적응 디렉토리인 워크 프레즌스 디렉토리(1004), 워크 캘린더 디렉토리(1010), 및 메일 디렉토리(도시되지 않음)를 셋업한다. Employee record directory 1002 adds employees to employer meta directory 1024 and promotes many attributes to employer meta directory 1024. Information between these directories is synchronized by automated attribute aggregation (AAA). Accordingly, employer meta directory 1024 has employee object 1018 having associated attributes 1020 that contain redundant data related to authoritative data stored in employee record directory 1002. Employer meta directory 1024 also sets up an adaptation directory, work presence directory 1004, work calendar directory 1010, and a mail directory (not shown).

다음으로, 새로운 종업원은 보안 뱃지를 얻기 위해서 보안 사무소를 방문한다. 그는 예를 들어 패스포트 키를 갖고 있는 또 다른 적응 디렉토리인 이전부터 존재하고 있는 인증 디렉토리(1008)를 등록하기 위해 퍼스널 디지털 어시스턴트(PDA) 또는 다른 디바이스를 사용한다. 그 후 인증 디렉토리(1008)는 고용주 메타 디렉토리(1024)내에서 종업원의 신원 또는 오브젝트(1018)에 링크된다.Next, the new employee visits the security office to obtain a security badge. He uses a personal digital assistant (PDA) or other device to register a previously existing authentication directory 1008, which is another adaptation directory with a passport key, for example. The authentication directory 1008 is then linked to the employee's identity or object 1018 in the employer meta directory 1024.

종업원은 주소, 전화 등과 같은 퍼스널 정보로 고용주를 업데이트해 두도록 PDA 디바이스에 명령한다. 이것은 나의 상태 디렉토리(1006)와 고용주 메타 디렉토리(1024) 사이에 AAA를 확립함으로써 달성된다. 나의 상태 디렉토리(1006)는 역시 적응 디렉토리이다. 이러한 접속으로 인해, 종업원의 PDA는 워크 프레즌스 디렉토리(1004) 프레즌스 서버 및 그 프레즌스 서버와의 인터페이스 또는 종업원의 유니버설 수신함으로의 액세스를 갖는 레지스터를 찾기 위해 고용주 메타-디렉토리(1024)를 사용할 수 있다. 이들 연관 및 접속이 이루어지고 나면, 종업원은 헬스 프로바이더를 선택하도록 종업원에게 요구하는 종업원 레코드 디렉토리(1002)로부터 이메일을 수신할 수 있다. 종업원의 선택은 고용주 메타-디렉토리(1024)내에 기억된다. 다음으로, 고용주 메타 디렉토리(1024)는 종업원에 대한 엔트리를 생성하도록 헬스 프로바이더 포탈(1016) 및 헬스 프로바이더 메타 디렉토리(1026)와 접속한다. 따라서, 헬스 프로바이더 메타-디렉토리는 종업원에 대한 오브젝트(1012) 및 속성(1014)을 갖는다. 고용주 메타-디렉토리(1024)와 헬스 프로바이더 메타-디렉토리(1026) 사이의 AAA 어그리먼트는 다른 아이템을 수용할 수 있다. 예를 들어, 어그리먼트는 헬스 프로바이더 메타 디렉토리에 변경을 포워딩하도록 고용주 메타-디렉토리에 의한 어그리먼트뿐만 아니라 주기적인 감사를 포함할 수 있다.The employee instructs the PDA device to update the employer with personal information such as address, phone, and the like. This is accomplished by establishing an AAA between my state directory 1006 and the employer meta directory 1024. My state directory 1006 is also an adaptation directory. This connection allows an employee's PDA to use the employer meta-directory 1024 to find a work presence directory 1004 that has a presence server and an interface with that presence server or access to an employee's universal inbox. After these associations and connections are made, the employee can receive an email from an employee record directory 1002 that asks the employee to select a health provider. The employee's selection is stored in employer meta-directory 1024. Next, employer meta directory 1024 connects with health provider portal 1016 and health provider meta directory 1026 to create an entry for the employee. Thus, the health provider meta-directory has an object 1012 and attributes 1014 for the employee. The AAA aggregation between employer meta-directory 1024 and health provider meta-directory 1026 may accommodate other items. For example, the aggregation may include periodic audits as well as aggregation by the employer meta-directory to forward changes to the health provider meta directory.

헬스 프로바이더 메타 디렉토리(1026)는 종업원에게 프라이머리 카 프로바이더를 선택하도록 요구하는 웹 페이지를 종업원에게 송신한다. 대답으로, 종업원은 의사의 리스트를 공급할 것을 헬스 프로바이더 메타-디렉토리(1026)에 요구한다. 의사가 선택된 후, 헬스 프로바이더 메타-디렉토리(1026)는 클리닉 또는 의사 포탈에 콘택트하고 클리닉 메타 디렉토리(1028)에 종업원을 위한 엔트리를 생성할 것이다. 클리닉 메타 디렉토리(1028)는 종업원의 메디칼 레코드를 요청하는 이메일을 종업원에게 송신한다. 종업원은 나의 상태 디렉토리(1006)의 메디칼 정보 부분만을 클리닉 메타 디렉토리(1028)에 릴리스할 수 있다. 이것은 종업원 및 클리닉 모두가 레코드의 완벽한 세트를 모두 유지하는 것을 가능하게 한다. 동시에, 종업원은 서로 주고받을 수 있는 의사와 그들 캘린더를 공유하는 것을 승인할 수 있다. 마지막으로, 클리닉 메타-디렉토리(1028)는 그들의 상호 액세스가능한 캘린더를 사용하여 종업원과의 첫 약속을 스케쥴링하도록 워크플로 서비스를 시그날링할 수 있다.The health provider meta directory 1026 sends an employee a web page asking the employee to select a primary car provider. In response, the employee asks the health provider meta-directory 1026 to supply a list of doctors. After the physician is selected, the health provider meta-directory 1026 will contact the clinic or physician portal and create an entry for the employee in the clinic meta directory 1028. The clinic meta directory 1028 sends an email to the employee requesting the employee's medical record. An employee can release only the medical information portion of my status directory 1006 to the clinic meta directory 1028. This allows both the employee and the clinic to maintain both complete sets of records. At the same time, employees can approve sharing their calendars with doctors who can exchange each other. Finally, the clinic meta-directory 1028 may signal the workflow service to schedule their first appointment with the employee using their mutually accessible calendar.

다시, 따라서 적응 디렉토리에 의해 기억된 권위있는 정보는 본 예에서 메타-디렉토리에 의해 링크된다. 클리닉, 고용주, 및 헬스 프로바이더는 또한 다양한 적응 디렉토리를 갖는 것으로 이해된다. 그들 디렉토리 및 메타-디렉토리와의 그 대화는 도 10에 도시되지 않았다. 메타 디렉토리는 권위있는 정보에 관련된 힌트 정보 또는 리던던트 정보를 기억할 수 있다. 적응 디렉토리의 스키마는 다른 메타 디렉토리가 적응 디렉토리의 특정 부분에 액세스하게 할 수 있다. 권위있고 리던던트 정보는 데이터가 최신인 것을 보증하도록 동기화된다.Again, the authoritative information stored by the adaptation directory is linked by the meta-directory in this example. Clinics, employers, and health providers are also understood to have various adaptation directories. The conversation with those directories and meta-directories is not shown in FIG. The meta directory may store hint information or redundant information related to authoritative information. The schema of the adaptation directory may allow other meta directories to access certain portions of the adaptation directory. Authoritative and redundant information is synchronized to ensure that the data is up to date.

도 9에 있어서, 적응 디렉토리(1000)내의 적응 디렉토리의 각각은 특정 목적 또는 목적의 세트를 갖는다. 종업원 레코드 디렉토리(1002)는 직업 신원을 표시하는 반면, 나의 상태 디렉토리(1006)는 퍼스널 또는 홈 신원을 표시한다. 인증 디렉토리(1008) 적응 디렉토리는 개인을 인증하는 데 사용되는 패스워드 등과 같은 정보를 수용할 수 있다. 워크 캘린더 디렉토리(1010)는 캘린더 또는 콘택트 리스트이다. 본 예에서 도시된 바와 같은 적응 및 메타 디렉토리를 사용하는 것은 엔티티 사이의 고급 통신을 가능하게 한다. 본 예에 있어서 종업원이 각각의 개별적인 포탈과 대화하도록 요구되지 않기 때문에 통신은 강화된다. 디렉토리 컴포넌트(150)는 메시징 컴포넌트(160)를 경유하여 그들이 모두 접속 및 링크되어 있기 때문에 통신이 자동으로 일어나게 한다.In FIG. 9, each of the adaptation directories in the adaptation directory 1000 has a specific purpose or set of purposes. The employee record directory 1002 indicates a job identity, while my status directory 1006 indicates a personal or home identity. Authentication Directory 1008 The adaptation directory can accommodate information such as passwords used to authenticate individuals. Work calendar directory 1010 is a calendar or contact list. Using an adaptation and meta directory as shown in this example enables advanced communication between entities. In this example, communication is enhanced because employees are not required to talk to each individual portal. Directory component 150 causes communication to occur automatically because they are all connected and linked via messaging component 160.

J. 보안J. Security

상기한 바와 같이, 지난 몇년동안 소비자 및 비즈니스를 막론하고, 인터넷-기반 서비스의 사용에서의 연관된 극적 증가와 함께, 급속도로 인터넷을 채택하여 왔다. 본 발명은 증가된 웹 사이트간 통신과 함께, 더 큰 인터넷 커넥티비티 및 협조를 허용한다. 불행하게도, 인터넷 및 인터넷-기반 서비스의 사용자의 수가 증가함에 따라, 소비자 및 비즈니스는 보안 및 프라이버시 문제에 대하여 점점 더 걱정하게 된다. 예를 들어, 많은 소비자 및 비즈니스는 소비자 및 비즈니스 온-라인 액티비티를 상당히 상세히 트랙킹할 수 있는 다양한 인터넷 서비스 프로바이더(ISP)에 의존한다. 또한 많은 소비자는 넓게 변화하는 비즈니스 관계 및 절대적 신뢰(서브스크립션, 트랜션트 트랜잭션, 논)를 갖는 멀티플 서비스 프로바이더를 사용한다. 또한, '항시 온' 인터넷 접속(디지털 서브스크라이버 라인(DSL), 케이블 모뎀), 멀티플 인터넷 케이퍼블 디바이스(퍼스널 컴퓨터(PC), 셀 폰, 퍼스널 디지털 어시스턴트(PDA)), 및 인터넷 대화와 아주 다른 방식으로 서로 대화할 수 있는 멀티플 홈 네트워크 디바이스의 증가하는 사용과 함께, 소비자 및 비즈니스는 더 큰 커넥티비티를 달성하지만, 비양심적인 개인 또는 비즈니스가 퍼스널 및/또는 기밀 정보를 "얻을" 액세스 포인트의 수를 증가시킨다.As noted above, the Internet has been rapidly adopted over the past few years, with associated dramatic increases in the use of Internet-based services, both consumers and businesses. The present invention allows for greater Internet connectivity and cooperation, with increased inter-site communication. Unfortunately, as the number of users of the Internet and Internet-based services increases, consumers and businesses are increasingly worried about security and privacy issues. For example, many consumers and businesses rely on various Internet Service Providers (ISPs) that can track consumer and business on-line activities in considerable detail. Many consumers also use multiple service providers with widely changing business relationships and absolute trust (subscriptions, transactional transactions, and rice fields). In addition, 'always on' Internet access (Digital Subscriber Line (DSL), cable modem), multiple Internet Capable Devices (Personal Computers (PCs), Cell Phones, Personal Digital Assistants (PDAs)), and Internet Conversations With the increasing use of multiple home network devices that can communicate with each other in different ways, consumers and businesses achieve greater connectivity, but the number of access points for unscrupulous individuals or businesses to "get" personal and / or confidential information. To increase.

상기 한계를 최소화하기 위해서, 본 발명은 예를 들어 인증, 프라이버시, 및 방화벽 보안 바운더리와 같은 많은 보안 보호 툴을 제공하는 보안 컴포넌트(165)를 선택적으로 포함한다. 도 10은 본 발명의 보안 컴포넌트(165)의 일실시예의 개략도이다. 도 10의 개략적인 표시는 보안 컴포넌트(165)의 선택적 기능을 예시하는 것이며 여기 포함된 가르침을 고려하여 당업자에 의해 인식될 다른 기능의 적용성을 제한하는 것은 아니다.To minimize the above limitations, the present invention optionally includes a security component 165 that provides a number of security protection tools such as, for example, authentication, privacy, and firewall security boundaries. 10 is a schematic diagram of one embodiment of a security component 165 of the present invention. The schematic representation of FIG. 10 illustrates optional functionality of security component 165 and does not limit the applicability of other functionality to be recognized by those skilled in the art in view of the teachings contained herein.

본 발명의 일 태양에 따라, 보안 컴포넌트(165)는 도 1의 서버 연합(120) 및 클라이언트 디바이스(110)내의 데이터 및 정보에 액세스하는 엔티티의 인증 프로세스를 수행하도록 사용되는 다양한 하드웨어 및/또는 소프트웨어 컴포넌트를 포함하는 인증 모듈(1102)을 포함한다. 엔티티는 예를 들어 엔티티가 소비자-비즈니스이던 또는 비즈니스-비즈니스이던 광범위한 구성 및 트랜잭션 참여자를 포함하는 다수-당사자 대화에 연루될 때 기억된 정보 및 데이터에 액세스할 수 있다.In accordance with one aspect of the present invention, security component 165 may be configured with various hardware and / or software used to perform an authentication process for an entity that accesses data and information within server federation 120 and client device 110 of FIG. 1. An authentication module 1102 that includes the component. An entity can access stored information and data when it is involved in a multi-party conversation involving a wide range of configurations and transaction participants, whether the entity is a consumer-business or a business-business, for example.

일실시예에 있어서, 더 상세히는, 인증 모듈(1102)은 시스템(100)의 다른 사용자 또는 엔티티로부터 엔티티 신원의 은폐(hiding) 또는 "거부(repudiation)"를 방지하면서, 도 2의 페이지 컴포넌트(210), 에미세리 컴포넌트(220), 및/또는 피에프돔 컴포넌트(230)로의 엔티티의 액세스를 제어하는 하드웨어 및/또는 소프트웨어 모듈을 포함한다. 여기서 사용되는 "엔티티"라는 용어는 (개별적인 또는 그룹의) 사용자뿐만 아니라 머신, 권한부여된 소프트웨어 아비터(arbiter), 서버 및 프록시 서비스, 다양한 다른 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트 등을 포함한다.In one embodiment, in more detail, the authentication module 1102 prevents the hiding or "repudiation" of an entity's identity from another user or entity of the system 100, while the page component of FIG. 210, hardware and / or software modules that control access to the entity component 220, and / or the FD dome component 230. The term "entity" as used herein includes not only (individual or grouped) users, but also machines, authorized software arbiters, server and proxy services, various other hardware and / or software modules and components, and the like.

엔티티가 그들이 묘사하고 있는 엔티티인지를 판정하기 위해서, 그것이 소비자이던, 비즈니스이던, 하드웨어 모듈이던, 또는 소프트웨어 모듈이던간에, 각각의 엔티티는 "글로벌 ID"라 불리는 식별자를 가져야 한다. 각각의 글로벌 ID는 사람 또는 다른 엔티티가 취하기로 선택할 수 있는 다양한 "신원" 중 하나에 대응한다. (다른 엔티티를 포함하는) 대부분의 사람들은 비즈니스-관련 액티비티를 수행할 때 사용될 그들의 직업(학생, 어떤 조직의 종업원 등)에 속한 신원 및 다른 대화에 사용될 퍼스널 신원의 최소 2개 신원을 가질 것이다. 부가적인 신원은 사용자가 프라이버시를 유지하거나 그들의 대화의 몇몇과 연관된 보증의 더 높은 레벨에 대한 요구를 설명하기 위해서 이용될 수 있다.To determine whether an entity is the entity they are describing, whether it is a consumer, business, hardware module, or software module, each entity must have an identifier called a "global ID". Each global ID corresponds to one of a variety of "identities" that a person or other entity may choose to take. Most people (including other entities) will have at least two identities that belong to their occupation (students, employees of an organization, etc.) that will be used when performing business-related activities and personal identities that will be used for other conversations. Additional identities can be used to explain the need for a user to maintain a privacy or higher level of assurance associated with some of their conversations.

시스템(100) 및/또는 애플리케이션(200)과 조합하여 보안 컴포넌트(165)는 신원이 사용되는 방법 및 각각의 신원과 연관된 기밀성 및 프라이버시의 레벨에 대한 최종 사용자의 완전한 제어를 허용하는 사용자 경험을 제공하면서, 이들 신원 및 연관 인증 신용보증서를 관리할 것이고 신원이 분리되어 유지됨을 보증한다.In combination with the system 100 and / or the application 200, the security component 165 provides a user experience that allows the end user complete control over how identities are used and the level of confidentiality and privacy associated with each identity. In doing so, they will manage these identity and associated certified credit guarantees and ensure that their identity is kept separate.

이제 도 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)를 가질 수 있고, 그 각각은 그와 연관된 다른 프로파일을 갖는다.Referring now to FIG. 11, a schematic representation of a conversation between a user's global ID and various other exemplary services and information is described. In general, security component 165 may communicate with various global IDs 1220a-1220n owned by various individuals, businesses, machines, and the like. Each global ID 1220a-1220n is used for authentication of an entity accessing a portion of system 100. Global IDs 1220a-1220n are not intended to contain profile properties of the entity they represent. Rather, in one embodiment, the profile is stored using the "My Status" adaptation directory 905 provided by directory component 150. The "My Status" adaptation directory 905 may optionally include various portions indicated by reference numerals 905a-905n. My state adaptation directory 905 provides a place to store user profiles that contain user data according to the grid. In general, each global ID 1220a-1220n provides an index to profile information stored in individual portions of my state service in an application or in a site-specific data store. Thus, an entity may have multiple global IDs 1220a-1220n, each of which has a different profile associated with it.

대안으로, 보안 컴포넌트(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자 비즈니스와 같은(그러나 거기에 국한되는 것은 아님) 그러한 인증서를 발행할 수 있다.Alternatively, in one embodiment of security component 165, each global ID 1220a-1220n may be architecturally referred to herein as a "group membership" service 1224, which may optionally include various sub-parts. It may be associated with another distinct service, and only a portion of the group membership service 1224 is shown and shown by reference numeral 1224c. Sub-part 1224c allows for one global ID, such as global ID 1220b, which will have one or more profiles in the profile list for each category 1226a-1226n of the user. Alternatively, each category 1226a-1226n may include one or more pointers to the requested or defined profile. For example, in a business-business scenario, group membership service 1224 may be used to accommodate a list of authorized buyers that many suppliers may examine. In a cooperative scenario, the group membership service may accommodate project members of another legal entity that is allowed to access project confidential documents. In another example, each global ID 1220a-1220n may be one or more digital signatures, X.509 certificates, extensible markup language (XML) certificates or "licenses" that bind the key to an identity and prevent denial of identity. ", Or other certificate formats. In such cases, various CAs may issue such certificates, such as, but not limited to, Microsoft® Passport, Microsoft® Hotmail, and / or various other third party businesses.

다시 도 10을 참조하면, 본 발명의 또 다른 태양에 따라, 보안 컴포넌트(165)는 권한부여 모듈(1104)을 포함한다. 권한부여 모듈(1104)은 그룹 멤버쉽, 역할, 및 각각의 엔티티의 권리의 델리게이션이 변경될 수 있는 동적 환경에서 인증된 엔티티가 수행할 수 있는 액션을 결정하도록 다양한 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트를 포함한다. 그러한 바와 같이, 보안 컴포넌트(165)의 권한부여 모듈(1104)은 전통적인 "사용자-기반" 허가 모델보다 더 복잡한 방식으로 저작권있는 책, 노래, 및 영화와 같은 "라이센스된 콘텐트" 및 프라이빗 데이터와 같은(그러나 거기에 국한되는 것은 아님) 통제된 자료에 대한 엔티티 사용 제한의 강제를 제어할 수 있다. 또한, 더 넓고 더 유연한 델리게이션 및 권한부여 모듈(1104)의 제어 메카니즘은 권한부여의 전통적인 역할을 확장한다.Referring again to FIG. 10, in accordance with another aspect of the present invention, security component 165 includes an authorization module 1104. Authorization module 1104 provides various hardware and / or software modules and components to determine group memberships, roles, and actions that an authenticated entity may perform in a dynamic environment in which delegation of the rights of each entity may change. It includes. As such, the authorization module 1104 of the security component 165, such as "licensed content" and private data, such as copyrighted books, songs, and movies, is more complex than the traditional "user-based" authorization model. You can, but are not limited to, enforce enforcement of restrictions on entity use for controlled data. In addition, the control mechanism of the wider and more flexible delegation and authorization module 1104 extends the traditional role of authorization.

보안 컴포넌트(165)의 다른 모듈과 선택적으로 조합하여 권한부여 모듈(1104)이 권한부여 필드 및 테크놀로지에서의 고급을 달성하는 하나의 방법은 디지털 권리 관리를 통해서이다. 디지털 권리 관리(DRM)는 정보 및 콘텐트의 분산 및 사용에 대한 조건 및 규칙의 자동화된 엔포스먼트를 관여시킨다. 전통적인 시스템 보안 인튜이션에 대하여 실행되는 프레미스(premise)는 DRM의 핵심이다. 전형적인 시스템 보안에 있어서, 데이터 또는 정보로 액세스할 기관의 소스는 사용자이다. 사용자가 인증되고 나면, 서비스로의 액세스는 사용자 신원에 근거하여 권한부여된다. 그러한 바와 같이, 소프트웨어는 기반 사용자에게 부여되는 익스텐트 권리에 권한부여된다. 전형적으로, 인증된 슈퍼-유저(또는 관리자)는 임의의 모든 자원으로의 무한 액세스를 본질적으로 부여받는다. DRM은 몇가지 방식으로 이들 전제를 변경한다. DRM에 있어서, 기관의 소스는 콘텐트 또는 정보의 소유자이다. 소유자의 권리(및 사용자에게 부여된 허가)는 표준 언어로 명명된다. 권리는 소유자에 의해 지정된 제한 및 권리를 엔포싱하도록 사전에 인증되고 의무를 진 신뢰된 소프트웨어만이 정보로의 액세스를 부여받는 것을 보증하는 다양한 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트(그러나 거기에 국한되는 것은 아님)와 같은 "디바이스"에 의해 엔포싱된다. 이것은 콘텐트 소유자가, 사용자에게가 아니라, 소유자에 의해 정의된 텀즈에 근거하여 콘텐트로의 액세스를 제한할 하나의 소프트웨어에게 권리를 델리게이팅하게 한다.One way in which the authorization module 1104, in combination with other modules of the security component 165, achieves advanced in authorization fields and technologies is through digital rights management. Digital Rights Management (DRM) involves the automated enforcement of conditions and rules for the distribution and use of information and content. Premise, executed against traditional system security intuition, is at the heart of DRM. In typical system security, the source of the authority to access the data or information is the user. Once the user is authenticated, access to the service is authorized based on the user's identity. As such, the software is authorized for extent rights granted to the underlying user. Typically, an authenticated super-user (or administrator) is essentially granted infinite access to any and all resources. DRM changes these premises in several ways. In DRM, the source of an institution is the owner of the content or information. The owner's rights (and the permissions granted to the user) are named in the standard language. A right may include, but is not limited to, a variety of hardware and / or software modules and components (but limited to) that only trusted software that has been pre-certified and obliged to enforce the restrictions and rights specified by the owner is granted access to the information. But not enforcing by a "device". This allows the content owner to delegate rights to one software that will restrict access to the content based on terms defined by the owner, not to the user.

DRM이 성취될 수 있는 하나의 예시적인 "디바이스"는 인증된 부트/아이솔레이티드 실행 가능 퍼스널 컴퓨터라 불리는 신뢰된 디바이스이다. "디바이스"는 하드웨어 컴포넌트에 유일한 하나 이상의 개인키를 보유하는 신뢰된(및 탬퍼-레지스턴트) 하드웨어 컴포넌트를 포함할 수 있다. 인증된 부트/아이솔레이티드 실행 가능 퍼스널 컴퓨터의 오퍼레이션에 있어서, 클라이언트류의 소프트웨어는 신뢰된 디바이스가 (예를 들어 그 코드를 해싱하고 하드웨어에 의해서 "신뢰된" 기관에 의해 서명된 해시를 명명하는 인증서와 해시를 비교함으로써) 그 신원을 인증하도록 요청한다. 인증의 부대 효과로서, 요청하는 소프트웨어에 의해 사용되는 물리적 주소는 아이솔레이팅되고 (OS를 포함하는) 다른 프로그램은 그 후 그 물리적 메모리로의 액세스가 거부된다. 마지막으로, 하드웨어에 유일한 개인키의 오퍼레이션은 (이제 신뢰된) 소프트웨어에 이용될 수 있게 된다. 당업자는 다양한 다른 디바이스가, 하드웨어이건, 소프트웨어이건, 또는 그 조합이건간에, DRM에 사용되는 디바이스의 소망 기능을 수행할 수 있다는 것을 인식할 수 있다.One example "device" in which DRM can be achieved is a trusted device called an authenticated boot / isolated executable personal computer. A "device" may include a trusted (and tamper-resident) hardware component that holds one or more private keys unique to the hardware component. In the operation of an authenticated boot / isolated executable personal computer, client-class software is used by a trusted device to name a hash signed by an organization (eg, hashing its code and "trusted" by the hardware). By comparing the certificate with the hash). As a side effect of authentication, the physical address used by the requesting software is isolated and other programs (including the OS) are then denied access to that physical memory. Finally, the operation of the private key unique to the hardware becomes available to the (now trusted) software. Those skilled in the art can recognize that various other devices, whether hardware, software, or a combination thereof, can perform the desired functions of the devices used for DRM.

본 발명의 또 다른 태양에 따라, 보안 컴포넌트(165)는 프라이버시 모듈(1106)을 포함한다. 프라이버시 모듈(1106)은 시스템(100) 및 애플리케이션(200)의 유익한 특성을 이용하는 다양한 엔티티에 의해 전송 및 검색되는 정보의 프라이버시 및 기밀성을 보유하는 다양한 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트를 포함한다. 일반적으로, 보안 컴포넌트의 프라이버시 모듈(1106)은 공중 네트워크를 오가며 서버 연합(120)내의 공유된 공중 서버상에 기억된 퍼스널 또는 높은-값 정보가 권한부여된 엔티티에게만 개시되는 것을 보증한다. 또한, 프라이버시 모듈(1106)은 공중 서버상에서 기억 및/또는 오가는 정보 및 데이터의 모든 타입의 데이터 무결성을 유지하고, 따라서 하나 이상의 엔티티 사이에서 트랜짓내에 있는 전송된 데이터의 권한없는 변형을 방지한다. 프라이버시 모듈(1106)이 보안 컴포넌트(165)의 독립 모듈로서 나타나 있지만, 프라이버시 모듈(1106)의 기능은 특정한 독립 모듈러 형식을 갖지 않고 인증 모듈(1102), 권한부여 모듈(1104), 보안 서비스(1100)를 형성하는 다양한 다른 모듈중 하나 이상, 또는 보안 컴포넌트(165)의 단지 함수내에 편입될 수 있음을 당업자는 인식할 것이다. According to another aspect of the invention, the security component 165 includes a privacy module 1106. Privacy module 1106 includes various hardware and / or software modules and components that retain the privacy and confidentiality of information transmitted and retrieved by various entities utilizing the beneficial properties of system 100 and application 200. In general, the privacy component 1106 of the secure component ensures that personal or high-value information stored on a shared public server in the server federation 120 is only opened to authorized entities. In addition, privacy module 1106 maintains data integrity of all types of information and data stored and / or on and off public servers, thus preventing unauthorized modification of transmitted data within the transition between one or more entities. Although the privacy module 1106 is shown as an independent module of the security component 165, the functionality of the privacy module 1106 does not have a specific independent modular format, but an authentication module 1102, an authorization module 1104, and a security service 1100. Those skilled in the art will appreciate that one or more of the various other modules that form.

여기 포함된 상기 및 다른 가르침에 비추어, 프라이버시 모듈(1106)의 기능은 다양한 방식으로 달성될 수 있다. 예를 들어, 일실시예에 있어서, 디지털 무결성은 신원의 거부를 관리하는 보안 컴포넌트(165) 및/또는 프라이버시 모듈(1106)의 능력 및 디지털 서명의 사용을 통하여 유지될 수 있다. 또 다른 예시적인 실시예에 있어서, 암호화된 트랜스포트는 클라이언트 디바이스(110) 및 서버 연합(120)의 멀티플 호스트 또는 멀티플 포인트 사이에서 데이터 및 정보를 전송하도록 사용된다. 암호화된 트랜스포트가 호스트-호스트인지 또는 포인트-포인트인지는 통신이 온라인 및 오프라인(스토어-앤-포워드) 통신인지에 의존한다. 본 발명의 일실시예의 암호화된 트랜스포트 프로세스의 일태양은 전송된 데이터 및 정보가 선택적으로 부분 또는 전체 암호화되는 것이다. 애플리케이션-특정 트랜잭션을 위한 메시지(엔드-엔드)와 같이, 데이터 및 정보내에서 선택적으로 암호화함으로써, 보안 컴포넌트(165)는 모든 네트워크 트래픽을 암호화하는 코스트없이 안전한 프라이빗 정보를 제공한다.In view of the above and other teachings contained herein, the functionality of the privacy module 1106 may be accomplished in a variety of ways. For example, in one embodiment, digital integrity may be maintained through the use of digital signatures and the ability of security component 165 and / or privacy module 1106 to manage denial of identity. In another exemplary embodiment, an encrypted transport is used to transfer data and information between multiple hosts or multiple points of client device 110 and server federation 120. Whether the encrypted transport is host-host or point-point depends on whether the communication is online and offline (store-and-forward) communication. One aspect of the encrypted transport process of one embodiment of the invention is that the transmitted data and information are optionally partially or fully encrypted. By selectively encrypting in data and information, such as messages (end-ends) for application-specific transactions, security component 165 provides secure private information without the cost of encrypting all network traffic.

호스트-호스트 트랜스포트에 대해서 인터넷 프로토콜 보안(IPSEC)이라 불리는 보안 프로토콜은 버츄얼 프라이빗 네트워크(VPN) 터널을 구현하고 참여하는 시스템의 네트워크 접속을 인증하기 위해 필요로 된다. 호스트-호스트 트랜스포트를 위해 사용되는 (국한되지는 않지만 캐시, 에어스트림, 콘텐트 기반 라우터 등과 같은) 중간 서버는 전형적으로 더 낮은-레벨 네트워크 서비스가 각각의 애플리케이션에 유일한 기밀성 폴리시를 엔포싱하지 않기 때문에 선택적인 메시지 암호화를 사용하도록 설계된다. 선택적 메시지 암호화의 사용은 캐시의 수행 이익을 얻거나 중간 서버가 콘텐트를 필터링하도록 요구하는 애플리케이션 콘텐트만이 그로부터 이익을 받기 때문에 선택적이다. 대조적으로, 퍼스널 또는 높은-값 정보는 기밀성을 위해 암호화되고, 일반적으로 중간 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트와 같은 중간 네트워크 디바이스의 서비스로부터 이익을 얻지 않는다. For host-host transports, a security protocol called Internet Protocol Security (IPSEC) is required to implement virtual private network (VPN) tunnels and to authenticate the network connections of participating systems. Intermediate servers (but not limited to cache, airstream, content-based routers, etc.) used for host-host transport typically have lower-level network services because they do not encapsulate unique confidentiality policies for each application. It is designed to use selective message encryption. The use of selective message encryption is optional because only application content that benefits from performing the cache or requires an intermediate server to filter the content benefits from it. In contrast, personal or high-value information is encrypted for confidentiality and generally does not benefit from the services of intermediate network devices such as intermediate hardware and / or software modules and components.

포인트-포인트 통신에 있어서, 보안 소켓 레이어(SSL) 프로토콜이 사용되고 선택적 메시지-기반 암호화를 사용하도록 설계되지 않은 애플리케이션에 최소-공통-디나미네이터 레거시로서 계속된다. 당업자는 IPSEC가 포인트-포인트 트랜스포트로서 선택적으로 사용될 수 있음을 인식할 수 있다. 일반적으로, 트랜스포팅된 데이터 및 정보의 기밀성 및 프라이버시는 알려진 방법의 조합을 사용하여 달성될 수 있다.In point-to-point communication, the Secure Sockets Layer (SSL) protocol is used and continues as the least-common-dinaminator legacy for applications not designed to use selective message-based encryption. Those skilled in the art can appreciate that IPSEC can optionally be used as a point-point transport. In general, the confidentiality and privacy of the transported data and information can be achieved using a combination of known methods.

본 발명의 또 다른 실시예에 있어서, 보안 컴포넌트(165)는 암호화된 형식으로 인터넷을 경유하여 전송된 모든 데이터를 선택적으로 유지한다. 현재, 오늘날 인터넷상에 전송된 정보의 대다수는 암호화되어 있지 않다. 충분한 하드웨어 및 시스템 지원으로, 본 발명의 보안 컴포넌트(165)는 현재의 "(제한된) 디맨드상의 암호화"로부터 "항시 암호화" 솔루션으로 정보 및 데이터의 트랜스포테이션을 선택적으로 시프팅할 수 있다. 암호화는 정보 및 데이터가 보호되는 유용한 방식이지만, 그 자체로서는 모든 보안 요구에 완벽한 솔루션은 아니다. 그러한 바와 같이, 본 발명의 보안 컴포넌트(165)는 유익한 프로퍼티내의 트랜스포트가능한 데이터의 전체 암호화의 특성 및 인증 및/또는 권한부여 하드웨어 및/또는 소프트웨어 모듈, 컴포넌트, 및 기능의 특성을 조합할 수 있다.In another embodiment of the present invention, security component 165 optionally maintains all data transmitted via the Internet in encrypted form. At present, the vast majority of information transmitted on the Internet today is not encrypted. With sufficient hardware and system support, the security component 165 of the present invention can selectively shift the transformation of information and data from the current "encryption on (limited) demand" to an "always encryption" solution. Encryption is a useful way to protect information and data, but by itself is not a perfect solution for all security needs. As such, the security component 165 of the present invention may combine the characteristics of the overall encryption of the transportable data and the characteristics of authentication and / or authorization hardware and / or software modules, components, and functions within beneficial properties. .

본 발명의 또 다른 태양에 따라서, 보안 컴포넌트(165)는 전 서버 연합(120)을 통하여 분산되고 따라서 분산 네트워크 보안을 제공한다. 일반적으로, 보안 컴포넌트(165)의 분산 본성은 중간 프록시 서버가 이벤트 및 메시지를 올바르게 라우팅하도록 허용하면서, 호스트-호스트이건 포인트-포인트이건간에, 메시지 콘텐트의 무결성 및 엔드-엔드 기밀성을 제공한다. 전반적인 네트워크 보안은 컴퓨팅 노드와의 악의적인 간섭(예를 들어, 플루딩, 파괴적인 바이러스) 및 민감한 자료의 권한없는 유포를 방지하도록 데이터 흐름을 제어한다. 전형적으로, 이들 함수의 많은 것은 방화벽에 의해 수행된다. 불행하게도, 하이퍼텍스트 트랜스퍼 프로토콜(HTTP)을 통한 XML 메시징의 출현으로, 전형적인 방화벽은 엔티티와 요청 사이를 구별하는 데 덜 효과적이다. 상기한 바와 같이 메시지 스트림내 암호화의 선택적 사용은 기밀 퍼스널 데이터의 손실없이 메시지 콘텐트 필터링을 허용한다; 그러나 이것은 또한 방화벽에 의해 제공될 수 있는 보호의 종류를 제한한다.According to another aspect of the present invention, the security component 165 is distributed throughout the entire server federation 120 and thus provides distributed network security. In general, the distributed nature of security component 165 allows the intermediate proxy server to route events and messages correctly, while providing end-to-end confidentiality and the integrity of the message content, whether host-host or point-point. Overall network security controls the data flow to prevent malicious interference with computing nodes (eg, flooding, destructive viruses) and unauthorized dissemination of sensitive data. Typically, many of these functions are performed by firewalls. Unfortunately, with the advent of XML messaging over Hypertext Transfer Protocol (HTTP), a typical firewall is less effective at distinguishing between entities and requests. As mentioned above, the selective use of encryption in the message stream allows filtering of message content without loss of confidential personal data; However, this also limits the kind of protection that can be provided by a firewall.

현재, 방화벽은 소스 및 수신지 인터넷 프로토콜(IP) 주소 및 전송 제어 프로토콜/사용자 데이터그램 프로토콜(TCP/UDP) 포트와 같은 트랜스포트 레벨 정보를 검사하는 트랜스포트 레이어에서 대부분 동작한다. 유용할지라도, 많은 전통적인 방화벽은 바이너리에서의 바이러스에 대한 액세스된 데이터를 스캔하거나 불법적인 콘텐트에 대한 텍스트를 스캔하도록 이미 확장되어 있다. 따라서, 클래식 방화벽 모델은 암호화의 사용이 데이터 시찰 또는 포트의 시찰조차 방지하는가 및 단일 TCP 포트를 공유하는 XML-기반 애플리케이션에 의한 HTTP의 사용이 TCP 레벨 필터의 값을 감소시키는가의 2개의 독립된 경향에 의해 문제제기되어 오고 있다. 그러한 바와 같이, 현재의 방화벽은 외부 공격에 대한 보호 및 폴리시의 엔포스먼트라는 2개의 기능을 믹싱하기 때문에 그 효과에 있어서 제한된다. 그러한 바와 같이, 본 발명은 단일 하드웨어 및/또는 소프트웨어 모듈내에 로컬화되거나 대안으로 전 서버 연합(120)을 통하여 분산될 수 있는 3개 이상의 다른 모듈 및 컴포넌트 사이에서 그 기능을 공유함으로써 방화벽의 효과를 증가시키는 방화벽 모듈(1108)을 포함한다.Currently, firewalls work mostly in the transport layer, which examines transport level information such as source and destination Internet Protocol (IP) addresses and Transmission Control Protocol / User Datagram Protocol (TCP / UDP) ports. Although useful, many traditional firewalls have already been extended to scan accessed data for viruses in binaries or text for illegal content. Thus, the classic firewall model is based on two independent trends: whether the use of encryption prevents even the inspection of data or ports, and whether the use of HTTP by XML-based applications sharing a single TCP port reduces the value of the TCP level filter. The problem has been raised. As such, current firewalls are limited in their effectiveness because they mix two functions: protection against external attacks and enforcement of policy. As such, the present invention shares the effectiveness of a firewall by sharing its functionality among three or more other modules and components that may be localized within a single hardware and / or software module or alternatively distributed throughout the entire server federation 120. Increasing firewall module 1108.

이제 방화벽 모듈(1108)의 예시적인 엘리먼트를 설명하는 도 12를 참조하면, 고급 방화벽 모듈(1108)의 일부는 퍼스널 방화벽(1310)이다. 퍼스널 방화벽(1310)은 복호화 후에 로컬하게 데이터 시찰을 수행하고 다양한 다른 보호 기능을 수행한다. 예를 들면, 퍼스널 방화벽(1310)은 "바이러스 검사" 시스템의 다양한 기능을 수행한다; 그러나, 새로운 공격이 검출될 때, 공격 서명은 모든 퍼스널 방화벽에 신속하게 전파되고, 따라서 다음 시스템 또는 애플리케이션 업그레이드를 기다려야만 할 필요 없이 공격을 블록킹한다. 퍼스널 방화벽이 모든 내부 호스트상에 인스톨되면, 호스트는 시스템(100)과 같은 네트워크상 또는 다른 호스트로부터 트로이안(Trojan) 액티비티를 검출할 수 있다. 이로써 이것은 페리미터(perimeter) 방화벽에 의해 모니터링되고 있음없이 로컬 호스트에 대하여 직접 선동될 수 있는 트로이안 공격의 가능성을 감소시킨다.Referring now to FIG. 12, which illustrates an exemplary element of firewall module 1108, part of advanced firewall module 1108 is personal firewall 1310. Personal firewall 1310 performs data inspection locally after decryption and performs various other protection functions. For example, personal firewall 1310 performs various functions of the "virus check" system; However, when a new attack is detected, the attack signature is quickly propagated to all personal firewalls, thus blocking the attack without having to wait for the next system or application upgrade. Once the personal firewall is installed on all internal hosts, the host can detect Trojan activities on the same network as the system 100 or from another host. This reduces the likelihood of a Trojan attack that can be instigated directly against the local host without being monitored by a perimeter firewall.

고급 방화벽 모듈(1108)의 제 2 부분은 서버 연합(120)의 부분을 형성하는 특정한 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트를 소유하는 엔티티의 엔티티 폴리시를 엔포싱하는 보안 게이트웨이(1312)이다. 각각의 보안 게이트웨이(1312)는 HTTP 방법뿐만 아니라 소스 및 수신지 유니폼 리소스 로케이터(URL)에 근거하여 검사를 수행한다: GET, POST, NOTIFY. 보안 게이트웨이(1312)는 HTTP 프록시로서 애플리케이션(200)내에 명시적으로 삽입되고, 예를 들어 어느 외부 페이지가 날의 어느 시간에 용이하게 액세스될 수 있는지, 또는 어느 사용자가 외부 알림을 수신할 수 있는지를 결정할 수 있다. 보안 게이트웨이(1312)는 호스트이고 따라서 IPSEC 또는 SSL 엔드포인트일 수 있다. 더하여, 각각의 보안 게이트웨이(1312)는 XML 구조화된 데이터로의 액세스를 가질 수 있고, 따라서 특정 호스트로부터 전송된 메시지의 콘텐트로의 액세스를 가질 수 있다.The second portion of the advanced firewall module 1108 is a security gateway 1312 that encapsulates the entity policy of the entity that owns the particular hardware and / or software modules and components that form part of the server federation 120. Each security gateway 1312 performs checks based on the source and destination uniform resource locators (URLs) as well as the HTTP method: GET, POST, NOTIFY. The security gateway 1312 is explicitly inserted into the application 200 as an HTTP proxy and, for example, which external pages can be easily accessed at which time of day, or which users can receive external notifications. Can be determined. The security gateway 1312 is a host and thus may be an IPSEC or SSL endpoint. In addition, each security gateway 1312 may have access to XML structured data and thus have access to the content of a message sent from a particular host.

보안 게이트웨이(1312)의 하나의 선택적인 함수는 엔드-엔드 미디어 스트림을 권한부여하도록, 페리미터 또는 트랜스포트 레벨 방화벽(1314; 이하 논의됨)내에 "홀을 펀칭"하는 것이다. 스트림은 보안 게이트웨이(1312)에 의해 모니터링되는 HTTP 또는 SIP 교환에 의해서 셋업될 수 있지만, HTTP가 아니라 사용자 데이터그램 프로토콜/리얼-타임 트랜스포트 프로토콜(UDP/RTP)을 사용하여 전송될 것이다. 보안 게이트웨이(1312)는 권한부여되는 IP 주소 및 TCP/UDP 포트의 페어를 결정한다. 각각의 보안 게이트웨이(1312)는 또한 IP 주소의 2개의 페어 사이에서 IPSEC의 사용을 권한부여하는 능력을 갖는다.One optional function of the security gateway 1312 is to “punch holes” within the perimeter or transport level firewall 1314 (discussed below) to authorize end-end media streams. The stream may be set up by an HTTP or SIP exchange monitored by the security gateway 1312 but will be transmitted using User Datagram Protocol / Real-Time Transport Protocol (UDP / RTP) rather than HTTP. The security gateway 1312 determines a pair of authorized IP addresses and TCP / UDP ports. Each secure gateway 1312 also has the ability to authorize the use of IPSEC between two pairs of IP addresses.

고급 방화벽의 제 3 부분은 아마도 보안 게이트웨이(1312)의 제어하에 시스템(100)의 로컬 네트워크로의 액세스를 부여 또는 부인하는 페리미터(트랜스포트 레이어) 방화벽(1314)이다. 트랜스포트 레이어 방화벽(1314)은 어느 "아웃사이드" 트래픽이 인사이드상의 머신에 도달하는지를 제어하고 잘 관리되는 그들 "아웃사이드" 소스로만의 그러한 액세스를 제한하는 책임을 갖는다. 디폴트 구성에 있어서, 그들 권한부여된 머신은 보안 게이트웨이(1312)를 포함한다.The third part of the advanced firewall is a perimeter (transport layer) firewall 1314, which grants or denies access to the local network of the system 100, perhaps under the control of the security gateway 1312. Transport layer firewall 1314 is responsible for controlling which " outside " traffic reaches machines on the inside and restricting such access to those " outside " sources that are well managed. In the default configuration, those authorized machines include a security gateway 1312.

일반적으로, "트랜스포트 레벨 방화벽"과 "보안 게이트웨이" 사이의 페리미터 제어 함수의 스플릿은 시스템(100) 및/또는 애플리케이션(200)의 스케일가능성 및 성능을 고려한다. 본성에 있어서 라우터에 유사한 트랜스포트 레벨 방화벽(1314)은 애플리케이션 서버인 보안 게이트웨이(1312)가 스케일링 웹 서버를 위해 사용되는 스케일링 테크놀로지를 이용할 수 있으면서, 스케일링을 달성하도록 병렬로 접속될 수 있다. In general, the split of the perimeter control function between the "transport level firewall" and the "secure gateway" takes into account the scalability and performance of the system 100 and / or the application 200. Transport level firewalls 1314, similar in nature to routers, can be connected in parallel to achieve scaling while the security gateway 1312, which is an application server, can utilize the scaling technology used for the scaling web server.

도 12는 방화벽 모듈(1308)의 각각의 부분(1310, 1312, 및 1314)이 통합되어 있는 것을 도시하고 있지만, 각각의 부분(1310, 1312, 및 1314)은 전 서버 연합(120)을 통하여 분산될 수 있다. 더 나아가, 보안 서비스 컴포넌트(165)는 멀티플 방화벽 모듈(1108) 및 멀티플 부분(1310, 1312, 및 1314)을 포함할 수 있다.FIG. 12 shows that each portion 1310, 1312, and 1314 of the firewall module 1308 is integrated, but each portion 1310, 1312, and 1314 is distributed throughout the server federation 120. Can be. Furthermore, security service component 165 may include multiple firewall modules 1108 and multiple portions 1310, 1312, and 1314.

본 발명의 또 다른 태양에 따라, 보안 컴포넌트(165)는 전자서명, 타임-스탬핑, 및 공증 서비스의 사용을 허용하는 다양한 하드웨어 및/또는 소프트웨어 모듈 및 컴포넌트를 포함할 수 있다. 전자서명의 사용은 후속 분쟁의 경우에 법률상의 보상, 권한부여의 증명, 근원의 증명 등과 같이(그러나 거기에 국한되지는 않음), 전자 트랜잭션에서의 물리적 서명의 이점의 많은 것을 사용자에게 제공한다. 더 나아가, 문서를 무결성 봉인하는 능력(임의의 변형은 서명을 무효화시킨다)은 정보가 신뢰할 수 없는 통신 및 프로세싱 채널을 오가기도 하는 전자 세계에서 또한 가치있다.According to another aspect of the present invention, security component 165 may include various hardware and / or software modules and components that allow for the use of digital signatures, time-stamping, and notarization services. The use of electronic signatures provides the user with many of the benefits of physical signatures in electronic transactions, such as, but not limited to, legal compensation, proof of authorization, proof of origin, etc. in case of subsequent disputes. Furthermore, the ability to seal documents integrity (any modification invalidates the signature) is also valuable in the electronic world, where information may travel between unreliable communication and processing channels.

본 발명의 보안 컴포넌트(165)는 국한되지는 않지만 전자서명 알고리즘(DSA), 및 RSA 데이터 보안 인코포레이티드에 의해 개발된 엘립틱 커브, 및 암호화 테크놀로지(RSA)와 같이 전자서명을 위해 현재 사용되는 테크놀로지를 지원하도록 구성될 수 있다. 또한, 보안 컴포넌트(165)는 XML 및 XML 스키마와 사용하기 위한 보안 전자서명을 발생시키도록 조작될 수 있다는 점에서 유연하다. 예를 들어, 전형적인 서명된 이메일 시스템(시큐어/멀티퍼포스 인터넷 메일 익스텐션(S/MIME) 또는 프리티 굿 프라이버시(PGP) 테크놀로지)에 있어서, 사용자는 그들이 합성한 이메일의 이메일 인코딩을 서명할 그 이메일 프로그램을 절대적으로 신뢰한다. 불행하게도, 높은 값 및 포텐션 라이어빌리티를 관여시키는 문서에 대하여 더 많은 보호가 요구될 수 있다. 그러한 중요한 문서를 표시하도록 XML 또는 일반적인 XML 스키마의 사용은 XML 문서의 카노니컬(canonical) 표시를 제공하는 범용 툴의 생성을 허용한다. 문서의 카노니컬 표시의 발생은 전자서명을 생성 및 검증하기 위한 요구이다.The security component 165 of the present invention is currently used for electronic signatures such as, but not limited to, digital signature algorithms (DSAs), elliptic curves developed by RSA Data Security, Inc., and cryptographic technologies (RSAs). It can be configured to support the technology. In addition, the security component 165 is flexible in that it can be manipulated to generate secure digital signatures for use with XML and XML schemas. For example, in a typical signed email system (Secure / Multiperforce Internet Mail Extensions (S / MIME) or Pretty Good Privacy (PGP) technology), the user may sign the email encoding of the email they synthesized. Absolutely trust. Unfortunately, more protection may be required for documents involving high values and potential capabilities. The use of XML or generic XML schemas to mark such important documents allows the creation of general purpose tools that provide canonical representation of XML documents. The occurrence of the canonical representation of the document is a requirement for generating and verifying the digital signature.

보안 컴포넌트(165)는 전자서명 기능 및 서비스를 수행하는 하드웨어 및/또는 소프트웨어 모듈내에 선택적으로 편입될 수 있는 타임 스탬핑 및 공증 서비스를 더 포함할 수 있다. 전자서명과 마찬가지로, 타임-스탬핑 서비스는 (가장 일반적인 의미의) 문서가 시간의 어떤 포인트에서 존재했다는 강력한 증거를 제공한다. 마찬가지로, 디지털 공증 서비스는 누군가 시간의 한 포인트에서 소정 문서를 전자서명했다는 증거를 제공한다. 보안 서비스(300)내에 편입될 수 있는 서비스의 이들 타입의 예는 사용되고 있는 X.509-기반 및 PGP-기반 신뢰 모델을 모두 갖는 슈어티(Surety), 엔트로픽(Entropic), 이-타임스탬프를 포함하지만 이에 국한되지는 않는다. 더하여, 그러한 서비스로의 인터페이스를 망라하는 드래프트 표준 타임-스탬핑 프로토콜이 제안되어 있다. 본 발명의 보안 서비스는 현재 진화하는 관련 서비스를 따르도록 하드웨어 및/또는 소프트웨어 유연성을 제공하면서, 존재하는 서비스의 상호운용가능성을 허용한다.The security component 165 may further include a time stamping and notarization service, which may optionally be incorporated into hardware and / or software modules that perform digital signature functions and services. Like digital signatures, time-stamping services provide strong evidence that documents (in the most general sense) existed at some point in time. Similarly, digital notary services provide evidence that someone has electronically signed a document at a point in time. Examples of these types of services that can be incorporated within security service 300 are Surity, Entropic, E-Timestamp with both X.509-based and PGP-based trust models being used. Including but not limited to. In addition, a draft standard time-stamping protocol is proposed that covers the interface to such services. The security services of the present invention allow for the interoperability of existing services while providing hardware and / or software flexibility to follow relevant services that are currently evolving.

일반적으로, 보안 컴포넌트(165)는 디바이스의 플랫폼 코어 운영체제(OS)내에 편입될 수 있고, 따라서 플랫폼의 툴, 애플리케이션, 서비스, 및 OS의 모든 다른 모듈 및 함수에 영향을 미칠 수 있다. 대안으로, 보안 컴포넌트(165); 거기에 제공된 모듈(1102, 1104, 1106, 및 1108) 및 기능은 서버 연합(120), 클라이언트 디바이스(110) 및/또는 애플리케이션(200)내의 다양한 위치에 배치될 수 있거나 또는 도처에 분산될 수 있다. 또 다른 구성에 있어서, 보안 컴포넌트(165)는 애플리케이션(200)의 에미세리 컴포넌트(220) 및 피에프돔 컴포넌트(230) 사이에 위치결정될 수 있다. 또한, 도 10에 도시된 바와 같이, 보안 컴포넌트(165)의 각각의 모듈은 점선으로 도시된 바와 같이, 거기에 포함된 하나 이상의 다른 모듈(1102, 1104, 1106, 및 1108)과 통신할 수도 하지 않을 수도 있다.In general, security component 165 may be incorporated within the platform core operating system (OS) of the device, and thus may affect the tools, applications, services, and all other modules and functions of the OS. Alternatively, security component 165; The modules 1102, 1104, 1106, and 1108 and functions provided therein may be deployed at various locations within the server federation 120, the client device 110, and / or the application 200, or may be distributed everywhere. . In another configuration, the security component 165 may be positioned between the asset component 220 and the FD dome component 230 of the application 200. In addition, as shown in FIG. 10, each module of the security component 165 may be in communication with one or more other modules 1102, 1104, 1106, and 1108 contained therein, as shown by the dotted lines. It may not.

보안 컴포넌트(165)는 소비자, 비즈니스, 정부 등에게, 증가된 웹 사이트간 통신으로, 더 큰 인터넷 커넥티비티 및 협조를 허용하는데 도움을 주는 다양한 통신 시나리오에서 이용될 수 있다. 예를 들어, 제 1 시나리오는 소비자-서비스 또는 비즈니스 환경에서이다. 본 발명의 보안 컴포넌트(165)는 "항시 온" 디지털 서브스크라이버 라인(DSL) 및/또는 케이블 모뎀 시스템 및 다른 홈 네트워킹 시나리오를 갖는 홈 컴퓨터 보안에 대하여서던간에 더 큰 통신, 알림, 스트리밍 미디어, 게임잉, 및 협조 서비스를 허용한다. 보안 컴포넌트(165)는 ⅰ)대문에서 무작위의 초인종 울림의 등가에 대하여 인스턴트 메시지 또는 인터넷 전화통신과 같은 인터넷 시그널링 메시지의 남용, ⅱ)사용자의 액티비티를 트랙킹함으로써 광고주 및 다른 사람들에 의한 사용자의 "프리시젼 타겟팅"을 감소시키는 액티비티, ⅲ)제 3자를 향하여 장착되는 공격의 부분으로서 개인의 컴퓨터를 사용하는 트로이안 프로세스를 통한 퍼스널 자원의 남용, ⅳ)인터넷 서비스의 거부, 및 ⅴ)문자그대로 소비자로부터 훔치는 원치않는 구매, 머니 트랜스퍼 등을 초래하는 개개인의 컴퓨터의 불법적인 액세스와 같은 범죄 행위로부터 소비자-서비스 환경에서의 소비자를 보호한다.Security component 165 may be used in a variety of communication scenarios to help consumers, businesses, governments, etc., allow for greater Internet connectivity and cooperation with increased inter-site communication. For example, the first scenario is in a consumer-service or business environment. The security component 165 of the present invention provides for greater communication, notification, streaming media, and security for home computer security with “always on” digital subscriber lines (DSL) and / or cable modem systems and other home networking scenarios. Allow gaming and cooperative services. The security component 165 may be used to: (i) abuse the Internet signaling messages, such as instant messages or Internet telephony, for the equivalent of random doorbell ringing, ii) track the user's activities, and thereby " precision " Activities that reduce targeting, (i) abuse of personal resources through Trojan processes using a personal computer as part of an attack mounted against third parties, (i) denial of Internet services, and (i) literal stealing from consumers. Protect consumers in a consumer-service environment from criminal activities such as illegal access of an individual's computer resulting in unauthorized purchases, money transfers, and the like.

또 다른 시나리오는 애플리케이션 서비스 프로바이더(ASP) 호스팅을 위한 소형 비즈니스 지향 서비스 플랫폼이다. 본 발명의 보안 컴포넌트(165)는 통합 전자 문서 관리 및 온라인 비즈니스 서비스, 종업원 퍼스널 웹 기억장치 등과 같은 온라인 비즈니스 액티비티, 엔터프라이즈 자원 플랜잉(ERP) 애플리케이션의 호스팅, 메시징, 파일 및 프린트 서비스를 위한 증가된 보호를 제공한다. 또한, 보안 컴포넌트(165)는 다양한 비즈니스가 호스팅된 웹 프레즌스, 델리게이팅된 역할-기반 관리, 및 배니티(vanity) 도메인을 갖게 한다. 그러한 바와 같이, 본 발명 및 더 상세히는 보안 컴포넌트(165)는 소형 비즈니스가 어드레싱된 그들 비즈니스 애플리케이션 요구의 모두를 얻기 위해 멀티플 ASP로의 안전한 액세스를 갖는 기능을 갖게 한다.Another scenario is a small business-oriented service platform for hosting application service providers (ASPs). The security component 165 of the present invention is an integrated electronic document management and online business service, such as employee personal web storage, online business activities, such as increased, for hosting, messaging, file and print services of enterprise resource planning (ERP) applications Provide protection. In addition, security component 165 allows various businesses to have hosted web presence, delegated role-based management, and vanity domains. As such, the present invention and more particularly security component 165 have the ability for small businesses to have secure access to multiple ASPs to obtain all of their business application addresses addressed.

또 다른 시나리오는 소비자-비즈니스-비즈니스 환경이다. 이 시나리오는 소비자-서비스 시나리오에 관해서 이미 상기된 요구의 많은 것을 포함하는 반면, 비즈니스-비즈니스 관계의 요구 및 문제를 포함한다. 그러한 바와 같이, 보안 컴포넌트(165)는 이종 환경에서의 멀티플 엔티티에 보안을 제공한다. 보안 컴포넌트(165)는 고객 정보 기능의 비-거부를 공급하면서, 온-와이어 퍼시스턴트 정보 보호를 제공한다. 더 나아가, 보안 컴포넌트(165)는 미들 티어 트랜잭션, 클라이언트-서버 액티비티를 인증 및 권한부여할 수 있고, 피어-투-피어 신뢰를 수수할 수 있다.Another scenario is a consumer-business-business environment. This scenario includes many of the needs already described above with regard to the consumer-services scenario, while the needs and problems of business-business relationships. As such, security component 165 provides security for multiple entities in a heterogeneous environment. Security component 165 provides on-wire persistent information protection while providing non-denial of customer information functionality. Furthermore, security component 165 may authenticate and authorize middle tier transactions, client-server activities, and may accept peer-to-peer trust.

마지막 예시적인 시나리오는 비즈니스-비즈니스 환경이다. 보안 컴포넌트(165)는 서플라이 체인 애플리케이션, 비즈니스-비즈니스 협조 등을 지원하도록 구성될 수 있다. 더 나아가, 특정한 인증 메카니즘에 독립한 크로스-엔터프라이즈 신뢰 관계의 관리가 공급된다. 더하여, 보안 컴포넌트(165)는 (ⅰ)재정 손실에 이르는 권한없는 트랜잭션, (ⅱ)신용보증서가 우연히 개시되었기 때문에 트랜잭션에 대한 요청은 진정한 것이 아니다라는 비즈니스 파트너에 의한 사기 청구, (ⅲ)권한없는 퍼스넬에 의한 서버(140) 또는 클라이언트(110)로의 권한없는 액세스, (ⅳ)데이터 액세스 요청 및 응답을 관할하고 기밀 데이터를 얻는 경쟁자로의 정보 누설, (ⅴ)데이터 검색 요청에 있어서 비즈니스 파트너인 척하고 잘못된 데이터를 반환하여 잘못된 결정을 하게 하는 공격자, (ⅵ)넷을 통하여 송신함으로써 가치있는 데이터를 공모자에게 누설하도록 데이터가 기억되어 있는 사이트에서의 신뢰할만하지 못한 시스템 오퍼레이터, (ⅶ)적합하지않은 정보를 아웃사이더에게 송신하도록 인터넷을 사용하는 인사이더, 및 (ⅷ)누설된 정보, 권한없는 트랜잭션, 또는 권한없는 트랜잭션과의 간섭을 초래하는 잘못 이해된 또는 잘못 적용된 폴리시의 생성의 가능성을 감소시킨다.The final example scenario is a business-business environment. Security component 165 may be configured to support supply chain applications, business-business cooperation, and the like. Furthermore, management of cross-enterprise trust relationships independent of a particular authentication mechanism is provided. In addition, the security component 165 may include (i) unauthorized transactions leading to financial losses, (ii) fraud claims by business partners that the request for the transaction is not real because the credit guarantee was inadvertently initiated, and (i) no authorization. (B) business partners in unauthorized access to the server 140 or client 110 by a personality, (i) information leakage to competitors who are responsible for judging data access requests and responses, and obtaining confidential data; An attacker who pretends to return wrong data and makes a wrong decision, (i) an unreliable system operator at a site where the data is stored to leak valuable data to the conspirator by sending it over the net; An insider using the internet to send unsolicited information to outsiders, and (iii) leaked information, It reduces the possibility of unlimited transactions, or authorization of the transaction does not cause interference, or misunderstood the fault generation to the applied policy.

K. 코드 관리K. Code Management

코드 관리 컴포넌트(175)는 사용자가 가장 최근에 업데이트된 애플리케이션 및 그들이 필요로 하는 코드로의 액세스를 투과적으로 갖는 것을 보증한다. 도 13은 코드 관리의 다양한 태양에 있어서 매니페스트의 사용을 도시한다. 코드 관리는 상호운용하는 컴포넌트, 서비스, 및 애플리케이션 사이의 대화 및 추상화를 형식화하는 데 주로 관여한다. 이러한 형식화는 이들 기초 빌딩 블록으로 이루어진 소프트웨어를 관리하기 위해 각각의 레벨에서 아이솔레이션의 레이어를 제공한다. 매니페스트는 본질적으로 컴포넌트, 서비스, 또는 애플리케이션을 좀 더 상세히 기술하는 데이터베이스이다. 코드 컴포넌트, 코드 컴포넌트 사이의 관계, 및 그들로부터 이루어진 애플리케이션을 기술함으로써, 매니페스트는 시스템으로 하여금 애플리케이션이 무엇인지를 이해하고 따라서 그 애플리케이션을 효과적으로 관리하게 한다. 애플리케이션 또는 서비스는 루트 매니페스트가 애플리케이션 또는 서비스를 실행하기 위한 스타팅 포인트를 포함한다는 것을 제외하고는, 코드 컴포넌트 매니페스트에 유사한 루트 매니페스트에 의해 정의된다.The code management component 175 ensures that the user has transparent access to the most recently updated application and the code they need. 13 illustrates the use of a manifest in various aspects of code management. Code management is primarily concerned with formalizing conversations and abstractions between interoperable components, services, and applications. This formalization provides a layer of isolation at each level to manage the software consisting of these basic building blocks. Manifests are essentially databases that describe components, services, or applications in more detail. By describing the code components, the relationships between the code components, and the applications made from them, the manifest allows the system to understand what the application is and thus effectively manage the application. An application or service is defined by a root manifest similar to the code component manifest, except that the root manifest includes a starting point for executing the application or service.

매니페스트(1400)는 매니페스트와 연관된 소프트웨어를 기술하기 위한 정보의 다양한 카테고리를 포함한다. 식별된 카테고리는 예시일뿐이며 어떠한 방식으로든 본 발명을 반드시 제한하는 것은 아님을 이해해야 한다. 마찬가지로, 각각의 카테고리내의 정보의 기술은 또한 예시적이다. 특정 카테고리의 콘텍스트에서의 정보의 어떠한 기술도 그 정보가 그 카테고리에서만 나타나거나 전형 나타나지 않거나 하는 요구로서 해석되어서는 안된다. "소프트웨어"라는 용어가 도 13과 결합하여 사용되는 경우에 그 용어는 컴포넌트, 서버, 애플리케이션 등을 포함하는 것으로 넓게 해석되어야 함을 주목하자.Manifest 1400 includes various categories of information for describing software associated with the manifest. It should be understood that the identified categories are exemplary only and do not necessarily limit the invention in any way. Likewise, the description of the information in each category is also exemplary. No description of information in the context of a particular category should be construed as a request that the information only appear or be typical of that category. Note that when the term "software" is used in conjunction with Figure 13, the term should be interpreted broadly to include components, servers, applications, and the like.

매니페스트(1400)는 하나 이상의 컴퓨팅 환경에서 그 연관된 소프트웨어가 사용될 수 있게 하기 위한 정보의 슈퍼셋이다. 예를 들어, 매니페스트(1400)는 소프트웨어의 부분인 자원(1420)과 실행가능한 코드(1410)를 식별한다. 오퍼레이셔널 요구 및 연관 소프트웨어의 요구에 의존하여, 실행가능한 코드(1410) 및 자원(1420)은 프라이빗(로컬) 또는 외부 의존도를 참조할 수 있다. 매니페스트(1400)는 모든 소프트웨어와 연관되어 있고 모든 매니페스트는 임의의 외부 의존도를 기술하기 때문에, 소프트웨어 오브젝트는 종래기술에서의 실시인 바와 같은 공유된 DLL에 대한 레퍼런스 카운트를 관리하지 않고 수집된 가비지일 수 있다.Manifest 1400 is a superset of information for enabling its associated software to be used in one or more computing environments. For example, manifest 1400 identifies resource 1420 and executable code 1410 that is part of software. Depending on the operational requirements and the needs of the associated software, executable code 1410 and resources 1420 may reference private (local) or external dependencies. Since the manifest 1400 is associated with all software and every manifest describes any external dependencies, the software object may be garbage collected without managing the reference count for the shared DLL as in the prior art. have.

의존적 매니페스트(1430)는 매니페스트(1400)의 외부 의존도를 식별한다. 이것은 매니페스트(1400)에 로컬하지 않은 매니페스트 및 소프트웨어에 대한 레퍼런스이다. 예를 들어, 매니페스트는 하나의 소프트웨어 오브젝트가 단지 어떤 다른 소프트웨어 오브젝트의 확장인 경우에 캐스케이딩할 수 있다. 이것은 간단한 개별화된 애플리케이션의 용이한 구축을 허용한다. 개별화된 애플리케이션은 애플리케이션의 외관 및 그 거동을 변경하도록 베이스 애플리케이션에 의해 사용되는 몇몇 셋팅 또는 자원을 오버라이딩할 수 있다. 베이스 애플리케이션은 그 자체의 어떤 부분이 의도된 영역으로 개별화의 범위를 적절하게 제한하도록 변형의 이러한 종류에 개방되는가에 대한 제약을 제공한다. 매니페스트(1400)에 외부적인 매니페스트 및 다른 소프트웨어에 대한 이들 레퍼런스는 의존적 매니페스트(1430)내에 기억된다. 또한 의존 매니페스트(1430)는 매니페스트(1400)에 로컬이지만 개별적으로 정의된 매니페스트를 식별할 수 있다. 대안으로, 의존 매니페스트(1430)는 논리적으로 포함되거나 또는 매니페스트(1400)와 링크된 별개로 기억된 매니페스트를 포함할 수 있다. 그러한 배열은 정보가 소프트웨어의 개발과 같은 단지 제한된 목적을 위해서만 관련되고 정상 동작 동안에는 필요로 되지 않는 경우에 유익할 수 있다.Dependent manifest 1430 identifies external dependencies of manifest 1400. This is a reference to manifest and software that is not local to manifest 1400. For example, a manifest can cascade when one software object is just an extension of some other software object. This allows for easy deployment of simple personalized applications. Personalized applications may override some settings or resources used by the base application to change the appearance and behavior of the application. The base application provides a constraint on what part of itself is open to this kind of variant to properly limit the scope of individualization to the intended area. These references to manifests and other software external to manifest 1400 are stored in dependent manifest 1430. The dependency manifest 1430 may also identify a manifest that is local to the manifest 1400 but is individually defined. Alternatively, dependency manifest 1430 may include a manifest stored logically or separately stored linked to manifest 1400. Such an arrangement may be beneficial when the information is relevant only for limited purposes, such as the development of software, and is not needed during normal operation.

엔트리 포인트(1440)는 매니페스트(1400) 및 그 연관 소프트웨어가 외부 소프트웨어에 이용가능하게 하는 (엔트리-포인트, 자원, 및 서비스와 같은) 소프트웨어 오브젝트를 위해 공개 이름을 노출한다. 매니페스트(1400)에 로컬인 소프트웨어 오브젝트 이름은 또한 엔트리 포인트(1440)내에 존재할 수 있다. 이름 및 메타데이터는 특정 소프트웨어 오브젝트 및 그 소프트웨어 오브젝트에 의해 사용되는 모든 다른 소프트웨어 오브젝트를 식별하도록 사용된다. (메타데이터는 버전, 로케일, 및 플랫폼과 같은 정보를 포함한다.) 빌딩은 이름 의존도가 리졸빙되는 프로세스이다. 이름이 그 결과 오브젝트로 리졸빙되고 나면, 그 오브젝트는 애플리케이션에서 사용될 수 있다. 소프트웨어 오브젝트 사이의 모든 바인딩은 매니페스트를 통하여 가고, 컴퓨팅 환경 자체, 관리자, 또는 독립한 소프트웨어 개발자에 의해 매니페스트에 적용된 폴리시에 의해 영향받을 수 있다. 따라서, 이름 리졸루션은 폴리시 및 보안 디시젼을 삽입할 기회를 제공한다. 이름은 실제로 코드 또는 데이터를 제공하는 것이 아니라 코드 및 데이터에 액세스하도록 리졸빙되는 간접이기 때문에, 빌딩 프로세스동안 필요할 때 액세스를 리디렉팅 또는 제약하는 것이 가능하다.Entry point 1440 exposes a public name for software objects (such as entry-points, resources, and services) that manifest 1400 and its associated software make available to external software. Software object names local to manifest 1400 may also exist within entry point 1440. The name and metadata are used to identify a particular software object and all other software objects used by that software object. (Metadata includes information such as version, locale, and platform.) Building is the process by which name dependencies are resolved. After the name is resolved to the resulting object, the object can be used in the application. All bindings between software objects go through the manifest and can be influenced by the policy applied to the manifest by the computing environment itself, the administrator, or an independent software developer. Thus, name resolution offers the opportunity to insert policy and security decision. Because the name is indirectly resolved to access the code and data rather than actually providing the code or data, it is possible to redirect or restrict access as needed during the building process.

예를 들어, 애플리케이션의 매니페스트(1400)는 메타데이터 요청하는 버전 1을 갖는 특정 런타임 소프트웨어 오브젝트를 사용하도록 요청할 수 있다. 그러나, 관리자는 특정 런타임 소프트웨어 오브젝트의 더 새로운 버전이 모든 요청에 대하여 사용되도록 폴리시를 세팅할 수 있다. 메타데이터 정보로 인하여 애플리케이션이 더 새로운 버전을 사용하여 브레이킹한다면 관리자는 애플리케이션과의 작업에 알려져 있는 런타임의 버전을 애플리케이션이 사용하게 하도록 폴리시를 변경할 수 있음을 주목하자. 또한 이름 리졸루션은 시스템내의 보안 폴리시에 의존하는 어떤 이름의 리졸루션을 허용하지 않음으로써 프로세스내로 보안을 삽입할 기회를 제공한다.For example, the application's manifest 1400 may request to use a particular runtime software object with version 1 requesting metadata. However, an administrator can set a policy so that newer versions of specific runtime software objects are used for all requests. Note that if an application breaks with a newer version because of metadata information, the administrator can change the policy to make the application use a version of the runtime that is known to work with the application. Name resolution also provides the opportunity to inject security into the process by not allowing any name resolution to depend on the security policy in the system.

구성 정보(1450)는 소프트웨어에 의해 필요로 되는 데이터 테이블 및 플랫폼 서비스를 식별한다. 구성 정보(1450)는 또한 매니페스트(1400)와 연관된 소프트웨어가 어떻게 사용될 수 있는지 또는 어떻게 거동해야 하는지를 기술할 수 있다. 예를 들어, 소프트웨어는 크레디트 카드 클리어링 서비스를 제공할 수 있다. 크레디트 카드 트랜잭션을 관리하기 위한 2개의 옵션이 있다: (1)서비스 프로바이더가 프로세싱에 대한 제어를 유지하거나, 또는 (2)서비스 프로바이더는 서비스를 편입하는 개발자가 개발자 자신의 크레디트 카드 트랜잭션을 관리하게 한다. 서비스 프로바이더가 이들 옵션 중 하나만을 구현한다면, 그 정보는 서비스를 실행시키도록 사용되는 구성 정보(1450)내에 캡처링될 수 있다. 또한 개발자에게 성능 및 디버깅 정보를 제공하도록 구성 정보(1450)내에 모니터가 포함될 수 있다.Configuration information 1450 identifies the data table and platform services needed by the software. Configuration information 1450 may also describe how software associated with manifest 1400 can be used or how it should behave. For example, the software may provide a credit card clearing service. There are two options for managing credit card transactions: (1) the service provider maintains control over processing, or (2) the service provider manages the developer's own credit card transactions. Let's do it. If the service provider implements only one of these options, the information can be captured in configuration information 1450 used to run the service. A monitor can also be included in the configuration information 1450 to provide the developer with performance and debugging information.

상기한 바와 같이, 매니페스트(1400)는 소프트웨어의 다양한 버전을 유지하는 것을 용이하게 한다. 이러한 특성은 새로운 소프트웨어를 배치할 때 매우 유용할 수 있다. 매니페스트(1400)의 본성은 다양한 컴포넌트, 서비스, 및 애플리케이션의 다양한 상태 및 구성 정보가 서로로부터 아이솔레이팅되게 한다. 이러한 아이솔레이션은 컴포넌트, 서비스, 및 애플리케이션의 다른 버전이 나란히 실행될 수 있고, 그들이 설계되고 테스팅되는 소프트웨어의 특정 버전으로의 다른 소프트웨어 오브젝트 액세스를 허용한다는 것을 의미한다. 결과로서, 새로운 버전이 스타트업하는 동안 구 버전은 작업을 끝내는 페이징된 배치, 아이솔레이팅되고 공유된 배치, 및 (프론트 엔드 서버로부터 백 서버로의) 멀티-티어 배치가 가능하다.As noted above, manifest 1400 facilitates maintaining various versions of software. This feature can be very useful when deploying new software. The nature of manifest 1400 allows various state and configuration information of various components, services, and applications to be isolated from each other. This isolation means that different versions of components, services, and applications can run side by side and allow access to other software objects to specific versions of the software they are designed and tested on. As a result, while the new version starts up, the old version allows for paged deployments to finish work, isolated and shared deployments, and multi-tier deployments (from front end server to back server).

매니페스트(1400)와 같은 매니페스트는 코드 관리에 상당한 이익을 제공한다. 예를 들어, 매니페스트는 (1)컴포넌트, 서비스, 및 애플리케이션의 자체-기술을 허용하고, (2)개발자 및 관리자에 의해 컴포넌트, 서비스, 또는 다른 애플리케이션으로부터 애플리케이션 합성을 가능하게 하고, (3)컴포넌트/서비스/애플리케이션 명명, 디스커버리, 및 런타임에서 바인딩을 용이하게 하고, (4)라이센싱, 버전잉, 분산, 및 다큐멘팅의 부가된 이슈를 갖는 개발/설계 타임 시나리오를 가능하게 하고, (5)레거시 시스템의 상호운용가능성을 가능하게 하고, (6)컴포넌트, 서비스, 및 애플리케이션의 쉬운 분산/인스톨, (7)애플리케이션/서비스/컴포넌트 헬스의 온고잉 관리를 가능하게 한다.Manifests, such as manifest 1400, provide significant benefits for code management. For example, a manifest can (1) allow self-description of components, services, and applications, (2) enable application synthesis from components, services, or other applications by developers and administrators, and (3) components Facilitate binding at / service / application naming, discovery, and runtime, (4) enable development / design time scenarios with added issues of licensing, versioning, distribution, and documenting, and (5) legacy It enables the interoperability of the system, (6) easy distribution / installation of components, services, and applications, and (7) on-going management of application / service / component health.

상기 코드 관리는 개발자, 관리자, 및 최종 사용자가 도 1 및 도 2에 도시된 전 클라이언트 및 서버 티어에서 애플리케이션을 쓰고, 소비하고, 배치하고, 업데이트하고, 명명하고, 위치시키게 하도록 매니페스트를 사용한다. 이하의 예는 도 1 및 도 2를 참조하여 매니페스트가 클라이언트로부터의 애플리케이션을 인스톨 및 실행하도록 어떻게 사용될 수 있는가를 설명한다.The code management uses manifests to allow developers, administrators, and end users to write, consume, deploy, update, name, and place applications in the entire client and server tier shown in FIGS. The following example illustrates how the manifest can be used to install and run an application from a client with reference to FIGS. 1 and 2.

이러한 예에 있어서, 검색 엔진 또는 다른 쉘을 경유하여, 사용자는 특정 워드 프로세싱 애플리케이션을 위해 유니폼 리소스 로케이터(URL)에 네비게이팅하도록 도 1의 클라이언트(110) 중 하나를 사용하는데, URL은 서버 연합(120)내에 위치하고 있다. 이러한 애플리케이션이 이미 클라이언트상에 "인스톨"되어 있다면(즉, 이미 실행되고 있으면), 애플리케이션은 URL로 네비게이팅될 때 로컬 캐시로부터 실행된다. 애플리케이션이 클라이언트상에 "인스톨"되어 있지 않으면(즉, 클라이언트상에서 사전 실행되고 있지 않으면), 애플리케이션은 다운로딩되어 이제 설명되는 프로세스를 사용하여 실행될 것이다.In this example, via a search engine or other shell, the user uses one of the clients 110 of FIG. 1 to navigate to a uniform resource locator (URL) for a particular word processing application, the URL being a server federation ( Located within 120). If such an application is already "installed" on the client (ie already running), the application runs from the local cache when navigated to the URL. If the application is not "installed" on the client (ie, not already running on the client), the application will be downloaded and run using the process described now.

인스톨러 모듈은 애플리케이션과 연관된 매니페스트를 다운로딩한다. 그 후 인스톨러는 플랫폼 요구 및 알려진 비양립성의 어셈블리 모두에 대한 클라이언트의 구성과 매니페스트를 비교한다. 애플리케이션이 클라이언트상에서 실행될 수 없는 이벤트에 있어서, 에러 메시지가 클라이언트상에 나타난다. 애플리케이션이 클라이언트상에서 실행될 수 있다면, 인스톨러는 URL을 사용하여 서버 연합(120)내의 사이트에 접속한다. 그 후 클라이언트는 최종 사용자 라이센싱 어그리먼트(EULA)뿐만 아니라 구매/리스/인증 디시젼과 같은 어떤 사용자 인터페이스를 디스플레이한다. 그 후 애플리케이션은 온 디맨드 또는 전형적인 기능의 패키지로서 다운로딩된다. 애플리케이션의 자동 서비싱은 본 발명에 따라 비동기 메시징을 사용하여 인스톨 URL로부터 매니페스트의 정기적인 업데이트를 경유하여 구동될 것이다.The installer module downloads the manifest associated with the application. The installer then compares the client's configuration and manifests for both platform requirements and known incompatible assemblies. In the event that the application cannot run on the client, an error message appears on the client. If the application can run on the client, the installer uses the URL to connect to the site in server federation 120. The client then displays some user interface, such as a purchase / lease / authentication decision, as well as an End User Licensing Aggregation (EULA). The application is then downloaded as a package of on demand or typical functionality. Automatic servicing of the application will be driven via regular updating of the manifest from the installation URL using asynchronous messaging in accordance with the present invention.

L. 시나리오L. Scenario

이하 시나리오는 본 발명의 분산 컴퓨팅 서비스 플랫폼(115)이 어떻게 더 쉬운 협조 및 통신을 가능하게 함으로써 사용자를 엠파워링하는가를 예시한다. 시나리오는 사용자의 3개의 카테고리로 나뉜다: (1)날리지(knowledge) 작업자, (2)소비자, 및 (3)개발자.The scenario below illustrates how the distributed computing services platform 115 of the present invention empowers a user by enabling easier coordination and communication. Scenarios fall into three categories of users: (1) knowledge workers, (2) consumers, and (3) developers.

날리지 작업자/비즈니스 시나리오Knowledge Worker / Business Scenario

7사이클이라 불리는 소형 비즈니스 바이크 제조자는 알렉스에 의해 소유된다. 7사이클은 새로운 하이-엔드 바이크를 막 설계하였고 스포츠 상품 배급업자에게 새로운 바이크를 마켓팅할 필요가 있다. 이러한 시나리오는 몇몇 비즈니스 테마(예를 들어, 어느때/어느곳에서 정보로의 액세스 및 통합) 및 테크놀로지 테마(예를 들어, 전 디바이스에서 연합, 차세대 생산성 툴, 스키마 기반 통합)를 예시한다. The manufacturer of a small business bike called seven cycles is owned by Alex. The 7th cycle has just designed a new high-end bike and needs to market a new bike to a sports product distributor. These scenarios illustrate several business themes (eg, access to and integration of information at any time and from where) and technology themes (eg, federation across all devices, next generation productivity tools, schema-based integration).

알렉스의 퍼스널 컴퓨터(PC)는 메시지, 캘린더, 콘택트/"버디 리스트" 등을 나타내는 그녀의 "시작 페이지" 또는 "홈 페이지"를 포함하는 개인화된 사용자 인터페이스를 디스플레이한다. 사용자 인터페이스는 단일 통합 인터페이스에서 이-메일 메시지 및 음성 메시지를 포함한다는 점에서 멀티-모달이다. 음성 메시지는 텍스트 메시지로 변환될 수 있고 이-메일 메시지는 원할 때 음성 메시지로 변환될 수 있다. 또한, 사용자 인터페이스는 애플리케이션-기반이 아니라 콘텐트-기반이다. 예를 들어, 시작 페이지는 다양한 애플리케이션에 의해 통상 제공되는 정보(즉, 음성 메일 메시지, 캘린더, 콘택트 등)를 포함한다.Alex's personal computer (PC) displays a personalized user interface that includes her "start page" or "home page" representing messages, calendars, contacts / "buddy lists", and the like. The user interface is multi-modal in that it includes e-mail messages and voice messages in a single integrated interface. Voice messages can be converted to text messages and e-mail messages can be converted to voice messages when desired. In addition, the user interface is content-based, not application-based. For example, a start page includes information typically provided by various applications (ie, voice mail messages, calendars, contacts, etc.).

알렉스는 관리 비즈니스를 돕도록 설계된 서비스(예를 들어, 마이크로소프트사에 의해 제공되는 bCentralTM)에 로그온하기 위해 그녀의 PC를 사용하고 새로운 바이크를 7사이클의 온라인 카탈로그에 부가하기 위해 서비스를 사용한다. 서비스는 카탈로그 엔트리를 위한 템플릿을 브링업한다. 그 후 그녀는 새로운 바이크에 대한 정보(사진, 마켓팅 코우트, 제품 명세 등)를 찾으려고 (그녀의 퍼스널 데이터 스토어 및 다른 소스를 포함하는) 7사이클의 법인 인트라넷을 검색하고 적합한 정보를 카탈로그 템플릿으로 드래그 앤 드롭핑한다. 바이크에 대한 제품 명세는 공통 기술 언어(즉, XML)에서 제공되고 카탈로그 템플릿 서비스가 명세내의 정보를 이해하고 적합한 정보를 템플릿에 거주시키도록 스키마(상기 스키마 절을 보라)에 따른다. 알렉스는 업데이트된 카탈로그 페이지를 미리보고 출판한다. 그 후 새로운 바이크는 7사이클의 웹사이트에 리스팅된다.Alex uses her PC to log on to services designed to help her management business (e.g., bCentral TM provided by Microsoft) and uses the service to add new bikes to the 7-cycle online catalog. . The service documents up the template for the catalog entry. She then browses the 7-cycle corporate intranet (including her personal data store and other sources) and drags the appropriate information to the catalog template to find information about the new bike (photos, marketing courts, product specifications, etc.). And drop it. Product specifications for bikes are provided in a common description language (ie XML) and follow the schema (see schema section above) to allow the catalog template service to understand the information in the specification and populate the template with the appropriate information. Alex previews and publishes the updated catalog page. The new bike is then listed on seven cycles of the website.

그 후 알렉스는 새로운 바이크의 특징을 이룰 수 있는 다른 사이트/회사의 리스팅에 대한 디렉토리를 문의하도록 서비스를 사용한다. 디렉토리 서비스(상기 디렉토리 절 참조)는 엔터프라이즈 레벨 메타-디렉토리의 스키마-용이하게된 동기화를 통하여 인터넷-와이드 디렉토리 서비스를 제공하기 때문에, 로버스트 인터넷-와이드 디렉토리 리스팅의 이들 종류는 대단히 용이하게 된다. 그 후 알렉스는 새로운 바이크에 대한 정보를 이들 다른 회사에 공유한다.Alex then uses the service to query the directory for listings from other sites / company that may characterize the new bike. These types of robust Internet-wide directory listings are greatly facilitated because directory services (see the Directory section above) provide Internet-wide directory services through schema-easy synchronization of enterprise-level meta-directories. Alex then shares information about the new bike with these other companies.

또한 알렉스는 사람들이 새로운 바이크에 대한 정보를 즉시 찾을 수 있도록, 새로운 바이크에 대한 키워드의 리스트를 자동으로 발생시키고 이들을 몇몇 검색 엔진에 공유하기 위해 서비스를 사용한다.Alex also uses the service to automatically generate lists of keywords for new bikes and share them with several search engines so that people can immediately find information about new bikes.

알렉스는 웹상에서 7사이클의 새로운 바이크를 본 스포츠 상품 배급업자의 종업원인 산드라로부터 이메일을 받는다. 산드라는 알렉스가 트레이드쇼에서 그녀를 만날것을 제안한다. 알렉스는 셀 폰과 같은 휴대용 클라이언트 디바이스상에서 메시지를 수신한다. 이러한 클라이언트 디바이스의 사용자 인터페이스는 PC의 그것보다 더 작지만, 사용자 인터페이스에 의해 제공되는 특성은 PC의 사용자 인터페이스에 의해 제공되는 것들과 일관된다. 예를 들어, 폰은 콘택트 및 긴급 메시지를 나타내는 개별화된 하이라이트 페이지를 갖는 알렉스의 시작 페이지의 스케일링 다운 버전을 디스플레이한다.Alex receives an email from Sandra, an employee of a sports product distributor who saw seven new bikes on the web. Sandra suggests Alex meet her at the trade show. Alex receives a message on a portable client device such as a cell phone. The user interface of such a client device is smaller than that of the PC, but the characteristics provided by the user interface are consistent with those provided by the user interface of the PC. For example, the phone displays a scaling down version of Alex's start page with a personalized highlight page representing contact and emergency messages.

알렉스가 산드라의 스케쥴에 링크하게 하고 트레이드쇼에서 그녀의 부스에 맵을 제공하는 콘택트 관리 페이지로 알렉스는 항해한다. 산드라의 스케쥴은 그러한 스케쥴 발행을 인에이블하는 알렉스의 나의 상태 디렉토리(디렉토리 절 참조)에 링크된 적응 디렉토리를 통하여 액세스될 수 있다. 알렉스는 스피치-텍스트 변환을 사용하여 산드라의 메시지에 회답하는데, 알렉스가 이-메일 메시지를 구술하게 한다. 그녀는 산드라의 캘린더를 검사하고 2시경에 만날 것을 제안한다.Alex navigates to a contact management page that links Alex to Sandra's schedule and provides a map to her booth at the trade show. Sandra's schedule can be accessed through an adaptive directory linked to Alex's My Status directory (see the Directory section) that enables such schedule publication. Alex replies to Sandra's message using speech-to-text conversion, causing Alex to dictate an e-mail message. She checks Sandra's calendar and suggests meeting him around 2 o'clock.

알렉스는 트레이드쇼에 도착하고 그녀의 퍼스널 위치 및 산드라의 부스의 위치를 보여주는 그녀의 셀 폰상의 맵을 브링업하도록 프록시미티/위치 어웨어니스 서비스를 사용한다. 맵은 그녀가 부스에 다가감에 따라 그녀의 위치를 트랙킹한다.Alex uses Proximity / Location Awareness Service to arrive at the trade show and bring up a map on her cell phone showing her personal location and the location of Sandra's booth. The map tracks her location as she approaches the booth.

그녀가 산드라를 만날 때, 산드라는 새로운 바이크에 대한 명세를 볼 수 있는지를 묻는다. 모든 정보는 7사이클의 법인 인트라넷상에 위치해 있다고 알렉스가 말한다. 그녀는 산드라의 태블릿 PC를 빌리고 게스트 사용자로서 로그인한다-(그녀의 작업 PC상에서의 것과 같은) 그녀의 시작 페이지가 하부의 지오-관련 정보(예를 들어, 알렉스로의 인터레스트의 로컬 것)와 함께 디스플레이된다. 따라서, 상기된 기억장치, 디렉토리, 및 보안 컴포넌트는 알렉스로 하여금 새로운 클라이언트 디바이스상에 자신을 인증하고 모든 그녀의 개인화된 정보를 클라이언트 디바이스를 통하여 이용할 수 있게 한다. 최근 콘택트 리스트로부터, 알렉스는 바이크 명세를 찾고 정보가 산드라에게 공유될 것을 요청한다. 산드라가 로그인한 후에, 연합된 보안 도메인을 통하여 보안 방식으로 그녀의 태블릿 PC상에서 바이크 명세가 이용될 수 있다.When she meets Sandra, she asks if she can see the specifications for her new bike. All the information is located on a seven-cycle corporate intranet, Alex says. She borrows Sandra's tablet PC and logs in as a guest user-her start page (such as on her working PC) has a lower geo-related information (eg, local to the interest in Alex). Are displayed together. Thus, the storage, directory, and security components described above allow Alex to authenticate himself on a new client device and make all her personalized information available through the client device. From the recent contact list, Alex finds a bike specification and asks Sandra to share the information. After Sandra logs in, the bike specification can be used on her tablet PC in a secure manner through the federated security domain.

산드라가 트레이드쇼로부터 돌아간 후에, 산드라는 음성 및 이-메일 메시지에 액세스하도록 그녀의 작업 PC를 사용한다. 산드라의 시작 페이지는 퍼스널, 프로페셔널, 및 웹 정보의 믹스를 디스플레이한다. 산드라는 새로운 바이크에 대하여 스포츠 상품 체인 소매상에게 제안을 준비하기 위해 필요한 공동-작업자에게 메시지를 송신한다. 그녀가 타이핑할 때, 시스템은 예를 들어 또 다른 공동 작업자의 이름 및 제안 기일과 같이 액션 메뉴에 적합한 어떤 콘텐트를 인식한다. 시스템은 콘택트 & 캘린더 정보에 자동으로 및 적합하게 링크되도록 그들을 인에이블하는 데이터 타입의 관련성을 인식한다. 이러한 의미적 통신은 스키마 절에서 설명되어 있다.After Sandra returns from the trade show, Sandra uses her work PC to access voice and e-mail messages. Sandra's start page displays a mix of personal, professional, and web information. Sandra sends a message to the co-worker who is needed to prepare a proposal to the sporting goods chain retailer for the new bike. As she types, the system recognizes some content suitable for the action menu, such as the name of another collaborator and the due date of the offer. The system recognizes the relevance of the data types that enable them to be automatically and properly linked to contact & calendar information. This semantic communication is described in the schema section.

그 후 산드라는 제안을 위해 "프로젝트 페이지"를 생성하는데, 스키마 절에서 설명된 자동-완성 특성을 사용하여 이-메일의 모든 이름을 자동으로 포함하고 정보/협조를 공유하기 위한 웹 페이지를 셋업하고 문서가 프로젝트내에 포함되도록 제안한다. (다른 회사/보안 도메인으로부터의) 알렉스는 또한 프로젝트상에 포함되어 있다. 그 후 산드라는 다른 팀 멤버와 실시간으로 공유되는 제안을 쓰기 시작한다. 이것은 메시징 절에서 설명된 비동기 메시징을 사용하여 달성될 수 있다. 그들은 행해지고 있는 변경을 논의하기 위해 인스턴트 메시징/챗을 사용한다. 제안은 텍스트, 그래픽스, 비디오 등을 포함하는 멀티미디어 문서이다. 제 3자의 콘텐트(예를 들어, 이미지 하우스로부터의 사진)는 쉘내로 직접 통합될 수 있다. 비디오 콘텐트는 애노테이팅될 수 있다.Sandra then creates a "project page" for suggestions, using the auto-completion properties described in the schema section to set up a web page to automatically include all names in the email and share information / cooperation. It is suggested that the document be included in the project. Alex (from another company / security domain) is also included on the project. Sandra then begins to write suggestions shared in real time with other team members. This can be accomplished using asynchronous messaging as described in the messaging section. They use instant messaging / chat to discuss the changes that are being made. Proposals are multimedia documents that include text, graphics, video, and the like. Third party content (eg, photos from image houses) can be integrated directly into the shell. Video content may be annotated.

산드라는 직장에서 집으로 운전해 가면서, 그녀의 오토PC가 그녀가 (그녀가 인터럽팅되어야함을 지정한) 제안에 관련한 메시지를 받았음을 그녀에게 알려줄 때 그녀의 카 폰으로부터 남편과 이야기하고 있다. 이들 알림은 이벤트 절에서 상기된 바와 같이 소정 이벤트에 응답하여 발행된다. 이들 소정 이벤트의 부분은 사용자-정의된 규칙을 포함한다. 예를 들어, 산드라는 그녀의 카 폰상에서 그녀가 인터럽팅되어야 할 조건을 지정하였다. 이메일은 제안에 포함된 부가적인 데모그래픽 정보를 그들이 원한다는 소매상으로부터의 메시지이다. 집에 도착시, 산드라는 그녀의 (시작 페이지상에 퍼스널 "스킨"을 갖고 그녀의 프로파일이 약간 다를 수 있는) 홈 PC를 사용한다. 퍼스널 "스킨"을 형성하는 프레퍼런스 정보는 디렉토리 절에서 논의된 홈 프레즌스 또는 나의 상태 적응 디렉토리내에 기억될 수 있다. 그녀는 외부 웹사이트 및 그녀 회사의 데이터베이스로부터 문서내로 정보를 필터링/머징/맵핑함으로써 부가적인 데모그래픽 정보를 제안내로 편입한다. 다른 웹사이트로부터의 정보의 이러한 머징은 스키마에 의해 용이하게 된다.Sandra is driving home from work, talking to her husband from her car phone when her AutoPC tells her that she has received a message regarding a proposal (which she specified should be interrupted). These notifications are issued in response to certain events as described above in the Events section. Part of these predetermined events includes user-defined rules. Sandra, for example, specified the conditions on which she should be interrupted on her car phone. The email is a message from the retailer that they want additional demographic information included in the offer. Upon arriving home, Sandra uses her home PC (who has a personal "skin" on the start page and her profile may be slightly different). The preference information that forms the personal "skin" can be stored in the home presence or my state adaptation directory discussed in the Directory section. She incorporates additional demographic information into the proposal by filtering / merging / mapping the information into documents from external websites and databases of her company. This merging of information from other websites is facilitated by the schema.

다음날, 알렉스는 원래 프로세싱된 바와 같이 산드라의 비즈니스로보다는 30개의 다른 소매상으로 하룻밤동안 바이크를 수송하도록 오더를 변경할 필요가 있다는 메시지를 산드라로부터 수신한다. 알렉스는 알림 형식에 의해 이미 알렉스에게 플래깅되어 있는 변경된 구매 오더용 템플릿에 산드라가 기입한 비즈니스 서비스에 로그온한다. 알렉스는 재검토하고 툴바상의 "변경 수락"을 치면, 그 결과 시스템은 UPS를 경유하여 선적을 확인하기를 원하는지 알렉스에게 문의해야 하는 것을 실현하도록 스키마를 사용한다. 그녀가 "예"라고 말하면 시스템은 새로운 선적 이벤트를 생성하고, 선적을 배열하도록 UPS와 알렉스를 접속한다. UPS와 7사이클 사이의 캘린더 수수는 알렉스의 캘린더에 자동으로 나타내어지는 픽업 시간을 세팅한다. 산드라는 변경 오더가 처리되었다는 알림을 수신한다. 비즈니스 서비스는 분산 이벤트 시스템을 사용함으로써 사용자를 위한 이벤트(수신된 오더, 선적된 오더 등)를 트랙킹할 수 있다. 비즈니스 서비스는 알림 매니저를 경유하여 산드라에게 알림을 송신한다. 그녀에게 콘텍스트-센시티브 알림 서비스를 제공하는 전반적인 알림 시스템의 부분인 알림 매니저는 다양한 들어오는 알림을 모니터링하는 데 이용될 수 있다. 알림 매니저는 산드라의 현재 콘텍스트, 어텐션, 위치, 및 디바이스의 이용가능성에 대한 추론에 의존하여 중요하고 콘텍스트-센시티브 메시지를 산드라에게 포워딩한다.The next day, Alex receives a message from Sandra that, as originally processed, she needs to change her order to transport the bike overnight to 30 other retailers rather than to Sandra's business. Alex logs on to a business service written by Sandra in a template for a changed purchase order that is already flagged to Alex in a notification format. When Alex reviews and hits "Accept Changes" on the toolbar, the system uses the schema to realize that he needs to ask Alex if he wants to confirm the shipment via UPS. If she says yes, the system creates a new shipping event and connects UPS and Alex to arrange the shipment. Calendar transfers between UPS and 7 cycles set the pickup time that is automatically displayed in Alex's calendar. Sandra receives a notification that the change order has been processed. Business services can track events (received orders, shipped orders, etc.) for users by using a distributed event system. The business service sends a notification to Sandra via the notification manager. The Notification Manager, part of the overall notification system that provides her with context-sensitive notification services, can be used to monitor various incoming notifications. The notification manager forwards important and context-sensitive messages to Sandra depending on the inference of Sandra's current context, attention, location, and availability of the device.

소비자 시나리오Consumer scenario

이 시나리오는 일반적인 사용자 또는 소비자를 위한 본 발명의 이점에 초점을 맞춘다. 시나리오는 휴가가는 가족 및 십대 딸의 생활의 하루를 설명한다.This scenario focuses on the benefits of the present invention for a typical user or consumer. The scenario describes the day of life of the family and teenage daughter going on vacation.

이 시나리오는 본 발명에 의해 제공되는 고급 메시징, 일상 태스크의 간소화, 및 고급 엔터테인먼트를 예시한다. 몇몇 키 특성은 어디에나 존재하는 소정인을 위한 공통 퍼스나, 전 디바이스 스페이스에서 대화의 일관된 세트, 일관된 데이터 캡처, 디지털 에라의 모든 자원으로의 액세스를 포함한다(프라이버시, 전 디바이스 스페이스에서 자연 양방향 통신, 일관된 사용자 경험, 개인화된 엔터테인먼트, 사람 생활의 자연 부분인 웹).This scenario illustrates the advanced messaging, simplification of everyday tasks, and advanced entertainment provided by the present invention. Some key features include a common personality for anyone who exists everywhere, a consistent set of conversations across device spaces, consistent data capture, and access to all resources in the digital era (privacy, natural bidirectional communication across all device spaces, A consistent user experience, personalized entertainment, and the web as a natural part of human life).

가장(아버지)은 로스 앤젤레스 및 샌 디에고 동물원으로의 가족 휴가를 계획하기 위해 홈 PC를 사용한다. 하나의 서비스를 사용하여, 아버지는 몇몇 키류의 데이터를 PC에 주고 시스템은 단 한번 정보를 입력함으로써 항공편, 호텔, 차를 제안 및 예약하고 동물원 티켓을 얻는다. 서버는 스키마 기반 메시징하에서 정보를 의미적으로 교환할 능력을 누리기 때문에, 서버는 단일 사용자 요청을 사용하여 항공편, 호텔, 및 차 예약 데이터 및 동물원 티켓 이용가능성과 같은 다양한 데이터를 얻음에 있어서 서버 연합으로서 통신할 수 있다. 따라서, 아버지는 이러한 정보를 독립적으로 얻기 위해 각각의 서버에 접속해야만할 필요가 없다.The father uses a home PC to plan a family vacation to Los Angeles and the San Diego Zoo. Using one service, the father sends some key data to the PC, and the system only enters the information once, suggesting and booking flights, hotels and cars and getting zoo tickets. Because the server enjoys the ability to semantically exchange information under schema-based messaging, the server uses a single user request as a server federation to obtain various data such as flight, hotel, and car reservation data and zoo ticket availability. Can communicate. Thus, the father does not have to connect to each server to obtain this information independently.

또한 시스템은 하루 일찍 떠남으로써 돈을 절약할 수 있다는 것을 나타내고 모든 사람의 캘린더를 검사하여 그들이 이용될 수 있는지를 알아본다. 캘린더 정보는 XML 포맷으로 기억되어 있기 때문에, 시스템은 모든 사람의 캘린더를 동기화하여 어느 시간이 이용가능한지를 알아볼 수 있다. 시스템은 할인과 관련된 정보(예를 들어 프라임 카드, AAA 멤버쉽)를 제안함으로써 돈을 더 절약할 수 있다. 저장된 퍼스널 프레퍼런스에 근거하여, 서비스는 또한 가족이 휴가중인 동안 신문을 중단하고, 고양이에게 먹이를 주라는 이메일을 이웃에 송신하고 등을 한다. 이것은 프로파일 및 규칙에 근거하여 일상 태스크를 자동화하는 시스템 능력을 예시한다. 이벤트 절에서 설명된 이벤팅은 이벤트를 검출하고 이벤트에 근거하여 태스크를 수행하도록 사용될 수 있다.The system also indicates that you can save money by leaving early one day and check everyone's calendars to see if they are available. Because calendar information is stored in XML format, the system can synchronize everyone's calendars to see what time is available. The system can further save money by suggesting discount-related information (eg prime cards, AAA membership). Based on the stored personal preferences, the service also interrupts the newspaper while the family is on vacation, sends an email to the neighbor to feed the cat, and so on. This illustrates the system's ability to automate routine tasks based on profiles and rules. The events described in the Events section can be used to detect events and perform tasks based on the events.

그 후 어머니와 아버지는 조부모 기념일이라는 리마인더를 PC상에서 얻는다. 그들은 레스토런트에 예약하고 특별한 케이크를 주문하도록 비디오컨퍼런싱을 사용한다. 이것은 사용자 인터페이스의 멀티-모달 본성을 증명한다. 조부모는 (웹TV 유닛 또는 PC를 경유하여) 초대장을 수신하고 수락한다.After that, the mother and father get a reminder for their grandparents' day on the PC. They use videoconferencing to make reservations at the restaurant and order special cakes. This proves the multi-modal nature of the user interface. Grandparents receive and accept invitations (via a WebTV unit or PC).

버스를 타고 학교에 가는 아이들이 계획된 여행 통지를 받는다. 이러한 통지는 메시징 절에서 설명된 비동기 메시징을 경유하여 일어날 수 있다. 동물원 애플리케이션/서비스로의 링크는 아이들이 동물원 지도, 쇼타임등을 점검할 수 있게 한다.Children who go to school by bus receive planned travel notices. Such notification may take place via asynchronous messaging described in the messaging section. Links to zoo applications / services allow children to check zoo maps, showtimes and more.

가족이 공항에서 렌탈 카를 픽업할 때, 그것은 각각의 가족 멤버에 대한 다운로딩된 음악/비디오 프레퍼런스를 갖추고 있다(아버지는 차가 예약될 때 이러한 옵션을 지정하고 돈을 지불하였다). 개개인에 대한 프레퍼런스 정보는 기억장치 절에서 설명된 바와 같은 메가-스토어로부터 액세스되었다. 따라서, 이용가능한 프레퍼런스는 렌탈 카에 쉽게 이용될 수 있다.When a family picks up a rental car at the airport, it has a downloaded music / video preference for each family member (the father specified these options and paid when the car was booked). The preference information for the individual was accessed from the mega-store as described in the storage section. Thus, the available preferences can be readily used in rental cars.

차 안에 있는 동안, 딸이 배고프다 하고 프록시미티/위치 어웨어니스 서비스를 사용하여 차의 어떤 반경내에 있는 그녀가 즐겨찾는 패스트 푸드 음식점 중 하나의 위치를 파악하고, 방향을 얻어서 가족을 위한 음식을 미리 주문한다. 프록시미티/위치 어웨어니스 애플리케이션은 디렉토리 절에서 설명된 디렉토리 아키텍처를 통하여 적응 디렉토리에 액세스한다. 가족은 더 짧은 사전 주문 라인으로 가서 음식을 가져오는 옵션을 갖는다. 그들은 스마트 카드로 지불한다.While in the car, the daughter is hungry and uses the proximity / location awareness service to locate one of her favorite fast food restaurants within a certain radius of the car, get directions and pre-order food for the family. do. The Proximity / Location Awareness application accesses the adaptive directory through the directory architecture described in the Directory section. The family has the option to go to the shorter pre-order line to bring food. They pay by smart card.

동물원에 들어갈 때, 아들은 동물원의 애플리케이션의 카피를 그의 PDA에 다운로딩한다. 동물원의 애플리케이션은 맵, 이벤트(동물 먹이주기), 동물원에서의 개개의 디스플레이에 대한 데이터(예를 들어 침팬지 상세), 쇼핑 프로모션 등을 포함한다. 그는 학교로부터의 그의 버디 중 하나가 또한 동물원에 있다는 알림을 수신하고 그들은 메시지를 교환하고 후에 만날 계획을 한다. 이러한 알림을 용이하게 하기 위해서, PDA와 연관된 위치 센서는 위치 어웨어니스 애플리케이션 프로그램에 데이터를 제공할 수 있다. 이러한 애플리케이션은 디렉토리 절에서 설명된 인터넷-와이드 디렉토리 아키텍처에 위치를 제공한다. 버디는 또한 버디의 위치를 인터넷-와이드 디렉토리 서비스에 포워딩하는 애플리케이션을 갖는다. 위치 어웨어니스 프로그램에 의해 호스팅된 이벤트는 버디가 아들의 어떤 거리내에 있거나 또는 아들과 공통 지역(예를 들어 동물원)내에 있을 때 트리거링된다. 이러한 이벤트는 비동기 메시징을 통하여 애플리케이션의 페이지 컴포넌트로 애플리케이션의 피에프돔 컴포넌트로부터 통신된다. 그 후 이벤트는 PDA의 사용자 인터페이스를 통하여 아들에게 통신될 알림을 트리거링한다. When entering the zoo, the son downloads a copy of the zoo's application to his PDA. Zoo applications include maps, events (animal feeding), data about individual displays in the zoo (eg chimpanzee details), shopping promotions, and the like. He receives a notification that one of his buddies from the school is also at the zoo and they exchange messages and plan to meet later. To facilitate this notification, a location sensor associated with the PDA can provide data to the location wearer application program. These applications provide a location in the Internet-wide directory architecture described in the Directory section. The buddy also has an application that forwards the buddy's location to the Internet-wide directory service. An event hosted by a location awareness program is triggered when the buddy is within some distance of the son or in a common area with the son (eg a zoo). These events are communicated from the application's FPM component to the application's page component via asynchronous messaging. The event then triggers a notification to be communicated to the son via the PDA's user interface.

어머니는 그들 커뮤니티 웹사이트에 포스팅하는 디지털 가족 사진을 동물원에서 찍는다. 조부모는 TV를 보고 있는 동안 새로운 사진이 있다는 알림을 텔레비전 인터넷 브라우저상에서 수신한다. 그들은 사진을 좋아하고 집 도처의 전자 프레임에 그들을 다운로딩한다. 조부모는 새로운 사진에 대해 웹사이트를 모니터링하는 이벤트를 호스팅하는 피에프돔 레이어를 갖는 애플리케이션을 실행시키고 있다. 이벤트는 새로운 사진이 포스팅될 때 트리거링되어 그 결과 메시징이 조부모에게 송신된다. 메시지는, 예를 들어, 이벤트에 응답하여 피에프돔 컴포넌트내에서 코드의 바디에 의해 발생될 수 있다(프로그래밍 모델 절 참조).Mothers take digital family photos at the zoo where they post on their community websites. Grandparents receive a notification on their television Internet browser that they have new photos while watching TV. They love photos and download them to electronic frames all over the house. Grandparents are running an application with a layer of F dome that hosts an event that monitors the website for new photos. The event is triggered when a new picture is posted so that messaging is sent to the grandparents. The message may be generated by the body of the code, for example in response to the event, in the FPM component (see section Programming Model).

휴가로부터 돌아오면, 십대 딸 제나는 그녀의 방에서 PC를 사용하고 그녀가 멀리 있을 때부터 메시지를 검색한다. 제나는 그녀의 UI상에 "십대 소녀" 스킨을 갖는다. 친구는 콘서트 가는 것에 대한 메시지를 남겼으나 그것은 다 팔렸다고 말했다. 메시지를 듣는 동안, 그녀는 관련 메시지를 갖고 있다는 알림을 수신한다. 그녀는 그 메시지를 개봉하고 2장의 티켓이 예약되었다고 그녀에게 알려준다(운좋게도, 제나는 그녀가 즐겨찾는 밴드가 타운에 있을 때 그녀를 위해 자동으로 티켓을 구매하는 뮤직 서비스에 서브스크라이빙한다). 또한 서비스는 그녀의 즐겨찾는 밴드로부터의 새로운 뮤직 클립을 제공한다. 제나는 이벤트 절에 설명된 이벤팅으로 인해 자동으로 티켓을 구입하고 이들 새로운 뮤직 클립을 얻을 수 있었다.Returning from vacation, teenage daughter Jenna uses her PC in her room and retrieves messages from the time she is away. Jenna has a "Teen Girl" skin on her UI. A friend left a message about going to a concert but said it was sold out. While listening to the message, she receives a notification that she has an associated message. She opens the message and informs her that two tickets have been booked (luckily, Jenna subscribes to a music service that automatically purchases tickets for her when her favorite band is in town). The service also offers new music clips from her favorite bands. Jenna was able to purchase tickets and get these new music clips automatically because of the events described in the Events section.

제나는 콘서트 티켓에 대하여 친구와 비디오컨퍼런싱하고 따라서 UI의 멀티-모달 특성을 증명한다. 그 후 그들은 숙제(레인 포레스트 이슈에 대한 비디오 레포트)에 대해 협조한다. 비디오컨퍼런스동안 그들은 프로젝트 사이트에 링크하여 비디오/텍스트의 실시간 편집을 한다. 제나는 동물원에 있는 동안 만든 비디오를 기고한다. 끝나면, 학교 웹사이트에 리포트를 제출한다.Xena conducts videoconferencing with her friends on concert tickets and thus proves the multi-modal nature of the UI. Then they cooperate with their homework (video report on the rain forest issue). During the video conference, they link to the project site for real-time editing of video / text. Jenna contributes a video she made while at the zoo. When finished, submit a report on the school's website.

제나는 학교의 웹사이트를 사용하여 그녀가 놓친 클래스의 비디오를 다운로딩하고 임의의 숙제를 업로딩한다. 그녀는 현재의 환경 이슈에 대해 리포팅해야 하는 것을 배운다. 그녀는 선택된 소스로부터 최근 환경 뉴스 클립을 찾아 그녀가 일어날 때 그것들을 이용할 수 있도록 지능적인 뉴스 에이전트에게 명령한다. 환경 뉴스 클립 검색은 디렉토리 절에서 설명된 적응 디렉토리의 인터넷-와이드 동기화에 의해 용이하게 된다.Jenna uses her school's website to download a video of the class she missed and upload some homework. She learns to report on current environmental issues. She finds recent environmental news clips from selected sources and instructs intelligent news agents to use them when she wakes up. Environmental news clip retrieval is facilitated by internet-wide synchronization of the adaptive directory described in the Directory section.

제나가 일어나면, 그녀의 뉴스 클립이 이용될 수 있다는 알림을 수신한다. 이러한 알림은 뉴스 클립이 이용가능할 때 트리거링된 이벤트에 의해 발생되었다. 그녀는 그것들을 전부 스캔하기 시작하고 그러나 늦게 실행되고 있고 그녀의 오토PC에 전달된 오디오를 갖고 있어서 학교 가는 중에 다 들을 수 있다. 차 안에 있는 동안, 그녀는 그녀의 클립을 선택하고 그것이 그녀의 태블릿 PC에 다운로딩되게 한다. 이것은 제나가 오디오를 서버 연합에 기억하고 그후 다른 클라이언트 디바이스상에 있는 동안 서버 연합으로부터 오디오를 다시 얻기 위해 기억장치 절에서 설명된 메가-스토어를 사용하였음을 증명한다. 학교에 도착시, 제나는 그녀의 태블릿PC상에서 학교 웹사이트를 검사하고 학교 신문을 읽고 점심 메뉴를 점검한다.When Jenna wakes up, she receives a notification that her news clip is available. This notification was generated by an event triggered when a news clip is available. She starts scanning all of them but is running late and has audio delivered to her auto PC so she can hear them all on her way to school. While in the car, she selects her clip and allows it to be downloaded to her tablet PC. This proves that Jenna used the mega-store described in the storage section to store the audio in the server federation and then get the audio back from the server federation while on another client device. Upon arrival at school, Jenna checks the school website on her tablet PC, reads the school newspaper, and checks the lunch menu.

방과후에, 제나는 그녀의 PC를 사용하여 친구와 비디오 게임을 원격 플레잉한다. 게임은 제나의 얼굴이 비디오 게임 캐릭터상에 나타나는 얼굴 맵핑/스캔잉 테크놀로지를 포함한다. 게임동안, 제나는 그녀의 리포트에 대하여 그녀를 칭찬한 그녀의 선생님으로부터 인스턴트 메시지를 수신한다. 또한 제나는 그녀의 즐겨찾는 영화 중 하나가 이제 다운로드 이용될 수 있다는 알림을 수신한다. 이러한 알림은 즐겨찾는 영화가 이용가능하였을 때 트리거링되는 이벤트에 응답하여 발생되었다.After school, Jenna uses her PC to remotely play video games with her friends. The game includes face mapping / scanning technology in which Jenna's face appears on the video game character. During the game, Jenna receives an instant message from her teacher who praised her for her report. Jenna also receives a notification that one of her favorite movies is now available for download. This notification was generated in response to an event triggered when a favorite movie is available.

개발자developer

이 시나리오는 비즈니스 여행중에 사고 당하기 쉬운 사람(즉, 스티브)을 설명한다. 이 시나리오의 키 포인트는 메가-스토어 또는 "클라우드"내의 퍼스널 정보로의 유니버설 보안 액세스, 정보로의 티어링된 사용자 액세스, 및 정보의 쉬운 교환이다.This scenario describes a person (ie Steve) who is susceptible to accidents during a business trip. Key points in this scenario are universal secure access to personal information in a mega-store or "cloud", tiered user access to information, and easy exchange of information.

스티브는 공항내의 렌탈 폰 장소에 있고 그는 그의 스마트 폰을 집에 놔두고 왔기 때문에 매우 당황스럽고 그의 정보로의 액세스가 필요하다. 운좋게도, 스티브는 스마트 카드를 소지하고 있고 그는 스마트 카드를 사용하여 폰을 렌트하고 서버 연합내의 메가-스토어로부터 그의 퍼스널 정보를 다운로딩할 수 있다. 이것은 정보에 액세스하기 위해 단일 방식으로서 스키마를 사용하는 것과 인터넷을 사용하는 것을 예시한다. 어디에서로부터나 "메가-스토어"로부터의 정보에 액세스하기 위한 인증이 보안 절에서 설명되었다. 스마트 카드는 스티브를 인증하고 스티브의 정보가 위치한 곳을 렌탈 폰에 말해준다(즉, 캘린더 정보는 X에 기억되어 있고, 콘택트 정보는 Y에 기억되어 있다 등). 그 후 폰은 이러한 정보를 검색하여 스티브를 위해 그것을 다운로딩한다.Steve is at the rental phone location in the airport and he is very embarrassed because he has left his smartphone at home and needs access to his information. Luckily, Steve has a smart card and he can use the smart card to rent a phone and download his personal information from a mega-store in the server federation. This illustrates using the schema and using the Internet as a single way to access information. Authentication to access information from anywhere in the "mega-store" is described in the security section. The smart card authenticates Steve and tells the rental phone where Steve's information is located (ie, calendar information is stored in X, contact information is stored in Y, etc.). The phone then retrieves this information and downloads it for Steve.

공항에서 나가는 길에, 스티브는 바이크 메신저와 충돌하여 발목을 다쳤다. 그는 낯선 도시에 있고 메디칼 어텐션을 위해 어디로 가야할지를 모른다. 스티브는 그의 홈 닥터를 호출하고 그의 보험을 받아들이는 근처 클리닉을 물어본다. 리셉션은 그 및 와이프의 현존 헬스 플랜하에 퍼센트 커버리지 및 스티브 근처의 클리닉의 위치를 파악하기 위해서, 정보의 더 효율적인 집합을 위해 클리닉 리퍼럴(referral) 서비스를 사용한다. 또한 그녀는 스티브가 즉시 약속을 찾도록 캘린더링 공유를 사용하고 클리닉과 직접 대화한다. 이것은 비즈니스 및 퍼스널 스키마의 자동 맵핑을 예시한다. 또한, 리스팅 또는 클리닉 및 클리닉 캘린더는 디렉토리 절에서 설명된 디렉토리 아키텍처를 통하여 이용가능하게 될 수 있다. On the way out of the airport, Steve hit his bike messenger and injured his ankle. He is in an unfamiliar city and does not know where to go for medical attention. Steve calls his home doctor and asks a nearby clinic to accept his insurance. The reception uses a clinic referral service for a more efficient collection of information to locate the percent coverage and location of the clinic near Steve under his and his existing health plan. She also uses calendaring sharing and talks directly with the clinic so Steve can find the appointment immediately. This illustrates the automatic mapping of business and personal schemas. In addition, listings or clinic and clinic calendars may be made available through the directory architecture described in the Directory section.

리셉션은 새로운 클리닉과 그의 메디칼 레코드를 공유하는 것을 승인하는지를 스티브에게 묻는다. 스티브는 그 자신을 인증하고 그의 메디칼 레코드의 리스트를 수신한다(그의 스마트 폰상에서). 그 후 그는 어느 레코드가 클리닉에 이용될 수 있게 하기를 원하는지 검사한다. 이것은 "티어링된 액세스"를 예시한다 - 시스템 레벨에 내장되어 있고 리치 스키마 및 데이터 기억장치/액세스에 의해 지원되는 보안을 갖는, 임의의 애플리케이션에 의한 정보로의 액세스의 거절 및 규칙-기반 타당성검사. 새로운 클리닉은 스티브가 발목이 삐었다고 말한다. 그들은 스티브의 레귤러 닥터에게 알림을 송신한다. 또한 그들은 X-레이를 송신하여서 닥터가 진단을 확인할 수 있다.The reception asks Steve if he approves sharing his medical records with the new clinic. Steve authenticates himself and receives a list of his medical records (on his smartphone). He then checks which records he wants to make available to the clinic. This illustrates "tiered access"-denial of access to information by any application and rule-based validation, with security built in at the system level and supported by rich schema and data storage / access. The new clinic says Steve has sprained ankles. They send a notification to Steve's regular doctor. They can also transmit x-rays so doctors can confirm the diagnosis.

M. M. 결어Lack

프로그래밍 모델, 스키마, 사용자 인터페이스, 이벤트, 메시징, 기억장치, 디렉토리, 보안, 및 코드 관리 컴포넌트를 포함하는 분산 컴퓨팅 서비스 플랫폼은 더 우수한 인터넷 기반 협조 및 더 우수한 웹 사이트간 통신을 용이하게 한다.Distributed computing services platforms, including programming models, schemas, user interfaces, events, messaging, storage, directories, security, and code management components, facilitate better internet-based collaboration and better inter-site communication.

본 발명은 본 취지 또는 본질적인 특성으로부터 벗어남이 없이 다른 특정 형식으로 구체화될 수 있다. 설명된 실시예는 모든 면에서 예시로서만 생각되어야지 제한하는 것으로 생각되어서는 안된다. 따라서, 본 발명의 범위는 상기 설명에 의해서보다는 첨부된 청구항에 의해서 나타내어진다. 청구항의 균등의 범위 및 의미내에서의 모든 변경이 그 범위내에 포함될 것이다.The invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The described embodiments are to be considered in all respects only as illustrative and not restrictive. Accordingly, the scope of the invention is indicated by the appended claims rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims (19)

제 1 클라이언트 디바이스 및 제 2 클라이언트 디바이스를 포함하는 복수의 클라이언트 디바이스와 통신하는 복수의 서버를 포함하는 네트워크에서 상기 제 1 클라이언트 디바이스와 상기 제 2 클라이언트 디바이스 사이의 미드-세션 트랜지션을 행하는 방법에 있어서,10. A method of performing a mid-session transition between a first client device and a second client device in a network comprising a plurality of servers in communication with a plurality of client devices including a first client device and a second client device. 적어도 하나의 서버상에 기억된 사용자의 상태 정보를 검색하는 단계 (a),(A) retrieving status information of a user stored on at least one server, 상기 상태 정보가 업데이트되도록 제 1 클라이언트 디바이스와 세션에서 대화하는 단계 (b),(B) communicating in a session with a first client device such that the status information is updated, 상기 적어도 하나의 서버상에 상기 업데이트된 상기 상태 정보를 기억하는 단계 (c),(C) storing the updated state information on the at least one server, 상기 세션이 제 2 클라이언트 디바이스상에서 계속될 때 상기 업데이트된 상기 상태 정보를 검색하는 단계 (d), 및 (D) retrieving the updated status information when the session continues on a second client device, and 상기 업데이트된 상기 상태 정보에 근거하여 제 2 클라이언트 디바이스와 상기 계속된 세션에서 대화하는 단계 (e)를 포함하고 있으며,(E) communicating with a second client device in the continued session based on the updated status information, 상기 복수의 서버는 서버 연합을 형성하고, 상기 단계 (a) 내지 단계 (e)는 상기 서버 연합의 둘 이상의 서버에 의해 협력적으로 수행되는 것을 특징으로 하는 방법.Said plurality of servers forming a server federation, wherein said steps (a) to (e) are performed cooperatively by two or more servers of said server federation. 제 1 항에 있어서, 상기 제 1 클라이언트 디바이스와 세션에서 대화하는 단계 (b)에 응답하여 상기 상태 정보가 업데이트되도록 허용하기 전에 상기 제 1 클라이언트 디바이스의 사용자를 인증하는 단계를 더 포함하는 것을 특징으로 하는 방법.2. The method of claim 1, further comprising authenticating a user of the first client device before allowing the status information to be updated in response to step (b) of conversing with the first client device in a session. How to. 제 2 항에 있어서, 상기 제 2 클라이언트 디바이스와 상기 계속된 세션에서 대화하는 단계 (e)전에 상기 제 1 클라이언트 디바이스의 사용자와 동일한 사용자인 것으로서 상기 제 2 클라이언트 디바이스의 사용자를 인증하는 단계를 더 포함하는 것을 특징으로 하는 방법.3. The method of claim 2 further comprising the step of authenticating the user of the second client device as being the same user as the user of the first client device prior to (e) communicating with the second client device in the continued session. Characterized in that. 제 1 항에 있어서, 상기 상태 정보는 복수의 서버에 의해 인식되는 스키마를 따르는 데이터 구조를 이용하여 상기 적어도 하나의 서버상에 기억되고, 상기 상태 정보의 의미는 상기 스키마에 의해 내포되는 것을 특징으로 하는 방법.The method of claim 1, wherein the status information is stored on the at least one server using a data structure conforming to a schema recognized by a plurality of servers, and the meaning of the status information is implied by the schema. How to. 제 4 항에 있어서, 상기 데이터 구조는 확장가능한 마크업 언어(XML)에 따라 구조화되는 것을 특징으로 하는 방법.5. The method of claim 4, wherein the data structure is structured according to Extensible Markup Language (XML). 제 1 항에 있어서, 상기 상태 정보의 적어도 일부는 사용자 인터페이스 정보를 포함하고, 상기 제 1 클라이언트 디바이스와 세션에서 대화하는 단계 (b)는 The method of claim 1, wherein at least some of the status information includes user interface information, and wherein (b) conversing in session with the first client device comprises: 상기 제 1 클라이언트 디바이스의 제 1 사용자 인터페이스 특성을 판정하는 단계, 및Determining a first user interface characteristic of the first client device, and 사용자 인터페이스 정보의 제 1 세트를 제 1 클라이언트 디바이스에 제공하는 단계를 포함하고, 상기 사용자 인터페이스 정보의 제 1 세트는 제 1 사용자 인터페이스 특성에 맞춰지는(tailored) 것을 특징으로 하는 방법.Providing a first set of user interface information to a first client device, wherein the first set of user interface information is tailored to a first user interface characteristic. 제 6 항에 있어서, 상기 제 2 클라이언트 디바이스와 상기 계속된 세션에서 대화하는 단계 (e)는7. The method of claim 6, wherein (e) conversing with the second client device in the continued session 상기 제 2 클라이언트 디바이스의 제 2 사용자 인터페이스 특성을 판정하는 단계, 및Determining a second user interface characteristic of the second client device, and 사용자 인터페이스 정보의 제 2 세트를 제 2 클라이언트 디바이스에 제공하는 단계를 포함하고, 상기 사용자 인터페이스 정보의 제 2 세트는 제 2 사용자 인터페이스 특성에 맞춰지는 것을 특징으로 하는 방법.Providing a second set of user interface information to a second client device, wherein the second set of user interface information is adapted to a second user interface characteristic. 제 7 항에 있어서, 상기 제 1 및 제 2 클라이언트 디바이스는 동일한 사용자 인터페이스 기능을 갖고, 상기 제 1 및 제 2 클라이언트 디바이스가 동일한 정보를 디스플레이하게 허용하도록 상태 정보의 제 1 및 제 2 세트는 실질적으로 동일한 사용자 인터페이스 정보를 포함하는 것을 특징으로 하는 방법.8. The method of claim 7, wherein the first and second client devices have the same user interface functionality and the first and second sets of status information are substantially to allow the first and second client devices to display the same information. And comprising the same user interface information. 제 7 항에 있어서, 상기 제 1 및 제 2 클라이언트 디바이스는 다른 사용자 인터페이스 기능을 갖고, 상기 사용자 인터페이스 정보의 제 1 및 제 2 세트는 다른 것을 특징으로 하는 방법.8. The method of claim 7, wherein the first and second client devices have different user interface functions and the first and second sets of user interface information are different. 제 9 항에 있어서, 상기 제 1 클라이언트 디바이스와 세션에서 대화하는 단계 (b)는 퍼스널 컴퓨터와 세션에서 대화하는 단계를 포함하는 것을 특징으로 하는 방법.10. The method of claim 9, wherein (b) conversing in session with the first client device comprises conversing in session with a personal computer. 제 10 항에 있어서, 상기 퍼스널 컴퓨터는 제 1 퍼스널 컴퓨터를 포함하고, 제 2 클라이언트 디바이스와 상기 계속된 세션에서 대화하는 단계 (e)는 제 2 퍼스널 컴퓨터와 상기 계속된 세션에서 대화하는 단계를 포함하는 것을 특징으로 하는 방법.11. The method of claim 10, wherein the personal computer comprises a first personal computer, and the step (e) of conversing with the second client device in the continued session comprises the step of conversing with the second personal computer in the continued session. Characterized in that. 제 10 항에 있어서, 상기 제 2 클라이언트 디바이스와 상기 계속된 세션에서 대화하는 단계 (e)는 모바일 전화기와 상기 계속된 세션에서 대화하는 단계를 포함하는 것을 특징으로 하는 방법.11. The method of claim 10, wherein said step (e) of conversing with said second client device in said continued session comprises conversing with said mobile telephone in said continued session. 제 9 항에 있어서, 상기 제 1 클라이언트 디바이스와 세션에서 대화하는 단계 (b)는 모바일 전화기와 세션에서 대화하는 단계를 포함하는 것을 특징으로 하는 방법.10. The method of claim 9, wherein (b) conversing in session with the first client device comprises conversing in session with a mobile telephone. 제 13 항에 있어서, 상기 모바일 전화기는 제 1 모바일 전화기를 포함하고, 상기 제 2 클라이언트 디바이스와 상기 계속된 세션에서 대화하는 단계 (e)는 제 2 모바일 전화기와 상기 계속된 세션에서 대화하는 단계를 포함하는 것을 특징으로 하는 방법.15. The method of claim 13, wherein the mobile telephone comprises a first mobile telephone, and the step of communicating with the second client device in the continued session (e) comprises the step of communicating with the second mobile telephone in the continued session. Method comprising a. 제 13 항에 있어서, 상기 제 2 클라이언트 디바이스와 상기 계속된 세션에서 대화하는 단계 (e)는 퍼스널 컴퓨터와 상기 계속된 세션에서 대화하는 단계를 포함하는 것을 특징으로 하는 방법.14. The method of claim 13, wherein (e) conversing with the second client device in the continued session comprises conversing with the personal computer in the continued session. 제 1 항에 있어서, 상기 제 1 클라이언트 디바이스와 세션에서 대화하는 단계 (b)를 적어도 일시적으로 중지하는 단계를 더 포함하고, 상기 제 2 클라이언트 디바이스와 상기 계속된 세션에서 대화하는 단계 (e)는 상기 제 1 클라이언트 디바이스와 세션에서의 대화를 적어도 일시적으로 중지하는 단계 후에 일어나는 것을 특징으로 하는 방법.2. The method of claim 1, further comprising at least temporarily suspending step (b) of conversing with the first client device, wherein step (e) of conversing with the second client device in the continued session. And after at least temporarily suspending a conversation in the session with the first client device. 제 1 항에 있어서, 상기 적어도 하나의 서버상에 기억된 상태 정보를 검색하는 단계 (a)는 상기 적어도 하나의 서버상에 기억된 프레퍼런스 정보를 검색하는 단계를 포함하는 것을 특징으로 하는 방법.2. The method of claim 1, wherein retrieving status information stored on the at least one server comprises retrieving preference information stored on the at least one server. 제 1 항에 있어서, 상기 적어도 하나의 서버상에 업데이트된 상기 상태 정보를 기억하는 단계 (c)는 상기 적어도 하나의 서버상에 세션에 대한 세션 상태 정보를 기억하는 단계를 포함하는 것을 특징으로 하는 방법.2. The method of claim 1, wherein storing (c) the updated state information on the at least one server comprises storing session state information for the session on the at least one server. Way. 제 1 클라이언트 디바이스 및 제 2 클라이언트 디바이스를 포함하는 복수의 클라이언트 디바이스와 통신하는 복수의 서버를 포함하는 네트워크에서 사용하고, 상기 제 1 클라이언트 디바이스와 제 2 클라이언트 디바이스 사이의 미드-세션 트랜지션을 행하는 방법을 구현하는 프로그램를 기록한 컴퓨터-읽기가능한 기록매체에 있어서, A method of performing a mid-session transition between a first client device and a second client device in a network comprising a plurality of servers in communication with a plurality of client devices including a first client device and a second client device. In a computer-readable recording medium recording a program to be implemented, 적어도 하나의 서버상에 기억된 사용자의 상태 정보의 수신을 검출하기 위한 컴퓨터-실행가능한 명령어,Computer-executable instructions for detecting receipt of status information of a user stored on at least one server, 상기 제 1 클라이언트 디바이스와 세션에서 대화하게 하기 위한 컴퓨터-실행가능한 명령어,Computer-executable instructions for causing a conversation with the first client device in a session, 상기 제 1 클라이언트 디바이스와 세션에서의 대화에 응하여 상기 상태 정보가 업데이트되게 하기 위한 컴퓨터-실행가능한 명령어,Computer-executable instructions for causing the status information to be updated in response to a conversation in a session with the first client device, 상기 업데이트된 상기 상태 정보가 상기 적어도 하나의 서버상에 기억되게 하기 위한 컴퓨터-실행가능한 명령어,Computer-executable instructions for causing the updated status information to be stored on the at least one server, 상기 세션이 상기 제 2 클라이언트 디바이스상에서 계속될 때 상기 업데이트된 상기 상태 정보의 수신을 검출하기 위한 컴퓨터-실행가능한 명령어, 및Computer-executable instructions for detecting receipt of the updated status information when the session continues on the second client device, and 상기 업데이트된 상기 상태 정보에 근거하여 상기 제 2 클라이언트 디바이스와 상기 계속된 세션에서 대화하게 하기 위한 컴퓨터-실행가능한 명령어를 기억하고 있으며, Store computer-executable instructions for causing a conversation in the continued session with the second client device based on the updated status information, 상기 복수의 서버는 서버 연합을 형성하고, 상기 상태 정보의 검색, 상기 제1 클라이언트 디바이스와 세션에서의 대화, 상기 업데이트된 상태 정보의 기억, 상기 업데이트된 상태 정보의 검색, 상기 제2 클라이언트 디바이스와 상기 계속된 세션에서의 대화 동작이 상기 서버 연합의 둘 이상의 서버에 의해 협력적으로 수행되도록 하는 컴퓨터-실행가능한 명령어를 더 기억하고 있는 것을 특징으로 하는 컴퓨터-읽기가능한 기록매체.The plurality of servers form a server federation, the retrieval of the status information, a conversation in a session with the first client device, the storage of the updated status information, the retrieval of the updated status information, and the second client device. And further store computer-executable instructions for causing a conversation operation in said continued session to be performed cooperatively by two or more servers of said server federation.
KR1020087021829A 2000-06-22 2008-09-05 Distributed computing services platform KR100919606B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US21356200P 2000-06-22 2000-06-22
US60/213,562 2000-06-22

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020027017574A Division KR100890209B1 (en) 2000-06-22 2001-06-22 Distributed computing services platform

Publications (2)

Publication Number Publication Date
KR20080089672A KR20080089672A (en) 2008-10-07
KR100919606B1 true KR100919606B1 (en) 2009-09-29

Family

ID=22795582

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020027017574A KR100890209B1 (en) 2000-06-22 2001-06-22 Distributed computing services platform
KR1020087021829A KR100919606B1 (en) 2000-06-22 2008-09-05 Distributed computing services platform

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020027017574A KR100890209B1 (en) 2000-06-22 2001-06-22 Distributed computing services platform

Country Status (5)

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

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030066942A (en) * 2002-02-06 2003-08-14 (주) 자이오넥스 System Integration And Communication Method On The Network
KR100788138B1 (en) * 2003-06-09 2007-12-21 주식회사 케이티 System and method for providing communication service using network-based service platform
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
WO2015164613A1 (en) * 2014-04-23 2015-10-29 Remote Media, Llc Smart routing synchronization system and methods for socializing a synthetic rebroadcast and group stream
US10104011B2 (en) * 2014-09-25 2018-10-16 Oracle International Corporation System and method for determination of partition identifiers in a multitenant application server environment
WO2018127790A2 (en) * 2017-01-05 2018-07-12 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
US11461488B2 (en) 2020-04-02 2022-10-04 Allstate Insurance Company Universal access layer for accessing heterogeneous data stores
CN113377354B (en) * 2021-05-31 2024-04-05 北京沃东天骏信息技术有限公司 Modularized development system for mobile terminal application

Citations (4)

* 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
KR20010042902A (en) * 1998-04-20 2001-05-25 썬 마이크로시스템즈, 인코포레이티드 Method and apparatus for session management and user authentication
KR20050055743A (en) * 2002-10-04 2005-06-13 사이트릭스 시스템스, 인크. Method and system for communicating over a client-server network

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021403A (en) 1996-07-19 2000-02-01 Microsoft Corporation Intelligent user assistance facility

Patent Citations (4)

* 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
KR20010042902A (en) * 1998-04-20 2001-05-25 썬 마이크로시스템즈, 인코포레이티드 Method and apparatus for session management and user authentication
KR20050055743A (en) * 2002-10-04 2005-06-13 사이트릭스 시스템스, 인크. Method and system for communicating over a client-server network

Also Published As

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

Similar Documents

Publication Publication Date Title
CA2808275C (en) Distributed computing services platform
AU2001268674A1 (en) Distributed computing services platform
KR100919606B1 (en) Distributed computing services platform
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
JP2006522388A (en) Systems and methods for acquiring, managing, capturing, sharing, discovering, communicating and presenting semantic knowledge
JP2002511961A (en) Universal domain routing and issue control system
WO2009129022A1 (en) Rich media collaboration system
US20080183826A1 (en) System and Method For Transactional, Addressable Communication
WO2008036464A2 (en) Syndication-based application connectors
CN102968437A (en) An external service application discovery method
Brugman et al. Collaborative annotation of sign language data with peer-to-peer technology
Kai et al. An application-layer based centralized information access control for VPN [J]
Klavins Instant Messaging Tool for Collaboration in a Peer-to-Peer Network: MyBook Instant Messenger
Bowen Using a peer-to-peer architecture to support distributed software development
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
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
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120817

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130813

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140814

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 10