JP2008538428A - ネットワークアプリケーションプログラム間で要求されたデータを生成および通信するためのシステムおよび方法 - Google Patents

ネットワークアプリケーションプログラム間で要求されたデータを生成および通信するためのシステムおよび方法 Download PDF

Info

Publication number
JP2008538428A
JP2008538428A JP2008505310A JP2008505310A JP2008538428A JP 2008538428 A JP2008538428 A JP 2008538428A JP 2008505310 A JP2008505310 A JP 2008505310A JP 2008505310 A JP2008505310 A JP 2008505310A JP 2008538428 A JP2008538428 A JP 2008538428A
Authority
JP
Japan
Prior art keywords
computer
event handler
namespace
request
data
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2008505310A
Other languages
English (en)
Other versions
JP2008538428A5 (ja
Inventor
ペレイラ ジョージ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2008538428A publication Critical patent/JP2008538428A/ja
Publication of JP2008538428A5 publication Critical patent/JP2008538428A5/ja
Pending legal-status Critical Current

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プロセスに送信する。

Description

本発明の実施形態は、コンピュータ通信の領域に関する。特に本発明の実施形態は、名前空間、名前空間内のイベント、およびイベントに対するパラメータを有するスキーマ形態のデータ要求に関する。
一部のサーバ配置ウェブベースメールアプリケーションにより、中央に位置するメールボックスにユーザはアクセス可能になる。これらのアプリケーションは、インターネット等のネットワークから電子メール(email)を送受信する機能、スケジュールを予約する機能、他の個人情報管理(PIM)のタスクを実施する機能も提供する。これらのアプリケーションの一部はブラウザ内で実行し、他のPIMアプリケーションに対してコンパニオンである。上記のクライアントウェブアプリケーションは、PIM機能を実施可能とするために大量のクライアントサーバ間のトラフィックを必要とする。例えば、ユーザが新しい電子メールをチェックするために受信箱内の電子メール一覧をリフレッシュするとき、受信箱内の新しい電子メールの一覧を抽出するためにウェブ要求がサーバに送信される。
一部のクライアントアプリケーションに対して、クライアントサーバ間のトラフィックはハイパーテキスト転送プロトコル(HTTP)および(例えば、HTTPのPOST要求における単純化した名前と値の対に基づく)他の様々なスキーマに対するウェブを使った分散オーサリングとバージョン管理(WebDAV)拡張の混成である。これらの従来の技術のシステムにおいて複数のプロトコルをデータアクセスに使用することは実装を複雑にし、保守性を低下させる。これらの従来の技術のシステムはさらに、要求に対して、首尾一貫しない不十分なスキーマを使用している。一部の従来の技術のシステムで使用されるような名前−値形式は非常に制限されたものであり、堅固に定形化したデータあるいはより複雑な構造または配列を容易にはサポートしていない。さらに、名前―値形式は名前と値の対に対するセパレータとして改行を必要とするため、特定の名前と値の対に関する全てのデータを、送信前に改行なしで符号化し受信時に復号化することが必要となる。一部の既存システムにおけるこれらの余計なステップは処理を遅延させ、複雑度を増加させる。一部の既存ウェブクライアントアプリケーションのさらに別の問題は、クライアントアプリケーションに様々な機能を提供するサーバサイドコードが無秩序で整理されていないことである。そのため、新たな要求ハンドラを既存システムのサーバサイドコードに追加することは困難である。
従って、これらおよび他の欠点を解決するため、クライアントサーバ通信に対して改善したシステムが望まれる。
本発明の実施形態は、ネットワークアプリケーションプログラム間で要求されたデータを生成および通信するためのプロトコルおよびスキーマを含む。1実施形態において、本発明はさらに、要求されたデータを生成する要求ハンドラの開発者が利用可能なアーキテクチャ、およびアプリケーションプログラミングインタフェース(API)を含む。開発者は、APIを用いてカスタマイズした(custom)要求ハンドラを作成できる。
本発明のクライアントサーバの実施形態では、本発明によるクライアントが、本発明の矛盾なく定義されたスキーマに従って、データ要求をサーバに送信する。その要求は要求ハンドラの名前空間、要求ハンドラ名前空間内のイベントハンドラ、およびイベントハンドラの1つまたは複数のパラメータを識別する。本発明は、サーバ内の要求ハンドラ名前空間にグループ化されるイベントハンドラのインフラストラクチャを含み、また、サーバは、それぞれのクライアントの要求に応じて複数フォーマットでクライアントに応答を配信する。サーバのインフラストラクチャは、要求を解析し、特定名前空間内の特定イベントハンドラを識別し、識別したイベントハンドラに関連付けられるハンドラのコードを要求パラメータの関数として実行する。
本発明は、能力は高いが容量が小さく拡張性がある。データ要求に対して首尾一貫したスキーマを使用することで、アプリケーションプログラム間の相互作用が簡略化され、要求ハンドラの保守性が改善される。本発明のスキーマは複雑なデータ構造をサポートする。本発明は、要求されたデータを生成および配信するインフラストラクチャへの変更なしに、要求ハンドラの追加のサポートをする。
本発明の1態様によると、システムは、それぞれが自身に関連付けられた名前空間を有する複数のイベントハンドラを格納するための1つまたは複数のコンピュータ読取可能な記録媒体を含む。複数のイベントハンドラの各々はさらに、自身に関連付けられた1つまたは複数のパラメータを有する。コンピュータ読取可能な記録媒体は、データに対するフォーマット済み要求を表すデータ構造を格納する。データ構造は、名前空間を表す名前空間値を格納する名前空間領域、複数のイベントハンドラの1つに対応するイベントハンドラ値を格納するイベントハンドラ領域を含む。複数のイベントハンドラの1つは、名前空間領域内の名前空間値が表す名前空間と関連付けられる。また、データ構造は、パラメータの1つに対応するパラメータ値を格納するパラメータ領域も含む。前記パラメータの1つは、イベントハンドラ領域内のイベントハンドラ値が表すイベントハンドラに関連付けられる。システムは、また第2のプロセスが配置する第1のプロセスも含む。第1プロセスはコンピュータ実行可能命令を実行するよう構成される。このコンピュータ実行可能命令は、ユーザまたはプロセスからデータ要求を受信し、受信した要求に関連付けられた名前空間値を識別し、受信した要求および識別した名前空間値の関数としてイベントハンドラ値を選択し、受信した要求および選択したイベントハンドラ値の関数としてパラメータ値を決定する。第1プロセスはさらに、識別した名前空間値を名前空間領域内に格納すること、選択したイベントハンドラ値をイベントハンドラ領域内に格納すること、および決定したパラメータ値をパラメータ領域内に格納することで、データ構造をポピュレートする。第1プロセスはさらに、ポピュレートしたデータ構造を第2プロセスに送信する。第2プロセスはコンピュータ実行可能命令を実行するよう構成され、このコンピュータ実行可能命令は、ポピュレートしたデータ構造を第1プロセスから受信し、受信したデータ構造の関数として、コンピュータ読取可能な記録媒体上に格納した複数のイベントハンドラから1つのイベントハンドラを選択し、選択したイベントハンドラを実行して結果データを生成し、生成した結果データを第1プロセスに送信する。
本発明の別の態様によると、コンピュータ実施方法は、あるプロセスから別のプロセスへデータを生成および配信する。コンピュータ実施方法は、第1プロセスによりユーザからデータ要求を受信すること、および受信した要求に関連付けられた名前空間を識別することを含む。前記方法は、第1プロセスにより、識別した名前空間に関連付けられたイベントハンドラを、受信した要求の関数として決定することも含む。前記方法はさらに、第1プロセスにより、決定したイベントハンドラに関連付けられたパラメータを、受信した要求の関数としてポピュレートすること、および識別した名前空間、決定したイベントハンドラ、およびポピュレートしたパラメータを有するフォーマット済み要求を生成することをさらに含む。前記方法は、第1プロセスから、生成したフォーマット済み要求を第2プロセスに送信することも含む。前記方法は、第2プロセスにより、第1プロセスからフォーマット済み要求を受信すること、および受信したフォーマット済み要求の関数として、メモリ領域に格納した複数のイベントハンドラから1つのイベントハンドラを選択することも含む。コンピュータ実施方法は、第2プロセスにより、選択したイベントハンドラを実行して結果データを生成すること、および生成した結果データを第2プロセスから第1プロセスに送信することも含む。
本発明のさらに別の態様によると、1つまたは複数のコンピュータ読取可能な記録媒体は、要求されるデータをネットワーク環境で生成および通信するためのコンピュータ実行可能コンポーネントを有する。前記コンポーネントはサーバ配置クライアントコンポーネントを含み、そのサーバ配置クライアントコンポーネントはデータ要求をユーザから受信し、受信した要求に関連付けられた名前空間を識別し、識別した名前空間に関連付けられたイベントハンドラを、受信した要求の関数として決定し、決定したイベントハンドラに関連付けられたパラメータを、受信した要求の関数としてポピュレートし、識別した名前空間、決定したイベントハンドラ、およびポピュレートしたパラメータを有するフォーマット済み要求を生成し、生成したフォーマット済み要求をサーバコンポーネントに送信する。前記コンポーネントはサーバコンポーネントも含み、そのサーバコンポーネントは、サーバ配置クライアントコンポーネントからの送信された要求を受信し、メモリ領域に格納した複数のイベントハンドラから、受信した要求の関数としてイベントハンドラを選択し、選択したイベントハンドラを実行して結果データを生成し、生成した結果データをサーバ配置クライアントコンポーネントに送信する。
または、本発明は様々な他の方法および装置を備えることができる。
他の特徴は、以降本明細書中で部分的に明らかにし部分的に指摘する。
実施形態において、本発明は、図1に示すように、データに対するクライアントアプリケーションからの要求に応答して、サーバ配置クライアントアプリケーション、コンポーネント、プロセス等にデータを配信するサーバアプリケーション、コンポーネント、プロセス等を含む。サーバコンポーネント102上で、データ要求103等のデータ要求に応答するコードまたはルーチンがイベントハンドラ(例えば、複数のイベントハンドラ104)等に分割される。1実施形態において、イベントハンドラ104は論理的に名前空間に組織される。特に本発明は、名前空間と実行すべきイベントハンドラとに関する情報、およびそのハンドラに対するパラメータを含むデータ要求103等の要求を構築することを含む。本発明はさらにサーバ102内にインフラストラクチャを含み、それにより開発者はデータ要求に対する応答を配信する要求ハンドラを実装することができる。
本発明は、一例として分散個人情報管理アプリケーションにおけるカレンダビューを含む。カレンダビューは所与の日付に対する予約の一覧を示す。サーバ102は、データベースに問い合わせて所定の時間範囲における予約を抽出することにより、カレンダ内のこのビューをリフレッシュする。次に、抽出した予約は、開始時間と各予約の期間によって、クライアント(例えば、クライアントコンポーネント108)内の正しい位置に描かれる。以前のシステムでは、上記のリフレッシュ操作は以下のように達成された。すなわち、クライアントコンポーネント108が、ウェブを使った分散オーサリングとバージョン管理(WebDAV)拡張をハイパーテキスト転送プロトコル(HTTP)に対して使用して、拡張可能マークアップ言語(XML)フォーマットで返すべきデータを問い合わせ、拡張スキーマ定義(XSD)変換を使用してHTMLをXMLデータから生成し、前記HTMLをユーザに表示する。上記のシステムは複雑であり、保守が困難である。
しかしながら本発明を用いると、カレンダのリフレッシュは、クライアントコンポーネント108がフォーマット済みデータ要求(例えば、データ要求103)を送信し、カレンダデータを定義するコードストリーム(例えば、JavaScript)を受信することで達成される。カレンダデータは部分的にサーバ102でレンダリングされる。クライアントコンポーネント108は前記コードを実行し、スクリプトを使用してHTMLマークアップを生成する。大部分のカレンダデータおよび表示情報がサーバ102で事前に計算されるため、クライアントコンポーネント108の負荷が低減される。本発明の別の例では、サーバ102は、サーバ102でレンダリングされたHTMLを返すことでPIMアプリケーションのメールビューをリフレッシュする。本発明は、特定フォーマットでデータを返すことに限定されない。むしろ、本発明は、HTML、XML、テキスト、JavaScriptペイロード等の、クライアントコンポーネント108が要求する任意の形態でデータを返す。
図1を再度参照すると、ブロック図の例は、クライアントコンポーネント#1からクライアントコンポーネント#Nまで等の1つまたは複数のクライアントコンポーネント108、プロセス等とネットワーク(例えば、インターネット)経由で通信するサーバコンポーネント102等のサーバコンポーネント、プロセス等を示す。図1のシステムは、メモリ領域106等の1つまたは複数のコンピュータ読取可能な記録媒体を含む。メモリ領域106は、それぞれが自身と関連付けられた名前空間を有する複数のイベントハンドラ104を格納する。複数のイベントハンドラ104の各々は、自身と関連付けられた1つまたは複数のパラメータをさらに有する。フォーマット済みデータ要求103を表すデータ構造も、コンピュータ読取可能な記録媒体に格納される。図1において、データ要求はクライアントコンポーネント108からサーバコンポーネント102に送信されることを示している。データ要求103を表すデータ構造は、名前空間を表す名前空間値を格納する名前空間領域を含む。データ構造はさらにイベントハンドラ値を格納するイベントハンドラ領域を含み、イベントハンドラ値はメモリ領域106に格納した複数のイベントハンドラ104の1つに対応し、メモリ領域106は名前空間領域内の名前空間値が表す名前空間と関連付けられる。データ構造はさらに少なくとも1個のパラメータ値を格納するパラメータ領域を含み、前記パラメータ値はイベントハンドラ領域内のイベントハンドラ値が表すイベントハンドラと関連付けられるパラメータに対応する。
図1の例では、クライアントコンポーネント108は第1プロセスであり、サーバコンポーネント102は第2プロセスである。第1プロセスは分散クライアントアプリケーションであるか、そうでなければ第2プロセスにより配置されてサーバコンポーネント102の機能の一部または全てを提供する。例えば、第1プロセスはサーバ配置個人情報管理クライアント等のサーバ配置クライアントアプリケーションが可能であり、サーバコンポーネント102は個人情報管理サーバが可能である。しかしながら、本発明は第1プロセスと第2プロセスとの間のクライアントサーバ関係に限定されない。例えば、第1プロセスと第2プロセスとの間の関係はピアツーピアでも可能である。
1実施形態では、第1プロセスは第2プロセスからデータを要求するためのコンピュータ実行可能命令を実行するよう構成される。特に、第1プロセスはデータ要求をユーザまたはプロセスから受信する。例えば、前記要求は最近受信した電子メールをチェックするための要求、カレンダ表示を更新するための要求、また任意の他のデータ要求を含むことができる。第1プロセスは、受信した要求に関連付けられた名前空間値を識別し、受信した要求と識別した名前空間値との関数としてイベントハンドラ値を選択する。選択したイベントハンドラはユーザからの特定要求に対して特有であり、識別した名前空間値に関連付けられた複数のイベントハンドラ104の1つである。選択したイベントハンドラは1つまたは複数のパラメータを有する。第1プロセスは、選択したイベントハンドラの1つまたは複数のパラメータに対するパラメータ値を決定する。パラメータ値は受信した要求からのデータを使用して決定される。パラメータ値は任意のタイプのデータを含むことができ、第2プロセスが認識する任意のフォーマット(例えば、拡張可能マークアップ言語)で具体化することができる。第1プロセスは、識別した名前空間値を名前空間領域に格納すること、選択したイベントハンドラ値をイベントハンドラ領域に格納すること、および決定したパラメータ値をパラメータ領域に格納することで、データ要求103を表すデータ構造をポピュレートすることができる。第1プロセスは、ポピュレートしたデータ構造(例えば、データ要求103)を第2プロセスに送信する。
1実施形態において、ポピュレートしたデータ構造は一連の名前と値の対を含む。例えば、名前空間領域と名前空間値は名前と値の対であり、イベントハンドラ領域とイベントハンドラ値は名前と値の対であり、パラメータ領域とパラメータ値は名前と値の対である。
第2プロセスは、第1プロセスに対して要求されるデータを生成および配信するためのコンピュータ実行可能命令を実行するよう構成される。1実施形態において、第2プロセスは第1プロセスからポピュレートしたデータ構造(例えば、データ要求103)を受信し、メモリ領域106に格納した複数のイベントハンドラ104からイベントハンドラを選択する。選択したイベントハンドラは、受信したデータ要求103で指定したイベントハンドラに対応する。第2プロセスは、第1プロセスから受信したデータ要求103のパラメータを用いて、選択したイベントハンドラを実行し、結果データを生成する。第2プロセスは、生成した結果データを第1プロセスに送信する。
1実施形態において、第2プロセスは、構成データベースを問い合わせることで適切なイベントハンドラを選択する。その構成データベースは、利用可能な名前空間、イベントハンドラ(例えば、複数のイベントハンドラ104)、およびパラメータに関する情報を取り込む。例えば、第2プロセスは、第1プロセスからのデータ要求103を受信する前に構成データベースを構築するためのレジストリコンポーネントを含む。例えば、複数のイベントハンドラ104を、名前空間により構成データベース内で組織化することができる。
本発明は、複数のイベントハンドラ104を格納する手段、第1プロセスを実行する手段、および第2プロセスを実行する手段を含む。(例えば、図に示すような)データ構造、ユーザインタフェース、アプリケーションプログラム、アプリケーションプログラミングインタフェース(API)、コンピュータ実行可能命令、ファームウェア等のハードウェアおよびソフトウェアは、複数のイベントハンドラ104を格納する手段、第1プロセスを実行する手段、および第2プロセスを実行するための手段を構成する。
1実施形態において、本発明はPOST動詞またはGET動詞を有するHTTP要求を使用して実装される。要求は以下の情報を含む。すなわち、(例えば、URLのクエリ文字列パラメータ‘ns’で示される)名前空間、(例えば、URLのクエリ文字列パラメータ‘ev’で示される)イベント名、および1つまたは複数の要求パラメータである。パラメータはPOST要求に対するXML、またはGET要求に対する名前と値の対のいずれかである。
本発明のGET要求(例えば、データ要求103)の例を以下に示す。
URL:/mail/ev.owa?ns=CalendarView&ev=Refresh&d=11142004T00:00:00Z
この例において、クライアント(例えば、クライアントコンポーネント108)はサーバ(例えば、サーバコンポーネント102)に依頼して“CalendarView”名前空間における“Refresh”ハンドラを実行する。クライアントコンポーネント108は、2004年11月14日午前12時の値を有する“d”という名前の日付型のパラメータを渡す。サーバコンポーネント102は実行状態に応じ、このビューに対してマークアップまたはJavaScriptペイロードを返す。
本発明のPOST要求(例えば、データ要求103)の例を以下に示す。
URL:/mailserver/ev.owa?ns=Messaging&ev=SaveMessage
BODY:
<params>
<subject>Test email</subject>
<to><item>userA@pageA.net</item><item>userB@pageA.net</item></to>
<body>Test something</body>
</params>
この例では、クライアントコンポーネント108はサーバコンポーネント102に依頼して‘Messaging’名前空間内の‘SaveMessage’イベントハンドラを実行する。イベントパラメータはsubject(文字列)、to(文字列の配列)およびbody(文字列)である。このイベントに対する応答は、成功またはエラーを示すHTTPの結果である。この場合、返されるマークアップは全く不要である。パラメータはXMLフォーマット形式またはサーバが理解可能な任意の他の言語フォーマットでよい。
次に図2を参照すると、フローチャート例は、要求されたデータを通信するためのクライアントおよびサーバプロセスの動作を示す。図2のフローチャートは、あるプロセスから別のプロセスへデータを生成および配信するためのコンピュータ実施方法を反映している。前記方法は、図1のクライアントコンポーネント108等の第1プロセスにより、202においてユーザからのデータ要求を受信すること、および204において受信した要求に関連付けられた名前空間を識別することを含む。前記方法はさらに、識別した名前空間に関連付けられたイベントハンドラを、206において受信した要求の関数として決定すること、および、決定がなされたイベントハンドラに関連付けられたパラメータを、208において受信した要求の関数としてポピュレートすることを含む。また、前記方法は、210において、識別した名前空間を有するフォーマット済み要求(例えば、図1のデータ要求103)、決定されたイベントハンドラ、およびポピュレートしたパラメータを、生成することも含む。前記方法は、212において、前記第1プロセスから第2プロセス(例えば、サーバコンポーネント102)へと生成したフォーマット済み要求を送信する。
本発明の前記方法は、214において、第2プロセスにより、フォーマット済み要求を第1プロセスから受信することを含む。前記方法は、215において、受信した要求に基づき名前空間を選択する。また、前記方法は、216において、受信フォーマット済み要求の関数としての第2プロセスにより、1つまたは複数のコンピュータ読取可能な記録媒体(例えば、図1のメモリ領域106)に格納された複数のイベントハンドラ(例えば、図1の複数のイベントハンドラ104)から1つのイベントハンドラを選択することも含む。前記方法は、217において、受信した要求内のパラメータを解析および検証する。前記方法はさらに、218において、選択されたイベントハンドラを実行して結果データを生成すること、および、220において、第1のプロセスに対して生成した結果データを第2プロセスから第1プロセスへ送信することを含む。第1プロセスは、結果データを受信し、ある例においてはデータをユーザに表示する。
開発者または他のユーザは、ユーザ定義の名前空間、イベントハンドラ、および/またはパラメータを生成することができる。本発明の前記方法はさらに、ユーザから第1プロセスにより、ユーザ定義名前空間、前記ユーザ定義名前空間に関連付けられたユーザ定義イベントハンドラ、および/または前記ユーザ定義イベントハンドラのユーザ定義パラメータを受信することを含む。第1のプロセスは、受信したユーザ定義名前空間、ユーザ定義イベントハンドラ、および/または第2プロセスを有するユーザ定義パラメータを登録する。第2プロセスは、第2プロセスのインフラストラクチャを変更せずに、受信したユーザ定義名前空間、ユーザ定義イベントハンドラ、およびユーザ定義パラメータを登録する。すなわち、第2プロセス(例えば、サーバコンポーネント)を実行するコードは、登録によっては変化しない。第2プロセスのインフラストラクチャは、登録されたユーザ定義名前空間、登録されたイベントハンドラ、または登録されたパラメータに対して、第2プロセスが他の名前空間、イベントハンドラ、およびパラメータ値にアクセスするのと同様にアクセスする。
1実施形態では、1つまたは複数のコンピュータ読取可能な記録媒体は、図2に示すようにコンピュータ実施方法を実施するためのコンピュータ実行可能命令を有する。
次に図3を参照すると、ブロック図の例はサーバコンポーネント内モジュールを示す。モジュールは、サーバコンポーネントが生成した要求スレッド302内で呼び出される。1実施形態では、イベントハンドラはIHttpHandlerインタフェースを実装するHTTPハンドラである。本発明は、ハンドラクラスが要求を処理するコードを実行可能にするProcessRequestメソッドをこのインタフェース内で呼び出す。HTTPハンドラファクトリはIHttpHandlerFactoryインタフェースを実装するクラスである。上記のオブジェクトはHTTPハンドラオブジェクトのインスタンスを生成するために使用され、このインスタンスは要求を処理するために使用される。図3の例では、EventHandlerFactory304と名付けたHTTPハンドラファクトリクラスを示す。本発明(例えば、HTTPアプリケーション306)は、このクラスのオブジェクト(例えば、EventHandlerBaseインスタンス308)をインスタンス化してIHttpHandlerFactoryインタフェースの“GetHandler”メソッドを呼び出し、要求の名前空間に基づいて適切なHTTPハンドラクラス(例えば、EventHandlerBaseサブクラス)のインスタンスを生成する。HTTPアプリケーション306およびEventHandlerBaseインスタンス308は、HTTPコンテクスト314にアクセスする。
EventContext312オブジェクトは、要求に関する情報(例えば、要求の名前空間、イベント名およびパラメータ)を含むデータ構造である。EventHandlerRegistry310は、名前空間とアプリケーションが実行するそれらのイベントハンドラとに関する情報に加え、サポートされるカスタムデータ構造と列挙体とに関する情報のリポジトリとしての役割を果たすクラスである。アプリケーションは、アプリケーション開始時にこのリポジトリ310を使用してEventHandlerBaseクラスを登録する。本発明は(例えば、リフレクションを使用して)クラスを走査し、名前空間、名前空間内のイベント、および前記イベントのパラメータを決定する。この情報は記憶され、後に要求処理およびパラメータ解析中に使用される。
本発明による要求の実行フローの例を図3に示す。本発明は、本発明に従ってデータ要求を受信し、EventHandlerFactoryクラスのインスタンスを生成し、生成したインスタンス上でGetHandlerを呼び出す。EventHandlerFactoryのGetHandler実装はクエリ文字列を参照して名前空間とイベント名を把握し、クエリ文字列内の名前空間とイベント名とに対応するハンドラクラスに対して、EventHandlerRegistry310を検索する。本発明は、要求されたイベントハンドラを発見した場合には、そのイベントハンドラのインスタンスを生成する。また、EventContext312も生成する。本発明はイベントハンドラ上でProcessRequestを呼び出す。ProcessRequestは、(例えば、要求がGet動詞かまたはPOST動詞かに関わらず)要求自身に特有な解析クラスを使用して要求のパラメータを解析する。解析クラスは要求内のパラメータを解析し、EventHandlerRegistry310を使用して任意のタイプの変換を行ってスキーマが正確であることを保証する(例えば、このハンドラが要求する全てのパラメータが設定されていることを保証する)。パラメータはこの時点でコンテクスト内のコレクションに格納できる。本発明は、イベントハンドラに関連付けられたイベントハンドラコードを実行する(例えば、ハンドラクラス内のメソッドを実行する)。このコードはそのコンテクスト内のパラメータにアクセスし、処理を実行し、応答を要求エンティティに対して、要求エンティティが指定する任意のフォーマットで書き込む。
次に図4を参照すると、ブロック図の例は、EventHandlerBase402から継承するイベントハンドラクラスのサンプル集合を示す。EventHandlerBase402はIHttpHandlerインタフェース404を実装する。CalendarEventHandler406、MessagingEventHandler408、およびMessageViewEventHandler410はEventHandlerBase402から継承する。開発者または他のユーザは、名前空間を生成し、前記名前空間内のイベントを識別し、前記イベントに対するパラメータを定義することにより、図4に示すようなカスタムイベントハンドラを生成することができる。ユーザ定義名前空間、イベントハンドラ、および/またはパラメータはユーザ選択のもの(例えば、既存名前空間内の新規イベントハンドラ)か、またはユーザ生成のもの(例えば、新規名前空間)であることができる。1実施形態では、ユーザ定義イベントハンドラはダイナミックリンクライブラリとして実装される。
開発者または他のユーザは、以下に示すような属性を使用することで名前空間のスキーマを定義することができる。
[EventNamespace(“Namespace1”)]
internal class TestEventHandler:EventHandlerBase

[Event(“Event1”)]
[EventParameter(“Param1”、typeof(string)]
[EventParameter(“Param2”、typeof(int)]
public void Event1()

string param1=
(string)Context.GetParamValue(“Param1”);
int param2=(int)Context.GetParamValue(“Param2”);
Writer.Write(“{0}+{1}={2}”,param1、param2,param1+param2).

この例において、EventNamespace属性はワイヤー上の名前空間の名前を定義し、Event属性はワイヤー上のイベントの名前を定義し、EventParameter属性はパラメータの名前、タイプおよびパラメータがオプショナルかどうかを定義する。ハンドラを使用するため、ハンドラの開発者はEventHandlerBase402から継承するクラスを書き、パラメータとreturn voidをもたないメソッドとしてイベントを書き、上記の適切な属性を使用してスキーマを定義し、サーバコンポーネントを有するクラスを登録する。
本発明のデータ構造により、開発者はパラメータとして使用できる複合型を定義することができる。データ構造の例を以下に示す。
[EventStruct(“r”)]
internal class RecipientWellItem

[EventField(“dn”)]
public string DisplayName;
[EventField(“em”,true,“oof@pageA.net”)]
//true=optional field
public string Email;
[EventField(“t”)]
public int Type;
internal RecipientWellItem()

DisplayName=“”;
Email=“”;
Type=0;

上記のデータ構造の例は以下に示すように符号化される。
<r dn=“display name” em=“email address” t=“l”/>
本発明のサーバコンポーネントが特定のデータ構造に従う要求を受信するとき、本発明は前記特定データ構造のクラスのインスタンスを生成し、要求からのデータでそれをポピュレートする。
動作環境の例
図5はコンピュータ130の形態の汎用目的コンピューティングデバイスの1例を示す。本発明の1実施形態において、コンピュータ130等のコンピュータは、例示した他の図面、および本明細書で説明した他の図面における使用に適切である。コンピュータ130は1つまたは複数のプロセッサまたは演算装置132およびシステムメモリ134を有する。図示した実施形態において、システムバス136は、システムメモリ134を含む様々なシステムコンポーネントを演算装置132に結合する。バス136は、数種のバス構造の任意の1つまたは複数を表し、そのバス構造は、メモリバスまたはメモリコントローラ、周辺バス、加速グラフィックポート、および演算装置または様々な任意のバスアーキテクチャを使用するローカルバスを含む。例をあげるがこれに限定されず、上記のアーキテクチャは業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子標準協会(VESA)ローカルバス、およびメザニンバスとしても知られる周辺コンポーネント相互接続(PCI)バスを含む。
コンピュータ130は典型的には少なくとも何らかの形態のコンピュータ読取可能な記録媒体を有する。コンピュータ読取可能な記録媒体は、揮発性および不揮発性媒体の両方、取外し可能および取外し不可能媒体の両方を含み、コンピュータ130がアクセス可能な任意の利用可能媒体であってもよい。例をあげるがこれに限定されず、コンピュータ読取可能な記録媒体はコンピュータ記憶媒体および通信媒体を備える。コンピュータ記憶媒体は揮発性および不揮発性、取外し可能および取外し不可能媒体を含み、それらはコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータ等の情報を格納するための任意の方法または技術で実装される。例えば、コンピュータ記憶媒体はRAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、または所望の情報を格納するために使用できてコンピュータ130がアクセス可能な任意の他の媒体を含む。典型的には、通信媒体はコンピュータ可読命令、データ構造、プログラムモジュール、あるいは搬送波または他のトランスポート機構等の変調データ信号内の他のデータを具現化し、任意の情報配信媒体を含む。当業者は変調データ信号に精通しており、変調データ信号は1つまたは複数のその特性集合を有し、信号内の情報を符号化するように変化する。有線ネットワークまたは直接配線通信等の有線媒体、および音響、RF、赤外線、および他の無線媒体等の無線媒体は通信媒体の例である。上記の任意の組合せもコンピュータ読取可能な記録媒体の範囲内に含まれる。
システムメモリ134は、取外し可能および/または取外し不可能、揮発性および/または不揮発性メモリの形態でコンピュータ記憶媒体を含む。図示した実施形態において、システムメモリ134は読取専用メモリ(ROM)138およびランダムアクセスメモリ(RAM)140を含む。起動中などにコンピュータ130内の要素間での情報転送を支援する基本ルーチンを含む基本入出力システム142(BIOS)は、典型的にはROM138に格納される。典型的には、RAM140は、演算装置132が直接アクセス可能および/または演算装置132上で現在動作中のデータおよび/またはプログラムモジュールを含む。例として、図5にオペレーティングシステム144、アプリケーションプログラム146、他のプログラムモジュール148、およびプログラムデータ150を示すが、これに限定されることはない。
コンピュータ130は、また他の取外し可能/取外し不可能、揮発性/不揮発性コンピュータ記憶媒体も含むことができる。例えば、図5は、取外し不可能、不揮発性の磁気媒体を読み書きするハードディスクドライブ154を示す。また、図5は、取外し可能な不揮発性の磁気ディスク158を読み書きする磁気ディスクドライブ156とCD−ROMまたは他の光媒体等の取外し可能、不揮発性の光ディスク162に読み書きする光ディスクドライブ160を示す。動作環境の例で使用できる他の取外し可能/取外し不可能、揮発性/不揮発性のコンピュータ記憶媒体は、これらに限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体RAM、半導体ROM等を含む。ハードディスクドライブ154、磁気ディスクドライブ156および光ディスクドライブ160は、典型的には、インタフェース166等の不揮発性のメモリインタフェースによりシステムバス136に接続される。
ドライブまたは他の大容量記憶デバイスおよび、上述した図5に示す関連コンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、およびコンピュータ130に関する他のデータを記憶する。図5において、例えば、ハードディスクドライブ154は、オペレーティングシステム170、アプリケーションプログラム172、他のプログラムモジュール174、およびプログラムデータ176を格納するものとして示されている。これらのコンポーネントは、オペレーティングシステム144、アプリケーションプログラム146、他のプログラムモジュール148、およびプログラムデータ150と同一であるかまたはそれらとは異なってもよいことに注意されたい。オペレーティングシステム170、アプリケーションプログラム172、他のプログラムモジュール174、およびプログラムデータ176は、ここでは異なる数字が与えられ、少なくともそれらが異なるコピーであることを示している。
ユーザは、キーボード180およびポインティングデバイス182(例えば、マウス、トラックボール、ペン、またはタッチパッド)等の入力デバイスまたはユーザインタフェース選択デバイスを通してコンピュータ130に命令と情報を入力することができる。他の入力デバイス(不図示)は、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ等を含むことができる。これらおよび他の入力デバイスは、システムバス136に接続されたユーザ入力インタフェース184を通して演算装置132に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)等の他のインタフェースおよびバス構造により接続されてもよい。モニタ188または他のタイプのディスプレイデバイスも、ビデオインタフェース190等のインタフェース経由でシステムバス136に接続される。モニタ188に加えて、コンピュータはしばしばプリンタおよびスピーカ等の他の周辺出力装置(不図示)を含み、それらを出力周辺インタフェース(不図示)を通して接続することができる。
コンピュータ130は、リモートコンピュータ194等の1つまたは複数のリモートコンピュータに対する論理接続を使用してネットワーク環境で動作することができる。リモートコンピュータ194はパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の共通ネットワークノードであることができ、典型的には、コンピュータ130に関する上記の要素の多くまたは全てを含む。図5に示す論理接続は、ローカルエリアネットワーク(LAN)196および広域ネットワーク(WAN)198を含むが、他のネットワークを含んでもよい。LAN136および/またはWAN138は、有線ネットワーク、無線ネットワーク、それらの組合せ等であることができる。上記のネットワーク環境は、職場、企業規模のコンピュータネットワーク、イントラネット、およびグローバルコンピュータネットワーク(例えば、インターネット)で一般的である。
ローカルエリアネットワーク環境で使用するときには、コンピュータ130はネットワークインタフェースまたはアダプタ186を通してLAN196に接続される。広域ネットワーク環境で使用するとき、典型的には、コンピュータ130は、モデム178、またはインターネット等のWAN198上で通信を確立する他の手段を含む。モデム178は、内部または外部でもよく、ユーザ入力インタフェース184または他の適切な機能経由でシステムバス136に接続される。ネットワーク環境では、コンピュータ130に関して示したプログラムモジュール、またはその一部をリモートメモリ記憶デバイス(不図示)に格納することができる。例えば、図5はリモートアプリケーションプログラム192がメモリデバイス上にあるものとして示すが、これに限定されることはない。示したネットワーク接続は例であって、コンピュータ間で通信リンクを確立する他の手段を使用してもよい。
一般的に、コンピュータ130のデータプロセッサは、コンピュータの様々なコンピュータ読取可能な記録媒体に異なる時点で格納された命令手段によりプログラムされる。プログラムおよびオペレーティングシステムは、典型的には、例えばフロッピーディスクまたはCD−ROM上に配信される。そこから、プログラムおよびオペレーティングシステムはコンピュータのセカンダリメモリにインストールまたはロードされる。実行時に、プログラムおよびオペレーティングシステムは、少なくとも部分的にはコンピュータのプライマリ電子メモリにロードされる。本明細書で説明する本発明は、これらおよび他の様々なタイプのコンピュータ読取可能な記録媒体を含み、上記媒体は、マイクロプロセッサまたは他のデータプロセッサと関連して以下で説明するステップを実施する命令またはプログラムを含む。本発明は、本明細書で説明する方法および技術に従ってプログラムされるときには、コンピュータそれ自身も含む。
説明目的で、オペレーティングシステム等のプログラムおよび他の実行可能プログラムコンポーネントを本明細書で離散ブロックとして示す。しかしながら、上記のプログラムおよびコンポーネントはその時々でコンピュータの様々な記憶コンポーネントに存在し、コンピュータのデータプロセッサにより実行されることは理解される。
コンピュータ130を含むコンピューティングシステム環境の例に関連させて説明するが、本発明は多数の他の汎用目的または特殊目的のコンピューティングシステム環境または構成で動作できる。コンピューティングシステム環境は、本発明の使用範囲または機能範囲に関する限定を示唆する意図はない。さらに、コンピューティングシステム環境は、動作環境の例で示したコンポーネントの任意の1つまたは組合せに関する依存性または要件を有すると解釈されるべきではない。本発明での使用に適した周知のコンピューティングシステム、環境、および/または構成の例は、これらに限らないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家電機器、移動電話、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、任意の上記システムまたはデバイスを含む分散コンピューティング環境等を含む。
プログラムモジュール等の1つまたは複数のコンピュータまたは他のデバイスが実行するコンピュータ実行可能命令の一般的なコンテクストで、本発明を説明することができる。一般的に、プログラムモジュールはこれらに限らないが、ルーチン、プログラム、オブジェクト、コンポーネント、および特定のタスクを実施するかまたは特定の抽象データ型を実装するデータ構造を含む。本発明は、通信ネットワークを通してリンクされるリモート処理デバイスがタスクを実行する分散コンピューティング環境で実施してもよい。分散コンピューティング環境においては、プログラムモジュールは、メモリ記憶デバイスを含むローカルとリモートとの両方のコンピュータ記憶媒体に位置することができる。
ソフトウェアアーキテクチャのコンテクスト内のインタフェースは、ソフトウェアモジュール、コンポーネント、コード部、または他のコンピュータ実行可能命令のシーケンスを含む。前記インタフェースは、例えば、第1のモジュールの代わりにコンピューティングタスクを実施するために、第1のモジュールが第2のモジュールにアクセスすることを含む。第1および第2のモジュールは、1例において、オペレーティングシステムにより提供されるようなアプリケーションプログラミングインタフェース(API)、(例えば、ピアツーピアアプリケーション通信に対する)コンポーネントオブジェクトモデル(COM)インタフェース、および(例えば、ウェブサービス間で通信するための)拡張可能マークアップ言語メタデータ交換フォーマット(XMI)インタフェースを含む。
インタフェースは、Java2プラットフォームエンタープライズエディション(J2EE)、COM、または分散COM(DCOM)の例にあるような密結合の同期実装で可能である。その代替か追加で、インタフェースは、(例えば、シンプルオブジェクトアクセスプロトコルを用いた)ウェブサービスにあるような疎結合の非同期実装が可能である。一般に、インタフェースは以下の特徴の任意の組合せを含む。すなわち、密結合、疎結合、同期、および非同期である。さらに、インタフェースは、標準プロトコル、専用プロトコル、または標準および専用プロトコルの任意の組合せに適合可能である。
本明細書で説明したインタフェースは全て、単一インタフェースの一部か、別個のインタフェースまたはそれらの任意の組合せで実行することができる。インタフェースをローカルまたはリモートに実行して機能を提供することができる。さらに、インタフェースは、本明細書で図示または説明したものに比べて、付加した機能性または低減した機能性を含めることができる。
動作中、コンピュータ130は、図2に示すようなコンピュータ実行可能命令を実行して、ネットワークアプリケーションプログラム間で要求されたデータを生成および通信する。
付録Aは、本発明による例示的な名前空間、イベントハンドラ、およびパラメータを列挙する。付録Aにおいて、DatePickerEventHandlerハンドラ型は日付ピッカーに関するイベントを含む。日付ピッカーはユーザインタフェースコンポーネントで、これによりユーザはアプリケーションのいくつかのコンテクストで日付を選択することができる。RenderMonthイベントは、月に対応するHTMLフラグメントをレンダリングする。ユーザが2005年1月に移動するようクリックするとき、本発明のクライアントコンポーネントはRenderMonthイベントをサーバに送信し、サーバは入力パラメータ(例えば、2005年1月の日付である月を意味する‘m’)を取得して、その月に対するHTMLフラグメントをレンダリングする。レンダリングされたHTMLフラグメントはクライアントに送り返される。
MessageListViewEventHandlerハンドラ型は、例えば受信箱の中のメッセージを示すメッセージリストビューに関するイベントを含む。削除イベントは、削除する2、3個のメッセージをユーザが選択するときに実行される。フォルダ識別子は属性‘fld’で表される。削除するためのメッセージ識別子の配列は、属性‘id’で表される。
RecipientWellEventHandlerは、受信者のためのイベントハンドラに適している。このハンドラ型におけるイベントの例は‘resolve(解決)’である。‘resolve’は電子メールメッセージ内のto(宛先)、cc、およびbcc領域を文字配列であるパラメータとして取る。Resolveイベントはこれらの文字列を解析して解決する。例えば、ユーザが“BobS”とタイプすると、‘to’パラメータに対応する配列内の単一項目“BobS”のデータ要求がサーバに送信される。応答はHTML内にBob Smithの電子メールアドレス付きの“Bob Smith”を有するHTML部分フラグメントであり、それに他のデータが添付されてもよい。
次にカレンダビューイベントハンドラ内のGetViewPayloadメソッドの詳細な説明を行う。このメソッドに対するパラメータは、属性‘nvs’、‘fld’、‘days’、‘vt’および‘dir’を含む。このイベントハンドラは、カレンダビューがリフレッシュされる必要があるとき、クライアントから呼び出される。カレンダビューは、30分刻みでディスプレイの左にタイムストリップを表示し、それぞれの日付は列内に表示する。
カレンダビューをリフレッシュする必要があるとき、GetViewPayloadイベントが起動される。このイベントはデータをバックエンドからロードし(例えば、メールボックス内のユーザのカレンダ内で問い合わせ)、そのデータを記述するコード(例えば、JavaScript)をレンダリングする。レンダリングしたコードはペイロードと呼ばれる。ペイロードはクライアントに送信され、クライアントはペイロードデータを用いてビューを再描画する。ペイロードの例は、それぞれの予約の開始/終了時間、題目、位置、空き/ビジー状態等を含む。また、それぞれの長方形の座標はサーバで計算され、このペイロードの一部として送信されて、クライアントサイドスクリプトを簡略化する。
GetViewPayloadメソッドに関するパラメータは属性‘nvs’、‘fld’、‘days’、‘vt’および‘dir’を含む。‘nvs’属性は‘ビュー状態なし’属性であり、真の場合、ビュー状態を維持する必要が全くないことを示す。ビュー状態はビューを定義するパラメータ集合(例えば、閲覧をした日数およびビューのタイプ)である。ビュータイプは週次または日次が可能である。‘nvs’パラメータが偽のとき、ビュー状態はユーザが次にログオンするときのために保存される。‘fld’属性は、参照するカレンダフォルダの識別子に対応する“フォルダ識別子”属性である。‘day’属性は参照日付の配列を含む。‘vt’属性は日次または週次の“ビュータイプ”に対応する。‘dir’属性は随意に指定されるナビゲーション矢印の“方向”である。この属性を設定することは、ユーザがナビゲーション矢印をクリックし、サーバが‘day’属性に基づいて閲覧すべき次の日付集合を計算しなければならないことを意味する。例えば、‘day’属性が3月の2日、3日、および4日であり、‘dir’属性が+1に設定される場合には、サーバはそれらの各々に7日を足す(例えば、複数日ビューは7日進む)。‘day’属性が3月2日のみ(例えば、単一日付ビュー)の場合、右矢印をクリックすると3月3日に移動し、従ってサーバは1日を加えるのみである。
GetViewPayloadメソッドに対する要求の例を以下に示す。
POST/mailclient/ev.owa?oeh=1&ns=CalendarView&ev=GetViewPayload
HTTP/1.1
BODY:
<param><fld>LgAAAABjczgvWhhRQKW7OM2Ok4GDAQD4If+Jk6V9Saz9+rfNa9e8AAAAABe
dAAAB</fld><days><item>2004−12−15T00:00:00</item><item>2004−12−16T00:00:00</item><item>2004−12−17T00:00:00</item></days><vt>1</vt><nvs>1</nvs></params>
上記要求に対する応答の例の一部を以下に示す。
a_cERow=1;a_sFTtl=“Calendar:December2004”;a_iNRP=1;a_rgCal=new
Array(nc(“RgAAAABjctheWhhRQKW7OM2Ok4GDBwD4If+Jk6V9Saz9+rfNa9e8AAAAABedAAD4If+Jk6V9Saz9+rfNa9e8AAAAADTfAAAI”,“12−15−2004 17:30:00U”,“12−15−200418:00:00U”,“Strategy Meeting”,“Conf Room 1”,2,1,“Bob Smith”,0,1,0,0,“”),nc(“CAjGsFAnk8AARgAAAABjczgthehRQKW7OM2Ok4GDBwD4If+Jk6V9Saz9+rfNa9e8AAAAABedAAD4If+Jk6V9Saz9+rfNa9e8AAAAACNqAAAJ”,“12−15−2004 21:00:00U”,“12−15−2004 21:30:00U”,“Out of Office”,“”,2,0,“”,1,3,1,0,“”),nc(“RgAAAABjczgvWhhRQKW7OM2Ok4GDBwD4If+Jk6V9Saz9+rfNa9e8AAAAABedAAD4If+Jk6V9Saz9+rfNa9e8AAAAADThAAAI”,“12−16−2004 00:00:00U”,“12−16−2004 01:00:00U”,“Portfolio Development Meeting”,“Conf Room 2”,2,1,“Joe A.”,1,1,0,0,“”));a_rgDay=new Array();var
t;t=newCalDay(“15”,“Wednesday”,15,12,2004);av(t,0,19,1,1,0);av(t,0,24,0.5,4,1);
av(t,0.5,26,0.5,1,2);av(t,0,32,1,2,3);av(t,0,34,1,2,4);a_rgDay[0]=t;t=newCalDay(“16”,“Thursday”,16,12,2004);av(t,0,20,1,1,5);av(t,0,21,1,2,6);av(t,0,23,1,2,7);av(t,0,25,1,1,8);av(t,0,28,0.5,6,10);av(t,0.5,28,0.5,4,9);av(t,0.5,33,0.5,3,11);a_rgDay[1]=t;t=newCalDay(“17”,“Friday”,17,12,2004);av(t,0,20,0.5,4,13);av(t,0.5,20,0.5,2,12);av(t,0.5,23,0.5,3,14);av(t,0,25,0.5,1,15);av(t,0,28,0.5,2,17);av(t,0.5,29,0.5,3,18);avf(t,26,22,3);a_rgDay[2]=t;a_rgEvt=newArray(ne(2,0,1,16,2,0))
本明細書で図示および説明した方法の実行順序または性能は、明記しない限り本質的ではない。すなわち、前記方法の要素は明記しない限り任意の順序で実施することができ、前記方法は本明細書で開示したものよりも多い、あるいは少ない要素を含むことができる。例えば、別の要素の前に、別の要素と同時にまたは別の要素の後に、特定要素を実行または実施することは、本発明の範囲内であると意図している。
本発明または本発明の実施形態の要素を導入するとき、冠詞“a”、“an”、“the”、および“said”は1つまたは複数の要素があることを意味するよう意図される。用語“comprising”、“including”、および“having”は包括的であることを意図し、列挙した要素以外にさらなる要素がありうることを意味するよう意図している。
上記の観点から、本発明のいくつかの目的が達成され他の有利な結果が得られることが分かるであろう。
上記の構築、製品、および方法に対して本発明の範囲から逸脱することなく様々な変更を加えることができるが、上記の説明に含まれる全ての事柄および添付図面に示した全ての事柄は限定の意味はなく、例として解釈されるべきであることを意図している。
付録A
サーバ配置電子メールアプリケーションプログラムに対する電子メール名前空間(例えば、Mail.Client)におけるイベントおよびパラメータの例を、以下の表に示す。
Figure 2008538428
Figure 2008538428
Figure 2008538428
Figure 2008538428
Figure 2008538428
Figure 2008538428
Figure 2008538428
Figure 2008538428
Figure 2008538428
Figure 2008538428
Figure 2008538428
Figure 2008538428
1つまたは複数のクライアントコンポーネントとネットワーク経由で通信するサーバコンポーネントを例示するブロック図である。 要求されたデータを通信するためのクライアントおよびサーバプロセスの動作を例示する流れ図である。 サーバコンポーネント内のモジュールを説明、例示するブロック図である。 イベントハンドラクラスの集合を説明、例示するブロック図である。 本発明を実装可能な適切なコンピューティングシステム環境の1例を説明するブロック図である。

Claims (20)

  1. それぞれが自身に関連付けられた名前空間を有する複数のイベントハンドラであって、前記複数のイベントハンドラの各々は自身に関連付けられた1つまたは複数のパラメータをさらに有することを特徴とする複数のイベントハンドラと;および
    フォーマット済みデータ要求を表すデータ構造であって、前記データ構造は前記名前空間を表す名前空間値を格納する名前空間領域と、前記複数のイベントハンドラの1つに対応するイベントハンドラ値を格納するイベントハンドラ領域であって、前記複数のイベントハンドラの1つは前記名前空間領域内の前記名前空間値が表す名前空間に関連付けられることを特徴とするイベントハンドラ領域と、前記パラメータの1つに対応するパラメータ値を格納するパラメータ領域であって、前記パラメータの1つは前記イベントハンドラ領域内の前記イベントハンドラ値が表す前記イベントハンドラに関連付けられることを特徴とするパラメータ領域とを含むことを特徴とするデータ構造
    を格納する1つまたは複数のコンピュータ読取可能な記録媒体と;
    第2のプロセスにより配置される第1のプロセスであって、前記第1プロセスは
    ユーザまたはプロセスからのデータ要求を受信すること;
    前記受信した要求に関連付けられた名前空間値を識別すること;
    イベントハンドラ値を前記受信した要求と前記識別した名前空間値との関数として選択すること;
    パラメータ値を前記受信した要求と前記選択したイベントハンドラ値との関数として決定すること;
    前記名前空間領域内の前記識別した名前空間値、前記イベントハンドラ領域内の前記選択したイベントハンドラ値、および前記パラメータ領域内の前記決定したパラメータ値を格納することで、前記データ構造をポピュレートする(populate)こと;および
    前記ポピュレートしたデータ構造を前記第2プロセスに送信すること
    のためのコンピュータ実行可能命令を実行するよう構成されることを特徴とする第1のプロセスと;および
    前記ポピュレートしたデータ構造を前記第1プロセスから受信すること;
    前記受信したデータ構造の関数として、前記コンピュータ読取可能な記録媒体に格納した前記複数のイベントハンドラからイベントハンドラを選択すること;
    前記選択したイベントハンドラを実行して結果データを生成すること;および
    前記生成した結果データを前記第1プロセスに送信すること
    のためのコンピュータ実行可能命令を実行するよう構成される第2のプロセスを含むことを特徴とする通信システム。
  2. 前記フォーマット済みデータ要求は、名前空間領域と前記名前空間値とを名前と値の対として備え、前記イベントハンドラ領域と前記イベントハンドラ値とを名前と値の対として備え、前記パラメータ領域と前記パラメータ値とを名前と値の対として含むことを特徴とする請求項1に記載のシステム。
  3. 前記コンピュータ読取可能な記録媒体と前記第1プロセスとは、サーバ配置個人情報管理クライアントと関連付けられることを特徴とする請求項1に記載のシステム。
  4. 前記コンピュータ読取可能な記録媒体と前記第2プロセスとは、個人情報管理サーバと関連付けられることを特徴とする請求項1に記載のシステム。
  5. 前記パラメータ値は、拡張可能マークアップ言語に従ってフォーマットしたデータを含むことを特徴とする請求項1に記載のシステム。
  6. 分散クライアントアプリケーションは前記第1プロセスを実行し、サーバアプリケーションは前記第2プロセスを実行し、前記分散クライアントアプリケーションは少なくとも前記サーバアプリケーションの機能の一部を提供することを特徴とする請求項1に記載のシステム。
  7. 前記第2プロセスはさらに、前記コンピュータ読取可能な記録媒体に格納した前記複数のイベントハンドラを有する構成データベースを構築するためのコンピュータ実行可能命令を実行するよう構成されることを特徴とする請求項1に記載のシステム。
  8. 前記複数のイベントハンドラを格納する手段をさらに含む請求項1に記載のシステム。
  9. 前記第1プロセスを実行する手段と前記第2プロセスを実行する手段とをさらに含む請求項1に記載のシステム。
  10. 前記第2プロセスはさらに、
    前記パラメータ値を検証すること;および
    前記パラメータ値を自身に関連付けられたデータ型に変換すること
    のためのコンピュータ実行可能命令を実行するよう構成されることを特徴とする請求項1に記載のシステム。
  11. あるプロセスから別のプロセスへデータを生成および配信するためのコンピュータ実施方法であって、前記コンピュータ実施方法は、
    第1プロセスによりユーザからのデータ要求を受信すること;
    第1プロセスにより前記受信した要求に関連付けられた名前空間を識別すること;
    前記第1プロセスにより、前記受信した要求の関数として前記識別した名前空間に関連付けられたイベントハンドラを決定すること;
    前記第1プロセスにより、前記受信した要求の関数として前記決定したイベントハンドラに関連付けられたパラメータをポピュレートすること;
    前記第1プロセスにより、前記識別した名前空間、前記決定したイベントハンドラ、および前記ポピュレートしたパラメータを有するフォーマット済み要求を生成すること;
    前記第1プロセスから、前記生成したフォーマット済み要求を第2のプロセスに送信すること;
    前記第2プロセスにより、前記第1プロセスから前記フォーマット済み要求を受信すること;
    前記第2プロセスにより、前記受信したフォーマット済み要求の関数として、メモリ領域内に格納した複数のイベントハンドラから1つのイベントハンドラを選択すること;
    前記第2プロセスにより、前記選択したイベントハンドラを実行して結果データを生成すること;および
    前記第2プロセスから、前記生成した結果データを前記第1プロセスに送信すること
    を含むことを特徴とするコンピュータ実施方法。
  12. 前記第1プロセスにより前記送信した結果データを受信することをさらに含む請求項11に記載のコンピュータ実施方法。
  13. 前記第1プロセスにより、ユーザ定義名前空間、前記ユーザ定義名前空間に関連付けられたユーザ定義イベントハンドラ、および前記ユーザ定義イベントハンドラのユーザ定義パラメータをユーザから受信すること;および
    前記第2プロセスとともに前記第1プロセスにより、前記受信したユーザ定義名前空間、前記ユーザ定義イベントハンドラ、および前記ユーザ定義パラメータを登録すること
    をさらに含む請求項11に記載のコンピュータ実施方法。
  14. 前記第2プロセスは、前記受信したユーザ定義名前空間、前記ユーザ定義イベントハンドラ、および前記ユーザ定義パラメータを、前記第2プロセスのインフラストラクチャを変更せずに登録することを特徴とする請求項13に記載のコンピュータ実施方法。
  15. 1つまたは複数のコンピュータ読取可能な記録媒体は、請求項11に記載のコンピュータ実施方法を実施するためのコンピュータ実行可能命令を有することを特徴とする請求項11に記載のコンピュータ実施方法。
  16. ネットワーク環境で要求されたデータを生成および通信するためのコンピュータ実行可能コンポーネントを有する1つまたは複数のコンピュータ読取可能な記録媒体であって、前記コンポーネントは、
    ユーザからデータ要求を受信すること;
    前記受信した要求に関連付けられた名前空間を識別すること;
    前記受信した要求の関数として前記識別した名前空間に関連付けられたイベントハンドラを決定すること;
    前記受信した要求の関数として前記決定したイベントハンドラに関連付けられたパラメータをポピュレートすること;
    前記識別した名前空間、前記決定したイベントハンドラ、および前記ポピュレートしたパラメータを有するフォーマット済み要求を生成すること;および
    前記生成したフォーマット済み要求をサーバコンポーネントに送信すること;
    のためのサーバ配置クライアントコンポーネントを備え;および
    前記送信した要求を前記サーバ配置クライアントコンポーネントから受信すること;
    前記受信した要求の関数として、メモリ領域内に格納した複数のイベントハンドラから1つのイベントハンドラを選択すること;
    前記選択したイベントハンドラを実行して結果データを生成すること;および
    前記生成した結果データを前記サーバ配置クライアントコンポーネントに送信すること;
    のためのサーバコンポーネント
    を備えることを特徴とする1つまたは複数のコンピュータ読取可能な記録媒体。
  17. 前記メモリ領域内に格納した前記複数のイベントハンドラを有する構成データベースを構築するためのレジストリコンポーネントをさらに備える請求項16に記載のコンピュータ読取可能な記録媒体。
  18. 前記サーバコンポーネントは、前記受信した要求の関数として、前記構成データベースからイベントハンドラを選択することを特徴とする請求項17に記載のコンピュータ読取可能な記録媒体。
  19. 前記サーバ配置クライアントコンポーネントは、ネットワーク上で前記サーバコンポーネントと通信する個人情報管理クライアントを備えることを特徴とする請求項16に記載のコンピュータ読取可能な記録媒体。
  20. 前記サーバコンポーネントは個人情報管理サーバを備えることを特徴とする請求項16に記載のコンピュータ読取可能な記録媒体。
JP2008505310A 2005-04-08 2006-03-09 ネットワークアプリケーションプログラム間で要求されたデータを生成および通信するためのシステムおよび方法 Pending JP2008538428A (ja)

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
PCT/US2006/008275 WO2006110237A2 (en) 2005-04-08 2006-03-09 System and method for producing and communicating requested data among networked application programs

Publications (2)

Publication Number Publication Date
JP2008538428A true JP2008538428A (ja) 2008-10-23
JP2008538428A5 JP2008538428A5 (ja) 2009-04-23

Family

ID=37084265

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008505310A Pending JP2008538428A (ja) 2005-04-08 2006-03-09 ネットワークアプリケーションプログラム間で要求されたデータを生成および通信するためのシステムおよび方法

Country Status (11)

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

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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05289871A (ja) * 1992-04-15 1993-11-05 Hitachi Ltd アプリケーション結合方法
JPH1196009A (ja) * 1997-09-22 1999-04-09 Toshiba Corp オブジェクトインターフェース変換方法及び記録媒体
WO2000055725A1 (fr) * 1999-03-17 2000-09-21 Fujitsu Limited Systeme serveur et support d'enregistrement
JP2001249895A (ja) * 2000-02-08 2001-09-14 Internatl Business Mach Corp <Ibm> デュアルmvc方式によりネットワーク・ベースのアプリケーションでサーバの対話の回数を少なくする方法及び装置
US20050097579A1 (en) * 2003-11-04 2005-05-05 Karlheinz Dorn Method and system for dynamically generating user 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

Family Cites Families (12)

* 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
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
US6985905B2 (en) 2000-03-03 2006-01-10 Radiant Logic Inc. System and method for providing access to databases via directories and other hierarchical structures and 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
WO2002093430A1 (en) 2001-05-14 2002-11-21 Infomove, Inc. 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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05289871A (ja) * 1992-04-15 1993-11-05 Hitachi Ltd アプリケーション結合方法
JPH1196009A (ja) * 1997-09-22 1999-04-09 Toshiba Corp オブジェクトインターフェース変換方法及び記録媒体
WO2000055725A1 (fr) * 1999-03-17 2000-09-21 Fujitsu Limited Systeme serveur et support d'enregistrement
JP2001249895A (ja) * 2000-02-08 2001-09-14 Internatl Business Mach Corp <Ibm> デュアルmvc方式によりネットワーク・ベースのアプリケーションでサーバの対話の回数を少なくする方法及び装置
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
US20050097579A1 (en) * 2003-11-04 2005-05-05 Karlheinz Dorn Method and system for dynamically generating user interfaces

Also Published As

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

Similar Documents

Publication Publication Date Title
RU2419864C2 (ru) Система и способ для формирования и передачи запрошенных данных между сетевыми прикладными программами
US9430193B2 (en) Interface for a computer platform
US7793260B2 (en) System for defining and activating pluggable user interface components for a deployed application
JP5583769B2 (ja) ホストとなるコンピュータ環境における仮想オブジェクト間接化
US10032130B2 (en) System and method for providing data manipulation using web services
JP5787963B2 (ja) コンピュータプラットフォームのプログラミングインターフェース
KR101031929B1 (ko) 비통합 툴에 대한 통합 아키텍처
US8595259B2 (en) Web data usage platform
KR100952379B1 (ko) 애플리케이션에서의 이벤트 모니터링을 위한 프로파일기반의 캡처 컴포넌트
US8433753B2 (en) Providing meeting information from a meeting server to an email server to store in an email database
US20050234929A1 (en) Methods and systems for interfacing applications with a search engine
US20070074121A1 (en) Interfaces for a productivity suite application and a hosted user interface
US20070143399A1 (en) Scheduling and searching meetings in a network environment
US9009740B2 (en) Invocation of additional processing using remote procedure calls
US9959300B1 (en) Systems and methods for article location and retrieval
US8335802B2 (en) Distributing repository information
Juneau et al. Java Message Service
Kanalakis et al. Applying Reliable Messaging

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090305

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090305

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121228

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130208