KR101219997B1 - 네트워크 애플리케이션 프로그램 사이에서 요청된 데이터를생성 및 통신하기 위한 시스템, 컴퓨터 구현 방법 및컴퓨터 판독가능 매체 - Google Patents

네트워크 애플리케이션 프로그램 사이에서 요청된 데이터를생성 및 통신하기 위한 시스템, 컴퓨터 구현 방법 및컴퓨터 판독가능 매체 Download PDF

Info

Publication number
KR101219997B1
KR101219997B1 KR1020077019830A KR20077019830A KR101219997B1 KR 101219997 B1 KR101219997 B1 KR 101219997B1 KR 1020077019830 A KR1020077019830 A KR 1020077019830A KR 20077019830 A KR20077019830 A KR 20077019830A KR 101219997 B1 KR101219997 B1 KR 101219997B1
Authority
KR
South Korea
Prior art keywords
namespace
event handler
data
value
server
Prior art date
Application number
KR1020077019830A
Other languages
English (en)
Other versions
KR20070118076A (ko
Inventor
조지 페레이라
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20070118076A publication Critical patent/KR20070118076A/ko
Application granted granted Critical
Publication of KR101219997B1 publication Critical patent/KR101219997B1/ko

Links

Images

Classifications

    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

웹 서버로부터 서버에 의해 배포된 클라이언트 애플리케이션으로 문서 프래그먼트를 전달하는 것을 개시한다. 본 발명은 네임스페이스 필드, 이벤트 핸들러 필드, 및 파라미터 필드를 포함하는 데이터 요청의 데이터 구조를 포함한다. 제1 프로세스는 채워진 데이터 구조를 제2 프로세스에 전송한다. 제2 프로세스는 제2 프로세스에 의해 유지되며 채워진 데이터 구조에서 식별된 논리를 실행하여 결과 데이터를 생성한다. 제2 프로세스는 결과 데이터를 제1 프로세스에 전송하여 제1 프로세스에 의해 사용자에게 표시하거나 기타 처리를 행한다.
Figure R1020077019830
서버, 웹, 클라이언트, 애플리케이션, 네트워크

Description

네트워크 애플리케이션 프로그램 사이에서 요청된 데이터를 생성 및 통신하기 위한 시스템, 컴퓨터 구현 방법 및 컴퓨터 판독가능 매체{SYSTEM AND METHOD FOR PRODUCING AND COMMUNICATING REQUESTED DATA AMONG NETWORKED APPLICATION PROGRAMS}
본 발명의 실시예는 컴퓨터 통신 분야에 관한 것이다. 더욱 상세하게는, 본 발명의 실시예는 네임스페이스, 네임스페이스 내의 이벤트 및 이벤트에 대한 파라미터를 갖는 스키마의 형태로 데이터를 요청하는 것에 관한 것이다.
어떤 서버에 의해 분포된(server-deployed), 웹 기반 메일 애플리케이션은 사용자가 자신의 중앙에 위치한 편지함에 액세스하는 것을 허용한다. 또한, 이들 애플리케이션은 이메일(email)을 전송 및 수신하고, 약속 일정을 관리하며, 인터넷과 같은 네트워크로부터 개인 정보 관리(personal information management; PIM)를 수행할 수 있는 능력을 제공한다. 이들 애플리케이션들 중 일부는 브라우저에서 실행되고, 기타 PIM 애플리케이션과 짝을 이룬다. PIM 기능을 구현할 수 있기 위해서는, 이러한 클라이언트 웹 애플리케이션이 상당한 양의 클라이언트-서버 트래픽을 필요로 한다. 예를 들어, 사용자가 새 이메일을 찾기 위해 인박스 내의 이메일 목록을 리프레시하는 경우에는, 서버에 웹 요청이 전송되어 인박스 내의 새 이메일 목록이 검색된다.
몇몇 클라이언트 애플리케이션의 경우, 클라이언트-서버 트래픽은 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol; HTTP)의 확장인 웹다브(Web Distributed Authoring and Versioning; WebDAV)와 (예를 들어, HTTP POST 요청 시 극단적으로 단순화한 네임값 쌍에 기초하는) 기타 여러 스키마의 혼합이다. 이들 종래 시스템에서 데이터 액세스를 위해 다수의 프로토콜을 이용하면, 그 구현이 복잡해지고, 보전성(maintainability)이 열악해진다. 또한, 이들 종래 시스템은 모순되며 불충분한 스키마를 이용하여 요청을 처리한다. 일부 종래 시스템에서 이용되는 것과 같은 네임값 포맷은 매우 제한적이며, 엄격하게 타입이 지정된(strongly typed) 데이터 또는 더 복잡한 구조나 어레이를 쉽게 지원하지 않는다. 또한, 네임값 포맷이 네임값 쌍에 대한 구분 표식(separator)으로서 행 바꿈(line break)을 필요로 하기 때문에, 특정 네임값 쌍에 대한 모든 데이터는 전송 전에 행 바꿈 없이 인코드되고, 그 다음에 수신 시 디코드되어야 한다. 몇몇 현재 시스템의 경우, 이들 추가적인 단계는 처리를 느리게 하며 복잡도를 증가시킨다. 몇몇 현재 웹 클라이언트 애플리케이션이 갖고 있는 또 다른 문제는 클라이언트 애플리케이션에 여러 기능을 제공하는 서버 측 코드가 무질서하며 혼란 상태에 있다는 것이다. 현재 시스템의 서버 측 코드에 새로운 요청 핸들러를 추가하는 것은 어렵다.
따라서, 이들 및 기타 불이익 중 하나 이상을 처리하기 위해서는, 클라이언트-서버 통신을 위한 개선된 시스템이 필요하다.
본 발명의 실시예는 네트워크화된 애플리케이션 프로그램 사이에서 요청된 데이터를 생성 및 통신하기 위한 프로토콜 및 스키마를 포함한다. 일 실시예에서, 본 발명은 요청된 데이터를 생성하는 요청 핸들러의 개발자가 이용할 수 있는 애플리케이션 프로그래밍 인터페이스(application programming interfaces; APIs)의 집합 및 아키텍처를 더 포함한다. API를 통해, 개발자는 커스텀 요청 핸들러를 생성할 수 있게 된다.
본 발명의 클라이언트-서버 실시예에서, 본 발명에 따른 클라이언트는 본 발명의 잘 정의된 스키마에 따라 서버에 데이터 요청을 전송한다. 이 요청은 요청 핸들러 네임스페이스, 요청 핸들러 네임스페이스 내의 이벤트 핸들러, 및 이벤트 핸들러의 하나 이상의 파라미터를 식별한다. 본 발명은 각각의 클라이언트에 의해 요청되는 것과 같은 다수의 포맷으로 클라이언트에게 응답을 전달하는 서버 내의 요청 핸들러 네임스페이스로 분류되는 이벤트 핸들러의 기반구조를 포함한다. 서버 기반구조는 요청을 파스(parse)하여 특정 네임스페이스 내의 특정 이벤트 핸들러를 식별하며 식별된 이벤트 핸들러와 연관된 핸들러 코드를 요청 파라미터의 함수로서 실행한다.
본 발명은 강력하지만 경량이며 스케일러블하다. 데이터 요청을 위한 일관된 스키마를 이용하면 애플리케이션 프로그램들 간의 상호작용이 단순해지며 요청 핸들러의 보전성이 개선된다. 본 발명의 스키마는 복잡한 데이터 구조를 지원한다. 본 발명은 요청된 데이터를 생성 및 전달하기 위한 기반구조를 변화시킴 없이 요청 핸들러의 추가를 지원한다.
본 발명의 일 양태에 따르면, 시스템은 각각이 연관된 네임스페이스를 갖는 복수의 이벤트 핸들러를 기억하기 위한 하나 이상의 컴퓨터 판독 가능 매체를 포함한다. 각각의 복수의 이벤트 핸들러는 또한 연관된 하나 이상의 파라미터를 갖는다. 컴퓨터 판독 가능 매체는 포맷된 데이터 요청을 표현하는 데이터 구조를 기억한다. 데이터 구조는 네임스페이스를 표현한 네임스페이스 값을 기억하는 네임스페이스 필드, 복수의 이벤트 핸들러 중 하나에 대응하는 이벤트 핸들러 값을 기억하는 이벤트 핸들러 필드를 포함한다. 복수의 이벤트 핸들러 중 하나는 네임스페이스 필드 내의 네임스페이스 값에 의해 표현된 네임스페이스와 연관된다. 또한, 데이터 구조는 파라미터들 중 하나의 파라미터에 대응하는 파라미터 값을 기억하는 파라미터 필드를 포함한다. 파라미터들 중 하나의 파라미터는 이벤트 핸들러 필드 내의 이벤트 핸들러 값에 의해 표현된 이벤트 핸들러와 연관된다. 또한, 본 발명의 시스템은 제2 프로세스에 의해 배포되는 제1 프로세스를 포함한다. 제1 프로세스는 컴퓨터 실행가능 명령어를 실행하여, 사용자 또는 프로세스로부터 데이터 요청을 수신하고, 수신된 요청과 연관된 네임스페이스 값을 식별하고, 수신된 요청과 식별된 네임스페이스 값의 함수로서 이벤트 핸들러 값을 선택하며, 수신된 요청과 선택된 이벤트 핸들러 값의 함수로서 파라미터 값을 결정하도록 구성된다. 제1 프로세스는 또한 네임스페이스 필드에 식별된 네임스페이스 값을 기억하고, 이벤트 핸들러 필드에 선택된 이벤트 핸들러 값을 기억하며, 파라미터 필드에 결정된 파라미터 값을 기억함으로써 데이터 구조를 채운다(populate). 제1 프로세스는 또한 채워진 데이터 구조를 제2 프로세스에 전송한다. 제2 프로세스는 컴퓨터 실행 가능 명령어를 실행하여, 제1 프로세스로부터 채워진 데이터 구조를 수신하고, 수신된 데이터 구조의 함수로서, 컴퓨터 판독가능 매체 상에 기억된 복수의 이벤트 핸들러 중에서 이벤트 핸들러를 선택하고, 선택된 이벤트 핸들러를 실행하여 결과 데이터를 생성하며 생성된 결과 데이터를 제1 프로세스에 전송하도록 구성된다.
본 발명의 다른 양태에 따르면, 컴퓨터 구현 방법은 데이터를 생성하여 이를 한 프로세스에서 다른 프로세스로 전달한다. 컴퓨터 구현 방법은 제1 프로세스에 의해 사용자로부터 데이터 요청을 수신하는 단계와 수신된 요청과 연관된 네임스페이스를 식별하는 단계를 포함한다. 또한, 본 발명의 방법은 제1 프로세스에 의해 식별된 네임스페이스와 연관된 이벤트 핸들러를 수신된 요청의 함수로서 결정하는 단계를 포함한다. 본 발명의 방법은 제1 프로세스에 의해 결정된 이벤트 핸들러와 연관된 파라미터를 수신된 요청의 함수로서 채우는 단계와 식별된 네임스페이스, 결정된 이벤트 핸들러, 및 채워진 파라미터를 이용하여 포맷된 요청을 생성하는 단계를 더 포함한다. 또한, 본 발명의 방법은 생성되는 포맷된 요청을 제1 프로세스로부터 제2 프로세스로 전송하는 단계를 포함한다. 또한, 본 발명의 방법은 제2 프로세스에 의해 포맷된 요청을 제1 프로세스로부터 수신하는 단계와 수신되는 포맷된 요청의 함수로서 메모리 영역에 기억된 복수의 이벤트 핸들러 중에서 이벤트 핸들러를 선택하는 단계를 포함한다. 또한, 컴퓨터 구현 방법은 제2 프로세스에 의해 선택된 이벤트 핸들러를 실행하여 결과 데이터를 생성하는 단계와 생성된 결과 데이터를 제2 프로세스로부터 제1 프로세스에 전송하는 단계를 포함한다.
본 발명의 또 다른 양태에 따르면, 하나 이상의 컴퓨터 판독 가능 매체는 네트워크화된 환경에서 요청된 데이터를 생성 및 통신하기 위한 컴퓨터 실행 가능 컴포넌트를 갖는다. 본 발명의 컴포넌트는 사용자로부터 데이터 요청을 수신하고, 수신된 요청과 연관된 네임스페이스를 식별하고, 식별된 네임스페이스와 연관된 이벤트 핸들러를 수신된 요청의 함수로서 결정하고, 결정된 이벤트 핸들러와 연관된 파라미터를 수신된 요청의 함수로서 채우고, 식별된 네임스페이스, 결정된 이벤트 핸들러, 및 채워진 파라미터를 이용하여 포맷된 요청을 생성하며, 생성되는 포맷된 요청을 서버 컴포넌트에 전송하기 위한 서버에 의해 배포된(server-deployed) 클라이언트 컴포넌트를 포함한다. 또한, 본 발명의 컴포넌트는 서버에 의해 배포된 클라이언트 컴포넌트로부터 전송된 요청을 수신하고, 수신된 요청의 함수로서 메모리 영역에 기억된 복수의 이벤트 핸들러 중에서 이벤트 핸들러를 선택하고, 선택된 이벤트 핸들러를 실행하여 결과 데이터를 생성하며, 생성된 결과 데이터를 서버에 의해 배포된 클라이언트 컴포넌트에 전송하기 위한 서버 컴포넌트를 포함한다.
다른 방법으로는, 본 발명은 여러 다른 방법 및 장치를 포함할 수 있다.
이하, 기타 특징들은 부분적으로 명확해질 것이며 부분적으로 지시될 것이다.
도 1은 네트워크를 통해 하나 이상의 클라이언트 컴포넌트와 통신하는 서버 컴포넌트를 도시한 예시적인 블록도.
도 2는 요청된 데이터를 통신하기 위한 클라이언트 및 서버 프로세스의 동작을 도시한 예시적인 흐름도.
도 3은 서버 컴포넌트 내의 모듈을 도시한 예시적인 블록도.
도 4는 예시적인 이벤트 핸들러 클래스 집합을 도시한 예시적인 블록도.
도 5는 본 발명이 구현될 수 있는 적당한 컴퓨팅 시스템 환경의 일 예를 도시한 블록도.
첨부 A는 본 발명의 이메일 네임스페이스 내의 예시적인 이벤트와 파라미터를 기술한다.
도면 전체에서, 대응하는 참조 부호는 대응하는 구성 요소를 지시한다.
일 실시예에서, 도 1에 도시된 것과 같이, 본 발명은 클라이언트 애플리케이션으로부터의 데이터 요청에 응답하여 서버에 의해 배포된(server-deployed) 클라이언트 애플리케이션, 컴포넌트, 프로세스 등에 데이터를 전달하는 서버 애플리케이션, 컴포넌트, 프로세스 등을 포함한다. 서버 컴포넌트(102) 상에서, 데이터 요청(103)과 같은 데이터 요청에 응답하기 위한 코드 또는 루틴은 이벤트 핸들러(예를 들어, 복수의 이벤트 핸들러(104)) 등으로 분할된다. 일 실시예에서, 이벤트 핸들러(104)는 논리적으로 네임스페이스로 편성된다. 특히, 본 발명은 실행될 네임스페이스와 이벤트 핸들러에 관한 정보뿐만 아니라 그 핸들러의 파라미터도 포함하는 데이터 요청(103)과 같은 요청을 구성하는 것을 포함한다. 본 발명은 데이터 요청에 대한 응답을 전달하는 요청 핸들러를 개발자가 구현할 수 있도록 하는 서버(102) 내의 기반구조를 더 포함한다.
본 발명의 일 예는 분산형 PIM 애플리케이션에서 일정 보기(calendar view)를 필요로 한다. 일정 보기는 소정의 날짜에 대한 약속 목록을 나타낸다. 서버(102)는 소정의 시간 범위에서 데이터베이스를 쿼리하여 약속을 검색함으로써 이 일정 보기를 리프레시한다. 그 다음에, 검색된 약속은 각각의 약속의 시작 시각과 지속 기간에 따라 올바른 위치에 있는 클라이언트(예를 들어, 클라이언트 컴퓨터(108))로 유도된다. 종래 시스템의 경우, 이러한 리프레시 동작은 클라이언트 컴포넌트(108)가 HTTP의 확장인 WebDAV를 이용한 확장성 생성 언어(extensible markup language; XML) 포맷으로 복귀될 데이터를 쿼리하고, XML 스키마 정의(extensible schema definition; XSD) 변환을 이용하여 XML 데이터로부터 HTML을 생성하며, HTML을 사용자에게 제공함으로써 달성되었다. 이러한 시스템은 복잡하여 관리하기가 어렵다.
그러나, 본 발명에 따르면, 일정 리프레시는 클라이언트 컴포넌트(108)가 포맷된 데이터 요청(예를 들어, 데이터 요청(103))을 전송하고, 일정 데이터를 정의하는 코드 스트림(예를 들어, 자바스크립트)을 수신함으로써 달성된다. 일정 데이터는 서버(102)에서 부분적으로 렌더링된다. 클라이언트 컴포넌트(108)는 스크립트를 이용하여 코드를 실행하며 HTML 마크업을 생성한다. 대부분의 일정 데이터와 디스플레이 정보가 서버(102)에서 미리 계산되기 때문에, 클라이언트 컴퓨터(108)가 받는 부담이 감소한다. 본 발명의 다른 예에서, 서버(102)는 서버(102)에서 렌더링된 HTML을 복귀시킴으로써 PIM 애플리케이션의 메일 보기를 리프레시한다. 본 발명은 임의의 특정 포맷으로 데이터를 복귀시키는 것에 한정되지 않는다. 오히려, 본 발명은 HTML, XML, 텍스트, 자바스크립트 페이로드 등과 같은 클라이언트 컴포넌트(108)에 의해 지시된 임의의 형태로 데이터를 복귀시킨다.
다시 도 1을 참조하면, 예시적인 블록도는 클라이언트 컴포넌트 #1 내지 클라이언트 컴포넌트 #N과 같은 하나 이상의 클라이언트 컴포넌트(108), 프로세스 등과 네트워크(예를 들어, 인터넷)를 통해 통신하는 서버 컴포넌트(102) 등과 같은 서버 컴포넌트, 프로세스 등을 도시한다. 도 1의 시스템은 메모리 영역(106)과 같은 하나 이상의 컴퓨터 판독 가능 매체를 포함한다. 메모리 영역(106)은 각각이 연관된 네임스페이스를 갖는 복수의 이벤트 핸들러(104)를 기억한다. 복수의 이벤트 핸들러(104) 각각은 또한 연관된 하나 이상의 파라미터를 갖는다. 또한, 포맷된 데이터 요청(103)을 표현하는 데이터 구조는 컴퓨터 판독 가능 매체 상에 기억된다. 도 1에는, 클라이언트 컴포넌트(108)로부터 서버 컴포넌트(102)로 데이터 요청이 전송되고 있는 것으로 도시되어 있다. 데이터 요청(103)을 표현하는 데이터 구조는 네임스페이스를 표현한 네임스페이스 값을 기억하는 네임스페이스 필드를 포함한다. 데이터 구조는 네임스페이스 필드 내의 네임스페이스 값에 의해 표현된 네임스페이스와 연관되는 메모리 영역(106)에 기억된 복수의 이벤트 핸들러(104) 중 하나에 대응하는 이벤트 핸들러 값을 기억하는 이벤트 핸들러 필드를 더 포함한다. 데이터 구조는 이벤트 핸들러 필드 내의 이벤트 핸들러 값에 의해 표현되는 이벤트 핸들러와 연관된 파라미터에 대응하는 적어도 하나의 파라미터 값을 기억하는 파라미터 필드를 더 포함한다.
도 1의 예에서, 클라이언트 컴포넌트(108)는 제1 프로세스이고, 제2 컴포넌트(102)는 제2 프로세스이다. 제1 프로세스는 분산형 클라이언트 애플리케이션이거나, 그렇지 않은 경우에는 제2 프로세스에 의해 배포되어 서버 컴포넌트(102)의 기능 중 일부 또는 모두를 제공한다. 예를 들어, 제1 프로세스는 서버에 의해 배포된 PIM 클라이언트와 같은 서버에 의해 배포된 클라이언트 애플리케이션일 수 있고, 서버 컴포넌트(102)는 PIM 서버일 수 있다. 그러나, 본 발명은 제1 프로세스와 제2 프로세스 간의 클라이언트-서버 관계에 한정되지 않는다. 예를 들어, 제1 프로세스와 제2 프로세스 간의 관계는 P2P(peer-to-peer)일 수 있다.
일 실시예에서, 제1 프로세스는 제2 프로세스로부터 데이터를 요청하는 컴퓨터 실행 가능 명령어를 실행하도록 구성된다. 특히, 제1 프로세스는 사용자 또는 프로세스로부터 데이터 요청을 수신한다. 데이터 요청은 예를 들어, 최근 수신된 이메일을 확인하기 위한 요청, 일정 디스플레이를 갱신하기 위한 요청, 또는 임의의 다른 데이터 요청을 포함할 수 있다. 제1 프로세스는 수신된 요청과 연관된 네임스페이스 값을 식별하고 수신된 요청과 식별된 네임스페이스 값의 함수로서 이벤트 핸들러 값을 선택한다. 선택된 이벤트 핸들러는 사용자로부터의 특정 요청에 한정되며, 식별된 네임스페이스 값과 연관된 복수의 이벤트 핸들러(104) 중 하나이다. 선택된 이벤트 핸들러는 하나 이상의 파라미터를 갖는다. 제1 프로세스는 선택된 이벤트 핸들러의 파라미터들 중 하나 이상에 대한 파라미터 값을 결정한다. 파라미터 값은 수신된 요청으로부터의 데이터를 이용하여 결정된다. 파라미터 값은 임의 타입의 데이터를 포함할 수 있고, (예를 들어, XML인) 제2 프로세스에 의해 인식된 임의의 포맷으로 구현될 수 있다. 제1 프로세스는 네임스페이스 필드에 식별된 네임스페이스 값을 기억하고, 이벤트 핸들러 필드에 선택된 이벤트 핸들러 값을 기억하며, 파라미터 필드에 결정된 파라미터 값을 기억함으로써 데이터 요청(103)을 표현하는 데이터 구조를 채운다. 제1 프로세스는 채워진 데이터 구조(예를 들어, 데이터 요청(103))를 제2 프로세스에 전송한다.
일 실시예에서, 채워진 데이터 구조는 일련의 네임값 쌍을 포함한다. 예를 들어, 네임스페이스 필드와 네임스페이스 값은 네임값 쌍이고, 이벤트 핸들러 필드와 이벤트 핸들러 값은 네임값 쌍이며, 파라미터 필드와 파라미터 값은 네임값 쌍이다.
제2 프로세스는 요청된 데이터를 생성하여 제1 프로세스에 전달하기 위한 컴퓨터 실행 가능 명령어를 실행하도록 구성된다. 일 실시예에서, 제2 프로세스는 제1 프로세스로부터 채워진 데이터 구조(예를 들어, 데이터 요청(103))를 수신하고, 메모리 영역(106)에 기억된 복수의 이벤트 핸들러(104) 중에서 이벤트 핸들러를 선택한다. 선택된 이벤트 핸들러는 수신된 데이터 요청(103)에서 지정된 이벤트 핸들러에 대응한다. 제2 프로세스는 제1 프로세스로부터 수신된 데이터 요청(103)으로부터의 파라미터를 이용하여 선택된 이벤트 핸들러를 실행하여 결과 데이터를 생성한다. 제2 프로세스는 생성된 결과 데이터를 제1 프로세스에 전송한다.
일 실시예에서, 제2 프로세스는 이용 가능한 네임스페이스, 이벤트 핸들러(예를 들어, 복수의 이벤트 핸들러(104)), 및 파라미터에 관한 정보가 로드된 구성 데이터베이스를 참고함으로써 적당한 이벤트 핸들러를 선택한다. 제2 프로세스는, 예를 들어, 제1 프로세스로부터 데이터 요청(103)을 수신하기 전에 구성 데이터베이스를 구성하기 위한 레지스트리 컴포넌트를 포함한다. 예를 들어, 복수의 이벤트 핸들러(104)는 네임스페이스에 의해 구성 데이터베이스에 편성될 수 있다.
본 발명은 복수의 이벤트 핸들러(104)를 기억하기 위한 수단, 제1 프로세스를 실행하기 위한 수단, 및 제2 프로세스를 실행하기 위한 수단을 포함한다. (도면에 도시된 것과 같은) 데이터 구조, 사용자 인터페이스, 애플리케이션 프로그램, 애플리케이션 프로그래밍 인터페이스(API), 컴퓨터 실행가능 명령어, 펌웨어 등과 같은 하드웨어와 소프트웨어는 복수의 이벤트 핸들러(104)를 기억하기 위한 수단, 제1 프로세스를 실행하기 위한 수단, 및 제2 프로세스를 실행하기 위한 수단을 구성한다.
일 실시예에서, 본 발명은 POST 또는 GET 동사를 갖는 HTTP 요청을 이용하여 구현된다. 요청은 (예를 들어, URL 쿼리 스트링 파라미터 'ns'에서 지시된) 네임스페이스, (예를 들어, 'ev' 파라미터로서 URL 쿼리 스트링에서 지시된) 이벤트 네임, 및 하나 이상의 요청 파라미터와 같은 정보를 포함한다. 파라미터는 POST 요청을 위한 XML 또는 GET 요청을 위한 네임값 쌍으로서 존재한다.
본 발명의 예시적인 GET 요청(예를 들어, 데이터 요청(103))은 다음과 같다.
Figure 112007063298773-pct00001
본 예에서, 클라이언트(예를 들어, 클라이언트 컴포넌트(108))는 서버(예를 들어, 서버 컴포넌트(102))에게 "CalendarView" 네임스페이스에서 "Refresh" 핸들 러를 실행하라고 요청하고 있다. 클라이언트 컴포넌트(108)는 2004년 11월 14일 오전 12시의 값을 갖는 "d" 네임을 갖는 타입 데이터의 파라미터를 전달한다. 서버 컴포넌트(102)는 구현예에 따라 상기 보기를 위한 마크업 또는 자바스크립트 페이로드를 복귀시킨다.
본 발명의 예시적인 POST 요청(예를 들어, 데이터 요청(103))은 다음과 같다.
Figure 112007063298773-pct00002
Figure 112007063298773-pct00003
본 예에서, 클라이언트 컴포넌트(108)는 서버 컴포넌트(102)에게 'Messaging' 네임스페이스 내의 'SaveMessage' 이벤트 핸들러를 실행하라고 요청하고 있다. 이벤트 파라미터는 subject(스트링), to(스트링 어레이) 및 body(스트링)이다. 이 이벤트에 대한 응답은 성공 또는 에러를 지시하는 HTTP 결과이다. 이 경우에는, 어떤 마크업도 복귀시킬 필요가 없다. 파라미터는 서버가 이해할 수 있는 XML 또는 임의의 다른 언어 포맷의 형태일 수 있다.
다음으로, 도 2를 참조하면, 예시적인 흐름도는 요청된 데이터를 통신하기 위한 클라이언트 및 서버 프로세스의 동작을 도시한다. 도 2의 흐름도는 데이터를 생성하여 한 프로세스로부터 다른 프로세스로 전달하기 위한 컴퓨터 구현 방법을 나타낸다. 본 발명의 방법은 202에서 도 1의 클라이언트 컴포넌트(108)와 같은 제1 프로세스에 의해 사용자로부터 데이터 요청을 수신하는 단계 및 204에서 수신된 요청과 연관된 네임스페이스를 식별하는 단계를 포함한다. 본 발명의 방법은 206에서 수신된 요청의 함수로서 식별된 네임스페이스와 연관된 이벤트 핸들러를 결정하는 단계 및 208에서 수신된 요청의 함수로서 결정된 이벤트 핸들러와 연관된 파라미터를 채우는 단계를 더 포함한다. 또한, 본 발명의 방법은 210에서, 식별된 네임스페이스, 결정된 이벤트 핸들러, 및 채워진 파라미터를 이용하여 포맷된 요청(예를 들어, 도 1의 데이터 요청(103))을 생성하는 단계를 포함한다. 본 발명의 방법은 212에서, 생성되는 포맷된 요청을 제1 프로세스로부터 제2 프로세스(예를 들어, 서버 컴포넌트(102))로 전송한다.
본 발명의 방법은 214에서, 제2 프로세스에 의해 제1 프로세스로부터 포맷된 요청을 수신하는 단계를 포함한다. 본 발명의 방법은 215에서, 수신된 요청에 기초하여 네임스페이스를 선택한다. 또한, 본 발명의 방법은 216에서, 하나 이상의 컴퓨터 판독가능 매체(예를 들어, 도 1의 메모리 영역(106)) 상에 기억된 복수의 이벤트 핸들러(예를 들어, 도 1의 복수의 이벤트 핸들러(104))로부터 수신되는 포맷된 요청의 함수로서 제2 프로세스에 의해 이벤트 핸들러를 선택하는 단계를 포함한다. 본 발명의 방법은 217에서, 수신된 요청 내의 파라미터를 파스 및 확인한다. 본 발명의 방법은 218에서, 선택된 이벤트 핸들러를 실행하여 결과 데이터를 생성하는 단계 및 220에서, 생성된 결과 데이터를 제2 프로세스로부터 제1 프로세 스로 전송하는 단계를 더 포함한다. 제1 프로세스는 결과 데이터를 수신하고, 일 실시예에서, 그 데이터를 사용자에게 표시한다.
개발자 또는 기타 사용자는 사용자 정의 네임스페이스, 이벤트 핸들러, 및 파라미터 중 적어도 어느 하나를 생성할 수 있다. 본 발명의 방법은 제1 프로세스에 의해 사용자로부터 사용자 정의 네임스페이스, 사용자 정의 네임스페이스와 연관된 사용자 정의 이벤트 핸들러, 및 사용자 정의 이벤트 핸들러의 사용자 정의 파라미터 중 적어도 어느 하나를 수신하는 단계를 더 포함한다. 제1 프로세스는 제2 프로세스를 이용하여 수신된 사용자 정의 네임스페이스, 사용자 정의 이벤트 핸들러 및 사용자 정의 파라미터 중 적어도 어느 하나를 등록한다. 제2 프로세스는 제2 프로세스의 기반구조를 변경함 없이 수신된 사용자 정의 네임스페이스, 사용자 정의 이벤트 핸들러, 및 사용자 정의 파라미터를 등록한다. 즉, (예를 들어, 서버 컴포넌트인) 제2 프로세스를 구현하는 코드는 등록 때문에 변하지는 않는다. 제2 프로세스의 기반구조는 제2 프로세스가 기타 네임스페이스, 이벤트 핸들러, 및 파라미터 값에 액세스하는 것과 같은 방식으로 등록된 사용자 정의 네임스페이스, 이벤트 핸들러, 또는 파라미터에 액세스한다.
일 실시예에서, 하나 이상의 컴퓨터 판독가능 매체는 도 2에 도시된 컴퓨터 구현 방법을 수행하기 위한 컴퓨터 실행가능 명령어를 갖는다.
이하, 도 3을 참조하면, 예시적인 블록도는 서버 컴포넌트 내의 모듈을 도시한다. 이 모듈은 서버 컴포넌트에 의해 스폰된 요청 스레드(302) 내에서 호출된다. 일 실시예에서, 이벤트 핸들러는 IHttpHandler 인터페이스를 구현하는 HTTP 핸들러이다. 본 발명은 이 인터페이스에서 ProcessRequest 메소드를 호출하여, 핸들러 클래스가 코드를 실행하여 요청을 처리할 수 있도록 한다. HTTP 핸들러 팩토리는 IHttpHandlerFactory 인터페이스를 구현하는 클래스이다. 이러한 객체를 이용하여 요청을 처리하는데 이용되는 HTTP 핸들러 객체의 인스턴스를 생성한다. 도 3의 예에는, EventHandlerFactory(304)로 지칭되는 HTTP 핸들러 팩토리 클래스가 도시되어 있다. 본 발명(예를 들어, HTTPApplication(306))은 이 클래스의 객체(예를 들어, EventHandlerBase Instance(308))를 인스턴스화하고, IHttpHandlerFactory 인터페이스의 "GetHandler" 메소드를 호출하여, 요청의 네임스페이스에 기초하여 적당한 HTTP 핸들러 클래스(예를 들어, EventHandlerBase 서브클래스)의 인스턴스를 생성한다. HTTPApplication(306)과 EventHandlerBase Instance(308)는 HTTPContext(314)에 액세스한다.
EventContext(312) 객체는 (예를 들어, 요청의 네임스페이스, 이벤트 네임, 및 파라미터인) 요청에 관한 정보를 포함하는 데이터 구조이다. EventHandlerRegistry(310)는 지원된 커스텀 데이터 구조와 이뉴머레이션뿐만 아니라 애플리케이션에 의해 구현된 네임스페이스와 그 이벤트 핸들러에 관한 정보의 리포지터리로서 기능을 하는 클래스이다. 애플리케이션은 애플리케이션 시작 시 이 리포지터리(310)를 이용하여 EventHandlerBase 클래스를 등록한다. 본 발명은 (예를 들어, 리플렉션을 이용하여) 클래스를 스캔하여 네임스페이스, 네임스페이스 내의 이벤트, 및 이벤트의 파라미터를 결정한다. 이 정보는 기억되어, 나중에 요청의 처리 및 파라미터의 파스 동안에 이용된다.
도 3에는 본 발명에 따른 요청 실행의 예시적인 흐름이 도시되어 있다. 본 발명은 본 발명에 따른 데이터 요청을 수신하고, EventHandlerFactory 클래스의 인스턴스를 생성하며, 생성된 인스턴스 상에서 GetHandler를 호출한다. EventHandlerFactory의 GetHandler 구현은 쿼리 스트링을 조사하여 네임스페이스와 이벤트 네임을 찾아내고, EventHandlerRegistry(310)를 탐색하여 쿼리 스트링 내의 네임스페이스와 이벤트 네임에 대응하는 핸들러 클래스를 찾아낸다. 본 발명이 요청된 이벤트 핸들러를 찾아내면, 본 발명은 그 이벤트 핸들러의 인스턴스를 생성한다. 또한, EventContext(312)가 생성된다. 본 발명은 이벤트 핸들러 상의 ProcessRequest를 호출한다. ProcessRequest는 (예를 들어, 요청이 GET 동사 또는 POST 동사인지 여부에 관계없이) 요청 자체에 고유한 파서 클래스를 이용하여 요청의 파라미터를 파스한다. 파서 클래스는 요청의 파라미터를 파스하고, EventHandlerRegistry(310)를 이용하여 임의 타입의 변환을 행하고 스키마가 올바른 것을 보장한다(예를 들어, 이 핸들러가 필요로 하는 모든 파라미터가 설정된 것을 보장한다). 이때, 파라미터는 문맥 내의 컬렉션에 기억될 수 있다. 본 발명은 이벤트 핸들러와 연관된 이벤트 핸들러 코드를 실행한다(예를 들어, 핸들러 케이스 내의 메소드를 실행한다). 이 코드는 문맥 내의 파라미터에 액세스하고, 처리를 수행하며, 요청하는 엔티티에 의해 지정된 임의의 포맷으로 요청하는 엔티티에 응답을 기입한다.
이하, 도 4를 참조하면, 예시적인 블록도는 EventHandlerBase(402)로부터 상속받은 이벤트 핸들러 클래스 집합의 샘플을 도시한다. EventHandlerBase(402)는 IHttpHandler 인터페이스(404)를 구현한다. CalendarEventHandler(406), MessagingEventHandler(408), 및 MessageViewEventHandler(410)는 EventHandlerBase(402)로부터 상속받는다. 도 4에 도시된 바와 같이, 개발자 또는 기타 사용자는 네임스페이스를 생성하고, 네임스페이스 내의 이벤트를 식별하며, 이벤트에 대한 파라미터를 정의함으로써 커스텀 이벤트 핸들러를 생성할 수 있다. 사용자 정의 네임스페이스, 이벤트 핸들러, 및 파라미터 중 적어도 어느 하나는 (예를 들어, 현재 네임스페이스 내의 새 이벤트 핸들러와 같이) 사용자 선택되거나 (예를 들어, 새 네임스페이스와 같이) 사용자 생성될 수 있다. 일 실시예에서, 사용자 정의 이벤트 핸들러는 동적 연결 라이브러리로서 구현된다.
개발자 또는 기타 사용자는 아래에 도시된 것과 같은 속성을 이용하는 네임스페이스의 스키마를 정의할 수 있다.
Figure 112007063298773-pct00004
본 예에서, EventNamespace 속성은 유선을 통해 네임스페이스의 명칭을 정의 하고, Event 속성은 유선을 통해 이벤트의 명칭을 정의하며, EventParameter 속성은 파라미터의 명칭, 타입 및 파라미터가 선택적인지 여부를 정의한다. 핸들러를 이용하기 위해, 핸들러 개발자는 EventHandlerBase(402)로부터 상속받은 클래스를 기입하고, 그 이벤트를 어떤 파라미터도 갖지 않아서 보이드를 복귀시키는 메소드로서 기입하고, 상술한 적당한 속성을 이용하여 스키마를 정의하며, 서버 컴포넌트를 이용하여 클래스를 등록한다.
본 발명의 데이터 구조를 통해, 개발자는 파라미터로서 이용될 수 있는 복잡한 타입을 정의할 수 있다. 예시적인 데이터 구조는 아래와 같이 도시된다.
Figure 112007063298773-pct00005
예시적인 데이터 구조는 아래에 도시된 것과 같이 인코드된다.
Figure 112007063298773-pct00006
본 발명의 서버 컴포넌트가 특정 데이터 구조를 따르는 요청을 수신하는 경우, 본 발명은 특정 데이터 구조 클래스의 인스턴스를 생성하고, 이를 요청으로부터의 데이터를 이용하여 채운다.
예시적인 운영 환경
도 5는 컴퓨터(130)의 형태인 범용 컴퓨팅 장치의 일 예를 도시한다. 본 발명의 일 실시예에서, 컴퓨터(130)와 같은 컴퓨터는 본원에서 도시되고 설명된 기타 도면들에서 사용하기에 적당하다. 컴퓨터(130)는 하나 이상의 프로세서 또는 처리 장치(132) 및 시스템 메모리(134)를 갖는다. 예시된 실시예에서, 시스템 버스(136)는 시스템 메모리(134)를 포함하는 여러 시스템 컴포넌트를 프로세서(132)에 결합한다. 시스템 버스(136)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 가속 그래픽 포트 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스나 프로세서를 포함하는 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예제로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(130)는 통상적으로 컴퓨터 판독가능 매체의 적어도 일부 형태를 포함한다. 휘발성 및 비휘발성 매체, 이동식 및 이동불가식 매체 모두를 포함하는 컴퓨터 판독가능 매체는, 컴퓨터(130)에 의해 액세스될 수 있는 매체는 임의의 이용 가능한 매체라면 어떤 매체라도 된다. 예제로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위해 모든 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 이동불가식 매체를 포함한다. 예를 들어, 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(130)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함한다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. 당업자라면, "피변조 데이터 신호"라는 용어는, 신호내의 정보가 암호화되도록 그 신호의 하나 이상의 특성을 설정 또는 변경시킨 신호를 의미한다는 것을 알 수 있다. 통신 매체의 예로는 유선 네트워크 또는 다이렉트 유선 접속과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체가 있다. 상술된 매체들의 임의의 조합이 또한 컴퓨터 판독가능 매체의 범위 안에 포함된다.
시스템 메모리(134)는 이동식 및/또는 이동불가식, 휘발성 및/또는 비휘발성 메모리의 형태인 컴퓨터 저장 매체를 포함한다. 도시된 실시예에서, 시스템 메모리(134)는 판독 전용 메모리(ROM)(138) 및 랜덤 액세스 메모리(RAM)(140)를 포함한다. 예를 들어, 시동 시 컴퓨터(130) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(142)은 통상적으로 ROM(138)에 저장되어 있다. RAM(140)은 통상적으로 처리 장치(132)에 즉시 액세스 가능하고 및/또는 현재 처리 장치(120)에 의해 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예제로서, 도 5는 운영 체제(144), 애플리케이션 프로그램(146), 기타 프로그램 모듈(148) 및 프로그램 데이터(150)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(130)는 또한 기타 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 저장매체를 포함한다. 예를 들어, 도 5는 이동불가식, 비휘발성 자기 매체에 기록하거나 그로부터 판독하는 하드 디스크 드라이브(154)를 도시한다. 또한, 도 5는 이동식, 비휘발성 자기 디스크(158)에 기록하거나 그로부터 판독하는 자기 디스크 드라이브(156), CD-ROM 또는 기타 광 매체 등의 이동식, 비휘발성 광 디스크(162)에 기록하거나 그로부터 판독하는 광 디스크 드라이브(160)를 도시한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 기억 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) RAM, 고상 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(154), 자기 디스크 드라이브(156) 및 광 디스크 드라이브(160)는 통상적으로 인터페이스(166)와 같은 비휘발성 메모리 인터페이스에 의해 시스템 버스(136)에 접속된다.
위에서 설명되고 도 5에 도시된 드라이브들 또는 대량 저장 장치 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(130)의 다른 데이터를 저장한다. 도 5에서, 예를 들어, 하드 디스크 드라이브(154)는 운영 체제(170), 애플리케이션 프로그램(172), 기타 프로그램 모듈(174) 및 프로그램 데이터(176)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이 컴포넌트들이 운영 체제(144), 애플리케이션 프로그램(146), 기타 프로그램 모듈(148) 및 프로그램 데이터(150)와 동일할 수도 있고 다를 수도 있다는 것이다. 이에 관해, 운영 체제(170), 애플리케이션 프로그램(172), 기타 프로그램 모듈(174) 및 프로그램 데이터(176)에 다른 번호가 주어졌다는 것은 적어도 이들이 서로 다른 사본(copy)이라는 것을 도시한다.
사용자는 키보드(180) 및 포인팅 장치(182)(예를 들어, 마우스, 트랙볼(trackball), 펜 또는 터치 패드) 등의 입력 장치 또는 사용자 선택 장치를 통해 명령 및 정보를 컴퓨터(130)에 입력할 수 있다. 다른 입력 장치(도시 생략)는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 시스템 버스(136)에 결합된 사용자 입력 인터페이스(184)를 통해 처리 장치(132)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(188) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통 해 시스템 버스(136)에 접속된다. 모니터(188) 외에, 컴퓨터는 종종 스피커 및 프린터 등의 기타 주변 출력 장치(도시 생략)를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(도시 생략)를 통해 접속될 수 있다.
컴퓨터(130)는 원격 컴퓨터(194)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(194)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 통상적으로 컴퓨터(130)와 관련하여 상술된 구성요소의 대부분 또는 그 전부를 포함한다. 도 5에 도시된 논리적 연결로는 LAN(196) 및 WAN(198)이 있지만, 다른 네트워크를 포함할 수도 있다. LAN(136) 및/또는 WAN(138)은 유선 네트워크, 무선 네트워크, 그 조합 등일 수 있다. 이러한 네트워킹 환경은 사무실, 회사 전체에 걸친 컴퓨터 네트워크, 인트라넷 및 글로벌 컴퓨터 네트워크(예를 들어, 인터넷)에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(130)는 네트워크 인터페이스 또는 어댑터(186)를 통해 LAN(196)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(130)는 통상적으로 인터넷과 같은 WAN(198) 상에서의 통신을 설정하기 위한 모뎀(178) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(178)은 사용자 입력 인터페이스(184) 또는 기타 적절한 메커니즘을 통해 시스템 버스(136)에 접속된다. 네트워크화된 환경에서, 컴퓨터(130) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치(도시 생략)에 저장될 수 있다. 그 예제로서, 도 5는 메모리 장치 상에 상주하고 있는 원격 애플리케이션 프 로그램(192)을 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이의 통신 링크를 설정하는 다른 수단이 사용될 수 있다.
일반적으로, 컴퓨터(130)의 데이터 프로세서는 컴퓨터의 여러 컴퓨터 판독가능 매체에서 서로 다른 시간에 저장된 명령어에 의해 프로그래밍된다. 통상, 프로그램과 운영 체제는 예를 들어, 플로피 디스크 또는 CD-ROM 상에서 분산된다. 이로부터, 프로그램과 운영 체제는 컴퓨터의 보조 메모리 내에 설치되거나 로드된다. 실행 시, 프로그램과 운영 체제는 컴퓨터의 주 전자 메모리 내에 적어도 부분적으로 로드된다. 본원에서 설명된 본 발명은 이러한 매체가 마이크로프로세서 또는 기타 데이터 프로세서와 함께 아래에서 설명되는 단계들을 구현하기 위한 명령어 또는 프로그램을 포함하는 경우, 이들 및 기타 여러 타입의 컴퓨터 판독가능 저장 매체를 포함한다. 또한, 본 발명은 본원에서 설명된 방법 및 기술들에 따라 프로그래밍되는 경우 컴퓨터 자체를 포함한다.
본원에서는, 설명을 위해, 운영 체제와 같은 프로그램 및 기타 실행 가능 프로그램 컴포넌트를 개별 블록으로서 도시하고 있다. 그러나, 이러한 프로그램과 컴포넌트는 컴퓨터의 각각의 저장 컴포넌트 내에 다양한 시간에 상주하고, 컴퓨터의 데이터 프로세서(들)에 의해 실행된다는 것을 알 수 있다.
컴퓨터(130)를 포함하는 예시적인 컴퓨팅 시스템 환경과 관련하여 설명하였지만, 본 발명은 여러 다른 범용 또는 전용 컴퓨팅 시스템 환경 또는 구성과 함께 동작 가능하다. 본 발명의 컴퓨팅 시스템 환경은 결코 본 발명의 기능 또는 사용 범위에 관한 제한을 제안하고자 하는 것은 아니다. 또한, 컴퓨팅 시스템 환경은 예시적인 운영 환경에서 도시된 컴포넌트들 중 임의의 하나 또는 조합에 관한 임의의 종속성 또는 요구 사항을 갖는 것으로 해석되지 않아야 한다. 본 발명에서 이용하기에 적당할 수 있는 널리 공지된 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는 개인용 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱박스, 프로그램 가능 가전제품, 이동 전화, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템이나 장치들 중 임의의 것을 포함하는 분산형 컴퓨팅 환경을 포함하지만, 이에 한정되지는 않는다.
본 발명은 하나 이상의 컴퓨터 또는 기타 장치에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 문맥에서 설명될 수 있다. 일반적으로, 프로그램 모듈은 루틴, 프로그램, 객체, 컴포넌트, 및 특정 작업을 수행하거나 특정 추상 데이터 타입을 구현하는 데이터 구조를 포함하지만, 이에 한정되지는 않는다. 또한, 본 발명은 통신 네트워크를 통하여 연결되는 원격 처리 장치에 의해 작업이 수행되는 분산형 컴퓨팅 환경에서 실시될 수도 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 모두에 설치될 수 있다.
소프트웨어 아키텍처 문맥에서의 인터페이스는 소프트웨어 모듈, 컴포넌트, 코드 부분, 또는 컴퓨터 실행가능 명령어의 기타 시퀀스를 포함한다. 인터페이스는, 예를 들어, 제1 모듈 대신에 컴퓨팅 작업을 수행하도록 제2 모듈에 액세스하는 제1 모듈을 포함한다. 일 예에서, 제1 및 제2 모듈은 예를 들어, 운영 체제에 의 해 제공되는 API(application programming interface), (예를 들어, P2P(peer-to-peer) 애플리케이션 통신을 위한) 컴포넌트 객체 모델(component object model; COM) 인터페이스, 및 (예를 들어, 웹 서비스 간의 통신을 위한) XML 메타데이터 교환 포맷(extensible markup language metadata interchange format; XMI) 인터페이스를 포함한다.
본 발명의 인터페이스는 J2EE(Java 2 Platform Enterprise Edition), COM, 또는 DCOM(distributed COM) 예와 같은 강결합(tightly coupled) 동기식 구현일 수 있다. 다른 방법으로는 또는 이에 더하여, 인터페이스는 (예를 들어, 단순한 객체 액세스 프로토콜을 이용하는) 웹 서비스에서와 같은 약결합 비동기식 구현일 수 있다. 일반적으로, 인터페이스는 강결합, 약결합, 동기식 및 비동기식과 같은 특징들 중 임의의 조합을 포함한다. 또한, 인터페이스는 표준 프로토콜, 독점(proprietary) 프로토콜, 또는 표준 및 독점 프로토콜의 임의의 조합을 따를 수 있다.
본원에서 설명된 인터페이스 모두는 단일 인터페이스의 일부일 수 있거나 별도의 인터페이스 또는 그 임의의 조합으로서 구현될 수 있다. 인터페이스는 기능을 제공하도록 로컬 또는 원격으로 실행될 수 있다. 또한, 인터페이스는 본원에서 도시되거나 설명되는 것보다 추가되거나 적은 기능을 포함할 수 있다.
동작 시, 컴퓨터(130)는 도 2에 도시된 것과 같은 컴퓨터 실행가능 명령어를 실행하고, 네트워크화된 애플리케이션 프로그램 사이에서 요청된 데이터를 생성하여 통신한다.
첨부 A는 본 발명에 따른 예시적인 네임스페이스, 이벤트 핸들러, 및 파라미터를 목록으로 만든 것이다. 첨부 A에서, DatePickerEventHandler의 핸들러 타입은 시간 선택(date picker)을 위한 이벤트를 포함한다. 시간 선택은 사용자로 하여금 애플리케이션 내의 몇몇 문맥에서 날짜를 선택할 수 있도록 하는 사용자 인터페이스 컴포넌트이다. RenderMonth의 이벤트는 월에 대응하는 HTML 프래그먼트를 렌더링한다. 사용자가 2005년 1월로 네비게이션하기 위해 클릭하면, 본 발명의 클라이언트 컴포넌트는 (예를 들어, 날짜가 2005년 1월인 달의 경우 'm'인) 입력 파라미터를 선택한 서버에 RenderMonth 이벤트를 전송하고, 그 달에 대한 HTML 프래그먼트를 렌더링한다. 렌더링된 HTML 프래그먼트는 클라이언트에게 다시 전송된다.
MessageListViewEventHandler 핸들러 타입은 예를 들어, 인박스 내의 메시지를 나타내는 메시지 목록 보기를 위한 이벤트를 포함한다. Delete 이벤트는 사용자가 몇 개의 메시지를 선택하여 삭제하는 경우 실행된다. 폴더 식별자는 속성 'fld'에 의해 표현된다. 삭제되는 메시지 식별자 어레이는 속성 'id'에 의해 표현된다.
RecipientWellEventHandler는 'recipient well'을 위한 이벤트 핸들러이다. 이 핸들러 타입에서의 이벤트의 일 예는 'resolve'이다. 'Resolve'는 스트링 어레이인 파라미터로서 이메일 메시지에서 to, cc, 및 bcc를 선택한다. Resolve 이벤트는 이들 스트링을 파스하여 분해한다. 예를 들어, 사용자가 "BobS"를 타이프하면, 데이터 요청은 'to' 파라미터: "BobS"에 대응하는 어레이 내의 단일 항목을 갖 는 서버에 전송된다. 이 응답은 Bob Smith의 이메일 주소나 기타 데이터가 첨부될 수 있는 HTML 내의 "Bob Smith"를 갖는 HTML 프래그먼트이다.
다음으로, 일정 보기 이벤트 핸들러 내의 메소드 GetViewPayload의 상세한 설명을 기술한다. 이 메소드에 대한 파라미터는 속성들인 'nvs', 'fld', days', 'vt', 및 'dir'을 포함한다. 이 이벤트 핸들러는 일정 보기를 리프레시할 필요가 있을 때 클라이언트로부터 호출된다. 일정 보기는 디스플레이 좌측에 30분의 증분을 갖는 타임 스트립을 표시하고, 각각의 일자는 열에 표시된다.
일정 보기를 리프레시할 필요가 있는 경우, GetViewPayload 이벤트가 파이어(fire)된다. 이 이벤트는 백엔드로부터 데이터를 로드하고(예를 들어, 편지함에 있는 사용자의 일정의 쿼리를 행하고), 그 데이터를 기술하는 코드(예를 들어, JavaScript)를 렌더링한다. 렌더링된 코드는 페이로드로서 지칭된다. 페이로드는 페이로드 데이터를 이용하여 보기를 리드로우(redraw)하는 클라이언트에 전송된다. 예시적인 페이로드는 각 약속의 시작/종료 시간, 주제, 위치, 비어 있는/사용 중인 상태 등을 포함한다. 또한, 각 직사각형의 좌표는 서버에서 계산되고 이 페이로드의 일부로서 전송되어, 클라이언트 측 스크립트를 단순화한다.
GetViewPayload 메소드에 대한 파라미터는 속성들인 'nvs', 'fld', 'days', 'vt', 및 'dir'을 포함한다. 'nvs' 속성은 참인 경우, 보기 상태를 지속할 필요가 없음을 지시하는 "no view state" 속성이다. 보기 상태는 (예를 들어, 일자를 본 횟수 및 보기 타입인) 보기를 정의하는 파라미터 집합이다. 보기 타입은 주 단위 또는 일 단위일 수 있다. 'nvs' 파라미터가 거짓인 경우, 사용자가 다음에 로그 온할 동안 보기 상태가 보존된다. 'fld' 속성은 보게 될 일정 폴더의 식별자에 대응하는 "folder identifier" 속성이다. 'days' 속성은 보게 될 일자의 어레이를 포함한다. 'vt' 속성은 일 단위 또는 주 단위인 "view type"에 대응한다. 'dir' 속성은 임의로 지정된 네비게이션 화살표의 "direction"이다. 이 속성의 설정은 사용자가 네비게이션 화살표를 클릭했으므로 서버가 'days' 속성에 기초하여 보게 될 다음 일자들의 집합을 계산해야 함을 의미한다. 예를 들어, 'days' 속성이 3월의 2일, 3일, 및 4일이고, 'dir' 속성이 +1로 설정되면, 서버는 (예를 들어, 7일 증분 단위로 진행하는 다중 일자 보기인) 이들 각각에 7일을 더할 것이다. 'day' 속성이 단지 (예를 들어, 단일 일자 보기인) 3월 2일이면, 우측 화살표 상에서 클릭하면 3월 3일로 네비게이션하므로, 단지 서버는 1일을 더하게 된다.
아래에는 GetViewPayload 메소드에 대한 예시적인 요청이 도시되어 있다.
Figure 112007063298773-pct00007
아래에는 상기 요청에 대한 예시적인 응답의 일부가 도시되어 있다.
Figure 112007063298773-pct00008
Figure 112007063298773-pct00009
본원에서 도시되고 설명된 방법의 실행 또는 수행 순서는 달리 지정되지 않는 한 필수적인 것은 아니다. 즉, 본 발명의 방법의 구성 요소는 달리 지정되지 않는 한 임의의 순서로 수행될 수 있고, 본 발명의 방법은 본원에서 개시된 것보다 많거나 적은 구성 요소를 포함할 수 있다. 예를 들어, 다른 구성 요소 전에, 그와 동시에, 또는 그 후에 특정 구성 요소를 실행하거나 수행하는 것은 본 발명의 범위 내에 있는 것으로 생각된다.
본 발명 또는 그 실시예(들)의 구성 요소를 도입할 때, 관사인 "일", "하나", "그", 및 "상기"는 구성 요소 중 하나 이상이 존재함을 의미하기 위한 것이다. "구비하는", "포함하는", 및 "갖는"과 같은 용어는 포괄적인 것으로서, 기재 된 구성 요소 외에 추가 구성 요소가 있을 수 있음을 의미한다.
상기 내용을 고려하면, 본 발명의 여러 목적 및 기타 유익한 결과를 얻을 수 있음을 알게 될 것이다.
본 발명의 범위로부터 일탈함이 없이 상기 구성, 제품, 및 방법을 다양하게 변경할 수 있으므로, 상기 설명에 포함되며 첨부된 도면에 도시된 모든 내용은 한정적인 의미가 아닌 예시적인 것으로 해석되어야 한다.
첨부 A
아래의 표에는 서버에 의해 배포된 이메일 애플리케이션 프로그램을 위한 (예를 들어, Mail.Clients인) 이메일 네임스페이스 내의 예시적인 이벤트 및 파라미터가 도시되어 있다.
표 A1. Date Picker 이벤트 핸들러를 위한 예시적인 이벤트 핸들러 및 파라미터
Figure 112007063298773-pct00010
표 A2. Message List View 이벤트 핸들러에 대한 예시적인 이벤트 핸들러 및 파라미터
Figure 112007063298773-pct00011
Figure 112007063298773-pct00012
Figure 112007063298773-pct00013
Figure 112007063298773-pct00014
Figure 112007063298773-pct00015
Figure 112007063298773-pct00016
Figure 112007063298773-pct00017
표 A3. Recipient Well 이벤트 핸들러에 대한 예시적인 이벤트 핸들러 및 파라미터
Figure 112007063298773-pct00018
표 A4. Calendar View 이벤트 핸들러에 대한 예시적인 이벤트 핸들러 및 파라미터
Figure 112007063298773-pct00019
Figure 112007063298773-pct00020
Figure 112007063298773-pct00021

Claims (20)

  1. 통신을 위한 시스템으로서,
    하나 이상의 컴퓨터 저장 매체;
    제1 프로세스; 및
    제2 프로세스를 포함하고,
    상기 하나 이상의 컴퓨터 저장 매체는,
    각각이 연관된 네임스페이스를 갖는 복수의 이벤트 핸들러 - 상기 복수의 이벤트 핸들러 각각은 연관된 하나 이상의 파라미터를 더 가짐 - , 및
    포맷된 데이터 요청을 표현하는 데이터 구조 - 상기 데이터 구조는 상기 네임스페이스를 표현한 네임스페이스 값을 저장하는 네임스페이스 필드, 상기 네임스페이스 필드 내의 상기 네임스페이스 값에 의해 표현된 상기 네임스페이스와 연관되는 상기 복수의 이벤트 핸들러 중 하나에 대응하는 이벤트 핸들러 값을 저장하는 이벤트 핸들러 필드, 및 상기 이벤트 핸들러 필드 내의 상기 이벤트 핸들러 값에 의해 표현된 상기 이벤트 핸들러와 연관되는 상기 파라미터 중 하나에 대응하는 파라미터 값을 저장하는 파라미터 필드를 포함함 - 를 저장하고,
    상기 제2 프로세스에 의해 배포(deploy)되는 상기 제1 프로세스는,
    사용자 또는 프로세스로부터 데이터 요청을 수신하고,
    상기 수신된 요청과 연관된 네임스페이스 값을 식별하고,
    상기 수신된 요청 및 상기 식별된 네임스페이스 값의 함수로서 이벤트 핸들러 값을 선택하고,
    상기 수신된 요청 및 상기 선택된 이벤트 핸들러 값의 함수로서 파라미터 값을 결정하고,
    상기 네임스페이스 필드에 상기 식별된 네임스페이스 값을 저장하고 상기 이벤트 핸들러 필드에 상기 선택된 이벤트 핸들러 값을 저장하며 상기 파라미터 필드에 상기 결정된 파라미터 값을 저장함으로써 상기 데이터 구조를 채우고(populating) - 상기 채우는 것은, 상기 네임스페이스 필드 및 상기 네임스페이스 값을 네임-값 쌍으로서, 상기 이벤트 핸들러 필드 및 상기 이벤트 핸들러 값을 네임-값 쌍으로서, 그리고 상기 파라미터 필드 및 상기 파라미터 값을 네임-값 쌍으로서 저장하는 것을 포함함 - ,
    상기 채워진 데이터 구조를 상기 제2 프로세스로 전송하기 위한 컴퓨터 실행가능 명령어를 실행하도록 구성되며,
    상기 제2 프로세스는,
    상기 채워진 데이터 구조를 상기 제1 프로세스로부터 수신하고,
    상기 수신된 데이터 구조의 함수로서, 상기 컴퓨터 저장 매체 상에 저장된 상기 복수의 이벤트 핸들러 중에서 이벤트 핸들러를 선택하고,
    상기 선택된 이벤트 핸들러를 실행하여 결과 데이터를 생성하고 - 상기 제2 프로세스는 요청된 데이터의 일부를 렌더링하며, 상기 생성된 결과 데이터는 아직 처리되지 않은 상기 요청된 데이터의 나머지 부분을 표현함 - ,
    상기 생성된 결과 데이터를 상기 제1 프로세스로 전송하기 위한 컴퓨터 실행가능 명령어를 실행하도록 구성되고,
    상기 제1 프로세스는 상기 생성된 결과 테이터를 실행하여 상기 제2 프로세스가 상기 요청된 데이터를 부분적으로 렌더링하게 하고 상기 제1 프로세스가 상기 요청된 데이터의 나머지 부분을 렌더링하게 하는, 통신 시스템.
  2. 제1항에 있어서, 상기 컴퓨터 저장 매체 및 상기 제1 프로세스는 서버에 의해 배포된(server-deployed) 개인 정보 관리 클라이언트와 연관되는, 통신 시스템.
  3. 제1항에 있어서, 상기 컴퓨터 저장 매체 및 상기 제2 프로세스는 개인 정보 관리 서버와 연관되는, 통신 시스템.
  4. 제1항에 있어서, 상기 파라미터 값은 확장성 생성 언어(extensible markup language; XML)에 따라 포맷된 데이터를 포함하는, 통신 시스템.
  5. 제1항에 있어서, 분산형 클라이언트 애플리케이션은 상기 제1 프로세스를 실행하고 서버 애플리케이션은 상기 제2 프로세스를 실행하며,
    상기 분산형 클라이언트 애플리케이션은 상기 서버 애플리케이션의 기능 중 적어도 일부를 제공하는, 통신 시스템.
  6. 제1항에 있어서, 상기 제2 프로세스는 상기 컴퓨터 저장 매체 상에 저장된 상기 복수의 이벤트 핸들러를 이용하여 구성 데이터베이스를 구축하기 위한 컴퓨터 실행가능 명령어를 실행하도록 더 구성되는, 통신 시스템.
  7. 제1항에 있어서, 상기 복수의 이벤트 핸들러를 저장하기 위한 수단을 더 포함하는, 통신 시스템.
  8. 제1항에 있어서, 상기 제1 프로세스를 실행하기 위한 수단 및 상기 제2 프로세스를 실행하기 위한 수단을 더 포함하는, 통신 시스템.
  9. 제1항에 있어서, 상기 제2 프로세스는,
    상기 파라미터 값을 확인(validating)하고,
    상기 파라미터 값을 연관된 데이터 타입으로 변환하기 위한 컴퓨터 실행가능 명령어를 실행하도록 더 구성되는, 통신 시스템.
  10. 데이터를 생성하여 한 프로세스로부터 또 다른 프로세스로 전달하기 위한 컴퓨터로 구현된 방법으로서,
    제1 프로세스에 의해, 사용자로부터 데이터 요청을 수신하는 단계;
    상기 제1 프로세스에 의해, 상기 수신된 요청과 연관된 네임스페이스를 식별하는 단계 - 상기 식별된 네임스페이스는, 상기 식별된 네임스페이스를 표현하는 네임스페이스 값을 저장함 - ;
    상기 제1 프로세스에 의해, 상기 수신된 요청의 함수로서 상기 식별된 네임스페이스와 연관된 이벤트 핸들러를 결정하는 단계 - 상기 이벤트 핸들러는, 상기 이벤트 핸들러에 대응하는 이벤트 핸들러 값을 저장함 - ;
    상기 제1 프로세스에 의해, 상기 수신된 요청의 함수로서 상기 결정된 이벤트 핸들러와 연관된 파라미터를 채우는 단계 - 상기 채워진 파라미터는 상기 파라미터에 대응하는 파라미터 값을 저장함 - ;
    상기 제1 프로세스에 의해, 상기 식별된 네임스페이스, 상기 결정된 이벤트 핸들러, 및 상기 채워진 파라미터를 이용하여 포맷된 데이터 요청을 생성하는 단계 - 상기 포맷된 데이터 요청은 상기 네임스페이스 및 상기 네임스페이스 값을 네임-값 쌍으로서, 상기 이벤트 핸들러 및 상기 이벤트 핸들러 값을 네임-값 쌍으로서, 상기 파라미터 및 파라미터 값을 네임-값 쌍으로서 포함함 - ;
    상기 생성되는 포맷된 데이터 요청을 상기 제1 프로세스로부터 제2 프로세스로 전송하는 단계;
    상기 제2 프로세스에 의해, 상기 포맷된 데이터 요청을 상기 제1 프로세스로부터 수신하는 단계;
    상기 제2 프로세스에 의해, 상기 수신되는 포맷된 데이터 요청의 함수로서 메모리 영역에 저장된 복수의 이벤트 핸들러 중에서 이벤트 핸들러를 선택하는 단계;
    상기 제2 프로세스에 의해, 상기 선택된 이벤트 핸들러를 실행하여 결과 데이터를 생성하는 단계 - 상기 제2 프로세스는 상기 요청된 데이터의 일부를 렌더링하고, 상기 생성된 결과 데이터는 아직 처리되지 않은 상기 요청된 데이터의 나머지 부분을 표현함 - ; 및
    상기 생성된 결과 데이터를 상기 제2 프로세스로부터 상기 제1 프로세스로 전송하는 단계 - 상기 생성된 결과 데이터는 코드 스트림을 포함하고, 상기 제1 프로세스는 상기 생성된 결과 테이터를 실행하여 상기 제2 프로세스가 상기 요청된 데이터를 부분적으로 렌더링하게 하고 상기 제1 프로세스가 상기 요청된 데이터의 나머지 부분을 렌더링하게 함 -
    를 포함하는 컴퓨터로 구현된 방법.
  11. 제10항에 있어서, 상기 제1 프로세스에 의해, 상기 전송된 결과 데이터를 수신하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
  12. 제10항에 있어서,
    상기 제1 프로세스에 의해, 상기 사용자로부터 사용자 정의 네임스페이스, 상기 사용자 정의 네임스페이스와 연관된 사용자 정의 이벤트 핸들러, 및 상기 사용자 정의 이벤트 핸들러의 사용자 정의 파라미터를 수신하는 단계; 및
    상기 제2 프로세스와 상기 제1 프로세스에 의해, 상기 수신된 사용자 정의 네임스페이스, 상기 사용자 정의 이벤트 핸들러, 및 상기 사용자 정의 파라미터를 등록하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
  13. 제12항에 있어서, 상기 제2 프로세스는 상기 제2 프로세스의 기반구조를 변경하지 않고 상기 수신된 사용자 정의 네임스페이스, 상기 사용자 정의 이벤트 핸들러, 및 상기 사용자 정의 파라미터를 등록하는, 컴퓨터로 구현된 방법.
  14. 제10항의 컴퓨터로 구현된 방법을 수행하기 위한 컴퓨터 실행가능 명령어를 갖는 하나 이상의 컴퓨터 저장 매체.
  15. 네트워크화된 환경에서 요청된 데이터를 생성하여 통신하기 위한 컴퓨터 실행가능 컴포넌트를 갖는 하나 이상의 컴퓨터 판독가능 저장 매체로서, 상기 컴포넌트는,
    서버에 의해 배포된 클라이언트 컴포넌트;
    서버 컴포넌트를 포함하고,
    상기 서버에 의해 배포된 클라이언트 컴포넌트는,
    사용자로부터 데이터 요청을 수신하고,
    상기 수신된 요청과 연관된 네임스페이스를 식별하고 - 상기 식별된 네임스페이스는, 상기 식별된 네임스페이스를 표현하는 네임스페이스 값을 저장함 - ,
    상기 수신된 요청의 함수로서 상기 식별된 네임스페이스와 연관된 이벤트 핸들러를 결정하고 - 상기 이벤트 핸들러는, 상기 이벤트 핸들러에 대응하는 이벤트 핸들러 값을 저장함 - ,
    상기 수신된 요청의 함수로서 상기 결정된 이벤트 핸들러와 연관된 파라미터를 채우고 - 상기 채워진 파라미터는 상기 파라미터에 대응하는 파라미터 값을 저장함 - ,
    상기 식별된 네임스페이스, 상기 결정된 이벤트 핸들러, 및 상기 채워진 파라미터를 이용하여 포맷된 데이터 요청을 생성하며 - 상기 포맷된 데이터 요청은 상기 네임스페이스 및 상기 네임스페이스 값을 네임-값 쌍으로서, 상기 이벤트 핸들러 및 상기 이벤트 핸들러 값을 네임-값 쌍으로서, 상기 파라미터 및 상기 파라미터 값을 네임-값 쌍으로서 포함함 - ,
    상기 생성되는 포맷된 데이터 요청을 서버 컴포넌트로 전송하기 위한 것이며,
    상기 서버 컴포넌트는,
    상기 서버에 의해 배포된 클라이언트 컴포넌트로부터 상기 전송된 포맷된 데이터 요청을 수신하고,
    상기 수신된 포맷된 데이터 요청의 함수로서 메모리 영역에 저장된 복수의 이벤트 핸들러 중에서 이벤트 핸들러를 선택하고,
    상기 선택된 이벤트 핸들러를 실행하여 결과 데이터를 생성하며 - 상기 서버 컴포넌트는 상기 요청된 데이터의 일부를 렌더링하고, 상기 생성된 결과 데이터는 아직 처리되지 않은 상기 요청된 데이터의 나머지 부분을 표현함 - ,
    상기 생성된 결과 데이터를 상기 서버에 의해 배포된 클라이언트 컴포넌트로 전송하기 위한 것이며,
    상기 서버에 의해 배포된 클라이언트 컴포넌트는 상기 생성된 결과 데이터를 실행하여 상기 서버 컴포넌트가 상기 요청된 데이터를 부분적으로 렌더링하게 하고 상기 서버에 의해 배포된 클라이언트 컴포넌트가 상기 요청된 데이터의 나머지 부분을 렌더링하게 하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  16. 제15항에 있어서, 상기 메모리 영역에 저장된 상기 복수의 이벤트 핸들러를 이용하여 구성 데이터베이스를 구축하기 위한 레지스트리 컴포넌트를 더 포함하는 하나 이상의 컴퓨터 판독가능 저장 매체.
  17. 제16항에 있어서, 상기 서버 컴포넌트는 상기 수신된 요청의 함수로서 상기 구성 데이터베이스로부터 이벤트 핸들러를 선택하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  18. 제15항에 있어서, 상기 서버에 의해 배포된 클라이언트 컴포넌트는 네트워크를 통해 상기 서버 컴포넌트와 통신하는 개인 정보 관리 클라이언트를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  19. 제15항에 있어서, 상기 서버 컴포넌트는 개인 정보 관리 서버를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  20. 삭제
KR1020077019830A 2005-04-08 2006-03-09 네트워크 애플리케이션 프로그램 사이에서 요청된 데이터를생성 및 통신하기 위한 시스템, 컴퓨터 구현 방법 및컴퓨터 판독가능 매체 KR101219997B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/102,039 US7418715B2 (en) 2005-04-08 2005-04-08 System and method for producing and communicating requested data among networked application programs
US11/102,039 2005-04-08

Publications (2)

Publication Number Publication Date
KR20070118076A KR20070118076A (ko) 2007-12-13
KR101219997B1 true KR101219997B1 (ko) 2013-01-08

Family

ID=37084265

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077019830A KR101219997B1 (ko) 2005-04-08 2006-03-09 네트워크 애플리케이션 프로그램 사이에서 요청된 데이터를생성 및 통신하기 위한 시스템, 컴퓨터 구현 방법 및컴퓨터 판독가능 매체

Country Status (11)

Country Link
US (1) US7418715B2 (ko)
EP (1) EP1872281A4 (ko)
JP (1) JP2008538428A (ko)
KR (1) KR101219997B1 (ko)
CN (1) CN101548256B (ko)
BR (1) BRPI0608817A2 (ko)
MX (1) MX2007011027A (ko)
MY (1) MY144258A (ko)
RU (1) RU2419864C2 (ko)
TW (1) TWI388992B (ko)
WO (1) WO2006110237A2 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070198473A1 (en) * 2006-02-03 2007-08-23 Simdesk Technologies, Inc. Computer system displaying personal information items in database as individual files
US20080025232A1 (en) * 2006-07-26 2008-01-31 International Business Machines Corporation Method and system for network connection
US20080228715A1 (en) * 2007-03-12 2008-09-18 Terabyte Media, Llc Apparatus and method for distributed information retrieval and processing
US7966287B2 (en) 2008-05-15 2011-06-21 International Business Machines Corporation Apparatus, system, and method for dynamic database driven document synchronization
US8726237B2 (en) * 2009-10-28 2014-05-13 Microsoft Corporation Event handling for unmanaged code
CN102622216A (zh) 2011-01-30 2012-08-01 国际商业机器公司 一种用于应用的协同工作的方法和系统
TWI571747B (zh) * 2011-10-28 2017-02-21 Lxm公司 資料交換系統
US8984124B2 (en) * 2011-11-30 2015-03-17 Microsoft Technology Licensing, Llc System and method for adaptive data monitoring
JP5896712B2 (ja) * 2011-12-08 2016-03-30 キヤノン株式会社 情報処理装置、情報処理方法、プログラム、及び、情報処理システム
JP5942634B2 (ja) * 2012-06-27 2016-06-29 富士通株式会社 秘匿化装置、秘匿化プログラムおよび秘匿化方法
US9141707B2 (en) * 2012-07-19 2015-09-22 Facebook, Inc. Context-based object retrieval in a social networking system
EP2991241A1 (en) * 2014-08-27 2016-03-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Sudac, user equipment, base station and sudac system
KR101581776B1 (ko) * 2015-05-14 2015-12-31 주식회사 티맥스 소프트 웹 서버에서 파일 디스크립터를 분배하는 방법, 이를 사용한 웹 서버 및 컴퓨터 판독 가능한 기록 매체
US9940169B2 (en) 2015-07-23 2018-04-10 Pearson Education, Inc. Real-time partitioned processing streaming
US11468053B2 (en) 2015-12-30 2022-10-11 Dropbox, Inc. Servicing queries of a hybrid event index
US11099912B1 (en) * 2016-06-29 2021-08-24 Amazon Technologies, Inc. Processing computationally intensive workloads
CN106406985B (zh) * 2016-09-21 2019-10-11 北京百度网讯科技有限公司 分布式计算框架和分布式计算方法
US11063946B2 (en) * 2018-10-24 2021-07-13 Servicenow, Inc. Feedback framework
CN114296641B (zh) * 2021-12-14 2023-09-19 北京欧珀通信有限公司 增量文件传输方法、装置、电子设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539909A (en) * 1992-04-15 1996-07-23 Hitachi, Ltd. Negotiation method for calling procedures located within other objects without knowledge of their calling syntax
US20020046303A1 (en) * 1999-03-17 2002-04-18 Yoshitaka Honishi Server system determining server application corresponding to processing request based on information held in server

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5634053A (en) 1995-08-29 1997-05-27 Hughes Aircraft Company Federated information management (FIM) system and method for providing data site filtering and translation for heterogeneous databases
US6023694A (en) 1996-01-02 2000-02-08 Timeline, Inc. Data retrieval method and apparatus with multiple source capability
US6625617B2 (en) 1996-01-02 2003-09-23 Timeline, Inc. Modularized data retrieval method and apparatus with multiple source capability
JPH1196009A (ja) * 1997-09-22 1999-04-09 Toshiba Corp オブジェクトインターフェース変換方法及び記録媒体
US6366915B1 (en) 1998-11-04 2002-04-02 Micron Technology, Inc. Method and system for efficiently retrieving information from multiple databases
US6539374B2 (en) 1999-06-03 2003-03-25 Microsoft Corporation Methods, apparatus and data structures for providing a uniform representation of various types of information
US7231433B1 (en) 2000-01-19 2007-06-12 Reynolds And Reynolds Holdings, Inc. Enterlink for providing a federated business to business system that interconnects applications of multiple companies
US7702719B1 (en) * 2000-02-08 2010-04-20 International Business Machines Corporation Methods and apparatus for reducing the number of server interactions in network-based applications using a dual-MVC approach
WO2001067309A2 (en) 2000-03-03 2001-09-13 Radiant Logic, Inc. System and method for providing access to databases via directories and other hierarchical structures and interfaces
US7207046B1 (en) * 2000-08-23 2007-04-17 Agilent Technologies, Inc. Method and system for providing string-over-socket scripting language access to distributed object model interfaces
US7127514B2 (en) * 2000-12-28 2006-10-24 Microsoft Corporation Stateless distributed computer architecture with server-oriented state-caching objects maintained on network or client
US20030163479A1 (en) 2001-05-14 2003-08-28 Mathews Michael B. Method and apparatus for implementing a data management system using a metadata specification
EP1298525A1 (en) * 2001-09-26 2003-04-02 Sap Ag Interaction between computers with different object-oriented run-time environments
US7113964B1 (en) 2003-06-05 2006-09-26 Iteration Software, Inc. Method and apparatus for archiving data in a relational database system
US7739223B2 (en) 2003-08-29 2010-06-15 Microsoft Corporation Mapping architecture for arbitrary data models
DE10351351B4 (de) * 2003-11-04 2007-03-22 Siemens Ag Verfahren und System zur dynamischen Generierung von User Interfaces

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539909A (en) * 1992-04-15 1996-07-23 Hitachi, Ltd. Negotiation method for calling procedures located within other objects without knowledge of their calling syntax
US20020046303A1 (en) * 1999-03-17 2002-04-18 Yoshitaka Honishi Server system determining server application corresponding to processing request based on information held in server

Also Published As

Publication number Publication date
RU2007137005A (ru) 2009-04-10
MX2007011027A (es) 2007-09-26
JP2008538428A (ja) 2008-10-23
CN101548256A (zh) 2009-09-30
US20060230026A1 (en) 2006-10-12
WO2006110237A3 (en) 2009-04-23
BRPI0608817A2 (pt) 2010-01-26
WO2006110237A2 (en) 2006-10-19
US7418715B2 (en) 2008-08-26
EP1872281A4 (en) 2011-06-15
EP1872281A2 (en) 2008-01-02
TWI388992B (zh) 2013-03-11
TW200639652A (en) 2006-11-16
CN101548256B (zh) 2012-09-05
KR20070118076A (ko) 2007-12-13
MY144258A (en) 2011-08-29
RU2419864C2 (ru) 2011-05-27

Similar Documents

Publication Publication Date Title
KR101219997B1 (ko) 네트워크 애플리케이션 프로그램 사이에서 요청된 데이터를생성 및 통신하기 위한 시스템, 컴퓨터 구현 방법 및컴퓨터 판독가능 매체
US10032130B2 (en) System and method for providing data manipulation using web services
US7725508B2 (en) Methods and systems for information capture and retrieval
US7467183B2 (en) Method, apparatus, and user interface for managing electronic mail and alert messages
KR100952379B1 (ko) 애플리케이션에서의 이벤트 모니터링을 위한 프로파일기반의 캡처 컴포넌트
US7703024B2 (en) Obtaining a graphical user interface to access a remote computing system
US7185238B2 (en) Data loss prevention
US20020120679A1 (en) Methods and apparatus for communicating changes between a user interface and an executing application using property paths
US20010016845A1 (en) Method and apparatus for receiving information in response to a request from an email client
US20070143399A1 (en) Scheduling and searching meetings in a network environment
CN104519120B (zh) 业务对象附件和过期统一资源定位符
Graba An introduction to network programming with Java
EP1741026A2 (en) Methods and systems for interfacing applications with a search engine
US20110099502A1 (en) Developer Interface and Associated Methods for System for Querying and Consuming Web-Based Data
US20090025011A1 (en) Inter-process communication at a mobile device
JP2009530736A (ja) 初期動的レンダリング制御データの推定
US8898580B2 (en) Definition for service interface
JP7286798B2 (ja) 動的に構成可能なクライアントアプリケーションアクティビティ
US7685258B2 (en) Disconnectible applications
US9959300B1 (en) Systems and methods for article location and retrieval
US20110138288A1 (en) Method, system, and computer program product for tagging of portlets in a portal infrastructure
Juneau et al. Java Message Service
US20060100994A1 (en) Distributing repository information
Ojala Service Oriented Architecture in Mobile Devices
Joshi et al. Using the Communication API and Web Sockets

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee