JP5611952B2 - ウェブアプリケーションのための非同期待ち行列型メッセージング - Google Patents

ウェブアプリケーションのための非同期待ち行列型メッセージング Download PDF

Info

Publication number
JP5611952B2
JP5611952B2 JP2011526946A JP2011526946A JP5611952B2 JP 5611952 B2 JP5611952 B2 JP 5611952B2 JP 2011526946 A JP2011526946 A JP 2011526946A JP 2011526946 A JP2011526946 A JP 2011526946A JP 5611952 B2 JP5611952 B2 JP 5611952B2
Authority
JP
Japan
Prior art keywords
web
local
message
applications
messages
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.)
Expired - Fee Related
Application number
JP2011526946A
Other languages
English (en)
Other versions
JP2012503231A (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 JP2012503231A publication Critical patent/JP2012503231A/ja
Application granted granted Critical
Publication of JP5611952B2 publication Critical patent/JP5611952B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles

Description

本願の実施例は、例えば、ウェブアプリケーションのための非同期待ち行列型メッセージングに関する。
[0001]一般に、ソフトウェアアプリケーションは、文書処理、デジタル媒体の再生、ビデオゲーム、会計等の各種作業および機能を行うプログラムである。
[0002]ソフトウェアアプリケーションは、典型的には、ローカルのコンピューティングデバイス(例えばパーソナルコンピューター、携帯情報端末、携帯電話等)に常駐するが、ソフトウェアアプリケーションをローカルデバイスからウェブ環境に移す動向が強まりつつある。それには多くの理由があるが、1つには、ウェブベースのソフトウェアアプリケーションは、一般に、より多くの種類と量のコンテンツにアクセスすることができ、また一般にはウェブベースのソフトウェアアプリケーションの方が対話性が高いことが挙げられる。
[0003]しかし、ソフトウェアアプリケーションをウェブに移行することには実際的な問題もある。第1に、ウェブベースのソフトウェアアプリケーションは、一般にはインターネット接続を使用してローカルデバイスと動作または通信する。例えば、友人または家族に電子メールを送信しようとするユーザーは、通例、インターネット接続を確立し、ウェブアプリケーション(例えばHotmail(商標)、Gmail(商標)等)にアクセスし、メッセージを送信する。メッセージを書いている間、または送信しようとしている間にインターネット接続が失われた場合は、通例、メッセージも失われてしまう。
[0004]さらに、一旦インターネット接続が確立されると、その接続が不十分(例えば接続速度が遅い)、または準最適(例えば時間と共に接続が劣化もしくは変化する)である可能性もある。例えば、典型的な出張時に、営業部員が職場では広帯域のインターネットを有し、顧客に面会するための移動中にはセルラー方式のインターネット接続を有し、飲食店やホテルではWiFi接続を有する可能性がある。これらのインターネット接続はそれぞれ、異なるレベルの機能および帯域を提供する。
[0005]最後に、現在のローカルソフトウェアアプリケーションと同等の利便性と機能を提供するために、現在のウェブプログラミングモデルは、一般に複雑なコード階層を利用している。
[0006]この概要は、以下の「発明を実施するための形態」で説明するいくつかの選択の概念を簡略化した形で紹介するために提供される。この概要は、クレームに記載される主題の主要な特徴または必須の特徴を明らかにするものでも、またクレームに記載される主題の範囲を限定するものでもない。
[0007]各種実施形態は、ウェブブラウザーおよび/またはローカルアプリケーションが、ローカルデバイスの現在の状態およびユーザーの通信設定に基づいてウェブベースのサービスおよびアプリケーションと非同期に通信することを可能にする。
[0008]すべての図面を通じて同様の特徴は同じ符号を使用して参照する。
[0009]1つまたは複数の実施形態により本発明の原理が使用されることができる動作環境の図である。 [0010]1つまたは複数の実施形態による、同期エンジンを備えるローカルコンピューティングデバイス、ネットワーク、および各種ウェブサーバーの図である。 [0011]1つまたは複数の実施形態による、ウェブサーバーと非同期に通信する方法のステップを説明する流れ図である。 [0012]1つまたは複数の実施形態による、ローカルソフトウェアアプリケーションと非同期に通信する方法のステップを説明する流れ図である。 [0012]1つまたは複数の実施形態による、ローカルソフトウェアアプリケーションと非同期に通信する方法のステップを説明する流れ図である。 [0013]1つまたは複数の実施形態によるシステムのブロック図である。
[0014]概説
各種実施形態は、ウェブブラウザーおよびローカルアプリケーションが、ローカルデバイスの現在の状態およびユーザーの通信設定に基づいてウェブベースのサービスおよびアプリケーションと非同期に通信することを可能にする。
[0015]少なくとも一部の実施形態では、ローカルデバイスに存在する同期エンジンが、ウェブベースのサービスまたはアプリケーションから「ウェブ受信ボックス」にメッセージを受信する。少なくとも一部の実施では、同期エンジンは、ローカルのウェブアプリケーションにメッセージを通知し、メッセージをそのウェブアプリケーションに送り、かつ/または、ウェブアプリケーションが現在動作中でない場合はウェブアプリケーションをロードする。メッセージに対するウェブアプリケーションの応答は、「ウェブ送信ボックス」に転送されることができ、応答は、ウェブサービスまたはアプリケーションに送信されるまでウェブ送信ボックスに存在する。同期エンジンは、次いで、ローカルデバイスに現在の状態およびユーザーの通信設定を照会することにより、ウェブサービスに応答を送信する望ましい時機を判断する。そして、同期エンジンは、ウェブサービスと通信し応答を送信する時機を決定することができる。
[0016]これに代えて、またはこれに加えて、同期エンジンは、ローカルアプリケーションを宛先とするウェブアプリケーションからのメッセージを「ローカル送信ボックス」に受信することもできる。少なくとも一部の実施では、同期エンジンは、ローカルアプリケーションにメッセージを通知し、メッセージをローカルアプリケーションに送り、かつ/または、ローカルアプリケーションが現在動作中でない場合はローカルアプリケーションをロードする。ローカルアプリケーションは、ウェブアプリケーションに情報を要求することにより、または他の同様の要求を行うことにより、メッセージに応答することができる。応答は「ローカル受信ボックス」に転送され、ウェブベースのサービスまたはアプリケーションに送信されるまでローカル受信ボックスに存在することができる。そして、同期エンジンは、ローカルデバイスのオペレーティングシステムにローカルデバイスの現在の状態およびユーザーの通信設定を照会することにより、ウェブサービスまたはアプリケーションに応答を送信する時機を決定することができる。そして、同期エンジンは、ウェブサービスまたはアプリケーションと通信して応答を送信するのに望ましい時機を決定することができる。
[0017]以下の説明では、「動作環境」と題する項で、各種実施形態が用いられることが可能なコンピューティング環境を説明する。その後、「非同期のウェブ通信」と題する項で、同期エンジンが各種のウェブベースのサービスおよびアプリケーションと非同期に通信する実施形態を説明する。次いで、「非同期のローカル通信」と題する項では、同期エンジンが各種のウェブアプリケーションおよびローカルアプリケーションと非同期に通信するコンピューティング環境を説明する。最後に、「例示的システム」と題する項で、1つまたは複数の実施形態を実施するために使用できる例示的システムを説明する。
[0018]動作環境
図1に、1つまたは複数の実施形態による動作環境100を示す。環境100は、コンピューティングデバイス102を含み、デバイス102は、1つまたは複数のプロセッサー104、1つまたは複数のコンピューター可読媒体106、コンピューター可読媒体106に常駐し、プロセッサー104による実行が可能な1つまたは複数のアプリケーション108、および、各種のウェブベースのサービスおよびアプリケーションと非同期に通信する同期エンジン110を備える。
[0019]コンピューティングデバイス102は、限定ではなく例として、デスクトップコンピューター、携帯型コンピューター、携帯情報端末(PDA)、携帯電話等の、任意の適切なコンピューティングデバイスとして実施されることができる。
[0020]コンピューター可読媒体106は、限定ではなく例として、コンピューティングデバイスに通例付属する、すべての形態の揮発性および不揮発性メモリー、ならびに/または記憶媒体を含むことができる。そのような媒体には、読み取り専用メモリー(ROM)、ランダムアクセスメモリー(RAM)、フラッシュメモリー、ハードディスク、取り外し可能媒体等が含まれる。コンピューティングデバイスの具体的な一例を図6に図示し、説明する。
[0021]ソフトウェアアプリケーション108は、限定ではなく例として、リーダー(reader)アプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、ウェブ閲覧アプリケーション、および各種の他のアプリケーション等、任意の適切な種類のアプリケーションを含むことができる。
[0022]1つまたは複数の実施形態では、同期エンジン110は、コンピューティングデバイス102がインターネット等のネットワーク112を通じて各種のウェブサービスおよびアプリケーションと非同期に通信できるようにするソフトウェアアプリケーションである。ネットワーク112は、任意種のコンピューティングネットワークでよく、典型的には企業もしくは住居を接続するローカルエリアネットワーク(LAN)、またはインターネット等のワイドエリアネットワーク(WAN)を含む。
[0023]動作環境100は、ニュースや現在の出来事、電子メールサービス、オンラインバンキング、ソーシャルネットワーク等の各種ウェブサービスを提供するウェブサイトを表す、種々のウェブサーバー114も含む。さらなる実施形態では、これらのウェブサイトは、各種のタスクまたは機能を行う、リーダーアプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション等のウェブベースのアプリケーションを提供する。
[0024]例示的動作環境100を考察したので、次いで、同期エンジン110を使用して各種のウェブサービスおよびアプリケーションと非同期に通信できる実施形態の解説に移る。
[0025]非同期のウェブ通信
1つまたは複数の実施形態では、同期エンジンにより、ローカルのコンピューティングデバイスが、各種のウェブサーバー、およびコンピューティングデバイス102等のローカルデバイスに常駐するローカルアプリケーションと非同期に通信することが可能になる。同期エンジンは、現在のネットワーク環境、ローカルデバイスの状態、およびユーザーの通信設定を評価して、ローカルコンピューティングデバイスがウェブサーバーおよびローカルアプリケーションと通信するのに望ましい時機を決定する。
[0026]図2に、同期エンジン110と、種々のソフトウェアアプリケーション108と、ウェブアプリケーション204と、オペレーティングシステム206とを備えるローカルコンピューティングデバイスを示す。
[0027]一般に、ウェブアプリケーション204で、ユーザーは、コンピューターネットワーク112をブラウズし、各種のウェブサーバー114と通信することができる。そして、ウェブサーバー114は、各種のウェブサービス(例えばニュースや現在の出来事、電子メールサービス、オンラインバンキング、ソーシャルネットワーク等)、およびソフトウェアアプリケーション(例えばリーダーアプリケーション、メディアプレーヤーアプリケーション、インスタントメッセージアプリケーション等)をユーザーに提供する。
[0028]一般に、オペレーティングシステム206は、コンピューティングデバイスのハードウェアおよびソフトウェア資源を管理し、各種のローカルアプリケーション108が動作するためのソフトウェアプラットフォームを提供する。オペレーティングシステム206は、ローカルデバイスのハードウェアおよびソフトウェア資源を管理して、各アプリケーションが各自に割り当てられたタスクを行うために必要な資源に確実にアクセスできるようにする。
[0029]最後に、同期エンジン110は、コンピューターメモリーに常駐するソフトウェアアプリケーションであり、各種のウェブサーバー114およびローカルアプリケーション108との非同期通信およびそれらの間の非同期通信を可能にする。具体的には、図の
例では、同期エンジン110は、各種のウェブサーバー114と通信するためのウェブ受信ボックス212および送信ボックス214、各種のローカルアプリケーション108と通信するためのローカル受信ボックス218および送信ボックス220、ならびに、ウェブサーバー114およびローカルアプリケーション108と通信するのに望ましい時機を決定する同期スケジューラー216を備える。
[0030]1つまたは複数の実施形態では、ウェブ受信ボックス212は、コンピューティングデバイス102によって送信または受信されるデータおよびメッセージのためのリポジトリとして機能し、一方、ウェブ送信ボックス214は、コンピューティングデバイスによって送出または送信されるメッセージのリポジトリとして機能する。一般に、ウェブ受信ボックス212および送信ボックス214により、ローカルデバイスがローカルデバイスの現在の状態および/またはユーザーの通信設定に基づいて各種のウェブサーバー114と非同期に通信することが可能になる。
[0031]ローカル受信ボックス218および送信ボックス220は、ウェブアプリケーション204および/または各種のローカルアプリケーション108間で送信されるメッセージのリポジトリとして機能する。一般に、これらのボックスは、ローカルアプリケーション108がウェブサーバー114と通信したいがウェブアプリケーション204が動作していないとき、または、ウェブアプリケーション204がウェブサーバー114と通信中であるが、ローカルアプリケーション108が動作していないときに使用することができる。一般に、メッセージは、ローカルアプリケーション108に送信されるときにはローカル送信ボックス220に保存され、ウェブアプリケーション204に送信されるときにはローカル受信ボックス218に保存される。
[0032]一般に、ウェブ受信ボックス212、ウェブ送信ボックス214、ローカル受信ボックス218、およびローカル送信ボックス220は、フラッシュメモリー、ハードドライブ、光学媒体等の不揮発性メモリーに存在する。
[0033]図3は、1つまたは複数の実施形態による方法のステップを説明する流れ図である。この方法は、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせとの関連で行うことができる。少なくとも一部の実施形態では、この方法は、図2に記載される同期エンジン110等のソフトウェアアプリケーションによって行われることができる。
[0034]ステップ302で、ウェブサーバーに常駐するウェブサービスまたはアプリケーションが、ローカルコンピューティングデバイスにメッセージを送信する。このステップは、ウェブアプリケーションがウェブページをナビゲートすることにより、またはユーザーがウェブサービスまたはソフトウェアのダウンロードを要求することにより、またはウェブサーバーを通じた通信を開始する他の方法によって開始されることができる。メッセージは、任意種類のメッセージであってよく、限定ではなく例として、ウェブページに関連付けられたHTMLコード、ソフトウェアのダウンロード、または他の適切な形態のメッセージを含むことができる。
[0035]ステップ304で、ローカルデバイスがウェブサーバーからのメッセージを受信する。メッセージは、ウェブ受信ボックス212等のウェブ受信ボックスで受信されるか、または別の受信場所からウェブ受信ボックスに転送されることができる。メッセージは、ローカルデバイスによって実行されるウェブアプリケーションがメッセージを取り出すまで、またはメッセージがウェブアプリケーションに送られるまで、ウェブ受信ボックスに格納される。
[0036]ステップ306で、同期エンジン120等の同期エンジンが、ローカルデバイスのオペレーティングシステム206を照会することにより、ウェブアプリケーションが動作中であるかどうかを判定する。これは、例えば、オペレーティングシステムにAPI呼び出しを行うことによって行うことができる。ウェブアプリケーションが動作していない場合、メッセージは、ウェブアプリケーションがロードされ、メッセージがアクセスされるまで、ステップ308でウェブ受信ボックスに残っていることができる。さらなる実施形態では、同期エンジンが、オペレーティングシステムにウェブアプリケーションをロー
ドするように指示して、ウェブアプリケーションがメッセージにアクセスできるようにする。
[0037]ステップ310で、ウェブアプリケーションがウェブサーバーからのメッセージを受信する。メッセージは、ウェブページに関連付けられたHTMLコード、ソフトウェアのダウンロード、または他の形態のデータを含むことができる。あるいは、同期エンジンがメッセージをウェブアプリケーションに転送するか、またはウェブアプリケーションにメッセージを通知してもよい。
[0038]ステップ312で、ウェブアプリケーションは、ウェブ送信ボックスに「応答」を送信することによってメッセージに返信する。応答は、ウェブページデータの要求、ソフトウェアダウンロードを行う要求、または他の種類のデータを送信/受信する要求等である。
[0039]ステップ314で、同期スケジューラーは、ウェブサーバー114に応答を送信するのに望ましい時機を決定する。一般に、同期スケジューラーは、オペレーティングシステムから入手する情報に基づいて、ウェブサーバーに応答を送信する時機を決定する。同期スケジューラー216(図2)がウェブサーバー114と通信する時機を決定する際に考慮することが可能な数個の要素またはパラメーターがある。限定ではなく例として、それらの要素には、ネットワーク接続の種類、現在のプロセッサーの使用状況、ユーザーまたはアプリケーションによって割り当てまたは設定されたメッセージの優先度または緊急度、および他の要素またはパラメーターが含まれる可能性がある。
[0040]初めに、同期スケジューラーは、オペレーティングシステムに照会して、ネットワーク接続が確立されているか、または現在確立中であるかどうかを判定することができる。ネットワーク接続が確立されていない場合、メッセージは、接続が確立されるまでウェブ送信ボックスに残っていることができる。代替実施形態では、同期スケジューラーは、メッセージを送信するためのネットワーク接続を確立するようにオペレーティングシステムに指示することができる。
[0041]ネットワーク接続が確立されている場合、同期スケジューラーは、オペレーティングシステムに照会して、そのネットワーク接続に関するいくつかの要素またはパラメーターを入手することができる。それらには、例えば、ネットワーク接続の種類(例えばDSL、WiFi、セルラー広帯域、ダイヤルアップ等)、伝送速度(例えばビット数/秒)、ネットワーク接続の安定度(例えば過去1時間のネットワークドロップアウトの回数)等が含まれ得る。この情報から、同期スケジューラーは、現在のネットワーク接続で効率的かつ確実に応答を送信できるかどうかを判定することができる。
[0042]同期スケジューラーは、次いでオペレーティングシステムに照会して、例えば現在実行中のアプリケーションの数、プロセッサーの現在の作業負荷等、各種のプロセッサーパラメーターを判定することができる。その情報から、同期スケジューラーは、プロセッサーが現在のタスクを行いながら応答を送信することが可能かどうかを判定することができる。
[0043]同期スケジューラーは、次いでオペレーティングシステムに照会して、メッセージまたは応答の優先度を判定することができる。一例では、メッセージの優先度は、ユーザーによって設定または入力された1つまたは複数の「ユーザーの通信設定」によって設定される。ユーザーの通信設定は、メッセージの重要度、メッセージの緊急度、メッセージのサイズ、メッセージの内容、メッセージの受信者等を含むことができる。代替実施形態では、メッセージの優先度は、リアルタイムで直接ユーザーに照会することによって設定される。
[0044]最後に、同期スケジューラーは、各種パラメーターを集計し、メッセージ/応答を送信するか、またはより適当もしくは好適な時を待つかを決定する。
[0045]同期スケジューラーが、メッセージ/応答を送信するのに望ましい時機を決定すると、同期エンジンはステップ316でより適当な時機を待ち、メッセージがウェブ送信ボックスに残るか、またはステップ318でウェブサーバーにメッセージ/応答を送信することができる。
[0046]ステップ320で、ウェブサーバーがメッセージ/応答を受信し、要求される機能(例えば要求されるHTMLコードで応答する、要求されるソフトウェアダウンロードを提供する、提出されたデータを格納する等)を行う。
[0047]同期エンジンによりローカルコンピューティングデバイスが各種ウェブサーバーと非同期に通信できる例示的実施形態について説明したので、次いで、アプリケーション108(図2)等のローカルアプリケーションがローカルのウェブアプリケーションと非同期に通信する実施形態を考察する。具体的には、下記の実施形態では、同期エンジンが、ウェブアプリケーションまたはローカルアプリケーションが稼働中であるかどうかを判定し、各種ウェブサーバーと非同期に通信するのに望ましい時機を確定する。
[0048]非同期のローカル通信
図4は、1つまたは複数の実施形態による、ローカルソフトウェアアプリケーションと非同期に通信する方法のステップを説明する流れ図である。少なくとも一部の実施形態では、この方法は、図2に記載の同期エンジン110等の同期エンジンを使用して行うことができる。
[0049]ステップ402で、ウェブアプリケーション204(図2)等のウェブアプリケーションが、ローカルコンピューティングデバイスに常駐する1つまたは複数のローカルアプリケーションにメッセージを送信する。メッセージは、例えば、新しいデバイスドライバもしくはデバイスドライバへのリンク、ソフトウェア更新、または他の対象データを含むことができる。
[0050]ステップ404で、メッセージが図2のローカル送信ボックス220等のローカル送信ボックスに受信されるか、または別の受信場所からローカル送信ボックスに転送される。メッセージは、ローカルアプリケーションがメッセージを取り出すまで、またはローカルアプリケーションにメッセージが送られるまで、ローカル送信ボックスに保持される。
[0051]ステップ406で、同期エンジンは、オペレーティングシステムに照会することにより、対象のローカルアプリケーションが動作中であるかどうかを判定する。ローカルアプリケーションが動作していない場合、メッセージは、ローカルアプリケーションがロードされてメッセージがアクセスされるまで、ステップ408でローカル送信ボックスに残っていることができる。さらなる実施形態では、同期エンジンが、ローカルアプリケーションをロードするようにオペレーティングシステムに指示することができ、ローカルアプリケーションがメッセージにアクセスできるようにする。
[0052]ステップ410で、ローカルアプリケーションがローカル送信ボックスからメッセージを受信する。あるいは、同期エンジンが、ローカルアプリケーションにメッセージを転送するか、またはローカルアプリケーションにメッセージを通知してもよい。
[0053]ステップ412で、ローカルアプリケーションは、図2のローカル受信ボックス218等のローカル受信ボックスに応答を送信することにより、メッセージに返信することができる。応答は、ウェブページデータのダウンロード、ソフトウェアのダウンロード、ウェブアプリケーション中のデータの更新、デジタルコンテンツの受信等の要求等である。
[0054]ステップ414で、同期エンジンは、オペレーティングシステムに照会することにより、ウェブアプリケーションが動作中であるかどうかを判定する。ウェブアプリケーションが動作していない場合、応答は、ウェブアプリケーションがロードされ、メッセージがアクセスされるまで、ステップ416でローカル受信ボックスに残っていることができる。さらなる実施形態では、同期エンジンが、ウェブアプリケーションをロードするようにオペレーティングシステムに指示することができ、それによりウェブアプリケーションはメッセージにアクセスすることができる。
[0055]ステップ418で、ウェブアプリケーションは、タスクまたは機能を行うようにウェブアプリケーションに指示する応答を受信する。タスクまたは機能は、例えば、ウェブアプリケーションを各種ウェブサーバーと通信させて、ウェブページにアクセスさせる、ソフトウェアの更新をダウンロードさせる、またはデジタルコンテンツをダウンロード
させることができる。
[0056]ステップ420で、ウェブアプリケーションは、要求されるタスクを行うために各種ウェブサーバーとの通信を確立できるかどうかを判定することができる。タスクがウェブサーバーにアクセスせずに行うことができる場合は、ウェブアプリケーションは、タスクを実行し、処理が完了する(「停止」)。あるいは、タスクが、ウェブサーバーにアクセスしないと行うことができない場合は、ウェブアプリケーションは、ネットワーク接続を確立し、1つまたは複数のウェブサーバーと通信する(ステップA)。
[0057]図5は、ウェブアプリケーションがどのように1つまたは複数のウェブサーバーと非同期に通信することができるかを説明する流れ図である。
[0058]ステップ502で、ローカルアプリケーションの応答が、1つまたは複数のウェブサーバーへの送信に備えて図2のウェブ送信ボックス214等のウェブ送信ボックスに入れられる。ステップ504で、同期スケジューラーは、例えばネットワーク接続の種類、現在のプロセッサー使用状況、ユーザーの通信設定等、オペレーティングシステムから入手する情報に基づいて、応答を送信する望ましい時機を決定する。
[0059]同期スケジューラーがメッセージ/応答を送信する時機を決定すると、同期エンジンは、ステップ506でウェブサーバーにメッセージ/応答を送信するか、または、ステップ508でウェブ送信ボックスに応答を保持してより適当な時機を待つ。
[0060]ステップ510で、ウェブサーバーは、メッセージ/応答を受信し、要求されるタスクまたは機能を行う(例えばHTMLコードで応答する、要求されるソフトウェアダウンロードを提供する等)。
[0061]同期エンジンによりローカルコンピューティングデバイスが各種ウェブサーバーおよびローカルアプリケーションと非同期に通信できる各種実施形態を説明したので、次いで、上記実施形態を実施するために利用可能な例示的コンピューティングデバイスの解説に移る。
[0062]例示的システム
図6に、上記の各種実施形態を実施することが可能な例示的なコンピューティングデバイス600を示す。コンピューティングデバイス600は、例えば、図1のコンピューティングデバイス102、またはウェブサーバー等の他の適当なコンピューティングデバイスである。
[0063]コンピューティングデバイス600は、1つまたは複数のプロセッサー602と、1つまたは複数のメモリーおよび/または記憶コンポーネント604と、1つまたは複数の入力/出力(I/O)装置606と、各種コンポーネントおよび装置が相互と通信することを可能にするバス608とを備える。
[0064]バス608は、各種のバスアーキテクチャを用いた、メモリーバスもしくはメモリーコントローラー、ペリフェラルバス、アクセラレーテッド・グラフィック・ポート、またはローカルバスを含む数種のバス構造を表す。
[0065]メモリー/記憶コンポーネント604は、1つまたは複数のコンピューター記憶装置または記憶媒体を表す。メモリーコンポーネント604は、ランダムアクセスメモリー(RAM)等の揮発性の媒体、および/または、読み取り専用メモリー(ROM)、フラッシュメモリー、光学媒体、磁気媒体等の不揮発性媒体を含むことができる。記憶コンポーネント604は、固定媒体(例えばRAM、ROM、固定ハードドライブ等)と、取り外し可能媒体(例えばフラッシュメモリードライブ、取り外し可能ハードドライブ、光ディスク等)も含むことができる。
[0066]1つまたは複数の入力/出力装置606は、ユーザーがコンピューティングデバイス600にコマンドおよび情報を入力することを可能にし、また、ユーザーおよび/または他のコンポーネントもしくは装置に対して情報を提示できるようにする。例えば、入力装置は、キーボード、ポインティングデバイス(例えばマウス、タッチパッド、スタイラス等)、マイクロフォン、スキャナー等を含むことができる。出力装置は、数例を挙げると、表示装置(例えばモニターやプロジェクター)、スピーカー、プリンター、およびネットワークカードを含むことができる。
[0067]本明細書では、各種技術は、ソフトウェアまたはプログラムモジュールとの関連で説明することができる。一般に、ソフトウェアには、タスクを行うか、または抽象データ型を実装する、アプリケーション、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。これらのモジュールおよび技術の実装は、記憶されるか、または何らかの形態のコンピューター可読媒体を介して送信されることができる。コンピューター可読媒体には、コンピューティングデバイスからアクセス可能な任意の適当な1つまたは複数の利用可能媒体を用いることができる。限定ではなく例として、コンピューター可読媒体は、「コンピューター記憶媒体」を含むことができる。
[0068]結論
各種実施形態は、ウェブブラウザーおよびローカルアプリケーションが、ローカルデバイスの現在の状態およびユーザーの通信設定に基づいて、ウェブベースのサービスおよび/またはアプリケーションと非同期に通信することを可能にする。
[0069]非同期の通信により、インターネット接続が現在確立されているかどうかに関係なく、またはインターネット接続が不十分または準最適であるときに、ウェブブラウザーおよびローカルアプリケーションがウェブベースのアプリケーションと通信することが可能になる。
[0070]本発明の主題について、構造的特徴および/または方法ステップに固有の文言で説明したが、添付の特許請求の範囲に定義される主題は、必ずしも、記載されるそれら具体的な特徴またはステップに限定されないことを理解されたい。むしろ、具体的な特徴およびステップは、クレームに記載される主題を実施する例示的形態として開示されるものである。

Claims (20)

  1. 非同期通信の方法であって、
    1つまたは複数のウェブサーバーから、ローカルデバイス(local device)に存在する(residing on)第1のボックス(box)に1つまたは複数のメッセージを受信するステップと、
    1つまたは複数のローカルウェブアプリケーションが、動作中(in session)か否かを判断するステップであって、当該1つまたは複数のローカルウェブアプリケーションが、前記1つまたは複数のメッセージの、意図される受信者であり、当該判断が、当該1つまたは複数のローカルウェブアプリケーションのために前記ローカルデバイスにおいて実行されるべき、メッセージに関連する行為(action)を確定する(ascertain)ために実行され、当該メッセージに関連する行為が、ウェブブラウザからの要求に応じた、ウェブページに関連付けられたHTMLコード、ソフトウェアのダウンロードを含むもの、と、
    前記1つまたは複数のローカルウェブアプリケーションのために、前記ローカルデバイスで、前記メッセージに関連する行為を実行することに応じて、1つまたは複数のローカルウェブアプリケーションからの、前記1つまたは複数のメッセージに対する1つまたは複数の応答(responses)を、前記ローカルデバイスに存在する第2のボックスで、受信するステップと、
    前記第2のボックスから前記1つまたは複数のウェブサーバーに前記1つまたは複数の応答を送信する時機(a time)を決定するステップと、
    決定された時機に、前記第2のボックスから前記1つまたは複数のウェブサーバーに前記1つまたは複数の応答を送信するステップと
    を含む方法。
  2. 前記時機は、ネットワーク接続、プロセッサーの使用状況、またはユーザーの通信設定、の少なくとも1つに基づいて決定される、請求項1に記載の方法。
  3. 前記ネットワーク接続は、ネットワーク接続の種類、伝送速度、または前記ネットワーク接続の安定度(stability)、の少なくとも1つに基づいて評価される、請求項2に記載の方法。
  4. 前記ユーザーの通信設定は、メッセージの重要度、メッセージの緊急度、メッセージのサイズ、メッセージの内容、メッセージの受信者、またはユーザー入力、の1つまたは複数を含む、請求項2に記載の方法。
  5. 前記1つまたは複数のローカルウェブアプリケーションは、少なくとも1つのウェブブラウザーを含み、前記1つまたは複数の応答は、1つもしくは複数のデータ要求(requests)および/または1つもしくは複数のデータ提出(submissions)を含む、請求項1に記載の方法。
  6. 前記1つまたは複数のローカルウェブアプリケーションが、動作中であるという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記1つまたは複数のメッセージを、前記第1のボックスから、前記1つまたは複数のローカルウェブアプリケーションに転送することを含むものを更に含む、
    請求項1に記載の方法。
  7. 前記1つまたは複数のローカルウェブアプリケーションが、動作中であるという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記1つまたは複数のローカルウェブアプリケーションに、前記1つまたは複数のメッセージを通知することを含むものを更に含む、
    請求項1に記載の方法。
  8. 前記1つまたは複数のローカルウェブアプリケーションが、動作中でないという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記1つまたは複数のローカルウェブアプリケーションをロードすることを含むものを更に含む、
    請求項1に記載の方法。
  9. ウェブアプリケーションと非同期に通信する方法であって、
    ローカルデバイスに常駐する(residing on)1つまたは複数のウェブアプリケーションから、第1のボックスに1つまたは複数のメッセージを受信するステップと、
    1つまたは複数のローカルアプリケーションが動作中か否か、及び、当該1つまたは複数のローカルアプリケーションが動作中でないという判断に応じて、当該1つまたは複数のローカルアプリケーションをロードすべきか、を判断するステップであって、当該1つまたは複数のローカルアプリケーションが、当該1つまたは複数のウェブアプリケーションからの、前記1つまたは複数のメッセージの、意図される受信者であり、当該判断が、実行されるべき、メッセージに関連する行為を確定するために実行され、当該メッセージに関連する行為が、ウェブブラウザからの要求に応じた、ウェブページに関連付けられたHTMLコード、ソフトウェアのダウンロードを含むもの、と、
    前記メッセージに関連する行為を実行することに応じて、前記ローカルデバイスに常駐する1つまたは複数のローカルアプリケーションから、前記1つまたは複数のメッセージに対する1つまたは複数の応答を第2のボックスに受信するステップと、
    1つまたは複数のウェブサービスに送信するために、前記1つまたは複数の応答を前記第2のボックスから第3のボックスに転送するステップと、
    前記1つまたは複数の応答を前記1つまたは複数のウェブサービスに送信する時機を決定するステップと、
    決定された時機に、前記1つまたは複数の応答を前記第3のボックスから前記1つまたは複数のウェブサービスに送信するステップと
    を含む方法。
  10. 前記1つまたは複数のウェブアプリケーションが、ウェブブラウザーアプリケーションを含む、請求項9に記載の方法。
  11. 前記時機は、ネットワーク接続、プロセッサーの使用状況、またはユーザーの通信設定、の少なくとも1つに基づいて決定される、請求項9に記載の方法。
  12. 前記ネットワーク接続は、ネットワーク接続の種類、伝送速度、または前記ネットワーク接続の安定度、の少なくとも1つに基づいて評価される、請求項11に記載の方法。
  13. 前記1つまたは複数のローカルアプリケーションが、動作中であるという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記1つまたは複数のメッセージを、前記第1のボックスから、前記1つまたは複数のローカルアプリケーションに転送することを含むものを更に含む、
    請求項9に記載の方法。
  14. 前記1つまたは複数のローカルアプリケーションが、動作中であるという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記1つまたは複数のローカルアプリケーションに、前記第1のボックス内の前記1つまたは複数のメッセージを通知することを含むものを更に含む、
    請求項9に記載の方法。
  15. 前記1つまたは複数のローカルアプリケーションが、動作中でないという判断に応じて、前記メッセージに関連する行為を実行するステップであって、前記メッセージに関連する行為が、前記1つまたは複数のローカルアプリケーションをロードすることを含むものを更に含む、
    請求項9に記載の方法。
  16. ネットワークと通信するためのシステムであって、当該システムが、
    少なくとも1つのプロセッサと、
    コンピュータ読取り可能な媒体であって、当該コンピュータ読取り可能な媒体の中に、複数の命令が記憶されるものと、
    を有し、
    前記命令が、前記少なくとも1つのプロセッサによって実行されたときに、
    1つまたは複数のウェブサービスから1つまたはそれより多いメッセ−ジを非同期に受信するように構成されたウェブ受信ボックスと、
    1つまたは複数のウェブアプリケーションから、前記1つまたは複数のメッセージに対する1つまたは複数の応答を非同期に(asynchronously)受信するように構成されたウェブ送信ボックスと、
    同期スケジューラーと、
    を実装(implement)し、
    前記同期スケジューラーが、以下のステップ、即ち、
    前記1つまたは複数のウェブアプリケーションが、動作中であるか、を判断し、そして、前記1つまたは複数のウェブアプリケーションが、動作中でないという判断に応じて、前記1つまたは複数のウェブアプリケーションをロードすべきかを判断するステップであって、前記1つまたは複数のウェブアプリケーションが、前記1つまたは複数のウェブサービスからの、前記1つまたは複数のメッセージの、意図される受信者であり、前記判断が、前記1つまたは複数のローカルウェブアプリケーションのために、ローカルで実行されるべき、メッセージに関連する行為を確定するために実行され、当該メッセージに関連する行為が、ウェブブラウザからの要求に応じた、ウェブページに関連付けられたHTMLコード、ソフトウェアのダウンロードを含むもの、と、
    前記メッセージに関連する行為を、前記1つまたは複数のローカルウェブアプリケーションのために、ローカルで実行することに応じて、前記1つまたは複数のローカルウェブアプリケーションから受信された、前記ウェブ送信ボックスに存在する、前記1つまたは複数の応答を、前記1つまたは複数のウェブサービスに送信するための時機を判断するステップであって、前記同期スケジューラーが、コンピュータオペレーティングシステムに、ネットワーク接続、プロセッサの使用状況、または、ユーザの通信設定のうちの、少なくとも1つを確定するために、照会することによって、前記1つまたは複数の応答を送信するための時機を判断するように構成されるものと、
    を実行するように構成される、
    システム。
  17. 前記1つまたは複数のウェブアプリケーションは、前記ウェブ受信ボックスから前記1つまたはそれより多いメッセ−ジを取り出し、前記1つまたは複数のメッセージを使用して動作を行うように構成される
    、請求項16に記載のシステム。
  18. 前記1つまたは複数のウェブアプリケーションから1つまたは複数のメッセージを受信するように構成されたローカル送信ボックスをさらに備え、1つまたは複数のローカルアプリケーションは、前記ローカル送信ボックスから前記1つまたは複数のメッセージを受信する、請求項16に記載のシステム。
  19. 前記1つまたは複数のローカルアプリケーションから、前記1つまたは複数のメッセージに対する1つまたは複数の応答を受信するように構成されたローカル受信ボックスをさらに備え、前記1つまたは複数のウェブアプリケーションは、前記1つまたは複数のウェブサービスに送信するために、前記ローカル送信ボックスから前記1つまたは複数の応答を取り出す(retrieve)、請求項16に記載のシステム。
  20. 前記1つまたは複数のウェブアプリケーションは、前記1つまたは複数のウェブサービスに送信するために、前記ローカル受信ボックスから前記ウェブ送信ボックスに前記1つまたは複数のメッセージを転送する(transfer)、請求項19に記載のシステム。
JP2011526946A 2008-09-15 2009-09-09 ウェブアプリケーションのための非同期待ち行列型メッセージング Expired - Fee Related JP5611952B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/210,225 2008-09-15
US12/210,225 US8949344B2 (en) 2008-09-15 2008-09-15 Asynchronous queued messaging for web applications
PCT/US2009/056397 WO2010030695A2 (en) 2008-09-15 2009-09-09 Asynchronous queued messaging for web applications

Publications (2)

Publication Number Publication Date
JP2012503231A JP2012503231A (ja) 2012-02-02
JP5611952B2 true JP5611952B2 (ja) 2014-10-22

Family

ID=42005725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011526946A Expired - Fee Related JP5611952B2 (ja) 2008-09-15 2009-09-09 ウェブアプリケーションのための非同期待ち行列型メッセージング

Country Status (7)

Country Link
US (1) US8949344B2 (ja)
EP (1) EP2329393A4 (ja)
JP (1) JP5611952B2 (ja)
CN (1) CN102150151B (ja)
AR (1) AR073379A1 (ja)
TW (1) TWI493356B (ja)
WO (1) WO2010030695A2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9712600B2 (en) * 2012-12-06 2017-07-18 Facebook, Inc. Transmission of notifications for retrieving an application on a mobile client device
US11579855B2 (en) * 2017-12-15 2023-02-14 Microsoft Technology Licensing Llc Reduced memory consumption of compiler-transformed asynchronous methods
US10726476B2 (en) * 2018-03-23 2020-07-28 Ronald M. Harstad Systems and methods for advanced auction management
US11847241B1 (en) * 2018-04-20 2023-12-19 Amazon Technologies, Inc. Management of service permissions
CN110597607B (zh) * 2019-08-26 2022-05-17 东软集团股份有限公司 异步应用程序的执行方法、装置、存储介质及电子设备

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0962637A (ja) 1995-08-28 1997-03-07 Hitachi Ltd プログラム実行管理方法
GB2313524A (en) * 1996-05-24 1997-11-26 Ibm Providing communications links in a computer network
US6070184A (en) 1997-08-28 2000-05-30 International Business Machines Corporation Server-side asynchronous form management
US6366159B1 (en) 1998-02-23 2002-04-02 Intel Corporation Dynamic bias circuitry utilizing early voltage clamp and translinear techniques
US6658485B1 (en) * 1998-10-19 2003-12-02 International Business Machines Corporation Dynamic priority-based scheduling in a message queuing system
GB2349545A (en) 1999-04-26 2000-11-01 Nokia Mobile Phones Ltd Terminal for providing an application using a browser
US6493756B1 (en) * 1999-10-28 2002-12-10 Networks Associates, Inc. System and method for dynamically sensing an asynchronous network event within a modular framework for network event processing
US6665867B1 (en) * 2000-07-06 2003-12-16 International Business Machines Corporation Self-propagating software objects and applications
US7370289B1 (en) * 2001-03-07 2008-05-06 Palmsource, Inc. Method and apparatus for notification on an electronic handheld device using an attention manager
US7003570B2 (en) * 2001-10-05 2006-02-21 Bea Systems, Inc. System for integrating java servlets with asynchronous messages
US20030093576A1 (en) * 2001-11-13 2003-05-15 International Business Machines Corporation Method and system for message management
US7702739B1 (en) * 2002-10-01 2010-04-20 Bao Tran Efficient transactional messaging between loosely coupled client and server over multiple intermittent networks with policy based routing
GB0226596D0 (en) * 2002-11-14 2002-12-24 Commtag Ltd Data communication systems
US6889267B2 (en) 2002-11-26 2005-05-03 Intel Corporation Asynchronous communication protocol using efficient data transfer formats
US7620688B2 (en) 2003-01-03 2009-11-17 Microsoft Corporation Progress mode for electronic mail component
US7302681B2 (en) * 2003-02-27 2007-11-27 Dell Products L.P. Method and system for customized information handling system support updates
US7272782B2 (en) * 2003-12-19 2007-09-18 Backweb Technologies, Inc. System and method for providing offline web application, page, and form access in a networked environment
EP1605649B1 (de) * 2004-06-02 2006-08-09 Ixos Software AG Verfahren und Vorrichtung zum Verwalten von elektronischen Nachrichten
US7490299B2 (en) * 2004-06-30 2009-02-10 International Business Machines Corporation System and method for handling unexpected focus change messages in a computing device
US7707585B2 (en) * 2004-11-05 2010-04-27 International Business Machines Corporation Method, system, and program product for monitoring message flow in a message queuing system
EP1715430A1 (en) 2005-04-18 2006-10-25 Research In Motion Limited System and method for exposing a synchronous web service as a notification web service
US20060242246A1 (en) * 2005-04-20 2006-10-26 International Business Machines Corporation Managing the delivery of queued instant messages
US7496037B2 (en) * 2005-06-14 2009-02-24 International Business Machines Corporation Apparatus, system, and method for facilitating delivery of asynchronous response messages
EP1775911B1 (en) 2005-10-13 2018-02-28 BlackBerry Limited System and method for providing asynchronous notifications using synchronous data
WO2007064878A2 (en) * 2005-12-01 2007-06-07 Firestar Software, Inc. System and method for exchanging information among exchange applications
US20070234195A1 (en) * 2006-04-03 2007-10-04 National Instruments Corporation Simultaneous update of a plurality of user interface elements displayed in a web browser
US7962159B2 (en) * 2006-04-25 2011-06-14 International Business Machines Corporation Method and system for receiving data on a portable device
US7650390B2 (en) * 2006-06-01 2010-01-19 Roam Data Inc System and method for playing rich internet applications in remote computing devices
CN1949774B (zh) * 2006-11-02 2010-04-07 华为技术有限公司 一种Web应用程序会话管理方法与装置
US20080162728A1 (en) * 2007-01-03 2008-07-03 Microsoft Corporation Synchronization protocol for loosely coupled devices
US9516116B2 (en) * 2008-06-06 2016-12-06 Apple Inc. Managing notification service connections

Also Published As

Publication number Publication date
WO2010030695A2 (en) 2010-03-18
AR073379A1 (es) 2010-11-03
CN102150151A (zh) 2011-08-10
JP2012503231A (ja) 2012-02-02
TW201015342A (en) 2010-04-16
EP2329393A2 (en) 2011-06-08
US20100070586A1 (en) 2010-03-18
TWI493356B (zh) 2015-07-21
CN102150151B (zh) 2013-10-30
US8949344B2 (en) 2015-02-03
WO2010030695A3 (en) 2010-06-24
EP2329393A4 (en) 2013-04-24

Similar Documents

Publication Publication Date Title
US11689489B2 (en) Message history display system and method
US10986062B2 (en) Subscription transfer
US20120079043A1 (en) Method, apparatus and system for accessing an application across a plurality of computers
US8606850B2 (en) Method, apparatus and system for controlling transmission of an attachment to an email using a plurality of computers
JP5611952B2 (ja) ウェブアプリケーションのための非同期待ち行列型メッセージング
US20120079063A1 (en) Method, apparatus and system for providing event notifications across a plurality of computers
US20120079008A1 (en) Method, apparatus and system for providing event notifications across a plurality of computers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120802

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131023

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140701

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140709

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140814

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140903

R150 Certificate of patent or registration of utility model

Ref document number: 5611952

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees