(57)【要約】  ドキュメントフラグメントをウェブサーバからサーバ配置クライアントアプリケーションに配信する。本発明は、名前空間領域、イベントハンドラ領域、およびパラメータ領域を含むデータ要求のデータ構造を含む。第１プロセスはポピュレートしたデータ構造を第２プロセスに送信する。第２プロセスは、第２プロセスによって保守され、かつポピュレートされたデータ構造内で識別される論理を実行して、結果データを生成する。第２プロセスは、ユーザに表示するかまたは第１プロセスによって他の処理をさせるために、結果データを第１プロセスに送信する。
2008538428.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが自身に関連付けられた名前空間を有する複数のイベントハンドラであって、前記複数のイベントハンドラの各々は自身に関連付けられた１つまたは複数のパラメータをさらに有することを特徴とする複数のイベントハンドラと；および
フォーマット済みデータ要求を表すデータ構造であって、前記データ構造は前記名前空間を表す名前空間値を格納する名前空間領域と、前記複数のイベントハンドラの１つに対応するイベントハンドラ値を格納するイベントハンドラ領域であって、前記複数のイベントハンドラの１つは前記名前空間領域内の前記名前空間値が表す名前空間に関連付けられることを特徴とするイベントハンドラ領域と、前記パラメータの１つに対応するパラメータ値を格納するパラメータ領域であって、前記パラメータの１つは前記イベントハンドラ領域内の前記イベントハンドラ値が表す前記イベントハンドラに関連付けられることを特徴とするパラメータ領域とを含むことを特徴とするデータ構造
を格納する１つまたは複数のコンピュータ読取可能な記録媒体と；
第２のプロセスにより配置される第１のプロセスであって、前記第１プロセスは
ユーザまたはプロセスからのデータ要求を受信すること；
前記受信した要求に関連付けられた名前空間値を識別すること；
イベントハンドラ値を前記受信した要求と前記識別した名前空間値との関数として選択すること；
パラメータ値を前記受信した要求と前記選択したイベントハンドラ値との関数として決定すること；
前記名前空間領域内の前記識別した名前空間値、前記イベントハンドラ領域内の前記選択したイベントハンドラ値、および前記パラメータ領域内の前記決定したパラメータ値を格納することで、前記データ構造をポピュレートする（populate）こと；および
前記ポピュレートしたデータ構造を前記第２プロセスに送信すること
のためのコンピュータ実行可能命令を実行するよう構成されることを特徴とする第１のプロセスと；および
前記ポピュレートしたデータ構造を前記第１プロセスから受信すること；
前記受信したデータ構造の関数として、前記コンピュータ読取可能な記録媒体に格納した前記複数のイベントハンドラからイベントハンドラを選択すること；
前記選択したイベントハンドラを実行して結果データを生成すること；および
前記生成した結果データを前記第１プロセスに送信すること
のためのコンピュータ実行可能命令を実行するよう構成される第２のプロセスを含むことを特徴とする通信システム。
【請求項２】
前記フォーマット済みデータ要求は、名前空間領域と前記名前空間値とを名前と値の対として備え、前記イベントハンドラ領域と前記イベントハンドラ値とを名前と値の対として備え、前記パラメータ領域と前記パラメータ値とを名前と値の対として含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記コンピュータ読取可能な記録媒体と前記第１プロセスとは、サーバ配置個人情報管理クライアントと関連付けられることを特徴とする請求項１に記載のシステム。
【請求項４】
前記コンピュータ読取可能な記録媒体と前記第２プロセスとは、個人情報管理サーバと関連付けられることを特徴とする請求項１に記載のシステム。
【請求項５】
前記パラメータ値は、拡張可能マークアップ言語に従ってフォーマットしたデータを含むことを特徴とする請求項１に記載のシステム。
【請求項６】
分散クライアントアプリケーションは前記第１プロセスを実行し、サーバアプリケーションは前記第２プロセスを実行し、前記分散クライアントアプリケーションは少なくとも前記サーバアプリケーションの機能の一部を提供することを特徴とする請求項１に記載のシステム。
【請求項７】
前記第２プロセスはさらに、前記コンピュータ読取可能な記録媒体に格納した前記複数のイベントハンドラを有する構成データベースを構築するためのコンピュータ実行可能命令を実行するよう構成されることを特徴とする請求項１に記載のシステム。
【請求項８】
前記複数のイベントハンドラを格納する手段をさらに含む請求項１に記載のシステム。
【請求項９】
前記第１プロセスを実行する手段と前記第２プロセスを実行する手段とをさらに含む請求項１に記載のシステム。
【請求項１０】
前記第２プロセスはさらに、
前記パラメータ値を検証すること；および
前記パラメータ値を自身に関連付けられたデータ型に変換すること
のためのコンピュータ実行可能命令を実行するよう構成されることを特徴とする請求項１に記載のシステム。
【請求項１１】
あるプロセスから別のプロセスへデータを生成および配信するためのコンピュータ実施方法であって、前記コンピュータ実施方法は、
第１プロセスによりユーザからのデータ要求を受信すること；
第１プロセスにより前記受信した要求に関連付けられた名前空間を識別すること；
前記第１プロセスにより、前記受信した要求の関数として前記識別した名前空間に関連付けられたイベントハンドラを決定すること；
前記第１プロセスにより、前記受信した要求の関数として前記決定したイベントハンドラに関連付けられたパラメータをポピュレートすること；
前記第１プロセスにより、前記識別した名前空間、前記決定したイベントハンドラ、および前記ポピュレートしたパラメータを有するフォーマット済み要求を生成すること；
前記第１プロセスから、前記生成したフォーマット済み要求を第２のプロセスに送信すること；
前記第２プロセスにより、前記第１プロセスから前記フォーマット済み要求を受信すること；
前記第２プロセスにより、前記受信したフォーマット済み要求の関数として、メモリ領域内に格納した複数のイベントハンドラから１つのイベントハンドラを選択すること；
前記第２プロセスにより、前記選択したイベントハンドラを実行して結果データを生成すること；および
前記第２プロセスから、前記生成した結果データを前記第１プロセスに送信すること
を含むことを特徴とするコンピュータ実施方法。
【請求項１２】
前記第１プロセスにより前記送信した結果データを受信することをさらに含む請求項１１に記載のコンピュータ実施方法。
【請求項１３】
前記第１プロセスにより、ユーザ定義名前空間、前記ユーザ定義名前空間に関連付けられたユーザ定義イベントハンドラ、および前記ユーザ定義イベントハンドラのユーザ定義パラメータをユーザから受信すること；および
前記第２プロセスとともに前記第１プロセスにより、前記受信したユーザ定義名前空間、前記ユーザ定義イベントハンドラ、および前記ユーザ定義パラメータを登録すること
をさらに含む請求項１１に記載のコンピュータ実施方法。
【請求項１４】
前記第２プロセスは、前記受信したユーザ定義名前空間、前記ユーザ定義イベントハンドラ、および前記ユーザ定義パラメータを、前記第２プロセスのインフラストラクチャを変更せずに登録することを特徴とする請求項１３に記載のコンピュータ実施方法。
【請求項１５】
１つまたは複数のコンピュータ読取可能な記録媒体は、請求項１１に記載のコンピュータ実施方法を実施するためのコンピュータ実行可能命令を有することを特徴とする請求項１１に記載のコンピュータ実施方法。
【請求項１６】
ネットワーク環境で要求されたデータを生成および通信するためのコンピュータ実行可能コンポーネントを有する１つまたは複数のコンピュータ読取可能な記録媒体であって、前記コンポーネントは、
ユーザからデータ要求を受信すること；
前記受信した要求に関連付けられた名前空間を識別すること；
前記受信した要求の関数として前記識別した名前空間に関連付けられたイベントハンドラを決定すること；
前記受信した要求の関数として前記決定したイベントハンドラに関連付けられたパラメータをポピュレートすること；
前記識別した名前空間、前記決定したイベントハンドラ、および前記ポピュレートしたパラメータを有するフォーマット済み要求を生成すること；および
前記生成したフォーマット済み要求をサーバコンポーネントに送信すること；
のためのサーバ配置クライアントコンポーネントを備え；および
前記送信した要求を前記サーバ配置クライアントコンポーネントから受信すること；
前記受信した要求の関数として、メモリ領域内に格納した複数のイベントハンドラから１つのイベントハンドラを選択すること；
前記選択したイベントハンドラを実行して結果データを生成すること；および
前記生成した結果データを前記サーバ配置クライアントコンポーネントに送信すること；
のためのサーバコンポーネント
を備えることを特徴とする１つまたは複数のコンピュータ読取可能な記録媒体。
【請求項１７】
前記メモリ領域内に格納した前記複数のイベントハンドラを有する構成データベースを構築するためのレジストリコンポーネントをさらに備える請求項１６に記載のコンピュータ読取可能な記録媒体。
【請求項１８】
前記サーバコンポーネントは、前記受信した要求の関数として、前記構成データベースからイベントハンドラを選択することを特徴とする請求項１７に記載のコンピュータ読取可能な記録媒体。
【請求項１９】
前記サーバ配置クライアントコンポーネントは、ネットワーク上で前記サーバコンポーネントと通信する個人情報管理クライアントを備えることを特徴とする請求項１６に記載のコンピュータ読取可能な記録媒体。
【請求項２０】
前記サーバコンポーネントは個人情報管理サーバを備えることを特徴とする請求項１６に記載のコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コンピュータ通信の領域に関する。特に本発明の実施形態は、名前空間、名前空間内のイベント、およびイベントに対するパラメータを有するスキーマ形態のデータ要求に関する。
【背景技術】
【０００２】
一部のサーバ配置ウェブベースメールアプリケーションにより、中央に位置するメールボックスにユーザはアクセス可能になる。これらのアプリケーションは、インターネット等のネットワークから電子メール（ｅｍａｉｌ）を送受信する機能、スケジュールを予約する機能、他の個人情報管理（ＰＩＭ）のタスクを実施する機能も提供する。これらのアプリケーションの一部はブラウザ内で実行し、他のＰＩＭアプリケーションに対してコンパニオンである。上記のクライアントウェブアプリケーションは、ＰＩＭ機能を実施可能とするために大量のクライアントサーバ間のトラフィックを必要とする。例えば、ユーザが新しい電子メールをチェックするために受信箱内の電子メール一覧をリフレッシュするとき、受信箱内の新しい電子メールの一覧を抽出するためにウェブ要求がサーバに送信される。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
一部のクライアントアプリケーションに対して、クライアントサーバ間のトラフィックはハイパーテキスト転送プロトコル（ＨＴＴＰ）および（例えば、ＨＴＴＰのＰＯＳＴ要求における単純化した名前と値の対に基づく）他の様々なスキーマに対するウェブを使った分散オーサリングとバージョン管理（ＷｅｂＤＡＶ）拡張の混成である。これらの従来の技術のシステムにおいて複数のプロトコルをデータアクセスに使用することは実装を複雑にし、保守性を低下させる。これらの従来の技術のシステムはさらに、要求に対して、首尾一貫しない不十分なスキーマを使用している。一部の従来の技術のシステムで使用されるような名前−値形式は非常に制限されたものであり、堅固に定形化したデータあるいはより複雑な構造または配列を容易にはサポートしていない。さらに、名前―値形式は名前と値の対に対するセパレータとして改行を必要とするため、特定の名前と値の対に関する全てのデータを、送信前に改行なしで符号化し受信時に復号化することが必要となる。一部の既存システムにおけるこれらの余計なステップは処理を遅延させ、複雑度を増加させる。一部の既存ウェブクライアントアプリケーションのさらに別の問題は、クライアントアプリケーションに様々な機能を提供するサーバサイドコードが無秩序で整理されていないことである。そのため、新たな要求ハンドラを既存システムのサーバサイドコードに追加することは困難である。
【０００４】
従って、これらおよび他の欠点を解決するため、クライアントサーバ通信に対して改善したシステムが望まれる。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、ネットワークアプリケーションプログラム間で要求されたデータを生成および通信するためのプロトコルおよびスキーマを含む。１実施形態において、本発明はさらに、要求されたデータを生成する要求ハンドラの開発者が利用可能なアーキテクチャ、およびアプリケーションプログラミングインタフェース（ＡＰＩ）を含む。開発者は、ＡＰＩを用いてカスタマイズした（ｃｕｓｔｏｍ）要求ハンドラを作成できる。
【０００６】
本発明のクライアントサーバの実施形態では、本発明によるクライアントが、本発明の矛盾なく定義されたスキーマに従って、データ要求をサーバに送信する。その要求は要求ハンドラの名前空間、要求ハンドラ名前空間内のイベントハンドラ、およびイベントハンドラの１つまたは複数のパラメータを識別する。本発明は、サーバ内の要求ハンドラ名前空間にグループ化されるイベントハンドラのインフラストラクチャを含み、また、サーバは、それぞれのクライアントの要求に応じて複数フォーマットでクライアントに応答を配信する。サーバのインフラストラクチャは、要求を解析し、特定名前空間内の特定イベントハンドラを識別し、識別したイベントハンドラに関連付けられるハンドラのコードを要求パラメータの関数として実行する。
【０００７】
本発明は、能力は高いが容量が小さく拡張性がある。データ要求に対して首尾一貫したスキーマを使用することで、アプリケーションプログラム間の相互作用が簡略化され、要求ハンドラの保守性が改善される。本発明のスキーマは複雑なデータ構造をサポートする。本発明は、要求されたデータを生成および配信するインフラストラクチャへの変更なしに、要求ハンドラの追加のサポートをする。
【０００８】
本発明の１態様によると、システムは、それぞれが自身に関連付けられた名前空間を有する複数のイベントハンドラを格納するための１つまたは複数のコンピュータ読取可能な記録媒体を含む。複数のイベントハンドラの各々はさらに、自身に関連付けられた１つまたは複数のパラメータを有する。コンピュータ読取可能な記録媒体は、データに対するフォーマット済み要求を表すデータ構造を格納する。データ構造は、名前空間を表す名前空間値を格納する名前空間領域、複数のイベントハンドラの１つに対応するイベントハンドラ値を格納するイベントハンドラ領域を含む。複数のイベントハンドラの１つは、名前空間領域内の名前空間値が表す名前空間と関連付けられる。また、データ構造は、パラメータの１つに対応するパラメータ値を格納するパラメータ領域も含む。前記パラメータの１つは、イベントハンドラ領域内のイベントハンドラ値が表すイベントハンドラに関連付けられる。システムは、また第２のプロセスが配置する第１のプロセスも含む。第１プロセスはコンピュータ実行可能命令を実行するよう構成される。このコンピュータ実行可能命令は、ユーザまたはプロセスからデータ要求を受信し、受信した要求に関連付けられた名前空間値を識別し、受信した要求および識別した名前空間値の関数としてイベントハンドラ値を選択し、受信した要求および選択したイベントハンドラ値の関数としてパラメータ値を決定する。第１プロセスはさらに、識別した名前空間値を名前空間領域内に格納すること、選択したイベントハンドラ値をイベントハンドラ領域内に格納すること、および決定したパラメータ値をパラメータ領域内に格納することで、データ構造をポピュレートする。第１プロセスはさらに、ポピュレートしたデータ構造を第２プロセスに送信する。第２プロセスはコンピュータ実行可能命令を実行するよう構成され、このコンピュータ実行可能命令は、ポピュレートしたデータ構造を第１プロセスから受信し、受信したデータ構造の関数として、コンピュータ読取可能な記録媒体上に格納した複数のイベントハンドラから１つのイベントハンドラを選択し、選択したイベントハンドラを実行して結果データを生成し、生成した結果データを第１プロセスに送信する。
【０００９】
本発明の別の態様によると、コンピュータ実施方法は、あるプロセスから別のプロセスへデータを生成および配信する。コンピュータ実施方法は、第１プロセスによりユーザからデータ要求を受信すること、および受信した要求に関連付けられた名前空間を識別することを含む。前記方法は、第１プロセスにより、識別した名前空間に関連付けられたイベントハンドラを、受信した要求の関数として決定することも含む。前記方法はさらに、第１プロセスにより、決定したイベントハンドラに関連付けられたパラメータを、受信した要求の関数としてポピュレートすること、および識別した名前空間、決定したイベントハンドラ、およびポピュレートしたパラメータを有するフォーマット済み要求を生成することをさらに含む。前記方法は、第１プロセスから、生成したフォーマット済み要求を第２プロセスに送信することも含む。前記方法は、第２プロセスにより、第１プロセスからフォーマット済み要求を受信すること、および受信したフォーマット済み要求の関数として、メモリ領域に格納した複数のイベントハンドラから１つのイベントハンドラを選択することも含む。コンピュータ実施方法は、第２プロセスにより、選択したイベントハンドラを実行して結果データを生成すること、および生成した結果データを第２プロセスから第１プロセスに送信することも含む。
【００１０】
本発明のさらに別の態様によると、１つまたは複数のコンピュータ読取可能な記録媒体は、要求されるデータをネットワーク環境で生成および通信するためのコンピュータ実行可能コンポーネントを有する。前記コンポーネントはサーバ配置クライアントコンポーネントを含み、そのサーバ配置クライアントコンポーネントはデータ要求をユーザから受信し、受信した要求に関連付けられた名前空間を識別し、識別した名前空間に関連付けられたイベントハンドラを、受信した要求の関数として決定し、決定したイベントハンドラに関連付けられたパラメータを、受信した要求の関数としてポピュレートし、識別した名前空間、決定したイベントハンドラ、およびポピュレートしたパラメータを有するフォーマット済み要求を生成し、生成したフォーマット済み要求をサーバコンポーネントに送信する。前記コンポーネントはサーバコンポーネントも含み、そのサーバコンポーネントは、サーバ配置クライアントコンポーネントからの送信された要求を受信し、メモリ領域に格納した複数のイベントハンドラから、受信した要求の関数としてイベントハンドラを選択し、選択したイベントハンドラを実行して結果データを生成し、生成した結果データをサーバ配置クライアントコンポーネントに送信する。
【００１１】
または、本発明は様々な他の方法および装置を備えることができる。
【００１２】
他の特徴は、以降本明細書中で部分的に明らかにし部分的に指摘する。
【発明を実施するための最良の形態】
【００１３】
実施形態において、本発明は、図１に示すように、データに対するクライアントアプリケーションからの要求に応答して、サーバ配置クライアントアプリケーション、コンポーネント、プロセス等にデータを配信するサーバアプリケーション、コンポーネント、プロセス等を含む。サーバコンポーネント１０２上で、データ要求１０３等のデータ要求に応答するコードまたはルーチンがイベントハンドラ（例えば、複数のイベントハンドラ１０４）等に分割される。１実施形態において、イベントハンドラ１０４は論理的に名前空間に組織される。特に本発明は、名前空間と実行すべきイベントハンドラとに関する情報、およびそのハンドラに対するパラメータを含むデータ要求１０３等の要求を構築することを含む。本発明はさらにサーバ１０２内にインフラストラクチャを含み、それにより開発者はデータ要求に対する応答を配信する要求ハンドラを実装することができる。
【００１４】
本発明は、一例として分散個人情報管理アプリケーションにおけるカレンダビューを含む。カレンダビューは所与の日付に対する予約の一覧を示す。サーバ１０２は、データベースに問い合わせて所定の時間範囲における予約を抽出することにより、カレンダ内のこのビューをリフレッシュする。次に、抽出した予約は、開始時間と各予約の期間によって、クライアント（例えば、クライアントコンポーネント１０８）内の正しい位置に描かれる。以前のシステムでは、上記のリフレッシュ操作は以下のように達成された。すなわち、クライアントコンポーネント１０８が、ウェブを使った分散オーサリングとバージョン管理（ＷｅｂＤＡＶ）拡張をハイパーテキスト転送プロトコル（ＨＴＴＰ）に対して使用して、拡張可能マークアップ言語（ＸＭＬ）フォーマットで返すべきデータを問い合わせ、拡張スキーマ定義（ＸＳＤ）変換を使用してＨＴＭＬをＸＭＬデータから生成し、前記ＨＴＭＬをユーザに表示する。上記のシステムは複雑であり、保守が困難である。
【００１５】
しかしながら本発明を用いると、カレンダのリフレッシュは、クライアントコンポーネント１０８がフォーマット済みデータ要求（例えば、データ要求１０３）を送信し、カレンダデータを定義するコードストリーム（例えば、ＪａｖａＳｃｒｉｐｔ）を受信することで達成される。カレンダデータは部分的にサーバ１０２でレンダリングされる。クライアントコンポーネント１０８は前記コードを実行し、スクリプトを使用してＨＴＭＬマークアップを生成する。大部分のカレンダデータおよび表示情報がサーバ１０２で事前に計算されるため、クライアントコンポーネント１０８の負荷が低減される。本発明の別の例では、サーバ１０２は、サーバ１０２でレンダリングされたＨＴＭＬを返すことでＰＩＭアプリケーションのメールビューをリフレッシュする。本発明は、特定フォーマットでデータを返すことに限定されない。むしろ、本発明は、ＨＴＭＬ、ＸＭＬ、テキスト、ＪａｖａＳｃｒｉｐｔペイロード等の、クライアントコンポーネント１０８が要求する任意の形態でデータを返す。
【００１６】
図１を再度参照すると、ブロック図の例は、クライアントコンポーネント＃１からクライアントコンポーネント＃Ｎまで等の１つまたは複数のクライアントコンポーネント１０８、プロセス等とネットワーク（例えば、インターネット）経由で通信するサーバコンポーネント１０２等のサーバコンポーネント、プロセス等を示す。図１のシステムは、メモリ領域１０６等の１つまたは複数のコンピュータ読取可能な記録媒体を含む。メモリ領域１０６は、それぞれが自身と関連付けられた名前空間を有する複数のイベントハンドラ１０４を格納する。複数のイベントハンドラ１０４の各々は、自身と関連付けられた１つまたは複数のパラメータをさらに有する。フォーマット済みデータ要求１０３を表すデータ構造も、コンピュータ読取可能な記録媒体に格納される。図１において、データ要求はクライアントコンポーネント１０８からサーバコンポーネント１０２に送信されることを示している。データ要求１０３を表すデータ構造は、名前空間を表す名前空間値を格納する名前空間領域を含む。データ構造はさらにイベントハンドラ値を格納するイベントハンドラ領域を含み、イベントハンドラ値はメモリ領域１０６に格納した複数のイベントハンドラ１０４の１つに対応し、メモリ領域１０６は名前空間領域内の名前空間値が表す名前空間と関連付けられる。データ構造はさらに少なくとも１個のパラメータ値を格納するパラメータ領域を含み、前記パラメータ値はイベントハンドラ領域内のイベントハンドラ値が表すイベントハンドラと関連付けられるパラメータに対応する。
【００１７】
図１の例では、クライアントコンポーネント１０８は第１プロセスであり、サーバコンポーネント１０２は第２プロセスである。第１プロセスは分散クライアントアプリケーションであるか、そうでなければ第２プロセスにより配置されてサーバコンポーネント１０２の機能の一部または全てを提供する。例えば、第１プロセスはサーバ配置個人情報管理クライアント等のサーバ配置クライアントアプリケーションが可能であり、サーバコンポーネント１０２は個人情報管理サーバが可能である。しかしながら、本発明は第１プロセスと第２プロセスとの間のクライアントサーバ関係に限定されない。例えば、第１プロセスと第２プロセスとの間の関係はピアツーピアでも可能である。
【００１８】
１実施形態では、第１プロセスは第２プロセスからデータを要求するためのコンピュータ実行可能命令を実行するよう構成される。特に、第１プロセスはデータ要求をユーザまたはプロセスから受信する。例えば、前記要求は最近受信した電子メールをチェックするための要求、カレンダ表示を更新するための要求、また任意の他のデータ要求を含むことができる。第１プロセスは、受信した要求に関連付けられた名前空間値を識別し、受信した要求と識別した名前空間値との関数としてイベントハンドラ値を選択する。選択したイベントハンドラはユーザからの特定要求に対して特有であり、識別した名前空間値に関連付けられた複数のイベントハンドラ１０４の１つである。選択したイベントハンドラは１つまたは複数のパラメータを有する。第１プロセスは、選択したイベントハンドラの１つまたは複数のパラメータに対するパラメータ値を決定する。パラメータ値は受信した要求からのデータを使用して決定される。パラメータ値は任意のタイプのデータを含むことができ、第２プロセスが認識する任意のフォーマット（例えば、拡張可能マークアップ言語）で具体化することができる。第１プロセスは、識別した名前空間値を名前空間領域に格納すること、選択したイベントハンドラ値をイベントハンドラ領域に格納すること、および決定したパラメータ値をパラメータ領域に格納することで、データ要求１０３を表すデータ構造をポピュレートすることができる。第１プロセスは、ポピュレートしたデータ構造（例えば、データ要求１０３）を第２プロセスに送信する。
【００１９】
１実施形態において、ポピュレートしたデータ構造は一連の名前と値の対を含む。例えば、名前空間領域と名前空間値は名前と値の対であり、イベントハンドラ領域とイベントハンドラ値は名前と値の対であり、パラメータ領域とパラメータ値は名前と値の対である。
【００２０】
第２プロセスは、第１プロセスに対して要求されるデータを生成および配信するためのコンピュータ実行可能命令を実行するよう構成される。１実施形態において、第２プロセスは第１プロセスからポピュレートしたデータ構造（例えば、データ要求１０３）を受信し、メモリ領域１０６に格納した複数のイベントハンドラ１０４からイベントハンドラを選択する。選択したイベントハンドラは、受信したデータ要求１０３で指定したイベントハンドラに対応する。第２プロセスは、第１プロセスから受信したデータ要求１０３のパラメータを用いて、選択したイベントハンドラを実行し、結果データを生成する。第２プロセスは、生成した結果データを第１プロセスに送信する。
【００２１】
１実施形態において、第２プロセスは、構成データベースを問い合わせることで適切なイベントハンドラを選択する。その構成データベースは、利用可能な名前空間、イベントハンドラ（例えば、複数のイベントハンドラ１０４）、およびパラメータに関する情報を取り込む。例えば、第２プロセスは、第１プロセスからのデータ要求１０３を受信する前に構成データベースを構築するためのレジストリコンポーネントを含む。例えば、複数のイベントハンドラ１０４を、名前空間により構成データベース内で組織化することができる。
【００２２】
本発明は、複数のイベントハンドラ１０４を格納する手段、第１プロセスを実行する手段、および第２プロセスを実行する手段を含む。（例えば、図に示すような）データ構造、ユーザインタフェース、アプリケーションプログラム、アプリケーションプログラミングインタフェース（ＡＰＩ）、コンピュータ実行可能命令、ファームウェア等のハードウェアおよびソフトウェアは、複数のイベントハンドラ１０４を格納する手段、第１プロセスを実行する手段、および第２プロセスを実行するための手段を構成する。
【００２３】
１実施形態において、本発明はＰＯＳＴ動詞またはＧＥＴ動詞を有するＨＴＴＰ要求を使用して実装される。要求は以下の情報を含む。すなわち、（例えば、ＵＲＬのクエリ文字列パラメータ‘ｎｓ’で示される）名前空間、（例えば、ＵＲＬのクエリ文字列パラメータ‘ｅｖ’で示される）イベント名、および１つまたは複数の要求パラメータである。パラメータはＰＯＳＴ要求に対するＸＭＬ、またはＧＥＴ要求に対する名前と値の対のいずれかである。
【００２４】
本発明のＧＥＴ要求（例えば、データ要求１０３）の例を以下に示す。  
ＵＲＬ：／ｍａｉｌ／ｅｖ．ｏｗａ？ｎｓ＝ＣａｌｅｎｄａｒＶｉｅｗ＆ｅｖ＝Ｒｅｆｒｅｓｈ＆ｄ＝１１１４２００４Ｔ００：００：００Ｚ
【００２５】
この例において、クライアント（例えば、クライアントコンポーネント１０８）はサーバ（例えば、サーバコンポーネント１０２）に依頼して“ＣａｌｅｎｄａｒＶｉｅｗ”名前空間における“Ｒｅｆｒｅｓｈ”ハンドラを実行する。クライアントコンポーネント１０８は、２００４年１１月１４日午前１２時の値を有する“ｄ”という名前の日付型のパラメータを渡す。サーバコンポーネント１０２は実行状態に応じ、このビューに対してマークアップまたはＪａｖａＳｃｒｉｐｔペイロードを返す。
【００２６】
本発明のＰＯＳＴ要求（例えば、データ要求１０３）の例を以下に示す。  
ＵＲＬ：／ｍａｉｌｓｅｒｖｅｒ／ｅｖ．ｏｗａ？ｎｓ＝Ｍｅｓｓａｇｉｎｇ＆ｅｖ＝ＳａｖｅＭｅｓｓａｇｅ
ＢＯＤＹ：
＜ｐａｒａｍｓ＞
＜ｓｕｂｊｅｃｔ＞Ｔｅｓｔ  ｅｍａｉｌ＜／ｓｕｂｊｅｃｔ＞
＜ｔｏ＞＜ｉｔｅｍ＞ｕｓｅｒＡ＠ｐａｇｅＡ．ｎｅｔ＜／ｉｔｅｍ＞＜ｉｔｅｍ＞ｕｓｅｒＢ＠ｐａｇｅＡ．ｎｅｔ＜／ｉｔｅｍ＞＜／ｔｏ＞
＜ｂｏｄｙ＞Ｔｅｓｔ  ｓｏｍｅｔｈｉｎｇ＜／ｂｏｄｙ＞
＜／ｐａｒａｍｓ＞
【００２７】
この例では、クライアントコンポーネント１０８はサーバコンポーネント１０２に依頼して‘Ｍｅｓｓａｇｉｎｇ’名前空間内の‘ＳａｖｅＭｅｓｓａｇｅ’イベントハンドラを実行する。イベントパラメータはｓｕｂｊｅｃｔ（文字列）、ｔｏ（文字列の配列）およびｂｏｄｙ（文字列）である。このイベントに対する応答は、成功またはエラーを示すＨＴＴＰの結果である。この場合、返されるマークアップは全く不要である。パラメータはＸＭＬフォーマット形式またはサーバが理解可能な任意の他の言語フォーマットでよい。
【００２８】
次に図２を参照すると、フローチャート例は、要求されたデータを通信するためのクライアントおよびサーバプロセスの動作を示す。図２のフローチャートは、あるプロセスから別のプロセスへデータを生成および配信するためのコンピュータ実施方法を反映している。前記方法は、図１のクライアントコンポーネント１０８等の第１プロセスにより、２０２においてユーザからのデータ要求を受信すること、および２０４において受信した要求に関連付けられた名前空間を識別することを含む。前記方法はさらに、識別した名前空間に関連付けられたイベントハンドラを、２０６において受信した要求の関数として決定すること、および、決定がなされたイベントハンドラに関連付けられたパラメータを、２０８において受信した要求の関数としてポピュレートすることを含む。また、前記方法は、２１０において、識別した名前空間を有するフォーマット済み要求（例えば、図１のデータ要求１０３）、決定されたイベントハンドラ、およびポピュレートしたパラメータを、生成することも含む。前記方法は、２１２において、前記第１プロセスから第２プロセス（例えば、サーバコンポーネント１０２）へと生成したフォーマット済み要求を送信する。
【００２９】
本発明の前記方法は、２１４において、第２プロセスにより、フォーマット済み要求を第１プロセスから受信することを含む。前記方法は、２１５において、受信した要求に基づき名前空間を選択する。また、前記方法は、２１６において、受信フォーマット済み要求の関数としての第２プロセスにより、１つまたは複数のコンピュータ読取可能な記録媒体（例えば、図１のメモリ領域１０６）に格納された複数のイベントハンドラ（例えば、図１の複数のイベントハンドラ１０４）から１つのイベントハンドラを選択することも含む。前記方法は、２１７において、受信した要求内のパラメータを解析および検証する。前記方法はさらに、２１８において、選択されたイベントハンドラを実行して結果データを生成すること、および、２２０において、第１のプロセスに対して生成した結果データを第２プロセスから第１プロセスへ送信することを含む。第１プロセスは、結果データを受信し、ある例においてはデータをユーザに表示する。
【００３０】
開発者または他のユーザは、ユーザ定義の名前空間、イベントハンドラ、および／またはパラメータを生成することができる。本発明の前記方法はさらに、ユーザから第１プロセスにより、ユーザ定義名前空間、前記ユーザ定義名前空間に関連付けられたユーザ定義イベントハンドラ、および／または前記ユーザ定義イベントハンドラのユーザ定義パラメータを受信することを含む。第１のプロセスは、受信したユーザ定義名前空間、ユーザ定義イベントハンドラ、および／または第２プロセスを有するユーザ定義パラメータを登録する。第２プロセスは、第２プロセスのインフラストラクチャを変更せずに、受信したユーザ定義名前空間、ユーザ定義イベントハンドラ、およびユーザ定義パラメータを登録する。すなわち、第２プロセス（例えば、サーバコンポーネント）を実行するコードは、登録によっては変化しない。第２プロセスのインフラストラクチャは、登録されたユーザ定義名前空間、登録されたイベントハンドラ、または登録されたパラメータに対して、第２プロセスが他の名前空間、イベントハンドラ、およびパラメータ値にアクセスするのと同様にアクセスする。
【００３１】
１実施形態では、１つまたは複数のコンピュータ読取可能な記録媒体は、図２に示すようにコンピュータ実施方法を実施するためのコンピュータ実行可能命令を有する。
【００３２】
次に図３を参照すると、ブロック図の例はサーバコンポーネント内モジュールを示す。モジュールは、サーバコンポーネントが生成した要求スレッド３０２内で呼び出される。１実施形態では、イベントハンドラはＩＨｔｔｐＨａｎｄｌｅｒインタフェースを実装するＨＴＴＰハンドラである。本発明は、ハンドラクラスが要求を処理するコードを実行可能にするＰｒｏｃｅｓｓＲｅｑｕｅｓｔメソッドをこのインタフェース内で呼び出す。ＨＴＴＰハンドラファクトリはＩＨｔｔｐＨａｎｄｌｅｒＦａｃｔｏｒｙインタフェースを実装するクラスである。上記のオブジェクトはＨＴＴＰハンドラオブジェクトのインスタンスを生成するために使用され、このインスタンスは要求を処理するために使用される。図３の例では、ＥｖｅｎｔＨａｎｄｌｅｒＦａｃｔｏｒｙ３０４と名付けたＨＴＴＰハンドラファクトリクラスを示す。本発明（例えば、ＨＴＴＰアプリケーション３０６）は、このクラスのオブジェクト（例えば、ＥｖｅｎｔＨａｎｄｌｅｒＢａｓｅインスタンス３０８）をインスタンス化してＩＨｔｔｐＨａｎｄｌｅｒＦａｃｔｏｒｙインタフェースの“ＧｅｔＨａｎｄｌｅｒ”メソッドを呼び出し、要求の名前空間に基づいて適切なＨＴＴＰハンドラクラス（例えば、ＥｖｅｎｔＨａｎｄｌｅｒＢａｓｅサブクラス）のインスタンスを生成する。ＨＴＴＰアプリケーション３０６およびＥｖｅｎｔＨａｎｄｌｅｒＢａｓｅインスタンス３０８は、ＨＴＴＰコンテクスト３１４にアクセスする。
【００３３】
ＥｖｅｎｔＣｏｎｔｅｘｔ３１２オブジェクトは、要求に関する情報（例えば、要求の名前空間、イベント名およびパラメータ）を含むデータ構造である。ＥｖｅｎｔＨａｎｄｌｅｒＲｅｇｉｓｔｒｙ３１０は、名前空間とアプリケーションが実行するそれらのイベントハンドラとに関する情報に加え、サポートされるカスタムデータ構造と列挙体とに関する情報のリポジトリとしての役割を果たすクラスである。アプリケーションは、アプリケーション開始時にこのリポジトリ３１０を使用してＥｖｅｎｔＨａｎｄｌｅｒＢａｓｅクラスを登録する。本発明は（例えば、リフレクションを使用して）クラスを走査し、名前空間、名前空間内のイベント、および前記イベントのパラメータを決定する。この情報は記憶され、後に要求処理およびパラメータ解析中に使用される。
【００３４】
本発明による要求の実行フローの例を図３に示す。本発明は、本発明に従ってデータ要求を受信し、ＥｖｅｎｔＨａｎｄｌｅｒＦａｃｔｏｒｙクラスのインスタンスを生成し、生成したインスタンス上でＧｅｔＨａｎｄｌｅｒを呼び出す。ＥｖｅｎｔＨａｎｄｌｅｒＦａｃｔｏｒｙのＧｅｔＨａｎｄｌｅｒ実装はクエリ文字列を参照して名前空間とイベント名を把握し、クエリ文字列内の名前空間とイベント名とに対応するハンドラクラスに対して、ＥｖｅｎｔＨａｎｄｌｅｒＲｅｇｉｓｔｒｙ３１０を検索する。本発明は、要求されたイベントハンドラを発見した場合には、そのイベントハンドラのインスタンスを生成する。また、ＥｖｅｎｔＣｏｎｔｅｘｔ３１２も生成する。本発明はイベントハンドラ上でＰｒｏｃｅｓｓＲｅｑｕｅｓｔを呼び出す。ＰｒｏｃｅｓｓＲｅｑｕｅｓｔは、（例えば、要求がＧｅｔ動詞かまたはＰＯＳＴ動詞かに関わらず）要求自身に特有な解析クラスを使用して要求のパラメータを解析する。解析クラスは要求内のパラメータを解析し、ＥｖｅｎｔＨａｎｄｌｅｒＲｅｇｉｓｔｒｙ３１０を使用して任意のタイプの変換を行ってスキーマが正確であることを保証する（例えば、このハンドラが要求する全てのパラメータが設定されていることを保証する）。パラメータはこの時点でコンテクスト内のコレクションに格納できる。本発明は、イベントハンドラに関連付けられたイベントハンドラコードを実行する（例えば、ハンドラクラス内のメソッドを実行する）。このコードはそのコンテクスト内のパラメータにアクセスし、処理を実行し、応答を要求エンティティに対して、要求エンティティが指定する任意のフォーマットで書き込む。
【００３５】
次に図４を参照すると、ブロック図の例は、ＥｖｅｎｔＨａｎｄｌｅｒＢａｓｅ４０２から継承するイベントハンドラクラスのサンプル集合を示す。ＥｖｅｎｔＨａｎｄｌｅｒＢａｓｅ４０２はＩＨｔｔｐＨａｎｄｌｅｒインタフェース４０４を実装する。ＣａｌｅｎｄａｒＥｖｅｎｔＨａｎｄｌｅｒ４０６、ＭｅｓｓａｇｉｎｇＥｖｅｎｔＨａｎｄｌｅｒ４０８、およびＭｅｓｓａｇｅＶｉｅｗＥｖｅｎｔＨａｎｄｌｅｒ４１０はＥｖｅｎｔＨａｎｄｌｅｒＢａｓｅ４０２から継承する。開発者または他のユーザは、名前空間を生成し、前記名前空間内のイベントを識別し、前記イベントに対するパラメータを定義することにより、図４に示すようなカスタムイベントハンドラを生成することができる。ユーザ定義名前空間、イベントハンドラ、および／またはパラメータはユーザ選択のもの（例えば、既存名前空間内の新規イベントハンドラ）か、またはユーザ生成のもの（例えば、新規名前空間）であることができる。１実施形態では、ユーザ定義イベントハンドラはダイナミックリンクライブラリとして実装される。
【００３６】
開発者または他のユーザは、以下に示すような属性を使用することで名前空間のスキーマを定義することができる。  
［ＥｖｅｎｔＮａｍｅｓｐａｃｅ（“Ｎａｍｅｓｐａｃｅ１”）］
ｉｎｔｅｒｎａｌ  ｃｌａｓｓ  ＴｅｓｔＥｖｅｎｔＨａｎｄｌｅｒ：ＥｖｅｎｔＨａｎｄｌｅｒＢａｓｅ
｛
［Ｅｖｅｎｔ（“Ｅｖｅｎｔ１”）］
［ＥｖｅｎｔＰａｒａｍｅｔｅｒ（“Ｐａｒａｍ１”、ｔｙｐｅｏｆ（ｓｔｒｉｎｇ）］
［ＥｖｅｎｔＰａｒａｍｅｔｅｒ（“Ｐａｒａｍ２”、ｔｙｐｅｏｆ（ｉｎｔ）］
ｐｕｂｌｉｃ  ｖｏｉｄ  Ｅｖｅｎｔ１（）
｛
ｓｔｒｉｎｇ  ｐａｒａｍ１＝
（ｓｔｒｉｎｇ）Ｃｏｎｔｅｘｔ．ＧｅｔＰａｒａｍＶａｌｕｅ（“Ｐａｒａｍ１”）；
ｉｎｔ  ｐａｒａｍ２＝（ｉｎｔ）Ｃｏｎｔｅｘｔ．ＧｅｔＰａｒａｍＶａｌｕｅ（“Ｐａｒａｍ２”）；
Ｗｒｉｔｅｒ．Ｗｒｉｔｅ（“｛０｝＋｛１｝＝｛２｝”，ｐａｒａｍ１、ｐａｒａｍ２，ｐａｒａｍ１＋ｐａｒａｍ２）．
｝
｝
【００３７】
この例において、ＥｖｅｎｔＮａｍｅｓｐａｃｅ属性はワイヤー上の名前空間の名前を定義し、Ｅｖｅｎｔ属性はワイヤー上のイベントの名前を定義し、ＥｖｅｎｔＰａｒａｍｅｔｅｒ属性はパラメータの名前、タイプおよびパラメータがオプショナルかどうかを定義する。ハンドラを使用するため、ハンドラの開発者はＥｖｅｎｔＨａｎｄｌｅｒＢａｓｅ４０２から継承するクラスを書き、パラメータとｒｅｔｕｒｎ  ｖｏｉｄをもたないメソッドとしてイベントを書き、上記の適切な属性を使用してスキーマを定義し、サーバコンポーネントを有するクラスを登録する。
【００３８】
本発明のデータ構造により、開発者はパラメータとして使用できる複合型を定義することができる。データ構造の例を以下に示す。  
［ＥｖｅｎｔＳｔｒｕｃｔ（“ｒ”）］
ｉｎｔｅｒｎａｌ  ｃｌａｓｓ  ＲｅｃｉｐｉｅｎｔＷｅｌｌＩｔｅｍ
｛
［ＥｖｅｎｔＦｉｅｌｄ（“ｄｎ”）］
ｐｕｂｌｉｃ  ｓｔｒｉｎｇ  ＤｉｓｐｌａｙＮａｍｅ；
［ＥｖｅｎｔＦｉｅｌｄ（“ｅｍ”，ｔｒｕｅ，“ｏｏｆ＠ｐａｇｅＡ．ｎｅｔ”）］
／／ｔｒｕｅ＝ｏｐｔｉｏｎａｌ  ｆｉｅｌｄ
ｐｕｂｌｉｃ  ｓｔｒｉｎｇ  Ｅｍａｉｌ；
［ＥｖｅｎｔＦｉｅｌｄ（“ｔ”）］
ｐｕｂｌｉｃ  ｉｎｔ  Ｔｙｐｅ；
ｉｎｔｅｒｎａｌ  ＲｅｃｉｐｉｅｎｔＷｅｌｌＩｔｅｍ（）
｛
ＤｉｓｐｌａｙＮａｍｅ＝“”；
Ｅｍａｉｌ＝“”；
Ｔｙｐｅ＝０；
｝
｝
【００３９】
上記のデータ構造の例は以下に示すように符号化される。  
＜ｒ  ｄｎ＝“ｄｉｓｐｌａｙ  ｎａｍｅ”  ｅｍ＝“ｅｍａｉｌ  ａｄｄｒｅｓｓ”  ｔ＝“ｌ”／＞
【００４０】
本発明のサーバコンポーネントが特定のデータ構造に従う要求を受信するとき、本発明は前記特定データ構造のクラスのインスタンスを生成し、要求からのデータでそれをポピュレートする。
【００４１】
動作環境の例
図５はコンピュータ１３０の形態の汎用目的コンピューティングデバイスの１例を示す。本発明の１実施形態において、コンピュータ１３０等のコンピュータは、例示した他の図面、および本明細書で説明した他の図面における使用に適切である。コンピュータ１３０は１つまたは複数のプロセッサまたは演算装置１３２およびシステムメモリ１３４を有する。図示した実施形態において、システムバス１３６は、システムメモリ１３４を含む様々なシステムコンポーネントを演算装置１３２に結合する。バス１３６は、数種のバス構造の任意の１つまたは複数を表し、そのバス構造は、メモリバスまたはメモリコントローラ、周辺バス、加速グラフィックポート、および演算装置または様々な任意のバスアーキテクチャを使用するローカルバスを含む。例をあげるがこれに限定されず、上記のアーキテクチャは業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子標準協会（ＶＥＳＡ）ローカルバス、およびメザニンバスとしても知られる周辺コンポーネント相互接続（ＰＣＩ）バスを含む。
【００４２】
コンピュータ１３０は典型的には少なくとも何らかの形態のコンピュータ読取可能な記録媒体を有する。コンピュータ読取可能な記録媒体は、揮発性および不揮発性媒体の両方、取外し可能および取外し不可能媒体の両方を含み、コンピュータ１３０がアクセス可能な任意の利用可能媒体であってもよい。例をあげるがこれに限定されず、コンピュータ読取可能な記録媒体はコンピュータ記憶媒体および通信媒体を備える。コンピュータ記憶媒体は揮発性および不揮発性、取外し可能および取外し不可能媒体を含み、それらはコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータ等の情報を格納するための任意の方法または技術で実装される。例えば、コンピュータ記憶媒体はＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、または所望の情報を格納するために使用できてコンピュータ１３０がアクセス可能な任意の他の媒体を含む。典型的には、通信媒体はコンピュータ可読命令、データ構造、プログラムモジュール、あるいは搬送波または他のトランスポート機構等の変調データ信号内の他のデータを具現化し、任意の情報配信媒体を含む。当業者は変調データ信号に精通しており、変調データ信号は１つまたは複数のその特性集合を有し、信号内の情報を符号化するように変化する。有線ネットワークまたは直接配線通信等の有線媒体、および音響、ＲＦ、赤外線、および他の無線媒体等の無線媒体は通信媒体の例である。上記の任意の組合せもコンピュータ読取可能な記録媒体の範囲内に含まれる。
【００４３】
システムメモリ１３４は、取外し可能および／または取外し不可能、揮発性および／または不揮発性メモリの形態でコンピュータ記憶媒体を含む。図示した実施形態において、システムメモリ１３４は読取専用メモリ（ＲＯＭ）１３８およびランダムアクセスメモリ（ＲＡＭ）１４０を含む。起動中などにコンピュータ１３０内の要素間での情報転送を支援する基本ルーチンを含む基本入出力システム１４２（ＢＩＯＳ）は、典型的にはＲＯＭ１３８に格納される。典型的には、ＲＡＭ１４０は、演算装置１３２が直接アクセス可能および／または演算装置１３２上で現在動作中のデータおよび／またはプログラムモジュールを含む。例として、図５にオペレーティングシステム１４４、アプリケーションプログラム１４６、他のプログラムモジュール１４８、およびプログラムデータ１５０を示すが、これに限定されることはない。
【００４４】
コンピュータ１３０は、また他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体も含むことができる。例えば、図５は、取外し不可能、不揮発性の磁気媒体を読み書きするハードディスクドライブ１５４を示す。また、図５は、取外し可能な不揮発性の磁気ディスク１５８を読み書きする磁気ディスクドライブ１５６とＣＤ−ＲＯＭまたは他の光媒体等の取外し可能、不揮発性の光ディスク１６２に読み書きする光ディスクドライブ１６０を示す。動作環境の例で使用できる他の取外し可能／取外し不可能、揮発性／不揮発性のコンピュータ記憶媒体は、これらに限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭ等を含む。ハードディスクドライブ１５４、磁気ディスクドライブ１５６および光ディスクドライブ１６０は、典型的には、インタフェース１６６等の不揮発性のメモリインタフェースによりシステムバス１３６に接続される。
【００４５】
ドライブまたは他の大容量記憶デバイスおよび、上述した図５に示す関連コンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、およびコンピュータ１３０に関する他のデータを記憶する。図５において、例えば、ハードディスクドライブ１５４は、オペレーティングシステム１７０、アプリケーションプログラム１７２、他のプログラムモジュール１７４、およびプログラムデータ１７６を格納するものとして示されている。これらのコンポーネントは、オペレーティングシステム１４４、アプリケーションプログラム１４６、他のプログラムモジュール１４８、およびプログラムデータ１５０と同一であるかまたはそれらとは異なってもよいことに注意されたい。オペレーティングシステム１７０、アプリケーションプログラム１７２、他のプログラムモジュール１７４、およびプログラムデータ１７６は、ここでは異なる数字が与えられ、少なくともそれらが異なるコピーであることを示している。
【００４６】
ユーザは、キーボード１８０およびポインティングデバイス１８２（例えば、マウス、トラックボール、ペン、またはタッチパッド）等の入力デバイスまたはユーザインタフェース選択デバイスを通してコンピュータ１３０に命令と情報を入力することができる。他の入力デバイス（不図示）は、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ等を含むことができる。これらおよび他の入力デバイスは、システムバス１３６に接続されたユーザ入力インタフェース１８４を通して演算装置１３２に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）等の他のインタフェースおよびバス構造により接続されてもよい。モニタ１８８または他のタイプのディスプレイデバイスも、ビデオインタフェース１９０等のインタフェース経由でシステムバス１３６に接続される。モニタ１８８に加えて、コンピュータはしばしばプリンタおよびスピーカ等の他の周辺出力装置（不図示）を含み、それらを出力周辺インタフェース（不図示）を通して接続することができる。
【００４７】
コンピュータ１３０は、リモートコンピュータ１９４等の１つまたは複数のリモートコンピュータに対する論理接続を使用してネットワーク環境で動作することができる。リモートコンピュータ１９４はパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードであることができ、典型的には、コンピュータ１３０に関する上記の要素の多くまたは全てを含む。図５に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１９６および広域ネットワーク（ＷＡＮ）１９８を含むが、他のネットワークを含んでもよい。ＬＡＮ１３６および／またはＷＡＮ１３８は、有線ネットワーク、無線ネットワーク、それらの組合せ等であることができる。上記のネットワーク環境は、職場、企業規模のコンピュータネットワーク、イントラネット、およびグローバルコンピュータネットワーク（例えば、インターネット）で一般的である。
【００４８】
ローカルエリアネットワーク環境で使用するときには、コンピュータ１３０はネットワークインタフェースまたはアダプタ１８６を通してＬＡＮ１９６に接続される。広域ネットワーク環境で使用するとき、典型的には、コンピュータ１３０は、モデム１７８、またはインターネット等のＷＡＮ１９８上で通信を確立する他の手段を含む。モデム１７８は、内部または外部でもよく、ユーザ入力インタフェース１８４または他の適切な機能経由でシステムバス１３６に接続される。ネットワーク環境では、コンピュータ１３０に関して示したプログラムモジュール、またはその一部をリモートメモリ記憶デバイス（不図示）に格納することができる。例えば、図５はリモートアプリケーションプログラム１９２がメモリデバイス上にあるものとして示すが、これに限定されることはない。示したネットワーク接続は例であって、コンピュータ間で通信リンクを確立する他の手段を使用してもよい。
【００４９】
一般的に、コンピュータ１３０のデータプロセッサは、コンピュータの様々なコンピュータ読取可能な記録媒体に異なる時点で格納された命令手段によりプログラムされる。プログラムおよびオペレーティングシステムは、典型的には、例えばフロッピーディスクまたはＣＤ−ＲＯＭ上に配信される。そこから、プログラムおよびオペレーティングシステムはコンピュータのセカンダリメモリにインストールまたはロードされる。実行時に、プログラムおよびオペレーティングシステムは、少なくとも部分的にはコンピュータのプライマリ電子メモリにロードされる。本明細書で説明する本発明は、これらおよび他の様々なタイプのコンピュータ読取可能な記録媒体を含み、上記媒体は、マイクロプロセッサまたは他のデータプロセッサと関連して以下で説明するステップを実施する命令またはプログラムを含む。本発明は、本明細書で説明する方法および技術に従ってプログラムされるときには、コンピュータそれ自身も含む。
【００５０】
説明目的で、オペレーティングシステム等のプログラムおよび他の実行可能プログラムコンポーネントを本明細書で離散ブロックとして示す。しかしながら、上記のプログラムおよびコンポーネントはその時々でコンピュータの様々な記憶コンポーネントに存在し、コンピュータのデータプロセッサにより実行されることは理解される。
【００５１】
コンピュータ１３０を含むコンピューティングシステム環境の例に関連させて説明するが、本発明は多数の他の汎用目的または特殊目的のコンピューティングシステム環境または構成で動作できる。コンピューティングシステム環境は、本発明の使用範囲または機能範囲に関する限定を示唆する意図はない。さらに、コンピューティングシステム環境は、動作環境の例で示したコンポーネントの任意の１つまたは組合せに関する依存性または要件を有すると解釈されるべきではない。本発明での使用に適した周知のコンピューティングシステム、環境、および／または構成の例は、これらに限らないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家電機器、移動電話、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、任意の上記システムまたはデバイスを含む分散コンピューティング環境等を含む。
【００５２】
プログラムモジュール等の１つまたは複数のコンピュータまたは他のデバイスが実行するコンピュータ実行可能命令の一般的なコンテクストで、本発明を説明することができる。一般的に、プログラムモジュールはこれらに限らないが、ルーチン、プログラム、オブジェクト、コンポーネント、および特定のタスクを実施するかまたは特定の抽象データ型を実装するデータ構造を含む。本発明は、通信ネットワークを通してリンクされるリモート処理デバイスがタスクを実行する分散コンピューティング環境で実施してもよい。分散コンピューティング環境においては、プログラムモジュールは、メモリ記憶デバイスを含むローカルとリモートとの両方のコンピュータ記憶媒体に位置することができる。
【００５３】
ソフトウェアアーキテクチャのコンテクスト内のインタフェースは、ソフトウェアモジュール、コンポーネント、コード部、または他のコンピュータ実行可能命令のシーケンスを含む。前記インタフェースは、例えば、第１のモジュールの代わりにコンピューティングタスクを実施するために、第１のモジュールが第２のモジュールにアクセスすることを含む。第１および第２のモジュールは、１例において、オペレーティングシステムにより提供されるようなアプリケーションプログラミングインタフェース（ＡＰＩ）、（例えば、ピアツーピアアプリケーション通信に対する）コンポーネントオブジェクトモデル（ＣＯＭ）インタフェース、および（例えば、ウェブサービス間で通信するための）拡張可能マークアップ言語メタデータ交換フォーマット（ＸＭＩ）インタフェースを含む。
【００５４】
インタフェースは、Ｊａｖａ２プラットフォームエンタープライズエディション（Ｊ２ＥＥ）、ＣＯＭ、または分散ＣＯＭ（ＤＣＯＭ）の例にあるような密結合の同期実装で可能である。その代替か追加で、インタフェースは、（例えば、シンプルオブジェクトアクセスプロトコルを用いた）ウェブサービスにあるような疎結合の非同期実装が可能である。一般に、インタフェースは以下の特徴の任意の組合せを含む。すなわち、密結合、疎結合、同期、および非同期である。さらに、インタフェースは、標準プロトコル、専用プロトコル、または標準および専用プロトコルの任意の組合せに適合可能である。
【００５５】
本明細書で説明したインタフェースは全て、単一インタフェースの一部か、別個のインタフェースまたはそれらの任意の組合せで実行することができる。インタフェースをローカルまたはリモートに実行して機能を提供することができる。さらに、インタフェースは、本明細書で図示または説明したものに比べて、付加した機能性または低減した機能性を含めることができる。
【００５６】
動作中、コンピュータ１３０は、図２に示すようなコンピュータ実行可能命令を実行して、ネットワークアプリケーションプログラム間で要求されたデータを生成および通信する。
【００５７】
付録Ａは、本発明による例示的な名前空間、イベントハンドラ、およびパラメータを列挙する。付録Ａにおいて、ＤａｔｅＰｉｃｋｅｒＥｖｅｎｔＨａｎｄｌｅｒハンドラ型は日付ピッカーに関するイベントを含む。日付ピッカーはユーザインタフェースコンポーネントで、これによりユーザはアプリケーションのいくつかのコンテクストで日付を選択することができる。ＲｅｎｄｅｒＭｏｎｔｈイベントは、月に対応するＨＴＭＬフラグメントをレンダリングする。ユーザが２００５年１月に移動するようクリックするとき、本発明のクライアントコンポーネントはＲｅｎｄｅｒＭｏｎｔｈイベントをサーバに送信し、サーバは入力パラメータ（例えば、２００５年１月の日付である月を意味する‘ｍ’）を取得して、その月に対するＨＴＭＬフラグメントをレンダリングする。レンダリングされたＨＴＭＬフラグメントはクライアントに送り返される。
【００５８】
ＭｅｓｓａｇｅＬｉｓｔＶｉｅｗＥｖｅｎｔＨａｎｄｌｅｒハンドラ型は、例えば受信箱の中のメッセージを示すメッセージリストビューに関するイベントを含む。削除イベントは、削除する２、３個のメッセージをユーザが選択するときに実行される。フォルダ識別子は属性‘ｆｌｄ’で表される。削除するためのメッセージ識別子の配列は、属性‘ｉｄ’で表される。
【００５９】
ＲｅｃｉｐｉｅｎｔＷｅｌｌＥｖｅｎｔＨａｎｄｌｅｒは、受信者のためのイベントハンドラに適している。このハンドラ型におけるイベントの例は‘ｒｅｓｏｌｖｅ（解決）’である。‘ｒｅｓｏｌｖｅ’は電子メールメッセージ内のｔｏ（宛先）、ｃｃ、およびｂｃｃ領域を文字配列であるパラメータとして取る。Ｒｅｓｏｌｖｅイベントはこれらの文字列を解析して解決する。例えば、ユーザが“ＢｏｂＳ”とタイプすると、‘ｔｏ’パラメータに対応する配列内の単一項目“ＢｏｂＳ”のデータ要求がサーバに送信される。応答はＨＴＭＬ内にＢｏｂ  Ｓｍｉｔｈの電子メールアドレス付きの“Ｂｏｂ  Ｓｍｉｔｈ”を有するＨＴＭＬ部分フラグメントであり、それに他のデータが添付されてもよい。
【００６０】
次にカレンダビューイベントハンドラ内のＧｅｔＶｉｅｗＰａｙｌｏａｄメソッドの詳細な説明を行う。このメソッドに対するパラメータは、属性‘ｎｖｓ’、‘ｆｌｄ’、‘ｄａｙｓ’、‘ｖｔ’および‘ｄｉｒ’を含む。このイベントハンドラは、カレンダビューがリフレッシュされる必要があるとき、クライアントから呼び出される。カレンダビューは、３０分刻みでディスプレイの左にタイムストリップを表示し、それぞれの日付は列内に表示する。
【００６１】
カレンダビューをリフレッシュする必要があるとき、ＧｅｔＶｉｅｗＰａｙｌｏａｄイベントが起動される。このイベントはデータをバックエンドからロードし（例えば、メールボックス内のユーザのカレンダ内で問い合わせ）、そのデータを記述するコード（例えば、ＪａｖａＳｃｒｉｐｔ）をレンダリングする。レンダリングしたコードはペイロードと呼ばれる。ペイロードはクライアントに送信され、クライアントはペイロードデータを用いてビューを再描画する。ペイロードの例は、それぞれの予約の開始／終了時間、題目、位置、空き／ビジー状態等を含む。また、それぞれの長方形の座標はサーバで計算され、このペイロードの一部として送信されて、クライアントサイドスクリプトを簡略化する。
【００６２】
ＧｅｔＶｉｅｗＰａｙｌｏａｄメソッドに関するパラメータは属性‘ｎｖｓ’、‘ｆｌｄ’、‘ｄａｙｓ’、‘ｖｔ’および‘ｄｉｒ’を含む。‘ｎｖｓ’属性は‘ビュー状態なし’属性であり、真の場合、ビュー状態を維持する必要が全くないことを示す。ビュー状態はビューを定義するパラメータ集合（例えば、閲覧をした日数およびビューのタイプ）である。ビュータイプは週次または日次が可能である。‘ｎｖｓ’パラメータが偽のとき、ビュー状態はユーザが次にログオンするときのために保存される。‘ｆｌｄ’属性は、参照するカレンダフォルダの識別子に対応する“フォルダ識別子”属性である。‘ｄａｙ’属性は参照日付の配列を含む。‘ｖｔ’属性は日次または週次の“ビュータイプ”に対応する。‘ｄｉｒ’属性は随意に指定されるナビゲーション矢印の“方向”である。この属性を設定することは、ユーザがナビゲーション矢印をクリックし、サーバが‘ｄａｙ’属性に基づいて閲覧すべき次の日付集合を計算しなければならないことを意味する。例えば、‘ｄａｙ’属性が３月の２日、３日、および４日であり、‘ｄｉｒ’属性が＋１に設定される場合には、サーバはそれらの各々に７日を足す（例えば、複数日ビューは７日進む）。‘ｄａｙ’属性が３月２日のみ（例えば、単一日付ビュー）の場合、右矢印をクリックすると３月３日に移動し、従ってサーバは１日を加えるのみである。
【００６３】
ＧｅｔＶｉｅｗＰａｙｌｏａｄメソッドに対する要求の例を以下に示す。  
ＰＯＳＴ／ｍａｉｌｃｌｉｅｎｔ／ｅｖ．ｏｗａ？ｏｅｈ＝１＆ｎｓ＝ＣａｌｅｎｄａｒＶｉｅｗ＆ｅｖ＝ＧｅｔＶｉｅｗＰａｙｌｏａｄ
ＨＴＴＰ／１．１
ＢＯＤＹ：
＜ｐａｒａｍ＞＜ｆｌｄ＞ＬｇＡＡＡＡＢｊｃｚｇｖＷｈｈＲＱＫＷ７ＯＭ２Ｏｋ４ＧＤＡＱＤ４Ｉｆ＋Ｊｋ６Ｖ９Ｓａｚ９＋ｒｆＮａ９ｅ８ＡＡＡＡＡＢｅ
ｄＡＡＡＢ＜／ｆｌｄ＞＜ｄａｙｓ＞＜ｉｔｅｍ＞２００４−１２−１５Ｔ００：００：００＜／ｉｔｅｍ＞＜ｉｔｅｍ＞２００４−１２−１６Ｔ００：００：００＜／ｉｔｅｍ＞＜ｉｔｅｍ＞２００４−１２−１７Ｔ００：００：００＜／ｉｔｅｍ＞＜／ｄａｙｓ＞＜ｖｔ＞１＜／ｖｔ＞＜ｎｖｓ＞１＜／ｎｖｓ＞＜／ｐａｒａｍｓ＞
【００６４】
上記要求に対する応答の例の一部を以下に示す。  
ａ＿ｃＥＲｏｗ＝１；ａ＿ｓＦＴｔｌ＝“Ｃａｌｅｎｄａｒ：Ｄｅｃｅｍｂｅｒ２００４”；ａ＿ｉＮＲＰ＝１；ａ＿ｒｇＣａｌ＝ｎｅｗ
Ａｒｒａｙ（ｎｃ（“ＲｇＡＡＡＡＢｊｃｔｈｅＷｈｈＲＱＫＷ７ＯＭ２Ｏｋ４ＧＤＢｗＤ４Ｉｆ＋Ｊｋ６Ｖ９Ｓａｚ９＋ｒｆＮａ９ｅ８ＡＡＡＡＡＢｅｄＡＡＤ４Ｉｆ＋Ｊｋ６Ｖ９Ｓａｚ９＋ｒｆＮａ９ｅ８ＡＡＡＡＡＤＴｆＡＡＡＩ”，“１２−１５−２００４  １７：３０：００Ｕ”，“１２−１５−２００４１８：００：００Ｕ”，“Ｓｔｒａｔｅｇｙ  Ｍｅｅｔｉｎｇ”，“Ｃｏｎｆ  Ｒｏｏｍ  １”，２，１，“Ｂｏｂ  Ｓｍｉｔｈ”，０，１，０，０，“”），ｎｃ（“ＣＡｊＧｓＦＡｎｋ８ＡＡＲｇＡＡＡＡＢｊｃｚｇｔｈｅｈＲＱＫＷ７ＯＭ２Ｏｋ４ＧＤＢｗＤ４Ｉｆ＋Ｊｋ６Ｖ９Ｓａｚ９＋ｒｆＮａ９ｅ８ＡＡＡＡＡＢｅｄＡＡＤ４Ｉｆ＋Ｊｋ６Ｖ９Ｓａｚ９＋ｒｆＮａ９ｅ８ＡＡＡＡＡＣＮｑＡＡＡＪ”，“１２−１５−２００４  ２１：００：００Ｕ”，“１２−１５−２００４  ２１：３０：００Ｕ”，“Ｏｕｔ  ｏｆ  Ｏｆｆｉｃｅ”，“”，２，０，“”，１，３，１，０，“”），ｎｃ（“ＲｇＡＡＡＡＢｊｃｚｇｖＷｈｈＲＱＫＷ７ＯＭ２Ｏｋ４ＧＤＢｗＤ４Ｉｆ＋Ｊｋ６Ｖ９Ｓａｚ９＋ｒｆＮａ９ｅ８ＡＡＡＡＡＢｅｄＡＡＤ４Ｉｆ＋Ｊｋ６Ｖ９Ｓａｚ９＋ｒｆＮａ９ｅ８ＡＡＡＡＡＤＴｈＡＡＡＩ”，“１２−１６−２００４  ００：００：００Ｕ”，“１２−１６−２００４  ０１：００：００Ｕ”，“Ｐｏｒｔｆｏｌｉｏ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｍｅｅｔｉｎｇ”，“Ｃｏｎｆ  Ｒｏｏｍ  ２”，２，１，“Ｊｏｅ  Ａ．”，１，１，０，０，“”））；ａ＿ｒｇＤａｙ＝ｎｅｗ  Ａｒｒａｙ（）；ｖａｒ
ｔ；ｔ＝ｎｅｗＣａｌＤａｙ（“１５”，“Ｗｅｄｎｅｓｄａｙ”，１５，１２，２００４）；ａｖ（ｔ，０，１９，１，１，０）；ａｖ（ｔ，０，２４，０．５，４，１）；
ａｖ（ｔ，０．５，２６，０．５，１，２）；ａｖ（ｔ，０，３２，１，２，３）；ａｖ（ｔ，０，３４，１，２，４）；ａ＿ｒｇＤａｙ［０］＝ｔ；ｔ＝ｎｅｗＣａｌＤａｙ（“１６”，“Ｔｈｕｒｓｄａｙ”，１６，１２，２００４）；ａｖ（ｔ，０，２０，１，１，５）；ａｖ（ｔ，０，２１，１，２，６）；ａｖ（ｔ，０，２３，１，２，７）；ａｖ（ｔ，０，２５，１，１，８）；ａｖ（ｔ，０，２８，０．５，６，１０）；ａｖ（ｔ，０．５，２８，０．５，４，９）；ａｖ（ｔ，０．５，３３，０．５，３，１１）；ａ＿ｒｇＤａｙ［１］＝ｔ；ｔ＝ｎｅｗＣａｌＤａｙ（“１７”，“Ｆｒｉｄａｙ”，１７，１２，２００４）；ａｖ（ｔ，０，２０，０．５，４，１３）；ａｖ（ｔ，０．５，２０，０．５，２，１２）；ａｖ（ｔ，０．５，２３，０．５，３，１４）；ａｖ（ｔ，０，２５，０．５，１，１５）；ａｖ（ｔ，０，２８，０．５，２，１７）；ａｖ（ｔ，０．５，２９，０．５，３，１８）；ａｖｆ（ｔ，２６，２２，３）；ａ＿ｒｇＤａｙ［２］＝ｔ；ａ＿ｒｇＥｖｔ＝ｎｅｗＡｒｒａｙ（ｎｅ（２，０，１，１６，２，０））
【００６５】
本明細書で図示および説明した方法の実行順序または性能は、明記しない限り本質的ではない。すなわち、前記方法の要素は明記しない限り任意の順序で実施することができ、前記方法は本明細書で開示したものよりも多い、あるいは少ない要素を含むことができる。例えば、別の要素の前に、別の要素と同時にまたは別の要素の後に、特定要素を実行または実施することは、本発明の範囲内であると意図している。
【００６６】
本発明または本発明の実施形態の要素を導入するとき、冠詞“ａ”、“ａｎ”、“ｔｈｅ”、および“ｓａｉｄ”は１つまたは複数の要素があることを意味するよう意図される。用語“ｃｏｍｐｒｉｓｉｎｇ”、“ｉｎｃｌｕｄｉｎｇ”、および“ｈａｖｉｎｇ”は包括的であることを意図し、列挙した要素以外にさらなる要素がありうることを意味するよう意図している。
【００６７】
上記の観点から、本発明のいくつかの目的が達成され他の有利な結果が得られることが分かるであろう。
【００６８】
上記の構築、製品、および方法に対して本発明の範囲から逸脱することなく様々な変更を加えることができるが、上記の説明に含まれる全ての事柄および添付図面に示した全ての事柄は限定の意味はなく、例として解釈されるべきであることを意図している。
【００６９】
付録Ａ
サーバ配置電子メールアプリケーションプログラムに対する電子メール名前空間（例えば、Ｍａｉｌ．Ｃｌｉｅｎｔ）におけるイベントおよびパラメータの例を、以下の表に示す。
【００７０】
【表１】
2008538428.tif 000003
【００７１】
【表２−１】
2008538428.tif 000004
【００７２】
【表２−２】
2008538428.tif 000005
【００７３】
【表２−３】
2008538428.tif 000006
【００７４】
【表２−４】
2008538428.tif 000007
【００７５】
【表２−５】
2008538428.tif 000008
【００７６】
【表２−６】
2008538428.tif 000009
【００７７】
【表２−７】
2008538428.tif 000010
【００７８】
【表３】
2008538428.tif 000011
【００７９】
【表４−１】
2008538428.tif 000012
【００８０】
【表４−２】
2008538428.tif 000013
【００８１】
【表４−３】
2008538428.tif 000014
【図面の簡単な説明】
【００８２】
【図１】１つまたは複数のクライアントコンポーネントとネットワーク経由で通信するサーバコンポーネントを例示するブロック図である。
【図２】要求されたデータを通信するためのクライアントおよびサーバプロセスの動作を例示する流れ図である。
【図３】サーバコンポーネント内のモジュールを説明、例示するブロック図である。
【図４】イベントハンドラクラスの集合を説明、例示するブロック図である。
【図５】本発明を実装可能な適切なコンピューティングシステム環境の１例を説明するブロック図である。
【図１】
2008538428.tif 000015
【図２】
2008538428.tif 000016
【図３】
2008538428.tif 000017
【図４】
2008538428.tif 000018
【図５】
2008538428.tif 000019