JP2011076603A - 断続的接続環境におけるリアル・タイム・アプリケーションの性能を改善するための装置、システム、及び方法 - Google Patents

断続的接続環境におけるリアル・タイム・アプリケーションの性能を改善するための装置、システム、及び方法 Download PDF

Info

Publication number
JP2011076603A
JP2011076603A JP2010213514A JP2010213514A JP2011076603A JP 2011076603 A JP2011076603 A JP 2011076603A JP 2010213514 A JP2010213514 A JP 2010213514A JP 2010213514 A JP2010213514 A JP 2010213514A JP 2011076603 A JP2011076603 A JP 2011076603A
Authority
JP
Japan
Prior art keywords
broker
application instance
connection
event
events
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
JP2010213514A
Other languages
English (en)
Inventor
Fernando J Salazar
フェルナンド・ジェイ・サラザール
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2011076603A publication Critical patent/JP2011076603A/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/14Session management
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】 断続的接続によって接続されたアプリケーション・インスタンス間においてイベントを配信するための装置、システム、及び方法を提供する。
【解決手段】 アプリケーション・インスタンスには、インターフェースに従って互いに及びそれぞれのアプリケーション・インスタンスと通信するブローカが提供される。アプリケーション・インスタンスは、ブローカにイベントを提供し、ブローカはイベントをシステムにおける他のブローカに転送する。特定のブローカに届かない場合は、ブローカは、ローカル・データ・ストアにおいてイベントをキューに入れ、接続を監視し、接続が再確立されるとそれらを送信する。同様に、ブローカは、接続が非アクティブであった間に通信することができなかった遠隔ブローカと関連するアプリケーション・インスタンスによって生成されたイベントを受信する。その結果、システムのユーザには、所与の時間におけるシステムの所与の接続状態を利用可能な、アプリケーション全体の最良で最も完全な状態が提供される。
【選択図】 図1

Description

本発明は、断続的接続によって接続された複数ソースからのリアル・タイム・データを必要とするアプリケーションの性能を改善することに関する。
ますます接続度を高める世界において、多くのアプリケーションがインターネット接続を利用して動作している。電子メールなどの特定のアプリケーションは、その性質上、接続が断続的な場合であっても良好に動作することができる。例えば、ユーザが電子メールを作成し、送信するとする。電子メールは同期的に又は瞬間的に動作するように設定されていないので、その瞬間に電子メール・クライアントがインターネットに接続できなければ、電子メール・クライアントは後で接続が確立されるまで待ち、その後、電子メールを送信すると同時に、ユーザへの電子メールを受信することができる。従って、ネットワークが断続的に利用可能な場合であっても、特定のアプリケーションは、接続がアクティブであるときに機会に合わせてデータを転送することによって、良好に作動することができる。
しかしながら、他のアプリケーションは、良好に機能するために継続的接続を必要とする。例えば、インスタント・メッセージ・プログラム(IM)は、複数ユーザがテキスト・ベースのメッセージをリアル・タイムで共有することを可能にする。ユーザ間の接続が失われた場合、IMプログラムを使うことは困難である。そして、接続がユーザのサブセット間のみで失われた場合(例えば、ユーザAとユーザBは引き続き接続されており、ユーザCとユーザDは引き続き接続されているが、この2つのグループの間の接続が失われた場合)、どちらのサブセットも他のサブセットで何が起きているかを知ることはできない。一旦接続が回復されると、会話の状態を同期することは困難である。
断続的接続は、ますます一般的になりつつある。例えば、電話及びネットブックといったモバイル・デバイスの数が増すにつれて、ユーザが他者との接続に入り込んだり、他者との接続から出て行ったりする可能性も増す。別の例においては、海上の船舶がローカル・ネットワークを実装して、他の船舶が通信範囲内にあるときに接続できる場合がある。しかしながら、船舶は、互いの通信範囲内に進入することもあればそこから出て行くこともあり得る。
IMの会話ストリームは貴重なリソースとなり得るので、そのストリームを将来の用途のために保持し保存することは有用であろう。さらに、ユーザのサブセットが、接続が失われていた間に他のサブセット間で何が論じられたのかについての更新を受け取ることができるようにすることは有益であろう。オンライン・ミーティング及びスクリーン共有といった他のアプリケーションは、同様に、接続が修復されたときにログを作成する能力又はユーザを更新する能力によって利益を得ることができる。
以上の議論から、接続が断続的である場合に高度に分散された同期的協働システムを配置することを可能にする装置、システム、及び方法に対する必要性が存在することは明らかである。
本発明は、当該技術分野の現在の状態に対応して開発されたものであり、特に、現在利用可能なシステムによって未だ完全には解決されていない当該技術分野における問題及び必要性に対応して開発されたものである。従って、本発明は、断続的接続によってブローカと接続されているアプリケーション・インスタンスにイベントを配信するための装置、システム、及び方法を提供するように開発された。
一実施形態においては、本発明は、断続的接続によってそのブローカと接続されているアプリケーション・インスタンスにイベントを配信するブローカのためのコンピュータ実装方法として実現される。本方法は、ブローカが、そのブローカに永続的接続によって接続された第1のアプリケーション・インスタンスからイベントを受信し、そのイベントをローカルにキューに入れることを含むことができる。次いで、ブローカは、そのブローカと第2のアプリケーション・インスタンスとの間の断続的接続の接続状態をチェックし、断続的接続がアクティブになったときに、ローカルにキューに入れられたイベントを断続的接続によって第2のアプリケーション・インスタンスに送信することができる。同様にして、ブローカは、断続的接続がアクティブであるときに、第2のアプリケーション・インスタンスによって生成されて遠隔的にキューに入れられたイベントを第2のアプリケーション・インスタンスから受信することができる。第2のアプリケーション・インスタンスは、これらのイベントを、遠隔ブローカを通じて送信することができる。ブローカは、遠隔的にキューに入れられたイベントを、永続的接続によってそのブローカに接続された第1のアプリケーション・インスタンスに送信する。
特定の実施形態においては、特定の断続的接続は、他の断続的接続がアクティブでない間にアクティブになり得る。ブローカは、第1のアプリケーション・インスタンスからのイベントを、現在アクティブである断続的接続によって接続されたアプリケーション・インスタンスに配信する一方で、そのブローカと通信状態にないアプリケーション・インスタンス(例えば上述された第2のアプリケーション・インスタンス)のために、後の時点で送信されることになるイベントをローカルにキューに入れることができる。
ブローカは、特定の実施形態においては、ローカルにキューに入れられたイベント及び遠隔的にキューに入れられたイベントを交換するシステムにおいて遠隔ブローカの配信リストを保持することができる。そのような実施形態においては、ブローカは、ローカルにキューに入れられたイベントを関連する遠隔ブローカに送信することによって、そのイベントをアプリケーション・インスタンスに配信することができる。
特定の実施形態においては、ブローカは、永続的に接続されたアプリケーション・インスタンス及び他のブローカに、イベント・インターフェースを提供することができる。アプリケーション・インスタンス及び遠隔ブローカは、イベント・インターフェースに従ってブローカにイベントを提出し、ブローカからイベントを受信することができる。
特定の実施形態においては、ブローカのシステムは、システム内のブローカと通信してブローカからイベントを受信するハブ・ブローカを含むことができる。そのような実施形態においては、ハブ・ブローカは、システム内のブローカ間のイベントの交換を管理することができる。
本明細書の全体を通じて、特徴、利点、又は同様の用語への言及は、本発明を用いて実現することができる特徴及び利点の全てが本発明のいずれかの単一の実施形態に存在すべきであること、又は実際に存在していることを意味しない。寧ろ、特徴及び利点に言及する用語は、一実施形態に関して述べられた特定の特徴、利点、又は特性が、本発明の少なくとも1つの実施形態に含まれることを意味するものと理解される。従って、特徴及び利点、並びに同様の用語についての議論は、本明細書の全体を通じて、必ずというわけではないが同一の実施形態を指すことがある。
さらにまた、本発明の説明された特徴、利点、及び特性は、1つ又は複数の実施形態においていずれかの適切な手法で組み合わせることができる。当業者であれば、特定の実施形態の1つ又は複数の特定の特徴又は利点なしでも本発明を実施することができることを認識するであろう。他の例を挙げれば、本発明の全ての実施形態に存在するとは限らない付加的な特徴及び利点が、特定の実施形態において認識される場合がある。
本発明のこれらの特徴及び利点は、以下の説明及び添付の特許請求の範囲から一層完全に明らかとなるか、或いは本明細書で説明する本発明の実際により理解することができる。
別個のアプリケーション・インスタンス間でイベントを共有するためのシステム100の一実施形態を示す概略的なブロック図である。 イベントの共有を容易にするブローカの一実施形態を示す概略的なブロック図である。 イベントを共有する複数のブローカを含むシステムの一実施形態を示す概略的なブロック図である。 ハブ・ブローカを用いてイベントを共有する複数のブローカを含むシステムの一実施形態を示す概略的なブロック図である。 別個のアプリケーション・インスタンス間でイベントを共有するための方法の一実施形態を示す概略的なフローチャート図である。
本発明の利点がより容易に理解されるように、上記で簡単に説明された本発明のより具体的な説明が、添付の図面において示される特定の実施形態の参照によって示される。これらの図面は本発明の典型的な実施形態のみを示し、従って、その範囲を限定するものと見なされるものではないと理解しつつ、本発明は添付の図面の使用を通じた付加的な具体性及び詳細と共に記載され、説明されることになる。
当業者には認識されるように、本発明の態様は、システム、方法、又はコンピュータ・プログラム製品として実体化することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロ・コードなどを含む)、又は、ソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形態を取ることができ、これらは全てここでは一般に「回路」、「モジュール」、又は「システム」と呼ぶことができる。さらにまた、本発明の態様は、コンピュータ可読プログラム・コードが組み込まれた(1つ又は複数のコンピュータ可読媒体に組み込んだ)コンピュータ・プログラム(製品)の形態を取ることができる。
本明細書において説明される機能ユニットの多くは、それらの実施の独立性を特に強調するために、モジュールと表記されている。例えば、モジュールは、カスタムVLSI回路若しくはゲート・アレイを含むハードウェア回路、論理チップなどの既製の半導体、トランジスタ、又は他の別個のコンポーネントとして実装することができる。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ論理、プログラマブル論理デバイスなどといったプログラム可能なハードウェア・デバイスとして実装することもできる。
モジュールはまた、種々の型のプロセッサにより実行するためのソフトウェア内に実装することができる。実行可能コードの識別されるモジュールは、例えば、オブジェクト、プロシージャ、又は関数として編成することができるコンピュータ命令の、例えば1つ又は複数の物理又は論理ブロックを含むことができる。しかし識別されるモジュールの実行ファイルは物理的に一カ所に配置する必要はなく、論理的に結合されたときにモジュールを含んでモジュールの規定の目的を達成する、異なる位置に格納された異なる命令を含むことができる。
実際には、実行可能コードのモジュールは、単一の命令又は多数の命令とすることができ、幾つかの異なるコード・セグメントにわたって、異なるプログラムの間で、及び、幾つかのメモリ・デバイス間にわたって、分散させることもできる。同様に、動作データは、本明細書においてはモジュール内部において特定して示すことがあり、いずれかの適切な形態で組み込み、いずれかの適切なタイプのデータ構造内で編成することができる。動作データは、単一のデータ・セットとしてまとめるか、又は、異なる記憶装置を含む異なる場所にわたって分散させることができ、システム又はネットワーク上の単なる電気信号として、少なくとも部分的に存在することができる。モジュール又はモジュールの一部がソフトウェアで実装される場合は、そのソフトウェア部分は、1つ又は複数のコンピュータ可読媒体に格納されることができる。
1つ又は複数のコンピュータ可読媒体の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、又は、コンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光学、電磁気、赤外線、又は半導体のシステム、装置、若しくはデバイス、又は上記のいずれかの適切な組み合わせとすることができるが、これらに限定されるものではない。
コンピュータ可読ストレージ媒体のより詳細な例(非網羅的なリスト)は、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、又は上記のいずれかの適切な組み合わせを含む。本明細書の文脈では、コンピュータ可読ストレージ媒体とは、命令実行システム、装置、若しくはデバイスによって又はこれらと接続して用いるためのプログラムを含む又は格納することができる任意の有形の媒体とすることがある。
コンピュータ可読信号媒体は、例えば、ベースバンドにおいて又は搬送波の一部としてコンピュータ可読プログラム・コードが組み込まれた伝搬データ信号を含むことができる。このような伝搬信号は、電磁気信号、光信号、又はそのいずれかの適切な組み合わせを含むがこれらに限定されない種々の異なる形態のうちのいずれをも取ることができる。コンピュータ可読信号媒体は、命令実行システム、装置、若しくはデバイスによって又はこれらと共に用いるためのプログラムを通信し、伝搬し、又は搬送することができて、且つコンピュータ可読ストレージ媒体ではない、任意のコンピュータ可読媒体とすることができる。コンピュータ可読媒体上に組み込まれたプログラム・コードは、ワイヤレス、有線、光ファイバ・ケーブル、RFなど又は上記のいずれかの適切な組み合わせを含むがこれらに限定されない、いずれかの適切な媒体を用いて伝送することができる。
本発明の態様に関する操作を実行するためのコンピュータ・プログラム・コードは、Java、SmallTalk、C++などのようなオブジェクト指向型プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型のソフトウェア・パッケージとして、一部はユーザのコンピュータ上で且つ一部は遠隔コンピュータ上で、又は、完全に遠隔コンピュータ若しくはサーバ上で実行させることができる。後者の場合には、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)又は広域エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続することができ、又は、(例えば、インターネット・サービス・プロバイダを使い、インターネットを通じて)外部コンピュータへの接続を行うことができる。
本明細書の全体を通じて、「1つの実施形態」、「一実施形態」、又は同様の用語への言及は、その実施形態に関連して説明された特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態に含まれていることを意味する。従って、「1つの実施形態においては」、「一実施形態においては」といった語句、又は同様の用語の出現は、本明細書の全体を通じて、必ずというわけではないが全て同一の実施形態を指すことがある。
さらに、本発明の説明される特徴、構造、又は特性は、1つ又は複数の実施形態においていずれかの適切な方法で組み合わせることができる。以下の説明においては、本発明の実施形態が完全に理解されるように、プログラミング、ソフトウェア・モジュール、ユーザ選択、ネットワーク・トランザクション、データベース照会、データベース構造、ハードウェア・モジュール、ハードウェア回路、ハードウェア・チップなどの例のような多数の特定の細部が提供される。しかしながら、当業者であれば、特定の細部の1つ又は複数を用いることなく、又は、他の方法、コンポーネント、材料などを用いて、本発明を実施できることが分かるであろう。他の場合には、本発明の態様を不明瞭なものにしないように、周知の構造、材料、又は動作は、詳細に示すことも説明することもない。
本発明の態様は、本発明の実施形態による方法、装置、システム、及びコンピュータ・プログラム(製品)の概略的なフローチャート図及び/又は概略的なブロック図を参照して以下で説明される。概略的なフローチャート図及び/又は概略的なブロック図の各ブロック、及び、概略的なフローチャート図及び/又は概略的なブロック図におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに提供してマシンを生成し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、概略的なフローチャート図及び/又は概略的なブロック図のブロック又は複数のブロックにおいて指定される機能/動作を実装するための手段を作り出すようにすることができる。
これらのコンピュータ・プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスが特定の仕方で機能するように指示することができるコンピュータ可読媒体に格納し、それにより、コンピュータ可読媒体に格納された命令が、概略的なフローチャート図及び/又は概略的なブロック図のブロック又は複数のブロックにおいて指定される機能/動作を実装する命令を含む製品を生成するようにすることができる。
また、コンピュータ・プログラム命令をコンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードして、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で一連の動作ステップを実施させて、それにより、コンピュータ又は他のプログラム可能データ処理装置上で実行される命令が、フローチャート及び/又はブロック図のブロック又は複数のブロックにおいて指定された機能/動作を実装するためのプロセスを提供するようにコンピュータ実装されたプロセスを生成させることができる。
図面の中の概略的なフローチャート図及び/又は概略的なブロック図は、本発明の種々の実施形態による装置、システム、方法、及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、及び操作を例示する。この点に関して、概略的なフローチャート図及び/又は概略的なブロック図の中の各ブロックは、1つ又は複数の特定の論理機能を実装するための1つ又は複数の実行可能命令を含むコードのモジュール、セグメント、又は部分を表すことができる。
また、幾つかの代替的な実装では、ブロックの中に表記された機能は、図面に表記された順序通りに生じない場合があることに留意されたい。例えば、関与する機能によっては、連続して示された2つのブロックを、実際には、実質的に同時に実行することができ、又は、ブロックが逆の順序で実行される場合もある。図示される図面の1つ又は複数のブロック、又はその一部に対し、機能、論理、又は効果の点で等価な他のステップ及び方法を考えることができる。
フローチャート及び/又はブロック図においては種々の矢印タイプ及び線種が使用されることがあるが、これらは対応する実施形態の範囲を限定するものではないと理解される。実際に、幾つかの矢印又は他のコネクタが、図示される実施形態の論理フローのみを示すために用いられることがある。例えば、矢印は、示される実施形態の列挙されたステップ間の不特定の持続時間にわたる待ち時間又は監視時間を示すことがある。また、ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図におけるブロックの組み合わせは、指定された機能又は動作を実施する専用ハードウェア・ベースのシステムによって、又は、専用ハードウェアとコンピュータ命令の組み合わせによって、実装できることに留意されたい。
図1は、断続的接続によってブローカ110及び130と接続されているアプリケーション・インスタンス120及び140にイベントを配信するためのシステム100の一実施形態を示す。図示された実施形態においては、システム100は、1つのアプリケーション・インスタンス120及び対応するブローカ110と、別のアプリケーション・インスタンス140及びブローカ130とを含む。2つのブローカを区別するために、ブローカ110は第1ブローカ、ブローカ130は第2ブローカと呼ばれる場合がある。同様に、アプリケーション・インスタンス120とアプリケーション・インスタンス140とが区別される場合がある。しかしながら、システム100は、いずれかの特定の数のブローカ又はアプリケーション・インスタンスに限定されるものではなく、特定の実施形態においては、システム100は多数のブローカ及びアプリケーション・インスタンスを含むことができる。
アプリケーション・インスタンス120は、ユーザ114a−c及びアプリケーション・サーバ112を含むものとして図示される。本明細書において用いられる用語としてのアプリケーション・インスタンスは、アプリケーション・インスタンス内のユーザが永続的接続を通じて常に利用可能な1つ又は複数の同期したアプリケーション環境を指す。アプリケーション・インスタンスは、単一の場所又は単一のモバイル・ユニットに対応する。永続的接続とは、適切に機能しているときに、アプリケーション・インスタンス内のユーザとアプリケーション・サーバとの間に継続的な接続を提供する接続である。
例えば、IMアプリケーション・インスタンス120は、アプリケーション・サーバ112として動作するサーバ・コンポーネントと、ユーザ114a−cの機能を果たすマシン上で動作するクライアント・コンポーネントと、を有することができる。アプリケーション・サーバ112は、ユーザ114a−cにとってローカルであり、理想的には、永続的接続を通じてユーザ114a−cが継続的に利用可能である。永続的接続は、例えば、有線接続又は無線接続とすることができる。従って、ユーザ114a−cは、アプリケーション・サーバ112と個々のマシン上の対応するクライアント・コンポーネントとを用いて、常に互いに連絡を取り合っている。例えば、IMアプリケーション・インスタンス120において、アプリケーション・サーバ112は、リアルタイム・セッションを保持し、ユーザ114a−cからのポストを受け付け、ユーザ114a−cに更新を送信し、他のIMサーバ機能を実施することができる。アプリケーション・サーバ112はまた、ポスト、アップロード・ファイルなどといったアプリケーション・アーチファクトの永続的ストレージを提供するローカル・データ・ストアと対話することができる。
ブローカ110は、永続的接続を通じてアプリケーション・インスタンス120に接続している。ブローカ110は、ブローカ110が断続的接続によってアプリケーション・インスタンス140と通信できるようにするための必要なサービスを提供する。特定の実施形態においては、ブローカ110は、ブローカ130を通じてアプリケーション・インスタンス140と通信する。
ブローカ110はアプリケーション・インスタンス120から独立したものとして図示されるが、これら2つは同一のハードウェア上で動作することができる。他の実施形態においては、ブローカ110は、異なるハードウェア上で動作することができる。アプリケーション・インスタンス120とブローカ110とを別個に示しているのは、これら2つの間の論理的な区別を強調するためであり、物理的な分離又は区別を意味するものではない。
アプリケーション・インスタンス120及びアプリケーション・インスタンス140の内部で用いられ、アプリケーション・インスタンス120及び140をそれぞれブローカ110及び130に接続する永続的接続とは対照的に、ブローカ110は、断続的接続によってアプリケーション・インスタンス140と通信する。断続的接続は、通常の動作中にソース・デバイスと宛先デバイスとの間に接続を提供しなくなることがある接続である。例えば、移動体接続は、断続的接続である場合が多い。上記で述べたように、アプリケーション・インスタンス120とブローカ110とが一つの船舶に実装され、アプリケーション・インスタンス140とブローカ130とが別の船舶に実装されることがある。通常の航行中に、船舶が互いの通信範囲内に進入し、そこから出て行くときに、二つの船舶の間の断続的接続が得られ、失われることがある。
一実施形態においては、ブローカ110は、アプリケーション・インスタンス120によって生成されたイベントを受信する。この用途で用いられるときには、イベントは、アプリケーション・インスタンスによって生成されたトランザクションのカプセル化である。一実施形態においては、トランザクションの各々は、単なる最新状態ではなく発生した全てのトランザクションをイベントを用いて再生成することができるように、イベントを生成する。トランザクションは、スクリーンの変更、文書の変更、追加若しくは削除、新規のアクション(新規のIMメッセージなど)、又は他の事象などといった変更とすることができる。イベントはまた、新規のチャット・ルームを作成するイベント又は既存のチャット・ルームの属性を修正するイベントといった管理イベントとすることができる。管理イベントの配信によって、最終的に同期化された管理モデルとなることができる。イベントは、XMLインスタンス、サービス・データ・オブジェクト(SDO)として実現することができ、又は、別のデータ構造を用いて実装することができる。
ブローカ110は、アプリケーション・インスタンス120から受信したイベントをローカルにキューに入れる。一実施形態においては、ブローカ110はローカル・データ・ストアにアクセスする。ブローカ110は、揮発性メモリ(RAMなど)、不揮発性メモリ、又はその両方において、イベントをキューに入れることができる。ここで用いられるときには、ローカルにキューに入れるという用語は、バス又はネットワーク接続などの永続的接続を通じて接続されたデバイスにおいてイベントをキューに入れることを指す。本出願は、ブローカ110をキュー・イベントとして説明するが、「キューに入れる」という用語は、ブローカ110をいずれかの特定のデータ構造を用いることに制限することを意図するものではない。本出願において用いられるキューという用語もまた、イベントがFIFOシーケンスの形で編成されることを必要とするものではない。どちらかと言えば、キューという用語は、一連のデータ待ち処理のより広い概念を含むことを意図するものである。したがって、リスト、キュー、テーブル、又は他のデータ構造を用いて、イベントをキューに入れることができる。
一実施形態においては、ブローカ110は、システム100における他のブローカの各々(例えばブローカ130)と通信状態ではないときに、アプリケーション・インスタンス120によって生成されたイベントのみをキューに入れる。例えば、ブローカ110がシステム100における各ブローカと通信状態にある場合には、ブローカ110は、イベントをキューに入れることなく単純にイベントを各ブローカに送信することができる。ブローカ110は、他のブローカの1つ又は複数とのコンタクトが途絶えたときにのみ、アプリケーション・インスタンス120によって生成されたイベントをキューに入れることができる。他の実施形態においては、ブローカ110は、断続的接続の接続状態に関わりなく、イベントをキューに入れる。
ブローカ110は、ブローカ110とアプリケーション・インスタンス140との間の断続的接続の接続状態をチェックする。一実施形態においては、ブローカ110は、ブローカ110とブローカ130との間の断続的接続の接続状態をチェックすることによってこれを行う。接続状態がアクティブであるときに、ブローカ110は、ローカルにキューに入れられたイベントを、断続的接続によってアプリケーション・インスタンス140に送信する。特定の実施形態においては、ブローカ110は、ブローカ130を通じてイベントを送信する。
一実施形態においては、ブローカ130との断続的接続がアクティブの場合には、ブローカ110は、直ちにイベントをブローカ130に送信する。ブローカ130との断続的接続が失われた場合には、ブローカ110は、断続的接続の切断中にどのイベントがブローカ110によって受信されていたかの追跡を開始することができる。次いで、ブローカ110は、断続的接続の監視を開始することができる。断続的接続が再確立されると、ブローカ110は、断続的接続の切断中にアプリケーション・サーバ112から受信したイベントを送信する。上述されたように、ブローカ110はまた、接続がアクティブである間にイベントの送信をリアル・タイムで開始することもできる。ブローカ110はまた、どのイベントをブローカ130に送信したかを記録し、そのイベントが確実に再送信されないようにする。複数ブローカが関わる実施形態においては、ブローカ110は、ブローカ110との間にアクティブな接続を有するブローカにリアル・タイムでイベントを送信し、ブローカ110に接続されていないブローカのためのイベントをキューに入れ、どのイベントを複数ブローカに送信したか、また送信しなかったかを追跡することができる。
ブローカ110はまた、遠隔ブローカ(例えば、ブローカ130)によってキューに入れられた要求を受信することができる。ブローカ110は、ブローカ110とブローカ130との間の接続状態がアクティブであるときに、これらの遠隔的にキューに入れられたイベントを受信することができる。ブローカ130は、上述の方法と同様に、アプリケーション・インスタンス140によって生成されたイベントをキューに入れ、これらのイベントをブローカ110に送信することができる。ブローカ110は、遠隔的にキューに入れられたイベントを受信し、それらをアプリケーション・インスタンス120に送信することができる。
特定の実施形態においては、イベントは、そのイベントを引き起こしたトランザクションについてのメタデータを含む。メタデータは、ブローカ110がイベントについてのコンテキストを判定できるようにするものであり、例えば、メタデータは、イベントが生成された時間を含むことができる。ブローカ110は、時間メタデータを用いて、アプリケーション・インスタンス140上で生じたイベントを、アプリケーション・インスタンス120上で生じたイベントにインターリーブすることができる。イベント・メタデータは、同様に、アプリケーション・インスタンス140が、それ自体のローカル環境において、イベントがローカル・ユーザ134a−cによって入力されたかのようにそのイベントを実現できるようにするのに必要な情報を含むことができる。
特定の実施形態においては、ブローカ110は、システム100におけるブローカ(ブローカ130など)の配信リストを保持する。配信リストは、フラット・ファイルとして、データベース・テーブルとして、又は当該技術分野で公知の他のデータ構造として、実装することができる。配信リストは、システム100におけるブローカの完全なリスト、及び、ブローカ110が他のブローカと通信できるようにするアドレスなどの情報を提供することができる。
特定の実施形態においては、ブローカ110は、第1のアプリケーション・インスタンス120にイベント・インターフェースを提供する。例えば、ブローカ110は、イベントがブローカ110に通信される方法を指定するアプリケーション・プログラミング・インターフェース(API)を提供することができる。特定の実施形態においては、アプリケーション・インスタンス120がブローカ110にイベントを送信し、ブローカ110からイベントを受信することを可能にするプラグ・インが、アプリケーション・インスタンス120に設けられる。例えば、IMアプリケーション・インスタンス120は、ユーザ114a−cのうちの一つによってテキストボックスに新規のエントリが入力されるごとにイベントを生成するプラグ・インを備えることができる。同様に、プラグ・インは、IMアプリケーション・インスタンス140からイベントを受信し、イベントを適切にアンパックし、チャット記録の適切なポイントにテキスト・エントリを挿入することができる。プラグ・インは、アプリケーション・サーバ112にインストールされるようにしてもよい。
このように、ブローカ110は、ブローカ110に永続的に接続された1つ又は複数のアプリケーション・インスタンス120からイベントを受け入れることができる。アプリケーション・インスタンス(例えば、アプリケーション・インスタンス120)からイベントを受信する際に、ブローカ110は、接続されたブローカにイベントを直接配信するか、又は、後で送付するためにイベントをキューに入れることができる。後の送付を容易にするために、ブローカ110は、システムにおける種々のブローカのネットワーク利用可能性を継続的にチェックし、必要に応じて、キューに入れられたイベントを送付することができる。ブローカ110はまた、システムにおけるブローカからイベントを受信し、それらを適切なアプリケーション・インスタンス120に伝送することができる。
図2は、ブローカ110の一実施形態を示す。ブローカ110は、図示された実施形態においては、イベント・モジュール202、キュー・モジュール204、接続モジュール206、送信モジュール208、受信モジュール210、インターフェース・モジュール212、及び転送モジュール214を含むことができる。
一実施形態においては、イベント・モジュール202は、永続的接続によってブローカ110に接続されたアプリケーション・インスタンスからイベントを受信する。上記のように、アプリケーション・インスタンスは、アプリケーション・インスタンスがイベントをブローカ110に通信することを可能にするプラグ・インを持つように構成することができる。イベント・モジュール202はまた、特定のタイプのイベントのみをローカルのアプリケーション・インスタンスから受信するように構成することができる。一実施形態においては、プラグ・インは、どの種類のトランザクションがイベント・モジュール202に送信されるイベントを生成するかを定める。例えば、IMアプリケーション・インスタンスにおいて、新規のチャット・ラインのみがイベントの生成を引き起こすようにIMアプリケーション・インスタンスを構成することができる。ローカルなIMアプリケーション・インスタンスの外観の変更といった他のトランザクションは、イベントを生成しないことがある。他の実施形態においては、幾つかのチャット・ルームのみを配信用(従ってイベント生成用)として指定することができ、一方、他のチャット・ルームは、ローカルとして判断され、ブローカ110に送信されるイベントを生成することはない。
キュー・モジュール204は、ブローカ110のために、アプリケーション・インスタンスから受信されたイベントをローカルにキューに入れる。キュー・モジュール204はまた、システムにおけるどのブローカがどのイベントを受信したかを追跡するように構成することができ、従って、キュー・モジュール204は、システムにおけるブローカの各々についてキューを保持し、どのブローカがどのイベントを受信したかを追跡することができる。キュー・モジュール204はまた、ブローカが、そのブローカに接続されたアプリケーション・インスタンスによって生成されたイベントの複製を確実に受信しないように構成することができる。
接続モジュール206は、ブローカ110と遠隔アプリケーション・インスタンスとの間の断続的接続の接続状態をチェックする。ここで用いられるときには、断続的接続は、接続がアクティブである期間と接続が非アクティブである期間とを有することになるとシステム設計者が了解しているデータ転送を可能にする通信接続である。例えば、断続的接続は、移動体接続によって通信する種々のデバイスが通常の動作の一部として互いの通信範囲内に出入りする場合がある移動体接続とすることができる。一実施形態においては、接続モジュール206は、ブローカ110とシステムにおける他のブローカとの間の断続的接続の接続状態を監視することによってこれを行う。特定の時間においては、断続的接続は、断続的接続によってイベントを転送することができるアクティブか、又は、イベントを転送できない非アクティブのどちらかとなり得る。接続モジュール206は、配信リストを用いて、どのブローカがシステム内にあるか、従ってどの断続的接続を監視するかを判定することができる。
接続モジュール206は、種々の技術を用いて、断続的接続がアクティブであるか非アクティブであるかを判定することができる。一実施形態においては、接続モジュール206は、遠隔ブローカにピングを送信し、その特定のブローカに届くかどうかを判定することができる。接続モジュール206が応答を受信するか否かに基づき、接続モジュール206は、断続的接続がアクティブであるか非アクティブであるかを判定することができる。当業者に公知のネットワーク状態を判定するための他の手法を用いることもできる。
接続モジュール206はまた、ブローカ110とシステムにおける他のブローカとの間の接続の保持に関与することができる。接続モジュール206はまた、ブローカ110とローカルに付属するアプリケーション・インスタンスとの間の接続の保持に関与することができる。接続モジュール206はまた、ブローカ110との種々の接続の健全性を監視することができる。
ブローカ110はまた、送信モジュール208を含むことができる。送信モジュール208は、ブローカ110と遠隔アプリケーション・インスタンスとの間の接続状態がアクティブになったときに、永続的に接続されたアプリケーション・インスタンスによって生成されブローカ110によってローカルにキューに入れられたイベントを、遠隔アプリケーション・インスタンスに送信する。送信モジュール208は、ブローカ110と関連するアプリケーション・インスタンスとの間の断続的接続がアクティブになると同時にイベントを送信することができる。
特定の実施形態においては、送信モジュール208は、イベントの一部としてメタデータを含むことができる。例えば、送信モジュール208は、アプリケーション・インスタンスの性質(即ち、IMアプリケーション・インスタンスであること)を特定し、発信元であるブローカ110についての情報を提供し、イベントの性質に関する情報(即ち、そのイベントが何を表すか、及び、それをどのように取り扱うべきか)を提供することができる。
特定の実施形態においては、送信モジュール208はまた、特定のイベントに優先順位を割り当てることができる。従って、特定のイベントが他のイベントより前に転送される場合があり、送信モジュール208は、特定のイベントを他のイベントより前に処理するように、受信側エンティティ(例えば、遠隔ブローカ)に指示する命令を含むことができる。例えば、リアル・タイム更新に対応するイベント(例えば、新規のIM投稿、又はスクリーン共有セッション)には、ファイル・アップロードのような寿命が長く重要性が低い操作に関連するイベントより高い優先順位を与えることができる。
特定の実施形態においては、送信モジュール208は、ローカルにキューに入れられたイベントを、全ての遠隔的に接続されたブローカに送信する。他の実施形態においては、送信モジュール208は、ローカルにキューに入れられたイベントの特定のセットを特定の遠隔ブローカに送信する。
遠隔アプリケーション・インスタンスのうちの少なくとも1つが、アクティブである断続的接続によって接続されていないことを、接続モジュール206が判定した場合には、キュー・モジュール204は、第1のアプリケーション・インスタンスから受信されたイベントをキューに入れることができる。他の実施形態においては、キュー・モジュール204は、断続的接続の状態に関わりなく、第1のアプリケーション・インスタンスから受信された全てのイベントをキューに入れる。そのような実施形態においては、送信モジュール208は、どの遠隔アプリケーション・インスタンスがどのイベントを受信したかを追跡し、アクティブな断続的接続が存在したときに遠隔アプリケーション・インスタンスによって受信されなかったイベントのみを送信することができる。
特定の実施形態においては、送信モジュール208は、断続的接続の状態に関する情報を接続モジュール206から受信する。送信モジュール208は、この状態情報を用いて、種々の遠隔アプリケーション・インスタンスについてのイベント履歴(即ち、どのイベントが送信され、どのイベントが送信されなかったか)を追跡することができる。特定の実施形態においては、遠隔アプリケーション・インスタンス(又は、それらが接続されたブローカ)は、イベントを受信したときに応答メッセージを生成する。そのような実施形態においては、送信モジュール208は、どの遠隔アプリケーション・インスタンスがどのイベントを受信したかを、応答メッセージに基づいて判定することができる。そのような実施形態は、送信されたイベントの受信が成功することを確実なものとし、送信モジュール208が、送信されたが遠隔アプリケーション・インスタンスによって受信されなかったイベントを再送信できるようにする。
ブローカ110はまた、受信モジュール210を含むことができる。受信モジュール210は、遠隔ブローカに接続された他のアプリケーション・インスタンスによって生成されたイベントを受信する。受信モジュール210は、断続的接続がアクティブであるときに、これらのイベントを遠隔ブローカから受信することができる。特定の実施形態においては、遠隔ブローカは、接続が非アクティブであった間に遠隔アプリケーション・インスタンスによってどのイベントが生成されたかを判定し、これらのイベントを遠隔的にキューに入れ、次いで、接続が再びアクティブになったときにそれらを受信モジュール210に送信する。断続的接続がアクティブである間は、受信モジュール210は、遠隔アプリケーション・インスタンスによって生成されるときにイベントを遠隔ブローカから受信することができ、キューに入れるプロセスは、断続的接続が非アクティブになり次第、遠隔ブローカにおいて再開する。
転送モジュール214は、受信モジュール210によって受信された遠隔的にキューに入れられたイベントを、ブローカ110に永続的に接続されたアプリケーション・インスタンスに送信する。アプリケーション・インスタンスは、上記で述べられたように、遠隔的にキューに入れられたイベントを受信し、それらをアンパックしてアプリケーション・インスタンス・データに適切に挿入するためのプラグ・イン・コンポーネントを含むことができる。
ブローカ110はまた、インターフェース・モジュール212を含むことができる。インターフェース・モジュール212は、ローカル・アプリケーション・インスタンスにイベント・インターフェースを提供することができる。イベント・モジュール202は、インターフェース・モジュール212によって確立されたインターフェースに従って、イベントをローカル・アプリケーション・インスタンスから受信することができる。受信モジュール210は、同様に、インターフェース・モジュール212によって確立されたインターフェースに従って、遠隔ブローカによって送信された遠隔的にキューに入れられたイベントを受信することができる。転送モジュール214もまた、インターフェース・モジュール212によって指定されたとおりに、遠隔的にキューに入れられたイベントをアプリケーション・インスタンスに送信することができる。一実施形態においては、インターフェース・モジュール212は、ブローカ110とシステムにおける遠隔ブローカとの間、並びに、ブローカ110とローカル・アプリケーション・インスタンスとの間においてイベント及び情報の共有を容易にするAPIを提供する。
管理モジュール216は、システムのユーザに、ブローカ110の管理的態様へのアクセスを提供することができる。例えば、ユーザは、管理モジュール216を用いて、遠隔ブローカ及び断続的接続に関する情報、ブローカ110によってサポートされることになるアプリケーション・インスタンスについての情報、並びに他の管理機能を提供することができる。一実施形態においては、管理モジュール216は、様々な他のコンポーネントによる設定を管理することを可能にする遠隔制御インターフェースを提供する。
図3は、断続的接続によってブローカと接続されているアプリケーション・インスタンスにイベントを配信するためのシステム300の一実施形態を示す。システム300は、ブローカ110及び関連するアプリケーション・インスタンス120を含み、同様に、ブローカ310、314、及び318と、それらに関連するそれぞれのアプリケーション・インスタンス312、316、及び320とを含む。システム300において、ブローカとそれぞれのアプリケーション・インスタンスとの間の永続的接続は、実線によって表される。ブローカ間の断続的接続は、破線によって表される。
一実施形態においては、システム300におけるブローカは、各ブローカが利用可能な他の全てのブローカとの接続を保持する網目状ネットワークを形成する。他の実施形態においては、図4に示されるように、ブローカは、網目状ネットワークとして構成し、ハブ・ブローカにも接続させることができる。さらに他の実施形態においては、ブローカのサブセットが網目状ネットワークを形成し、各サブセットがハブ・ブローカに接続する。
システム300におけるブローカは、システム300におけるアプリケーション・インスタンス120によって生成されたイベントを共有することができる。例えば、ブローカ110は、アプリケーション・インスタンス120からイベントを受信するためのイベント・モジュール202と、アプリケーション・インスタンス120から受信されたイベントをローカルにキューに入れるためのキュー・モジュール204と、ブローカ110とシステム300におけるブローカ310などの他のブローカとの間の断続的接続の接続状態をチェックするための接続モジュール206と、を含むことができる。ブローカ110の送信モジュール208は、ローカル・アプリケーション・インスタンス120によって生成されたローカルにキューに入れられたイベントを、特定の断続的接続の接続状態がアクティブであるときにブローカ110と他のブローカとの間の断続的接続によって送信することができる。同様に、受信モジュール210は、他のブローカから遠隔的にキューに入れられたイベントを、ブローカ110と他のブローカとの間の接続状態がアクティブであるときに断続的接続によって受信することができる。システム300における他のブローカは、これらと同じ操作を実施するための同一のモジュールを有することができる。
システム300におけるブローカの各々は、システムにおける他のブローカに関する接続情報を提供する配信リストを保持することができる。例えば、配信リストは、システムにおける各遠隔ブローカ(例えば、ブローカ110の配信リストは、システム300にはブローカ314、310、及び318が存在することを示すものとすることができる)、ブローカについてのアドレス、及び、ブローカ間の断続的接続に関する情報を含むことができる。ブローカ間の通信接続を可能にする他の手法を用いることもできる。
例えば、ブローカ110とブローカ310との間の断続的接続は20分間にわたって非アクティブであったが、ブローカ110とブローカ314及び318との間の断続的接続はアクティブであったとする。この20分間のあいだに、ブローカ110は、アプリケーション・インスタンス120によって生成されたイベントを、ブローカ314及び318にリアル・タイムで送信することができる。即ち、断続的接続がアクティブであるため、ブローカ110は、過度の遅延なしにイベントをブローカ314及び318に送信することができる。従って、それぞれのアプリケーション・インスタンス316及び320は、イベントをリアル・タイムで受信する。
ブローカ110とブローカ310との間の断続的接続は非アクティブであったため、接続が非アクティブであった20分間に、ブローカ110は、アプリケーション・インスタンス120によって生成されたイベントをブローカ314及び318に送信することに加えて、これらのイベントをローカルにキューに入れることができる。ブローカ110はまた、ブローカ110とブローカ310との間の断続的接続の接続状態を継続して監視することができる。ブローカ110とブローカ310との間の接続が再確立されると、ブローカ110は、20分間にアプリケーション・インスタンス120のためにキューに入れたイベントをブローカ310に送信する。
ブローカ310もまた、20分間にわたってブローカ110と通信できない状態にあったため、ブローカ310は、同様に、アプリケーション・インスタンス312のためにイベントをキューに入れておくことができる。接続が再確立されると、ブローカ310は、これらのキューに入れられたイベント(ブローカ110の視点からは、遠隔的にキューに入れられたイベント)を、ブローカ110に送信する。ブローカ110及び310は、次いで、これらの受信されたイベントを、それぞれのアプリケーション・インスタンス120及び312に送信することができ、アプリケーション・インスタンスはユーザに対してそれらを提示することができる。
一実施形態においては、1つのブローカ及び対応するアプリケーション・インスタンスは、船舶に実装される。他の実施形態においては、ブローカ及び対応するアプリケーション・インスタンスは、携帯電話又はラップトップなどのモバイル・デバイス上で実現することができる。ブローカ間の断続的接続は、ブローカ/アプリケーション・インスタンスの対をサポートする機器間の移動体接続を表すことができる。ブローカが互いに通信状態に出入りするとき、各ブローカは、ブローカの接続に基づき、所与の時間において利用可能な「最良の像(best possible picture)」を提示する。本来的に非同期的な環境における同期の改善を提供するために、システム300は、可能な限り像を更新する。
図4は、ブローカ間でイベントを配信するためのシステム400の一実施形態を示す。図4は、ブローカと、上述されたように永続的接続によって接続されたアプリケーション・インスタンスとを含む。図4はまた、ハブ・ブローカ410を含む。図4に示されるような特定の実施形態においては、ブローカは、ハブ・ブローカ410を通じて互いに(従って、システム400におけるアプリケーション・インスタンスとも)通信する。
特定の実施形態においては、ハブ・ブローカは、システム400におけるブローカの1つ又は複数と接続し、各ブローカは、ハブ・ブローカ410を通じて、システム400における他のブローカからの遠隔的にキューに入れられたイベントを受信する。同様に、システム400における各ブローカは、ハブ・ブローカ410を通じて、ローカルに付属するアプリケーション・インスタンスからローカルにキューに入れられたイベントをシステムにおける他のブローカに送信することができる。
ハブ・ブローカ410は、システムにおけるブローカ(例えば、ブローカ110、310、314、及び318)のみと通信し、どのアプリケーション・インスタンスとも直接通信しないように構成することができる。ハブ・ブローカ410は、適切にイベントを配信する機能を提供することができる。そのような実施形態においては、ブローカ110は、ブローカ110とハブ・ブローカ410との間の通信接続がアクティブであるときに、イベントをハブ・ブローカ410に送信することができる。接続が非アクティブであるときは、ブローカ110は、イベントをローカルにキューに入れ、接続の状態を監視することができる。断続的接続が再びアクティブになると、ブローカ110は、ローカルにキューに入れられたイベントをハブ・ブローカ410に送信し、遠隔的にキューに入れられたイベントをハブ・ブローカ410から受信する。
そのような実施形態においては、システム400全体にわたってイベントの受信及び配信を管理するのに必要な論理及びストレージを用いて、ハブ・ブローカ410を構成することができる。ハブ・ブローカ410は、各ブローカが有するアプリケーション・インスタンスの「像」を追跡し、最良の像を提供するために各ブローカにどのイベントを送信する必要があるかを判定することに関与することができる。例えば、ハブ・ブローカ410は、ブローカから受信されたイベントをローカル・ストレージにおいてキューに入れること、ハブ・ブローカ410とシステム400における各ブローカとの接続状態を監視すること、及び、ハブ・ブローカ410との断続的接続が非アクティブであった間に特定のブローカ410が受信しなかったイベントを編集して送信することに関与することができる。ハブ・ブローカ410はまた、配信リストを保持することができ、そのような実施形態においては、個々のブローカは、ハブ・ブローカのみと接続すればよいため、個々のブローカについての接続を簡略化することができ、システム400の根本的な複雑性は隠される。
図5は、ブローカに接続されたアプリケーション・インスタンスによって生成されたイベントを配信するための方法500の一実施形態を示す。一実施形態においては、方法は、永続的接続によってブローカに接続された第1のアプリケーション・インスタンスからブローカがイベントを受信すること502を含む。ブローカは、アプリケーション・インスタンスによって生成された、受信されたが伝送できないイベントを、ローカルにキューに入れる504。例えば、断続的接続が非アクティブであり、従ってブローカがイベントを遠隔ブローカに伝送するのに成功しない。
方法500はまた、ブローカが断続的接続の接続状態をチェックすること506を含む。上記で述べられたように、断続的接続は移動体接続とすることができる。ブローカは、ブローカと遠隔ブローカとの間の断続的接続を所定のインターバルでチェックすることができる。
次いで、ブローカは、断続的接続がアクティブになったときに、ローカルにキューに入れられたイベントを遠隔ブローカに送信する508。特定の実施形態においては、以前に断続的接続によって伝送が成功しなかったローカルにキューに入れられたイベントのみが、断続的接続がアクティブになったときに送信される。同様に、ブローカは、そのブローカが以前に断続的接続によって受信が成功しなかった遠隔的にキューに入れられたイベントを、断続的接続がアクティブになったときに、遠隔ブローカから受信することができる510。遠隔的にキューに入れられたイベントは、上記で述べられたように、遠隔ブローカに永続的に接続されたアプリケーション・インスタンスによって生成されたものである。
本発明は、その主旨及び本質的な特徴から逸脱することなく、他の特定の形態で具体化することができる。記載された実施形態は、全ての点において、例示的であると見なされるものであり、限定的なものではない。従って、本発明の範囲は、上記の説明によってではなく特許請求の範囲によって示される。特許請求の範囲の均等物の意味及び範囲内にある全ての変更は、特許請求の範囲内に含まれるものである。

Claims (20)

  1. 断続的接続によってブローカと接続されているアプリケーション・インスタンスにイベントを配信するブローカのためのコンピュータ実装方法であって、
    永続的接続によって前記ブローカに接続された第1のアプリケーション・インスタンスからイベントを受信することと、
    前記第1のアプリケーション・インスタンスから受信された前記イベントをローカルにキューに入れることと、
    前記ブローカと第2のアプリケーション・インスタンスとの間の前記断続的接続の接続状態をチェックすることと、
    前記ブローカと前記第2のアプリケーション・インスタンスとの間の前記接続状態がアクティブであることに応答して、前記ローカルにキューに入れられたイベントを前記断続的接続によって前記第2のアプリケーション・インスタンスに送信することと、
    を含む方法。
  2. 前記ブローカと前記第2のアプリケーション・インスタンスとの間の前記接続状態がアクティブであることに応答して、前記第2のアプリケーション・インスタンスによって生成された遠隔的にキューに入れられたイベントを前記断続的接続によって受信することをさらに含む、請求項1に記載の方法。
  3. 前記遠隔的にキューに入れられたイベントを前記第1のアプリケーション・インスタンスに送信することをさらに含む、請求項2に記載の方法。
  4. 前記第1のアプリケーション・インスタンスからの前記イベントを、アクティブな断続的接続によって前記ブローカに接続された第3のアプリケーション・インスタンスに配信することをさらに含む、請求項1に記載の方法。
  5. 前記ローカルにキューに入れられたイベントは、前記第2のアプリケーション・インスタンスと永続的に接続されている遠隔ブローカを通じて前記第2のアプリケーション・インスタンスに送信され、前記遠隔的にキューに入れられたイベントは、前記遠隔ブローカを通じて前記第2のアプリケーション・インスタンスから受信される、請求項1に記載の方法。
  6. 前記ローカルにキューに入れられたイベント及び前記遠隔的にキューに入れられたイベントを交換する1つ又は複数の遠隔ブローカの配信リストを保持することをさらに含む、請求項5に記載の方法。
  7. イベントを前記第2のアプリケーション・インスタンスに配信することは、前記ローカルにキューに入れられたイベントを前記遠隔ブローカに送信し、前記遠隔ブローカが前記ローカルにキューに入れられたイベントを前記第2のアプリケーション・インスタンスに配信することを含む、請求項5に記載の方法。
  8. 前記ブローカがイベント・インターフェースを前記第1のアプリケーション・インスタンスに提供することをさらに含み、前記受信されたイベントは、前記イベント・インターフェースに従って、前記第1のアプリケーション・インスタンスによって前記ブローカに提出される、請求項1に記載の方法。
  9. 前記イベント・インターフェースに従って、前記遠隔的にキューに入れられたイベントを前記第1のアプリケーション・インスタンスに送信することをさらに含む、請求項8に記載の方法。
  10. 断続的接続によってブローカと接続されているアプリケーション・インスタンスにイベントを配信するブローカであって、
    永続的接続によって前記ブローカに接続された第1のアプリケーション・インスタンスからイベントを受信するためのイベント・モジュールと、
    前記第1のアプリケーション・インスタンスから受信された前記イベントをローカルにキューに入れるためのキュー・モジュールと、
    前記ブローカと第2のアプリケーション・インスタンスとの間の前記断続的接続の接続状態をチェックするための接続モジュールと、
    前記ブローカと前記第2のアプリケーション・インスタンスとの間の前記接続状態がアクティブであることに応答して、前記ローカルにキューに入れられたイベントを前記断続的接続によって前記第2のアプリケーション・インスタンスに送信するための送信モジュールと、
    を含むブローカ。
  11. 前記ブローカと前記第2のアプリケーション・インスタンスとの間の前記接続状態がアクティブであることに応答して、前記第2のアプリケーション・インスタンスによって生成された遠隔的にキューに入れられたイベントを前記断続的接続によって受信するための受信モジュールをさらに含む、請求項10に記載のブローカ。
  12. 前記第1のアプリケーション・インスタンスにイベント・インターフェースを提供するインターフェース・モジュールをさらに含み、前記イベント・モジュールは、前記イベント・インターフェースに従って提出されたイベントを前記第1のアプリケーション・インスタンスから受信する、請求項10に記載のブローカ。
  13. 前記イベント・インターフェースに従って、前記遠隔的にキューに入れられたイベントを前記第1のアプリケーション・インスタンスに送信する転送モジュールをさらに含む、請求項10に記載のブローカ。
  14. 断続的接続によって1つ又は複数のブローカと接続されているアプリケーション・インスタンスにイベントを配信するシステムであって、
    第1の永続的接続によって第1のアプリケーション・インスタンスに接続された第1のブローカであって、
    前記第1のアプリケーション・インスタンスからイベントを受信するためのイベント・モジュールと、
    前記第1のアプリケーション・インスタンスから受信された前記イベントをローカルにキューに入れるためのキュー・モジュールと、
    前記第1のブローカと第2のブローカとの間の断続的接続の接続状態をチェックするための接続モジュールと、
    前記第1のブローカと前記第2のブローカとの間の前記接続状態がアクティブであることに応答して、前記ローカルにキューに入れられたイベントを前記断続的接続によって前記第2のブローカに送信するための送信モジュールと、
    前記第1のブローカと前記第2のブローカとの間の前記接続状態がアクティブであることに応答して、遠隔的にキューに入れられたイベントを前記断続的接続によって前記第2のブローカから受信するための受信モジュールと、
    を含む第1のブローカと、
    前記第1のブローカと前記第2のブローカとを接続する前記断続的接続と、
    第2の永続的接続によって第2のアプリケーション・インスタンスに接続された第2のブローカであって、
    前記第2のアプリケーション・インスタンスからイベントを受信するためのイベント・モジュールと、
    前記第2のアプリケーション・インスタンスから受信された前記イベントをローカルにキューに入れるためのキュー・モジュールと、
    前記第1のブローカと前記第2のブローカとの間の断続的接続の接続状態をチェックするための接続モジュールと、
    前記第1のブローカと前記第2のブローカとの間の前記接続状態がアクティブであることに応答して、前記ローカルにキューに入れられたイベントを前記断続的接続によって前記第1のブローカに送信するための送信モジュールと、
    前記第1のブローカと前記第2のブローカとの間の前記接続状態がアクティブであることに応答して、遠隔的にキューに入れられたイベントを前記断続的接続によって前記第1のブローカから受信するための受信モジュールと、
    を含む第2のブローカと、
    を含むシステム。
  15. 前記断続的接続によって前記第1のブローカ及び前記第2のブローカと通信する1つ又は複数の付加的なブローカをさらに含む、請求項14に記載のシステム。
  16. 前記システムにおける各々のブローカは、イベントが交換される他のブローカの配信リストを保持する、請求項15に記載のシステム。
  17. 1つ又は複数のブローカに接続されたハブ・ブローカをさらに含み、各々のブローカは、遠隔的にキューに入れられたイベントを前記ハブ・ブローカを通じて他のブローカから受信し、各々のブローカは、ローカルにキューに入れられたイベントを前記ハブ・ブローカを通じて送信する、請求項14に記載のシステム。
  18. 前記システムにおける各々のブローカは、前記イベント・インターフェースに従って、前記遠隔的にキューに入れられたイベントを前記第1のアプリケーション・インスタンスに送信する転送モジュールをさらに含む、請求項14に記載のシステム。
  19. 前記システムにおける各々のブローカは、前記第1のアプリケーション・インスタンスから受信された前記イベントを、前記ブローカにローカルに付属するデータ・ストアに格納するためのストレージ・モジュールをさらに含む、請求項14に記載のシステム。
  20. 永続的接続によってブローカに接続されたアプリケーション・インスタンスによって生成されたイベントを、移動体接続によって前記ブローカに接続された遠隔ブローカを用いて配信するブローカのための命令を含む、コンピュータ・プログラムであって、前記命令は、
    前記ブローカが、前記永続的接続によって前記ブローカに接続された前記第1のアプリケーション・インスタンスからイベントを受信することと、
    前記ブローカが、前記第1のアプリケーション・インスタンスから受信された、前記移動体接続による前記遠隔ブローカへの伝送が成功しなかったイベントを、ローカルにキューに入れることと、
    前記ブローカが、前記ブローカと前記遠隔ブローカとの間の前記移動体接続の接続状態を所定のインターバルでチェックすることと、
    前記ブローカが、前記ブローカと前記遠隔ブローカとの間の前記接続状態がアクティブであることに応答して、以前に前記移動体接続によって伝送が成功しなかったローカルにキューに入れられたイベントを前記遠隔ブローカに送信することと、
    前記ブローカが、前記ブローカと前記遠隔ブローカとの間の前記接続状態がアクティブであることに応答して、前記ブローカが以前に前記移動体接続によって受信を成功しなかった遠隔的にキューに入れられたイベントを前記遠隔ブローカから受信することと、
    を含む、コンピュータ・プログラム。
JP2010213514A 2009-09-30 2010-09-24 断続的接続環境におけるリアル・タイム・アプリケーションの性能を改善するための装置、システム、及び方法 Pending JP2011076603A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/571,161 US20110078233A1 (en) 2009-09-30 2009-09-30 Apparatus, system, and method for improved performance of real time applications in intermittent connection environments

Publications (1)

Publication Number Publication Date
JP2011076603A true JP2011076603A (ja) 2011-04-14

Family

ID=43781489

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010213514A Pending JP2011076603A (ja) 2009-09-30 2010-09-24 断続的接続環境におけるリアル・タイム・アプリケーションの性能を改善するための装置、システム、及び方法

Country Status (4)

Country Link
US (1) US20110078233A1 (ja)
JP (1) JP2011076603A (ja)
KR (1) KR20110035861A (ja)
CN (1) CN102035872A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9509529B1 (en) * 2012-10-16 2016-11-29 Solace Systems, Inc. Assured messaging system with differentiated real time traffic

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003536123A (ja) * 1999-07-19 2003-12-02 グルーブ・ネットワークス・インコーポレイテッド 通信マネージャを備えたコンピュータ・システムによるアクティビティに基づいたコラボレーションのための方法及びその装置
JP2006279223A (ja) * 2005-03-28 2006-10-12 Kyocera Corp データ通信方法、通信サーバ装置および通信端末

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070184A (en) * 1997-08-28 2000-05-30 International Business Machines Corporation Server-side asynchronous form management
US6263360B1 (en) * 1998-06-01 2001-07-17 Sri International System uses filter tree and feed handler for updating objects in a client from a server object list
US7143093B1 (en) * 1998-12-17 2006-11-28 Webmethods, Inc. Enterprise computer system
US6298455B1 (en) * 1998-12-29 2001-10-02 International Business Machines Corporation Publish and subscribe data processing with failover using cascaded sequence numbers
US6510550B1 (en) * 1999-05-12 2003-01-21 Intel Corporation Method and apparatus for providing intermittent connectivity support in a computer application
US6954799B2 (en) * 2000-02-01 2005-10-11 Charles Schwab & Co., Inc. Method and apparatus for integrating distributed shared services system
US7212976B2 (en) * 2001-01-22 2007-05-01 W.W. Grainger, Inc. Method for selecting a fulfillment plan for moving an item within an integrated supply chain
US7240324B2 (en) * 2001-02-28 2007-07-03 Hewlett-Packard Development Company, L.P. Event-based scheduling method and system for workflow activities
WO2003021798A2 (en) * 2001-09-04 2003-03-13 Soft2B Llc Browser-to-browser, dom-based, peer-to-peer communication with delta synchronization
US7406537B2 (en) * 2002-11-26 2008-07-29 Progress Software Corporation Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes
WO2005121959A2 (en) * 2004-06-08 2005-12-22 Dartdevices Corporation Architecture, apparatus and method for device team recruitment and content renditioning for universal device interoperability platform
US8233411B2 (en) * 2004-11-12 2012-07-31 Alcatel Lucent Enhanced system for controlling service interaction and for providing blending of services
US7613830B2 (en) * 2004-12-10 2009-11-03 Microsoft Corporation Reliably transferring queued application messages
US7706895B2 (en) * 2005-02-25 2010-04-27 Rockwell Automation Technologies, Inc. Reliable messaging instruction
US8191078B1 (en) * 2005-03-22 2012-05-29 Progress Software Corporation Fault-tolerant messaging system and methods
US7631021B2 (en) * 2005-03-25 2009-12-08 Netapp, Inc. Apparatus and method for data replication at an intermediate node
US7941448B2 (en) * 2005-08-26 2011-05-10 At&T Intellectual Property Ii, Lp System and method for event driven publish-subscribe communications
US20090077229A1 (en) * 2007-03-09 2009-03-19 Kenneth Ebbs Procedures and models for data collection and event reporting on remote devices and the configuration thereof
US7912969B2 (en) * 2008-01-09 2011-03-22 International Business Machines Corporation Methods and apparatus for randomization of periodic behavior in communication network
US8315178B2 (en) * 2008-02-08 2012-11-20 Unomobi, Inc. Method and system for wireless message-based advertising
WO2010006187A2 (en) * 2008-07-11 2010-01-14 Bally Gaming, Inc. Integration gateway
CN101383784A (zh) * 2008-09-28 2009-03-11 腾讯科技(深圳)有限公司 一种跨域远程邮件的发送方法及系统
US8453163B2 (en) * 2009-06-29 2013-05-28 Software Ag Usa, Inc. Systems and/or methods for policy-based JMS broker clustering

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003536123A (ja) * 1999-07-19 2003-12-02 グルーブ・ネットワークス・インコーポレイテッド 通信マネージャを備えたコンピュータ・システムによるアクティビティに基づいたコラボレーションのための方法及びその装置
JP2006279223A (ja) * 2005-03-28 2006-10-12 Kyocera Corp データ通信方法、通信サーバ装置および通信端末

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200501095004; ''OSIの7階層モデルとTCP/IPの4階層モデル'' 月刊 NETWORK MAGAZINE 4月号 第10巻 第4号, 20050401, 34頁-35頁, 株式会社アスキー *
JPN6014018275; ''OSIの7階層モデルとTCP/IPの4階層モデル'' 月刊 NETWORK MAGAZINE 4月号 第10巻 第4号, 20050401, 34頁-35頁, 株式会社アスキー *

Also Published As

Publication number Publication date
KR20110035861A (ko) 2011-04-06
US20110078233A1 (en) 2011-03-31
CN102035872A (zh) 2011-04-27

Similar Documents

Publication Publication Date Title
EP2215773B1 (en) Method and system for handling a failover in a distributed environment that uses session affinity
US10922127B2 (en) Transactional messaging support in connected messaging networks
CN109391850B (zh) 在视频页面中交互消息的方法、装置及存储介质
JP4144897B2 (ja) 共通作業キュー環境における最適格サーバ
US20120124124A1 (en) Centralized Rendering Of Collaborative Content
US9621958B2 (en) Deferred, on-demand loading of user presence within a real-time collaborative service
KR101413295B1 (ko) 확장성과 적응성을 가지는 dds 구조 및 dds를 구성하는 노드
US20170124021A1 (en) Methods for enabling direct memory access (dma) capable devices for remote dma (rdma) usage and devices thereof
US20140006974A1 (en) Selective sharing of windows among participants in a web conference
US20120278398A1 (en) System and method for reliable distributed communication with guaranteed service levels
JP6279744B2 (ja) eメールのウェブクライアント通知の待ち行列化方法
KR102445806B1 (ko) 이벤트 콘텐츠 전달
WO2022017007A1 (zh) 音频数据处理方法、服务器及存储介质
US20130132586A1 (en) Selective Connection Between Corresponding Communication Components Involved in a Teleconference
CN111953784B (zh) 基于异步通信框架的文件传输方法、装置及系统
US20190182063A1 (en) Mailbox protection in web conferencing systems
JP5657105B2 (ja) 共同環境における情報フローの選択的制御
US9088629B2 (en) Managing an electronic conference session
CN113242173B (zh) 屏幕的分享方法、装置、系统和即时通讯服务器
JP2011076603A (ja) 断続的接続環境におけるリアル・タイム・アプリケーションの性能を改善するための装置、システム、及び方法
CN113452948B (zh) 会议终端的控制方法、装置、设备及存储介质
WO2017166485A1 (zh) 对直播消息的发布进行优化的方法及系统
AU2017321255A1 (en) Data replication in scalable messaging system
WO2014203728A1 (ja) メッセージ制御システム、メッセージ制御装置、メッセージ制御方法及びプログラム
US10951703B1 (en) Peer-to-peer email content replication and synchronization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130603

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140714

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150113