(57)【特許請求の範囲】
【請求項１】
非同期通信の方法であって、
１つまたは複数のウェブサーバーから、ローカルデバイス(local device)に存在する(residing on)第１のボックス（box）に１つまたは複数のメッセージを受信するステップと、
１つまたは複数のローカルウェブアプリケーションが、動作中(in session)か否かを判断するステップであって、当該１つまたは複数のローカルウェブアプリケーションが、前記１つまたは複数のメッセージの、意図される受信者であり、当該判断が、当該１つまたは複数のローカルウェブアプリケーションのために前記ローカルデバイスにおいて実行されるべき、メッセージに関連する行為（action）を確定する(ascertain)ために実行され、当該メッセージに関連する行為が、ウェブブラウザからの要求に応じた、ウェブページに関連付けられたＨＴＭＬコード、ソフトウェアのダウンロードを含むもの、と、
前記１つまたは複数のローカルウェブアプリケーションのために、前記ローカルデバイスで、前記メッセージに関連する行為を実行することに応じて、１つまたは複数のローカルウェブアプリケーションからの、前記１つまたは複数のメッセージに対する１つまたは複数の応答(responses)を、前記ローカルデバイスに存在する第２のボックスで、受信するステップと、
前記第２のボックスから前記１つまたは複数のウェブサーバーに前記１つまたは複数の応答を送信する時機(a time)を決定するステップと、
決定された時機に、前記第２のボックスから前記１つまたは複数のウェブサーバーに前記１つまたは複数の応答を送信するステップと
を含む方法。
【請求項２】
前記時機は、ネットワーク接続、プロセッサーの使用状況、またはユーザーの通信設定、の少なくとも１つに基づいて決定される、請求項１に記載の方法。
【請求項３】
前記ネットワーク接続は、ネットワーク接続の種類、伝送速度、または前記ネットワーク接続の安定度(stability)、の少なくとも１つに基づいて評価される、請求項２に記載の方法。
【請求項４】
前記ユーザーの通信設定は、メッセージの重要度、メッセージの緊急度、メッセージのサイズ、メッセージの内容、メッセージの受信者、またはユーザー入力、の１つまたは複数を含む、請求項２に記載の方法。
【請求項５】
前記１つまたは複数のローカルウェブアプリケーションは、少なくとも１つのウェブブラウザーを含み、前記１つまたは複数の応答は、１つもしくは複数のデータ要求(requests)および／または１つもしくは複数のデータ提出(submissions)を含む、請求項１に記載の方法。
【請求項６】
前記１つまたは複数のローカルウェブアプリケーションが、動作中であるという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記１つまたは複数のメッセージを、前記第１のボックスから、前記１つまたは複数のローカルウェブアプリケーションに転送することを含むものを更に含む、
請求項１に記載の方法。
【請求項７】
前記１つまたは複数のローカルウェブアプリケーションが、動作中であるという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記１つまたは複数のローカルウェブアプリケーションに、前記１つまたは複数のメッセージを通知することを含むものを更に含む、
請求項１に記載の方法。
【請求項８】
前記１つまたは複数のローカルウェブアプリケーションが、動作中でないという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記１つまたは複数のローカルウェブアプリケーションをロードすることを含むものを更に含む、
請求項１に記載の方法。
【請求項９】
ウェブアプリケーションと非同期に通信する方法であって、
ローカルデバイスに常駐する(residing on)１つまたは複数のウェブアプリケーションから、第１のボックスに１つまたは複数のメッセージを受信するステップと、
１つまたは複数のローカルアプリケーションが動作中か否か、及び、当該１つまたは複数のローカルアプリケーションが動作中でないという判断に応じて、当該１つまたは複数のローカルアプリケーションをロードすべきか、を判断するステップであって、当該１つまたは複数のローカルアプリケーションが、当該１つまたは複数のウェブアプリケーションからの、前記１つまたは複数のメッセージの、意図される受信者であり、当該判断が、実行されるべき、メッセージに関連する行為を確定するために実行され、当該メッセージに関連する行為が、ウェブブラウザからの要求に応じた、ウェブページに関連付けられたＨＴＭＬコード、ソフトウェアのダウンロードを含むもの、と、
前記メッセージに関連する行為を実行することに応じて、前記ローカルデバイスに常駐する１つまたは複数のローカルアプリケーションから、前記１つまたは複数のメッセージに対する１つまたは複数の応答を第２のボックスに受信するステップと、
１つまたは複数のウェブサービスに送信するために、前記１つまたは複数の応答を前記第２のボックスから第３のボックスに転送するステップと、
前記１つまたは複数の応答を前記１つまたは複数のウェブサービスに送信する時機を決定するステップと、
決定された時機に、前記１つまたは複数の応答を前記第３のボックスから前記１つまたは複数のウェブサービスに送信するステップと
を含む方法。
【請求項１０】
前記１つまたは複数のウェブアプリケーションが、ウェブブラウザーアプリケーションを含む、請求項９に記載の方法。
【請求項１１】
前記時機は、ネットワーク接続、プロセッサーの使用状況、またはユーザーの通信設定、の少なくとも１つに基づいて決定される、請求項９に記載の方法。
【請求項１２】
前記ネットワーク接続は、ネットワーク接続の種類、伝送速度、または前記ネットワーク接続の安定度、の少なくとも１つに基づいて評価される、請求項１１に記載の方法。
【請求項１３】
前記１つまたは複数のローカルアプリケーションが、動作中であるという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記１つまたは複数のメッセージを、前記第１のボックスから、前記１つまたは複数のローカルアプリケーションに転送することを含むものを更に含む、
請求項９に記載の方法。
【請求項１４】
前記１つまたは複数のローカルアプリケーションが、動作中であるという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記１つまたは複数のローカルアプリケーションに、前記第１のボックス内の前記１つまたは複数のメッセージを通知することを含むものを更に含む、
請求項９に記載の方法。
【請求項１５】
前記１つまたは複数のローカルアプリケーションが、動作中でないという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記１つまたは複数のローカルアプリケーションをロードすることを含むものを更に含む、
請求項９に記載の方法。
【請求項１６】
ネットワークと通信するためのシステムであって、当該システムが、
少なくとも１つのプロセッサと、
コンピュータ読取り可能な媒体であって、当該コンピュータ読取り可能な媒体の中に、複数の命令が記憶されるものと、
を有し、
前記命令が、前記少なくとも１つのプロセッサによって実行されたときに、
１つまたは複数のウェブサービスから１つまたはそれより多いメッセ−ジを非同期に受信するように構成されたウェブ受信ボックスと、
１つまたは複数のウェブアプリケーションから、前記１つまたは複数のメッセージに対する１つまたは複数の応答を非同期に(asynchronously)受信するように構成されたウェブ送信ボックスと、
同期スケジューラーと、
を実装（implement）し、
前記同期スケジューラーが、以下のステップ、即ち、
前記１つまたは複数のウェブアプリケーションが、動作中であるか、を判断し、そして、前記１つまたは複数のウェブアプリケーションが、動作中でないという判断に応じて、前記１つまたは複数のウェブアプリケーションをロードすべきかを判断するステップであって、前記１つまたは複数のウェブアプリケーションが、前記１つまたは複数のウェブサービスからの、前記１つまたは複数のメッセージの、意図される受信者であり、前記判断が、前記１つまたは複数のローカルウェブアプリケーションのために、ローカルで実行されるべき、メッセージに関連する行為を確定するために実行され、当該メッセージに関連する行為が、ウェブブラウザからの要求に応じた、ウェブページに関連付けられたＨＴＭＬコード、ソフトウェアのダウンロードを含むもの、と、
前記メッセージに関連する行為を、前記１つまたは複数のローカルウェブアプリケーションのために、ローカルで実行することに応じて、前記１つまたは複数のローカルウェブアプリケーションから受信された、前記ウェブ送信ボックスに存在する、前記１つまたは複数の応答を、前記１つまたは複数のウェブサービスに送信するための時機を判断するステップであって、前記同期スケジューラーが、コンピュータオペレーティングシステムに、ネットワーク接続、プロセッサの使用状況、または、ユーザの通信設定のうちの、少なくとも１つを確定するために、照会することによって、前記１つまたは複数の応答を送信するための時機を判断するように構成されるものと、
を実行するように構成される、
システム。
【請求項１７】
前記１つまたは複数のウェブアプリケーションは、前記ウェブ受信ボックスから前記１つまたはそれより多いメッセ−ジを取り出し、前記１つまたは複数のメッセージを使用して動作を行うように構成される
、請求項１６に記載のシステム。
【請求項１８】
前記１つまたは複数のウェブアプリケーションから１つまたは複数のメッセージを受信するように構成されたローカル送信ボックスをさらに備え、１つまたは複数のローカルアプリケーションは、前記ローカル送信ボックスから前記１つまたは複数のメッセージを受信する、請求項１６に記載のシステム。
【請求項１９】
前記１つまたは複数のローカルアプリケーションから、前記１つまたは複数のメッセージに対する１つまたは複数の応答を受信するように構成されたローカル受信ボックスをさらに備え、前記１つまたは複数のウェブアプリケーションは、前記１つまたは複数のウェブサービスに送信するために、前記ローカル送信ボックスから前記１つまたは複数の応答を取り出す(retrieve)、請求項１６に記載のシステム。
【請求項２０】
前記１つまたは複数のウェブアプリケーションは、前記１つまたは複数のウェブサービスに送信するために、前記ローカル受信ボックスから前記ウェブ送信ボックスに前記１つまたは複数のメッセージを転送する(transfer)、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願の実施例は、例えば、ウェブアプリケーションのための非同期待ち行列型メッセージングに関する。
【背景技術】
【０００２】
[0001]一般に、ソフトウェアアプリケーションは、文書処理、デジタル媒体の再生、ビデオゲーム、会計等の各種作業および機能を行うプログラムである。
[0002]ソフトウェアアプリケーションは、典型的には、ローカルのコンピューティングデバイス（例えばパーソナルコンピューター、携帯情報端末、携帯電話等）に常駐するが、ソフトウェアアプリケーションをローカルデバイスからウェブ環境に移す動向が強まりつつある。それには多くの理由があるが、１つには、ウェブベースのソフトウェアアプリケーションは、一般に、より多くの種類と量のコンテンツにアクセスすることができ、また一般にはウェブベースのソフトウェアアプリケーションの方が対話性が高いことが挙げられる。
【０００３】
[0003]しかし、ソフトウェアアプリケーションをウェブに移行することには実際的な問題もある。第１に、ウェブベースのソフトウェアアプリケーションは、一般にはインターネット接続を使用してローカルデバイスと動作または通信する。例えば、友人または家族に電子メールを送信しようとするユーザーは、通例、インターネット接続を確立し、ウェブアプリケーション（例えばＨｏｔｍａｉｌ（商標）、Ｇｍａｉｌ（商標）等）にアクセスし、メッセージを送信する。メッセージを書いている間、または送信しようとしている間にインターネット接続が失われた場合は、通例、メッセージも失われてしまう。
【０００４】
[0004]さらに、一旦インターネット接続が確立されると、その接続が不十分（例えば接続速度が遅い）、または準最適（例えば時間と共に接続が劣化もしくは変化する）である可能性もある。例えば、典型的な出張時に、営業部員が職場では広帯域のインターネットを有し、顧客に面会するための移動中にはセルラー方式のインターネット接続を有し、飲食店やホテルではＷｉＦｉ接続を有する可能性がある。これらのインターネット接続はそれぞれ、異なるレベルの機能および帯域を提供する。
【０００５】
[0005]最後に、現在のローカルソフトウェアアプリケーションと同等の利便性と機能を提供するために、現在のウェブプログラミングモデルは、一般に複雑なコード階層を利用している。
【発明の概要】
【課題を解決するための手段】
【０００６】
[0006]この概要は、以下の「発明を実施するための形態」で説明するいくつかの選択の概念を簡略化した形で紹介するために提供される。この概要は、クレームに記載される主題の主要な特徴または必須の特徴を明らかにするものでも、またクレームに記載される主題の範囲を限定するものでもない。
【０００７】
[0007]各種実施形態は、ウェブブラウザーおよび／またはローカルアプリケーションが、ローカルデバイスの現在の状態およびユーザーの通信設定に基づいてウェブベースのサービスおよびアプリケーションと非同期に通信することを可能にする。
【０００８】
[0008]すべての図面を通じて同様の特徴は同じ符号を使用して参照する。
【図面の簡単な説明】
【０００９】
【図１】[0009]１つまたは複数の実施形態により本発明の原理が使用されることができる動作環境の図である。
【図２】[0010]１つまたは複数の実施形態による、同期エンジンを備えるローカルコンピューティングデバイス、ネットワーク、および各種ウェブサーバーの図である。
【図３】[0011]１つまたは複数の実施形態による、ウェブサーバーと非同期に通信する方法のステップを説明する流れ図である。
【図４】[0012]１つまたは複数の実施形態による、ローカルソフトウェアアプリケーションと非同期に通信する方法のステップを説明する流れ図である。
【図５】[0012]１つまたは複数の実施形態による、ローカルソフトウェアアプリケーションと非同期に通信する方法のステップを説明する流れ図である。
【図６】[0013]１つまたは複数の実施形態によるシステムのブロック図である。
【発明を実施するための形態】
【００１０】
[0014]概説
各種実施形態は、ウェブブラウザーおよびローカルアプリケーションが、ローカルデバイスの現在の状態およびユーザーの通信設定に基づいてウェブベースのサービスおよびアプリケーションと非同期に通信することを可能にする。
【００１１】
[0015]少なくとも一部の実施形態では、ローカルデバイスに存在する同期エンジンが、ウェブベースのサービスまたはアプリケーションから「ウェブ受信ボックス」にメッセージを受信する。少なくとも一部の実施では、同期エンジンは、ローカルのウェブアプリケーションにメッセージを通知し、メッセージをそのウェブアプリケーションに送り、かつ／または、ウェブアプリケーションが現在動作中でない場合はウェブアプリケーションをロードする。メッセージに対するウェブアプリケーションの応答は、「ウェブ送信ボックス」に転送されることができ、応答は、ウェブサービスまたはアプリケーションに送信されるまでウェブ送信ボックスに存在する。同期エンジンは、次いで、ローカルデバイスに現在の状態およびユーザーの通信設定を照会することにより、ウェブサービスに応答を送信する望ましい時機を判断する。そして、同期エンジンは、ウェブサービスと通信し応答を送信する時機を決定することができる。
【００１２】
[0016]これに代えて、またはこれに加えて、同期エンジンは、ローカルアプリケーションを宛先とするウェブアプリケーションからのメッセージを「ローカル送信ボックス」に受信することもできる。少なくとも一部の実施では、同期エンジンは、ローカルアプリケーションにメッセージを通知し、メッセージをローカルアプリケーションに送り、かつ／または、ローカルアプリケーションが現在動作中でない場合はローカルアプリケーションをロードする。ローカルアプリケーションは、ウェブアプリケーションに情報を要求することにより、または他の同様の要求を行うことにより、メッセージに応答することができる。応答は「ローカル受信ボックス」に転送され、ウェブベースのサービスまたはアプリケーションに送信されるまでローカル受信ボックスに存在することができる。そして、同期エンジンは、ローカルデバイスのオペレーティングシステムにローカルデバイスの現在の状態およびユーザーの通信設定を照会することにより、ウェブサービスまたはアプリケーションに応答を送信する時機を決定することができる。そして、同期エンジンは、ウェブサービスまたはアプリケーションと通信して応答を送信するのに望ましい時機を決定することができる。
【００１３】
[0017]以下の説明では、「動作環境」と題する項で、各種実施形態が用いられることが可能なコンピューティング環境を説明する。その後、「非同期のウェブ通信」と題する項で、同期エンジンが各種のウェブベースのサービスおよびアプリケーションと非同期に通信する実施形態を説明する。次いで、「非同期のローカル通信」と題する項では、同期エンジンが各種のウェブアプリケーションおよびローカルアプリケーションと非同期に通信するコンピューティング環境を説明する。最後に、「例示的システム」と題する項で、１つまたは複数の実施形態を実施するために使用できる例示的システムを説明する。
【００１４】
[0018]動作環境
図１に、１つまたは複数の実施形態による動作環境１００を示す。環境１００は、コンピューティングデバイス１０２を含み、デバイス１０２は、１つまたは複数のプロセッサー１０４、１つまたは複数のコンピューター可読媒体１０６、コンピューター可読媒体１０６に常駐し、プロセッサー１０４による実行が可能な１つまたは複数のアプリケーション１０８、および、各種のウェブベースのサービスおよびアプリケーションと非同期に通信する同期エンジン１１０を備える。
【００１５】
[0019]コンピューティングデバイス１０２は、限定ではなく例として、デスクトップコンピューター、携帯型コンピューター、携帯情報端末（ＰＤＡ）、携帯電話等の、任意の適切なコンピューティングデバイスとして実施されることができる。
【００１６】
[0020]コンピューター可読媒体１０６は、限定ではなく例として、コンピューティングデバイスに通例付属する、すべての形態の揮発性および不揮発性メモリー、ならびに／または記憶媒体を含むことができる。そのような媒体には、読み取り専用メモリー（ＲＯＭ）、ランダムアクセスメモリー（ＲＡＭ）、フラッシュメモリー、ハードディスク、取り外し可能媒体等が含まれる。コンピューティングデバイスの具体的な一例を図６に図示し、説明する。
【００１７】
[0021]ソフトウェアアプリケーション１０８は、限定ではなく例として、リーダー（reader）アプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、ウェブ閲覧アプリケーション、および各種の他のアプリケーション等、任意の適切な種類のアプリケーションを含むことができる。
【００１８】
[0022]１つまたは複数の実施形態では、同期エンジン１１０は、コンピューティングデバイス１０２がインターネット等のネットワーク１１２を通じて各種のウェブサービスおよびアプリケーションと非同期に通信できるようにするソフトウェアアプリケーションである。ネットワーク１１２は、任意種のコンピューティングネットワークでよく、典型的には企業もしくは住居を接続するローカルエリアネットワーク（ＬＡＮ）、またはインターネット等のワイドエリアネットワーク（ＷＡＮ）を含む。
【００１９】
[0023]動作環境１００は、ニュースや現在の出来事、電子メールサービス、オンラインバンキング、ソーシャルネットワーク等の各種ウェブサービスを提供するウェブサイトを表す、種々のウェブサーバー１１４も含む。さらなる実施形態では、これらのウェブサイトは、各種のタスクまたは機能を行う、リーダーアプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション等のウェブベースのアプリケーションを提供する。
【００２０】
[0024]例示的動作環境１００を考察したので、次いで、同期エンジン１１０を使用して各種のウェブサービスおよびアプリケーションと非同期に通信できる実施形態の解説に移る。
【００２１】
[0025]非同期のウェブ通信
１つまたは複数の実施形態では、同期エンジンにより、ローカルのコンピューティングデバイスが、各種のウェブサーバー、およびコンピューティングデバイス１０２等のローカルデバイスに常駐するローカルアプリケーションと非同期に通信することが可能になる。同期エンジンは、現在のネットワーク環境、ローカルデバイスの状態、およびユーザーの通信設定を評価して、ローカルコンピューティングデバイスがウェブサーバーおよびローカルアプリケーションと通信するのに望ましい時機を決定する。
【００２２】
[0026]図２に、同期エンジン１１０と、種々のソフトウェアアプリケーション１０８と、ウェブアプリケーション２０４と、オペレーティングシステム２０６とを備えるローカルコンピューティングデバイスを示す。
【００２３】
[0027]一般に、ウェブアプリケーション２０４で、ユーザーは、コンピューターネットワーク１１２をブラウズし、各種のウェブサーバー１１４と通信することができる。そして、ウェブサーバー１１４は、各種のウェブサービス（例えばニュースや現在の出来事、電子メールサービス、オンラインバンキング、ソーシャルネットワーク等）、およびソフトウェアアプリケーション（例えばリーダーアプリケーション、メディアプレーヤーアプリケーション、インスタントメッセージアプリケーション等）をユーザーに提供する。
【００２４】
[0028]一般に、オペレーティングシステム２０６は、コンピューティングデバイスのハードウェアおよびソフトウェア資源を管理し、各種のローカルアプリケーション１０８が動作するためのソフトウェアプラットフォームを提供する。オペレーティングシステム２０６は、ローカルデバイスのハードウェアおよびソフトウェア資源を管理して、各アプリケーションが各自に割り当てられたタスクを行うために必要な資源に確実にアクセスできるようにする。
【００２５】
[0029]最後に、同期エンジン１１０は、コンピューターメモリーに常駐するソフトウェアアプリケーションであり、各種のウェブサーバー１１４およびローカルアプリケーション１０８との非同期通信およびそれらの間の非同期通信を可能にする。具体的には、図の
例では、同期エンジン１１０は、各種のウェブサーバー１１４と通信するためのウェブ受信ボックス２１２および送信ボックス２１４、各種のローカルアプリケーション１０８と通信するためのローカル受信ボックス２１８および送信ボックス２２０、ならびに、ウェブサーバー１１４およびローカルアプリケーション１０８と通信するのに望ましい時機を決定する同期スケジューラー２１６を備える。
【００２６】
[0030]１つまたは複数の実施形態では、ウェブ受信ボックス２１２は、コンピューティングデバイス１０２によって送信または受信されるデータおよびメッセージのためのリポジトリとして機能し、一方、ウェブ送信ボックス２１４は、コンピューティングデバイスによって送出または送信されるメッセージのリポジトリとして機能する。一般に、ウェブ受信ボックス２１２および送信ボックス２１４により、ローカルデバイスがローカルデバイスの現在の状態および／またはユーザーの通信設定に基づいて各種のウェブサーバー１１４と非同期に通信することが可能になる。
【００２７】
[0031]ローカル受信ボックス２１８および送信ボックス２２０は、ウェブアプリケーション２０４および／または各種のローカルアプリケーション１０８間で送信されるメッセージのリポジトリとして機能する。一般に、これらのボックスは、ローカルアプリケーション１０８がウェブサーバー１１４と通信したいがウェブアプリケーション２０４が動作していないとき、または、ウェブアプリケーション２０４がウェブサーバー１１４と通信中であるが、ローカルアプリケーション１０８が動作していないときに使用することができる。一般に、メッセージは、ローカルアプリケーション１０８に送信されるときにはローカル送信ボックス２２０に保存され、ウェブアプリケーション２０４に送信されるときにはローカル受信ボックス２１８に保存される。
【００２８】
[0032]一般に、ウェブ受信ボックス２１２、ウェブ送信ボックス２１４、ローカル受信ボックス２１８、およびローカル送信ボックス２２０は、フラッシュメモリー、ハードドライブ、光学媒体等の不揮発性メモリーに存在する。
【００２９】
[0033]図３は、１つまたは複数の実施形態による方法のステップを説明する流れ図である。この方法は、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせとの関連で行うことができる。少なくとも一部の実施形態では、この方法は、図２に記載される同期エンジン１１０等のソフトウェアアプリケーションによって行われることができる。
【００３０】
[0034]ステップ３０２で、ウェブサーバーに常駐するウェブサービスまたはアプリケーションが、ローカルコンピューティングデバイスにメッセージを送信する。このステップは、ウェブアプリケーションがウェブページをナビゲートすることにより、またはユーザーがウェブサービスまたはソフトウェアのダウンロードを要求することにより、またはウェブサーバーを通じた通信を開始する他の方法によって開始されることができる。メッセージは、任意種類のメッセージであってよく、限定ではなく例として、ウェブページに関連付けられたＨＴＭＬコード、ソフトウェアのダウンロード、または他の適切な形態のメッセージを含むことができる。
【００３１】
[0035]ステップ３０４で、ローカルデバイスがウェブサーバーからのメッセージを受信する。メッセージは、ウェブ受信ボックス２１２等のウェブ受信ボックスで受信されるか、または別の受信場所からウェブ受信ボックスに転送されることができる。メッセージは、ローカルデバイスによって実行されるウェブアプリケーションがメッセージを取り出すまで、またはメッセージがウェブアプリケーションに送られるまで、ウェブ受信ボックスに格納される。
【００３２】
[0036]ステップ３０６で、同期エンジン１２０等の同期エンジンが、ローカルデバイスのオペレーティングシステム２０６を照会することにより、ウェブアプリケーションが動作中であるかどうかを判定する。これは、例えば、オペレーティングシステムにＡＰＩ呼び出しを行うことによって行うことができる。ウェブアプリケーションが動作していない場合、メッセージは、ウェブアプリケーションがロードされ、メッセージがアクセスされるまで、ステップ３０８でウェブ受信ボックスに残っていることができる。さらなる実施形態では、同期エンジンが、オペレーティングシステムにウェブアプリケーションをロー
ドするように指示して、ウェブアプリケーションがメッセージにアクセスできるようにする。
【００３３】
[0037]ステップ３１０で、ウェブアプリケーションがウェブサーバーからのメッセージを受信する。メッセージは、ウェブページに関連付けられたＨＴＭＬコード、ソフトウェアのダウンロード、または他の形態のデータを含むことができる。あるいは、同期エンジンがメッセージをウェブアプリケーションに転送するか、またはウェブアプリケーションにメッセージを通知してもよい。
【００３４】
[0038]ステップ３１２で、ウェブアプリケーションは、ウェブ送信ボックスに「応答」を送信することによってメッセージに返信する。応答は、ウェブページデータの要求、ソフトウェアダウンロードを行う要求、または他の種類のデータを送信／受信する要求等である。
【００３５】
[0039]ステップ３１４で、同期スケジューラーは、ウェブサーバー１１４に応答を送信するのに望ましい時機を決定する。一般に、同期スケジューラーは、オペレーティングシステムから入手する情報に基づいて、ウェブサーバーに応答を送信する時機を決定する。同期スケジューラー２１６（図２）がウェブサーバー１１４と通信する時機を決定する際に考慮することが可能な数個の要素またはパラメーターがある。限定ではなく例として、それらの要素には、ネットワーク接続の種類、現在のプロセッサーの使用状況、ユーザーまたはアプリケーションによって割り当てまたは設定されたメッセージの優先度または緊急度、および他の要素またはパラメーターが含まれる可能性がある。
【００３６】
[0040]初めに、同期スケジューラーは、オペレーティングシステムに照会して、ネットワーク接続が確立されているか、または現在確立中であるかどうかを判定することができる。ネットワーク接続が確立されていない場合、メッセージは、接続が確立されるまでウェブ送信ボックスに残っていることができる。代替実施形態では、同期スケジューラーは、メッセージを送信するためのネットワーク接続を確立するようにオペレーティングシステムに指示することができる。
【００３７】
[0041]ネットワーク接続が確立されている場合、同期スケジューラーは、オペレーティングシステムに照会して、そのネットワーク接続に関するいくつかの要素またはパラメーターを入手することができる。それらには、例えば、ネットワーク接続の種類（例えばＤＳＬ、ＷｉＦｉ、セルラー広帯域、ダイヤルアップ等）、伝送速度（例えばビット数／秒）、ネットワーク接続の安定度（例えば過去１時間のネットワークドロップアウトの回数）等が含まれ得る。この情報から、同期スケジューラーは、現在のネットワーク接続で効率的かつ確実に応答を送信できるかどうかを判定することができる。
【００３８】
[0042]同期スケジューラーは、次いでオペレーティングシステムに照会して、例えば現在実行中のアプリケーションの数、プロセッサーの現在の作業負荷等、各種のプロセッサーパラメーターを判定することができる。その情報から、同期スケジューラーは、プロセッサーが現在のタスクを行いながら応答を送信することが可能かどうかを判定することができる。
【００３９】
[0043]同期スケジューラーは、次いでオペレーティングシステムに照会して、メッセージまたは応答の優先度を判定することができる。一例では、メッセージの優先度は、ユーザーによって設定または入力された１つまたは複数の「ユーザーの通信設定」によって設定される。ユーザーの通信設定は、メッセージの重要度、メッセージの緊急度、メッセージのサイズ、メッセージの内容、メッセージの受信者等を含むことができる。代替実施形態では、メッセージの優先度は、リアルタイムで直接ユーザーに照会することによって設定される。
【００４０】
[0044]最後に、同期スケジューラーは、各種パラメーターを集計し、メッセージ／応答を送信するか、またはより適当もしくは好適な時を待つかを決定する。
[0045]同期スケジューラーが、メッセージ／応答を送信するのに望ましい時機を決定すると、同期エンジンはステップ３１６でより適当な時機を待ち、メッセージがウェブ送信ボックスに残るか、またはステップ３１８でウェブサーバーにメッセージ／応答を送信することができる。
【００４１】
[0046]ステップ３２０で、ウェブサーバーがメッセージ／応答を受信し、要求される機能（例えば要求されるＨＴＭＬコードで応答する、要求されるソフトウェアダウンロードを提供する、提出されたデータを格納する等）を行う。
【００４２】
[0047]同期エンジンによりローカルコンピューティングデバイスが各種ウェブサーバーと非同期に通信できる例示的実施形態について説明したので、次いで、アプリケーション１０８（図２）等のローカルアプリケーションがローカルのウェブアプリケーションと非同期に通信する実施形態を考察する。具体的には、下記の実施形態では、同期エンジンが、ウェブアプリケーションまたはローカルアプリケーションが稼働中であるかどうかを判定し、各種ウェブサーバーと非同期に通信するのに望ましい時機を確定する。
【００４３】
[0048]非同期のローカル通信
図４は、１つまたは複数の実施形態による、ローカルソフトウェアアプリケーションと非同期に通信する方法のステップを説明する流れ図である。少なくとも一部の実施形態では、この方法は、図２に記載の同期エンジン１１０等の同期エンジンを使用して行うことができる。
【００４４】
[0049]ステップ４０２で、ウェブアプリケーション２０４（図２）等のウェブアプリケーションが、ローカルコンピューティングデバイスに常駐する１つまたは複数のローカルアプリケーションにメッセージを送信する。メッセージは、例えば、新しいデバイスドライバもしくはデバイスドライバへのリンク、ソフトウェア更新、または他の対象データを含むことができる。
【００４５】
[0050]ステップ４０４で、メッセージが図２のローカル送信ボックス２２０等のローカル送信ボックスに受信されるか、または別の受信場所からローカル送信ボックスに転送される。メッセージは、ローカルアプリケーションがメッセージを取り出すまで、またはローカルアプリケーションにメッセージが送られるまで、ローカル送信ボックスに保持される。
【００４６】
[0051]ステップ４０６で、同期エンジンは、オペレーティングシステムに照会することにより、対象のローカルアプリケーションが動作中であるかどうかを判定する。ローカルアプリケーションが動作していない場合、メッセージは、ローカルアプリケーションがロードされてメッセージがアクセスされるまで、ステップ４０８でローカル送信ボックスに残っていることができる。さらなる実施形態では、同期エンジンが、ローカルアプリケーションをロードするようにオペレーティングシステムに指示することができ、ローカルアプリケーションがメッセージにアクセスできるようにする。
【００４７】
[0052]ステップ４１０で、ローカルアプリケーションがローカル送信ボックスからメッセージを受信する。あるいは、同期エンジンが、ローカルアプリケーションにメッセージを転送するか、またはローカルアプリケーションにメッセージを通知してもよい。
【００４８】
[0053]ステップ４１２で、ローカルアプリケーションは、図２のローカル受信ボックス２１８等のローカル受信ボックスに応答を送信することにより、メッセージに返信することができる。応答は、ウェブページデータのダウンロード、ソフトウェアのダウンロード、ウェブアプリケーション中のデータの更新、デジタルコンテンツの受信等の要求等である。
【００４９】
[0054]ステップ４１４で、同期エンジンは、オペレーティングシステムに照会することにより、ウェブアプリケーションが動作中であるかどうかを判定する。ウェブアプリケーションが動作していない場合、応答は、ウェブアプリケーションがロードされ、メッセージがアクセスされるまで、ステップ４１６でローカル受信ボックスに残っていることができる。さらなる実施形態では、同期エンジンが、ウェブアプリケーションをロードするようにオペレーティングシステムに指示することができ、それによりウェブアプリケーションはメッセージにアクセスすることができる。
【００５０】
[0055]ステップ４１８で、ウェブアプリケーションは、タスクまたは機能を行うようにウェブアプリケーションに指示する応答を受信する。タスクまたは機能は、例えば、ウェブアプリケーションを各種ウェブサーバーと通信させて、ウェブページにアクセスさせる、ソフトウェアの更新をダウンロードさせる、またはデジタルコンテンツをダウンロード
させることができる。
【００５１】
[0056]ステップ４２０で、ウェブアプリケーションは、要求されるタスクを行うために各種ウェブサーバーとの通信を確立できるかどうかを判定することができる。タスクがウェブサーバーにアクセスせずに行うことができる場合は、ウェブアプリケーションは、タスクを実行し、処理が完了する（「停止」）。あるいは、タスクが、ウェブサーバーにアクセスしないと行うことができない場合は、ウェブアプリケーションは、ネットワーク接続を確立し、１つまたは複数のウェブサーバーと通信する（ステップＡ）。
【００５２】
[0057]図５は、ウェブアプリケーションがどのように１つまたは複数のウェブサーバーと非同期に通信することができるかを説明する流れ図である。
[0058]ステップ５０２で、ローカルアプリケーションの応答が、１つまたは複数のウェブサーバーへの送信に備えて図２のウェブ送信ボックス２１４等のウェブ送信ボックスに入れられる。ステップ５０４で、同期スケジューラーは、例えばネットワーク接続の種類、現在のプロセッサー使用状況、ユーザーの通信設定等、オペレーティングシステムから入手する情報に基づいて、応答を送信する望ましい時機を決定する。
【００５３】
[0059]同期スケジューラーがメッセージ／応答を送信する時機を決定すると、同期エンジンは、ステップ５０６でウェブサーバーにメッセージ／応答を送信するか、または、ステップ５０８でウェブ送信ボックスに応答を保持してより適当な時機を待つ。
【００５４】
[0060]ステップ５１０で、ウェブサーバーは、メッセージ／応答を受信し、要求されるタスクまたは機能を行う（例えばＨＴＭＬコードで応答する、要求されるソフトウェアダウンロードを提供する等）。
【００５５】
[0061]同期エンジンによりローカルコンピューティングデバイスが各種ウェブサーバーおよびローカルアプリケーションと非同期に通信できる各種実施形態を説明したので、次いで、上記実施形態を実施するために利用可能な例示的コンピューティングデバイスの解説に移る。
【００５６】
[0062]例示的システム
図６に、上記の各種実施形態を実施することが可能な例示的なコンピューティングデバイス６００を示す。コンピューティングデバイス６００は、例えば、図１のコンピューティングデバイス１０２、またはウェブサーバー等の他の適当なコンピューティングデバイスである。
【００５７】
[0063]コンピューティングデバイス６００は、１つまたは複数のプロセッサー６０２と、１つまたは複数のメモリーおよび／または記憶コンポーネント６０４と、１つまたは複数の入力／出力（Ｉ／Ｏ）装置６０６と、各種コンポーネントおよび装置が相互と通信することを可能にするバス６０８とを備える。
【００５８】
[0064]バス６０８は、各種のバスアーキテクチャを用いた、メモリーバスもしくはメモリーコントローラー、ペリフェラルバス、アクセラレーテッド・グラフィック・ポート、またはローカルバスを含む数種のバス構造を表す。
【００５９】
[0065]メモリー／記憶コンポーネント６０４は、１つまたは複数のコンピューター記憶装置または記憶媒体を表す。メモリーコンポーネント６０４は、ランダムアクセスメモリー（ＲＡＭ）等の揮発性の媒体、および／または、読み取り専用メモリー（ＲＯＭ）、フラッシュメモリー、光学媒体、磁気媒体等の不揮発性媒体を含むことができる。記憶コンポーネント６０４は、固定媒体（例えばＲＡＭ、ＲＯＭ、固定ハードドライブ等）と、取り外し可能媒体（例えばフラッシュメモリードライブ、取り外し可能ハードドライブ、光ディスク等）も含むことができる。
【００６０】
[0066]１つまたは複数の入力／出力装置６０６は、ユーザーがコンピューティングデバイス６００にコマンドおよび情報を入力することを可能にし、また、ユーザーおよび／または他のコンポーネントもしくは装置に対して情報を提示できるようにする。例えば、入力装置は、キーボード、ポインティングデバイス（例えばマウス、タッチパッド、スタイラス等）、マイクロフォン、スキャナー等を含むことができる。出力装置は、数例を挙げると、表示装置（例えばモニターやプロジェクター）、スピーカー、プリンター、およびネットワークカードを含むことができる。
【００６１】
[0067]本明細書では、各種技術は、ソフトウェアまたはプログラムモジュールとの関連で説明することができる。一般に、ソフトウェアには、タスクを行うか、または抽象データ型を実装する、アプリケーション、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。これらのモジュールおよび技術の実装は、記憶されるか、または何らかの形態のコンピューター可読媒体を介して送信されることができる。コンピューター可読媒体には、コンピューティングデバイスからアクセス可能な任意の適当な１つまたは複数の利用可能媒体を用いることができる。限定ではなく例として、コンピューター可読媒体は、「コンピューター記憶媒体」を含むことができる。
【００６２】
[0068]結論
各種実施形態は、ウェブブラウザーおよびローカルアプリケーションが、ローカルデバイスの現在の状態およびユーザーの通信設定に基づいて、ウェブベースのサービスおよび／またはアプリケーションと非同期に通信することを可能にする。
【００６３】
[0069]非同期の通信により、インターネット接続が現在確立されているかどうかに関係なく、またはインターネット接続が不十分または準最適であるときに、ウェブブラウザーおよびローカルアプリケーションがウェブベースのアプリケーションと通信することが可能になる。
【００６４】
[0070]本発明の主題について、構造的特徴および／または方法ステップに固有の文言で説明したが、添付の特許請求の範囲に定義される主題は、必ずしも、記載されるそれら具体的な特徴またはステップに限定されないことを理解されたい。むしろ、具体的な特徴およびステップは、クレームに記載される主題を実施する例示的形態として開示されるものである。
【図１】
0005611952.tif 000002
【図２】
0005611952.tif 000003
【図３】
0005611952.tif 000004
【図４】
0005611952.tif 000005
【図５】
0005611952.tif 000006
【図６】
0005611952.tif 000007