JP2004295895A - 2点間の保証および機能の構成が可能なメッセージ配信 - Google Patents
2点間の保証および機能の構成が可能なメッセージ配信 Download PDFInfo
- Publication number
- JP2004295895A JP2004295895A JP2004093769A JP2004093769A JP2004295895A JP 2004295895 A JP2004295895 A JP 2004295895A JP 2004093769 A JP2004093769 A JP 2004093769A JP 2004093769 A JP2004093769 A JP 2004093769A JP 2004295895 A JP2004295895 A JP 2004295895A
- Authority
- JP
- Japan
- Prior art keywords
- message
- delivery
- messages
- local
- local reliable
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/28—Timers or timing mechanisms used in protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Time-Division Multiplex Systems (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
- General Factory Administration (AREA)
Abstract
【課題】 複数の別個のメッセージ伝送機構にアクセスすると共に、2つのエンドポイント間のメッセージ配信のための1つまたは複数のアプリケーションを開発するための単一のプログラミングモデルを提供すること。
【解決手段】 このプログラミングモデルにより、メッセージを移送するための、独立に構成が可能な保証/機能が可能となる。構成が可能な保証は、少なくとも1回配信、高々1回メッセージ配信、順序ごとメッセージ配信、およびメッセージ生存期間から選択することができる。独立に選ばれる機能は、セッション状態ストレージ、生存期間の延長、処理済みメッセージバッファリングを含むことができる。
【選択図】 図2
【解決手段】 このプログラミングモデルにより、メッセージを移送するための、独立に構成が可能な保証/機能が可能となる。構成が可能な保証は、少なくとも1回配信、高々1回メッセージ配信、順序ごとメッセージ配信、およびメッセージ生存期間から選択することができる。独立に選ばれる機能は、セッション状態ストレージ、生存期間の延長、処理済みメッセージバッファリングを含むことができる。
【選択図】 図2
Description
本発明は、一般に高信頼性メッセージ交換システムに関する。より詳細には、本発明は、アプリケーションに特有の、またはそのアプリケーションのインストールに特有の要件に合わせて、高信頼性保証および機能の構成および調整が可能な単一のプログラミングモデルに関する。
メッセージ交換システムはますます、通信のための一般的な方法となってきている。こうした通信システムは、Eメールシステムからセキュリティで保護された取引まで、あるいはチャットルームからインターネットショッピングなどの様々なウェブサービスまで多岐に渡る。こうした通信システムはそれぞれ、必要とするセキュリティ、信頼性、拡張性(scalability)、および可用性(availability)の程度が異なる。こうした要件は、単純な信頼性のない応答不要なデータグラム機構や処理済の永続メッセージの交換を実現するキューイングシステムなどの疎結合モデルから、セッション指向の通信を行う伝送制御プロトコル(TCP)やリモート手続き呼出し(RPC)などのプロトコルを用いる密結合モデルまで多岐に渡る。
上述の具体的な通信機構に対する要件は様々であるので、プログラムモデルはこうした各機構間で異なり、さらには異なるベンダの類似のシステム間でも異なることとなる。さらに、各プログラムモデルで柔軟に構成できるか否かは、その機構および形態による。プログラマおよびシステム設計者は、通常は各機構を理解しなければならない、すなわちプログラマおよびシステム設計者の要件に最も適しているものを決定し、およびその機構によって定義された特定のインターフェースに合わせてコードを書かなければならない。
しかし、製品または配置の要件が変わり、および異なる通信機構が必要となる場合、得られたコードを通常は再設計して再実装する必要がある。これは、ほとんどの信頼性のある通信機構において、その信頼性のある通信機構を使用するアプリケーションに提供する信頼性の保証および機能の選択に関して十分な柔軟性が提供されず、またはその選択が制御されないためである。例えば、そのような機構が提供するのは、一般に順序だて(in−order)確実に1回(exactly−once)の配信だけである。しかし、実際にこのレベルをアプリケーションが必要とする状況は多くない。
また、確実に1回や順序ごとの配信など、より多くの、またはより高い保証を提供することによるコストの発生もある。例えば、メッセージの受信を確認するために、受信側から送信側に確認メッセージを送り返さなければならない。この肯定応答がない場合、送信側は、メッセージが受信されたか否かを知ることができず、したがって確実に1回レベルの保証を提供することができない。時々メッセージが紛失しても存続することができるアプリケーションにおいては、少なくとも1回(at−least−once)レベルの肯定応答プロトコルのため負担を負うことが望ましくないことがあり、単一の低優先順位メッセージを配信することができない場合セッション障害の危険をあえて冒すことが望ましくないことがある。そのような場合に肯定応答を要求することにより、不必要に通信コストが増大し、アプリケーション可用性が低下する可能性がある。
したがって、アプリケーションに提供すべきメッセージ配信の保証および機能の構成が可能な、高信頼性メッセージ交換の下部構造(infrastructure)を提供する単一のプログラミングモデルが求められている。さらに、様々な伝送機構の形態、および様々な保証および機能に対する、広範なセッション状態およびメッセージ交換ストレージ機構をサポートする単一の高信頼性メッセージ交換プログラミングモデルが求められている。
本発明の例示される実施形態によれば、現在のメッセージ交換システムの前述の不完全な点および欠点が解決される。例えば、例示される実施形態は、1つまたは複数のメッセージ伝送機構(message transport)をサポートするメッセージ交換システムを提供する。さらに、本発明は、開発時に特定のメッセージ伝送機構を指定するのではなく、実行時に特定のメッセージ伝送機構を選択するために1つまたは複数のエンドツーエンド配信保証レベルの指定を可能にする単一のプログラムモデルを提供することによってアプリケーション開発を簡略化する高信頼性メッセージ交換のアブストラクションを提供する。
本発明の高信頼性メッセージ交換のアブストラクションは、メッセージを実際に転送する際に基礎となる伝送機構とは無関係のアプリケーション指定のメッセージの配信の保証を提供する。したがって、このアブストラクションにより、アプリケーション開発者は伝送機構レベルの細部から離されることとなる。同様に、このアブストラクションにより、ネットワークトポロジおよびシステム接続性の細部からも開発者は分離されることが可能となる。
本システムにおいては、まず、複数の別個のメッセージ伝送機構を介してメッセージを交換するために送信演算(sending operation)および受信演算(receiving operation)を抽象化するメッセージチャネルインターフェースが定義される。従来のプログラムモデルとは異なり、基礎となる伝送機構の定義とは無関係の複数のエンドツーエンドメッセージの配信の保証が定義され、および単一のプログラミングモデルと共に使用するため各エンドツーエンドメッセージの配信の保証を選択することができる。さらに、メッセージの配信の保証は、少なくとも1回メッセージ配信、高々1回(at−most−once)メッセージ配信、順序ごと送信メッセージ配信,およびセッション生存期間から選ぶことができる。最後に、複数のローカルの高信頼性メッセージ交換機能が定義される。単一のプログラムモデル内で使用するために各ローカルの高信頼性メッセージ交換を選択することができる。加えて、ローカルの高信頼性メッセージ交換機能は、状態ストレージ、メッセージ生存期間、および処理済みメッセージバッファリングのいずれでもよい。
本発明の別に例示される実施形態によれば、別個のメッセージ伝送機構にアクセスするための単一のプログラムモデルを提供することによってアプリケーション開発を簡略化する方法が提供され、その別個のメッセージ伝送機構を介してメッセージを交換するためのメッセージチャネルインターフェースを抽象化し、アプリケーション開発者が1つまたは複数のエンドツーエンドメッセージの配信の保証を指定するのを可能にする。単一のプログラムモデルと共に使用するためにメッセージの配信の保証を選択することができ、メッセージの配信の保証は、少なくとも1回メッセージ配信、高々1回メッセージ配信、順序ごと送信メッセージ配信、およびセッション生存期間から選ぶことができる。さらに、この方法により、アプリケーション開発者が1つまたは複数のローカルの高信頼性メッセージ交換機能を指定することが可能となる。単一のプログラムモデル内で使用するために各ローカルの高信頼性メッセージ交換機能を選択することができ、各ローカルの高信頼性メッセージ交換機能は、セッション状態ストレージ、メッセージ生存期間、および処理済みメッセージバッファリングのうち少なくとも1つを含む。
本発明のさらなる特徴および利点を以下で説明するが、その一部は以下の説明から明らかとなり、あるいは本発明を実施することによって知ることができる。本発明の特徴および利点は、特許請求の範囲に具体的に指摘される手段およびその組合せによって実現され、得られる。本発明の上記およびその他の特徴は、以下の説明および特許請求の範囲から完全に明らかとなり、あるいは本発明の上記およびその他の特徴は、以下に説明する本発明を実施することによって知ることができる。
本発明の上記およびその他の利点および特徴を得る方法を説明するために、添付の図面に示される本発明の特定の実施形態を参照することによって上記で簡潔に説明した本発明をより具体的に説明する。これらの図面は本発明の典型的な実施形態を示すに過ぎず、したがって本発明の範囲を限定するとみなすべきでないことを理解し、添付の図面を使用することにより、さらに具体的におよび詳細に本発明の説明を行う。
本発明は、1つまたは複数のアプリケーションを開発すると共に、複数の別個のメッセージ伝送機構にアクセスし、それを使用するための単一のプログラミングモデルを提供することによって高信頼性メッセージ交換アプリケーション開発を簡略化するための方法、システム、およびコンピュータプログラム製品まで含む。本発明の実施形態は、以下でより詳細に議論するように、様々なコンピュータハードウェアを含む専用コンピュータまたは汎用コンピュータを備えることができる。
図1に、高信頼性メッセージ交換スタック100aおよび100bの高レベル表現を示す。メッセージ交換スタックでは、高信頼性メッセージ交換プロトコル125を用いない場合、アプリケーション105がメッセージを、例えば別のアプリケーション層185に送りたいとき、アプリケーション105は、データグラムメッセージ交換層140にメッセージまたは一連のメッセージ115を直接転送する(アプリケーション105は、例えばサービスなどのどんなタイプのアプリケーションでもよいことに留意されたい。また一般に、アプリケーション105がアプリケーションフレームワークを適宜包含することを理解されたい。)。データグラムは信頼性が低いので、メッセージ115が複製され、遅延し、および/または失われる可能性がある。例えば、信頼性のない応答不要なデータグラムプロトコルでは、メッセージ115が、伝送機構160と165の間の中継点135におけるものを含むいくつかの理由で失われる可能性がある。したがって、パートナのエンドポイントのアプリケーション185は、メッセージ115を決して受信せず、送信側アプリケーション105は、そのメッセージ115が受信されなかったことに気付かない。
しかし、本発明の例示される実施形態によれば、高信頼性メッセージ交換スタック100aおよび100bは、高信頼性メッセージ交換プロトコル125を備える。したがって、例えば、高信頼性メッセージ交換フレームワーク120(あるいは180)により、アプリケーション105から送信されたメッセージ115がその宛先エンドポイントに適切に到着するよう保証することができる。例えば、アプリケーション105がそのセッションの相手方アプリケーション185にメッセージ115を転送したい場合、アプリケーション105は、メッセージ115を高信頼性メッセージ交換フレームワーク120に送ることができ、そこでメッセージ115がセッションに割り当てられ、メッセージ115にメッセージのシーケンス番号が与えられる。セッション識別子が、アプリケーション105とアプリケーション185の間のセッション通信に対応する。言い換えれば、セッションとは、2つのアプリケーション105と185との間の2重会話を指す。シーケンス番号付けは、セッション通信中の所定のメッセージに対し行われる。例えば、2つのアプリケーション105と185との間で通信される単一のセッション内にいくつかのメッセージが存在する可能性があり、各メッセージは、アプリケーションによって送信された順に順次番号付けされる。加えて、アプリケーション105、185、および場合によっては他のアプリケーション間で確立された複数のセッションが存在する可能性がある(確立された各セッションは、同一のまたは異なる配信保証を有する可能性がある)。したがって、各メッセージには、所定のセッション順序およびそのセッション内のメッセージのシーケンス順序を識別するセッション番号およびシーケンス番号が一意に割り当てられる。
メッセージ191上にセッションおよびシーケンスヘッダが書き込まれ、その他の必要なチャネル処理が実行された後、メッセージ191は、送信バッファ内のセッション状態190に格納される。その後で、メッセージ191のコピーがデータグラムメッセージ交換140を介して移送される。データグラムメッセージ交換140は、例えばルーティングヘッダを提供することにより、メッセージ191のエンドツーエンド伝送を実施する。次いでメッセージ191が、場合によってはメッセージ191のエンドツーエンド伝送を一連のポイントツーポイント伝送としてそれぞれ実施する1つまたは複数の中継点、例えば中継点135を介して転送される。拡張された傍受機構(interception mechanism)を使用して、ルーティング、フィルタリング、ポリシー管理、セキュリティなどの動作(behaviors)を実施することができる。伝送機構145、170、155、および各メッセージ交換エンドポイント中のエンドポイントで使用可能な動作、および中継点140、175、150を、プログラムすることによって、またはシステムを構成することによって確立することができる。
少なくとも1回配信(以下でより詳細に説明する)に対する保証が、アプリケーション105に対して指定される場合、高信頼性メッセージ交換フレームワーク120は、高信頼性メッセージ交換フレームワーク180から、どのメッセージが適切に受信されたかを示す肯定応答の受信を待ち受ける。メッセージ192は、メッセージ191(例えばシーケンス中のメッセージ5)が受信されたという肯定応答を搬送する。周期的に、高信頼性メッセージ交換フレームワーク180がコピーを適切に受信しなかったため、または120が180から肯定応答を受信しなかったために高信頼性メッセージ交換フレームワーク120が肯定応答メッセージ192を受信しなかった場合、メッセージ191が再送信される。したがって、例えば中継点135で、メッセージ191が失われ、遅延し、または誤ってルーティングされた場合、高信頼性メッセージ交換フレームワーク120は、高信頼性メッセージ交換フレームワーク180がメッセージ191の少なくとも1つのコピーを適切に受信するように保証しようと試みて、メッセージ191を(後述のタイムアウト期間内で)周期的に送信し続ける。しかし、メッセージ191に関して上述したのと同様の理由で、肯定応答192が失われ、遅延し、または誤ってルーティングされる可能性がある。したがって、本発明は、以下で説明するように肯定応答メッセージ192の高信頼性メッセージ配信を提供する。
高信頼性メッセージ交換フレームワーク180が首尾よくメッセージ191のコピーを受信すると、高信頼性メッセージ交換フレームワーク180は肯定応答メッセージ192を高信頼性メッセージ交換フレームワーク120に送信する。肯定応答メッセージ192を受信すると、高信頼性メッセージ交換フレームワーク120は、そのセッション状態(送信)バッファ190からメッセージ191のコピーを削除し、メッセージ191の追加の送信を停止する。同様に、高信頼性メッセージ交換フレームワーク180は、そのセッション状態195中に、メッセージ191のコピーを受信したことを記録し、その結果、メッセージがアプリケーション185に既に配信されたか否かにかかわらず、高信頼性メッセージフレームワーク180が受信した任意の複製メッセージを廃棄することができる。その後で、アプリケーション185は、セッション状態(受信)バッファ195から、そのReceive()コマンドを介して、受信されたメッセージを取り出すことができる。肯定応答192が失われ、遅延し、または誤ってルーティングされたために高信頼性メッセージ交換フレームワーク120が肯定応答192を受信しなかった場合、メッセージ191の再送信が続行され、それによって高信頼性メッセージ交換フレームワーク180が肯定応答192の別のコピーを送信するようトリガがかけられる。このプロセスは、高信頼性メッセージ交換フレームワーク120が少なくとも1つの肯定応答192を受信するまで、または高信頼性メッセージ交換フレームワーク120が再試行を諦め障害表示をアプリケーション105に送るまで続行することができる。
高信頼性メッセージ交換フレームワーク120および/または180は、本発明によるダイアログ200(図2)としてそれぞれ構成することができる。ダイアログ200は、図2を参照してより詳細に説明する。ダイアログ200は、メッセージフレームワークアブストラクションであり、この場合サービス(またはアプリケーションインスタンス)は、他のサービスとの高信頼性のセッション指向の通信のためにダイアログ200を使用する。プログラマは、ダイアログチャネル220を使用してダイアログにアクセスすることができる。さらに、ダイアログ200は、アプリケーションに対するメッセージの配信の保証を構成することが可能な高信頼性メッセージ交換下部構造および単一のプログラミングモデルを提供する。こうした信頼性保証レベルは満たされなければならず、そうでなければセッション障害が発生する。ダイアログ200を設計することにより、対応するランタイムの実装が柔軟になって、アプリケーションの実装に対して主張される保証(正確さの制約)を維持する限りは追加の機能を提供することができる。具体的には、アプリケーションは、アプリケーションの実装にトランスペアレントな様々な度合いの可用性および拡張性を備えることができる。さらに、アプリケーション105と185との間のこうしたセッションの通信は、様々な伝送機構の種類(例えば、TCP/IP160およびHTTP165)、伝送機構接続インスタンス、ネットワークトポロジを介して実現することができる。
ダイアログ200によって提供される信頼性保証は、少なくとも1回(ALO)配信、高々1回(AMO)配信、および順序ごと(IO)配信を含む。追加のセッション生存期間(TTL)保証も提供される。AMO保証により、送信側アプリケーションによって送信される任意の所与のメッセージについて、メッセージが受信側アプリケーションに最大1回配信される。ダイアログ200はアブストラクションであるので、アプリケーションは、複製メッセージがアプリケーションセマンティクスを破る場合に、複製メッセージを検出および廃棄する必要から解放される。同様に、ALO保証は、送信側アプリケーションによって送信されるメッセージすべてを受信側エンドポイントが受信することを可能にし、それによってアプリケーションが、紛失したメッセージまたは誤って送られたメッセージを検出し、その再送信を調整する必要から解放される。IO保証は、送信側アプリケーションで送信された順番でメッセージを受信側アプリケーションに配信することを可能にする。これにより、アプリケーションは、メッセージの順序違い(out−of−order)受信を処理する必要から解放される。
ダイアログ200はまた、セッションTTL保証も提供するが、これには、セッションTTLが満了する前にパートナのエンドポイントのパートナ間におけるダイアログセッションを完了することが必要となる。ダイアログセッションが完了する前にセッションTTLが満了した場合、ダイアログチャネルは障害状態に置かれ、障害の通知がアプリケーションに提供される。アプリケーションは、再度TTLのネゴシエーションを行うことによってセッションTTLを延長することができる。
ダイアログによって、所与のアプリケーションおよび配置(deployment)の所定の要件を満たすため、こうしたメッセージ配信の保証を個々に、または任意の組合せで使用することが可能となる。例えば、AMO、ALO、およびIOの3つの保証の組合せにより、TCP/IPなどのほとんどの信頼性の高い通信機構に典型的な、確実に1回、順序ごと配信が提供される。しかし、典型的な通信機構、およびそれに対応するプログラミングモデルとは異なり、アプリケーションが使用するプログラミングモデルを変更することなく、こうした保証をカスタマイズすることができる。
ダイアログ200により、構成することができる保証が可能となるだけでなく、互いに独立に、かつ上記で選んだ保証とは無関係にローカルの高信頼性メッセージ交換の機能を選び、構成することも可能となる。こうしたローカルの高信頼性メッセージ交換の機能は、プログラミングモデルに一体化されたものと、アプリケーションプログラムとは無関係のカスタマイズに関するものとの2つの別個のカテゴリに分けられる。例えば、一体化されたローカルの機能には、アプリケーションに対して整合性、独立性、および原子性(atomicity)のセマンティクスを有する処理済みバッファリング機能、またはプロファイルをセッションと関連付けて独立なカスタマイズを可能にするプロファイル参照が含まれる。カスタマイズが可能なローカルの機能には、以下で説明するように、セッション状態記憶の構成、バッファ割当(quota)、送信タイムアウト、構成が可能なメッセージTTL、セッション優先順位メッセージ、またはポイズンメッセージを検出するしきい値を含めることができる。
本発明の例示される実施形態によれば、ダイアログ200は、ダイアログストア260と呼ばれる置換えが可能なコンポーネントとしてセッション状態およびメッセージのストレージを提供する。ダイアログストア260は置換えが可能であるので、第3者がダイアログストア260を独自に実装して配布することができる。管理者は、所与のインストールにおいて実際に使用するダイアログストアを選ぶことができる。したがって、この機構により、非常に高い柔軟性を得ることができ、永続性、性能、自律性(autonomy)、および管理目標が満たされ得ることとなる。ダイアログストア260は、メモリ内ストレージ、ディスク上の永続ストレージ、デーモンプロセスのストレージ、不揮発性メモリ内ストア、光ストレージ、磁気テープ、ネットワーク装着ストレージ、または取外し可能ストレージのうち少なくとも1つを有するプラグ接続が可能な(pluggable)ストアとすることができる。さらに、ダイアログストアはリモートまたはオフノードとすることができる。
本発明の例示される実施形態によれば、すべての状態をアプリケーションメモリ内に保つメモリ内ダイアログストア(例えばダイアログストア260)が実装される。このストアは、その状態への非常に高速なアクセスを提供する。しかし、この代償としてアプリケーションプロセスの状態が失われた場合(例えばアプリケーションに、またはアプリケーションの実行に障害が発生したシステムのために、例えばユーザがアプリケーションを終了したり、オペレーティングシステムがアプリケーションを終了したりする場合)、すべての状態が失われる。
他の例示される実施形態によれば、高速ダイアログストア(例えばダイアログストア260)が実装されて、別々の専用デーモンプロセスのメモリ内に状態が維持される。このダイアログストアにより、その状態がアプリケーションプロセス障害にかかわらず維持されることが保証される。しかし代償として、状態を維持するためにプロセスの切換えが行われる。デーモンプロセスに障害が発生し、あるいはオペレーティングシステムまたはコンピュータノードに障害が発生した場合、担当するセッションについての全状態が失われる。
ダイアログストア実装の別の実施形態によれば(例えばダイアログストア260)、セッション状態情報が、構造化照会言語(SQL)サーバなどのデータベース内に永続的に維持される。この永続的に維持される状態は、コンピュータノードまたはオペレーティングシステムの障害を超えて残ることができるが、代償として、その状態を維持するためにディスク書込みが行われる。状態の保守のためにSQLサーバなどのデータベースシステムを使用する利点の1つは、重要なアプリケーション状態の定期的なバックアップおよび回復を行う代わりに、インストールすること自体で、ツール、技法、およびプロセスを既に適切に用意することができることである。
また、本発明においては、ローカルコンピュータノードまたは別のノード上で動作するように構成できるようなダイアログストアがあるようにすることができる。例えば、SQLサーバなどの永続ダイアログストアを、ローカルのサーバデータベースまたは別のノード上のデータベースを使用するように構成することができる。他のノードはクラスタ化システムの一部でよく、したがって非常に高い可用性を有する。
本発明はまた、アプリケーションによって使用される特定の配置特性を満たすように複数のストア(またはストア構成)が同時に存在できるようにする。さらに、負荷または容量要件の増大などの変化に対処し、新しいストレージの選択肢を利用し、または他の配置環境の考慮すべき点に対処するために、異なるストア(またはストア構成)を使用するようにアプリケーション構成を変更することができる。さらに、同一のアプリケーション内の異なる通信セッションが異なる構成要件を有することができる。ダイアログにより、各セッションを個々に構成することが可能となる。例えば、アプリケーション内のあるセッションは、永続状態ストレージにおいて最もうまく働く可能性があるが、他のセッションは、揮発性状態ストレージにおいて最もうまく働くかもしれない。ダイアログストアは、プロファイル(以下で説明する)を介して構成し、またはアプリケーションコードで記述することができる。
ダイアログ200で提供される別の構成が可能な機能には、バッファ割当がある。ダイアログ200は、送信側アプリケーションおよび受信側アプリケーションでメッセージをバッファリングする。このバッファリングにより、2つのアプリケーションの自律性が向上し、一方の側が、動作中ではない場合、または例えばネットワークパーティションのために到達できない場合であっても、他方の側が、そのローカルバッファにメッセージを送信し、またはそのローカルバッファからメッセージを受信することが可能となる。例えば、アプリケーション205は、他方が一時的に使用不能、すなわち動作中ではなく、または到達不能であっても引き続きメッセージを送信することができる。これは、メッセージを首尾よく転送することができるまでローカル送信バッファ250内にメッセージを蓄積することによって実施される。同様に、アプリケーション205は、メッセージを送信したアプリケーションが現在は動作することができない場合であっても、受信バッファ245内に先にバッファリングされたメッセージを受信することができる。ダイアログ200は、システムでバッファリングする最大メッセージ数(メッセージサイズに左右される)を定義する構成が可能なバッファ割当を提供する。したがって、これにより、ダイアログ状態235において消費するスペースの量が制限され、他のエンドポイントによって消費することができるローカル資源が制限される。これにより、アプリケーションが指定のメッセージ数をローカルにバッファリングするのに十分なスペースをメッセージ交換システムが確保することも可能となる。ダイアログ200はまた、メッセージ交換下部構造によってバッファリングされる最小メッセージ数を定義する最小バッファ割当を提供する。最小バッファ割当と最大メッセージサイズの組合せにより、メッセージ交換下部構造によってバッファリングされる最小バイト数が定義される。バッファ割当は、プロファイル(以下で説明する)を介して構成することができ、またはアプリケーションコードで記述することができる。
ダイアログ200はまた、構成が可能な送信タイムアウトの機能も提供する。メッセージが送信されたとき、メッセージはダイアログストア260/送信バッファ250内に配置される。バッファが満杯である場合、すなわちバッファ割当に達した場合、送信タイムアウトが満了し、またはメッセージを保持するためにバッファ中のスペースが使用可能となるまで、Send()210に対する呼出しがブロックされる。メッセージが首尾よく受信側エンドポイントに転送され、受信側エンドポイントによって確認され、もはやローカルのエンドポイントで再試行する必要がないときに、バッファ内のスペースが使用可能となる。送信タイムアウトが満了する前にスペースが使用可能となった場合、Send()210呼出しは正常終了する。スペースが使用できるようになる前に送信タイムアウトが満了した場合、メッセージを首尾よくバッファリング(キャプチャ)することができなかったという通知をアプリケーションに提供するという例外が発生する。したがって、アプリケーションは後で再試行することができる。構成が可能なタイムアウトにより、アプリケーションは、ブロッキングの簡潔性に優先して応答性の程度を選ぶことができる。送信タイムアウトは、プロファイル(以下で説明する)を介して構成し、またはアプリケーションコードで記述することができる。
前述のように、ダイアログ200は、エンドツーエンドのセッションTTL保証をサポートする。ダイアログ200はまた、ローカルの機能として構成が可能な任意選択メッセージ生存期間も提供する。メッセージTTLは、送信されたメッセージが、TTLで指定された時間内に受信側エンドポイントで首尾よく受信されなければならないことを要求し、そうでない場合、アプリケーション205に対してエラーが生成される。ダイアログ200はまた、メッセージTTLについての構成が可能な延長も提供する。したがって、TTLが満了したとき、通知が送信側アプリケーション205に提供される。次いでアプリケーション205は、ダイアログを終了するか、またはメッセージのTTLを延長するかの選択肢を有する。送信タイムアウトと同様に、TTLは、アプリケーションコードで設定することができ、またはプロファイルを使用して間接的に構成することができる。
ダイアログ200によって提供される別の機能は、割り当てられる任意選択の優先順位である。ダイアログ200内のすべてのメッセージは同一の優先順位を有する。しかし、複数のダイアログからのメッセージを送信のために使用可能であるとき、メッセージの送信の際に、高い優先順位を有するダイアログが、低い優先順位を有するダイアログよりも優先される。同様に、受信側アプリケーションに「配信」するためにメッセージが使用可能であるとき、高い優先順位を有するメッセージが、低い優先順位を有するメッセージの前に受信される。優先順位は、アプリケーションコードで設定することができ、または以下で説明するプロファイルを使用して間接的に設定することができる。
ダイアログ200はまた、任意選択でメッセージをトランザクション処理させるバッファリングも提供する。ダイアログがトランザクションと共に使用されるとき、ローカル送信/受信バッファは、トランザクション資源マネージャとして動作する。この場合、トランザクション結果に応じて、トランザクション下で受信されたメッセージは、一時的に配信された(受信バッファから削除された)とみなされる。同様に、トランザクションの結果に応じて、トランザクション下で送信されたメッセージは、一時的にキャプチャされる(送信バッファに加えられる)。そのトランザクションが約束される場合、こうした一時的なメッセージキャプチャおよび配信は永続的なものとなる。トランザクションが打ち切られる場合、こうした一時的演算は、それが決して発生しなかったかのように破棄される。他のトランザクション資源マネージャと同様に、ダイアログストアは、一時的なバッファ演算のためのトランザクション分離(例えば、キャプチャされるメッセージは、トランザクションの外部では不可視である)と、トランザクションマネージャの制御下でトランザクションが完了するトランザクション原子性とを提供しなければならない。
トランザクションのバッファリングにより、(障害または並行する活動に面しても正確な状態遷移を行う)正確なメッセージ交換アプリケーションの開発が単純になる。アプリケーションは、この機能を使用してメッセージ交換およびローカルのメッセージ処理を調整することができる。例えば、アプリケーションは、トランザクションの範囲内でメッセージを受信し、処理することがある。このメッセージ処理は、1つまたは複数のトランザクションデータベースの読取りおよび更新、ならびにトランザクション内に含まれるダイアログに対する1つまたは複数のメッセージの送出を含む可能性がある。トランザクションが打ち切られる場合、作業のすべては行われない。具体的には、一時的に送信されたメッセージが破棄され(すなわち、セッションパートナはこうした一時的結果を見ない)、受信したメッセージは依然として配信のために使用可能である。後者により、新しいトランザクションの範囲内でメッセージを処理することが可能となる。トランザクションが約束されるとき、受信したメッセージの削除や送信したメッセージのバッファリングを含むこの活動のすべてが永続的となる。正味の影響は、確実に1回メッセージ処理である。トランザクションバッファリングは、アプリケーションがこの機能を使用するか否かがそのセッションパートナのアプリケーションにとって完全に透過的であるという意味で、ローカルのダイアログ機能である。
例示される実施形態によれば、図2を参照して以下で説明するように、Send()210が呼び出されたとき、送信側エンドポイントで、メッセージがダイアログストア260内に一時的に配置される。トランザクションが約束される場合、メッセージがストア260にコミットされ、パートナのエンドポイントに送信するために使用可能となる。トランザクションが打ち切られた場合、メッセージは廃棄される。受信側では、Receive()215(またはDelete)が呼び出されたとき、メッセージはダイアログストア260から一時的に削除される。トランザクションが約束される場合、メッセージはストア260から永久に削除される。トランザクションが打ち切られる場合、メッセージはストア260内にとどまり、再配信のために使用可能である。処理済み受信により、メッセージの確実に1回処理が可能となる。
トランザクション処理させるバッファリングはキューイングシステムの一般的な機能であるが、こうしたシステムは一般に永続ストアを必要とすることに留意されたい。ダイアログ200は、ダイアログストア260の永続性の如何にかかわらず、こうした同一のトランザクションセマンティクスを提供し、すべての場合に同一のプログラムモデルを提供する。例えば、メモリ内ストアは、トランザクション資源マネージャとして参加することによってトランザクションセマンティクスを提供する。しかしダイアログ200により、伝送機構および接続性特性、メッセージルーティング、並びにエンドポイント状態管理に関連する詳細を含む配置の詳細と、アプリケーションの実装とを分けて考えることが可能となる。
ダイアログ200によって提供される別の機能は、任意選択のポイズンメッセージ機能である。前述のように、メッセージがトランザクション下で受信および処理され、トランザクションが打ち切られるとき、メッセージはダイアログストア260内にとどまり、アプリケーションに再配信するために使用することができる。場合によっては、トランザクションのアボートを引き起こす問題は、一時的なもの、例えばデッドロックによるタイムアウトであり、次の試行時に配信およびメッセージ処理が続く。所与のメッセージに対する配信の試行が繰り返しアボートを引き起こす場合、そのメッセージは「ポイズン」とみなされる。ダイアログ200は、何回メッセージ配信がアボートするとメッセージがポイズンとみなされるかということを構成する方法を提供する。ポイズンメッセージが検出されたとき、アプリケーションに対してエラーが発生し、アプリケーションが正しい動作を行うまで、メッセージを処理する際の試行がそれ以上行われないように停止される。これにより、決して成功しない作業、または何らかの介入をしなければ成功しない作業をあえて試み、処理資源を浪費しないよう保証する。ポイズンメッセージ検出は、プロファイル(以下で説明する)を介して構成することができ、またはアプリケーションコードで記述することができる。
任意選択のプロファイルの機能は、名前付きの1組のダイアログを構成する選択肢を提供する。前述のように、バッファ割当、タイムアウト、ストアなどの、ダイアログの多数の構成が可能な機能が存在する。さらに、ダイアログ200は、構成が可能なメッセージの配信の保証、例えばALO、AMO、およびIOを提供し、アプリケーションコードが、望むなら構成を通じて増加させることができる望ましい配信保証の最小レベルを独立に指定することができる。プロファイルは、共通ダイアログ設定をグループ化し、その設定を名前で参照する方法を提供する。さらに、ダイアログ200実装により、管理者が各設定にわたって配置時間制御を有するように、アプリケーション構成ファイルを通じたプロファイルの選択が可能となる。ダイアログを作成または受諾するとき、アプリケーションは、名前によってプロファイルを参照し、プロファイル中で指定されるすべての設定を使用して、ダイアログ200を作成する。設定は、アプリケーションプログラムの一部、コード、または他のプログラミングの構築として直接確立することができる。コードまたは他のプログラミング構成内の参照によって間接的にプロファイルをプログラムと関連付けることができ、それによってプロファイルの値を、アプリケーションプログラムとは無関係に設定することができる。直接的に確立されたプロファイルの値は、プロファイル参照によって間接的に設定されたプロファイルの値より優先される。
ダイアログ200は、こうした機能および保証の組合せを互いに独立に提供するので、伝送制御プロトコル(TCP)およびリモート手続き呼出し(RPC)と類似の密結合プログラミングモデルから、データグラムおよびキューに類似の疎結合プログラミングモデルまでの任意の結合構成を満たすようにダイアログ200を構成することができる。加えて、ダイアログ200は、片方向対話、半2重(単一の要求/応答からより複雑なパターンまで)対話、最も複雑な全2重対話などの様々な2者メッセージ交換パターン(MEP)を効率的にサポートする。したがって、ダイアログ200により2者通信プログラミングモデルの統一が可能となる。
図2に、本発明の例示される実施形態によるダイアログ200の動作の特徴を示す。ダイアログチャネルアプリケーションプログラミングインターフェース(API)220が、アプリケーション205に対するアブストラクションとして提供される。前述のように、ダイアログ200は、一続きのメッセージを定義するウェブサービス、例えば高信頼性メッセージ交換(WS−RM)などのメッセージ交換プロトコルを使用する。シーケンスは、セッション内の単一の方向の1組のメッセージを定義する。このような2つのシーケンスが組み合わされて、シーケンスが2つの通信者間の各方向となる1つのダイアログが形成される。チャネル220メソッドSend()210が呼び出されるとき、Sendメソッド210に対するパラメータとして渡されるメッセージが、送信状態250に格納され、メッセージが送信された順番に従って、単調増加のメッセージシーケンス番号で一意的にスタンプされる。
メッセージ255は送信状態250にバッファリングされ、シーケンス中の個々のメッセージに関する状態が維持される。この時点で、これらのメッセージは状態250に「キャプチャ」されていると呼ばれ、Send()210はアプリケーションに返される。より具体的には、送信メソッド210は、パラメータとして1つのメッセージを受諾する。このメッセージが、シーケンス番号でスタンプされる送信バッファ250に渡され、その後で、または同時にストア260内に格納される。この時点で、メッセージが「キャプチャ」されているとみなされ、送信メソッド210は戻る。この呼出しを他のメッセージで反復することにより、メッセージ255のシーケンスまたは部分シーケンスが得られる。
ダイアログ状態235は、送信バッファ250および受信バッファ240を含む。ダイアログ状態235は、ダイアログ識別子、アプリケーションにより指定される保証、およびパートナのエンドポイントアドレスなどの不変の情報を管理および格納する。ダイアログ状態235はまた、次の発信送信シーケンス番号や肯定応答状態などのセッション情報も管理する。さらに、ダイアログTTL、タイムアウト、ストアの位置などの構成データがダイアログセッション状態235内に保持される。
メッセージがキャプチャされると、プロトコル部270は、キャプチャされたメッセージ、例えばメッセージ275の処理および送信、したがってポート285を通じて処理および送信が可能となる。ダイアログ200に関するプログラミングモデルおよびランタイムの構造により、柔軟で効率的なエンドポイントの解決(resolution)モデルが提供される。
このモデルは少なくとも、2つのエンドポイントを効率的に解決して高信頼性のメッセージ交換の実現を保証する。具体的には、プロトコル部270は、ダイアログ内の初期メッセージを配信して処理を行う前に、両方のエンドポイントがエンドポイント一意性を保証するのに十分な基準と、ダイアログ200を介するメッセージの正確な相関と、その対応するセッションとを保持することを保証することができる。これは例えば、高々1回配信を保証するようにメッセージが単一のセッションパートナに高い信頼性をもって配信されることを保証するのに必要である。このエンドポイントの解決は、ダイアログ200の作成者によって使用されるパートナアプリケーションを識別する識別子(例えば汎用資源識別子(URI))、ローカル構成、メッセージヘッダ中のルーティングデータ、中継点構成、およびターゲットアプリケーション構成を含む複数の因子に基づくことができる。
アプリケーションの実装205がダイアログエンドポイントの解決の詳細にかかわる必要はないことに留意されたい。ダイアログ200に関する下部構造は、解決プロセスを実施して、開始側エンドポイントと協調し、開始側エンドポイントがセッションに対して一意的に選択されたピアエンドポイントであることを保証する。これは、必要に応じて行われ、アプリケーション実装205にとって透過的である。
メッセージ配信目標を達成することを確実にするためにダイアログに関する実行時のエンドポイント解決が提供される一方、広範なネットワーク構成において正しい実行を達成するために柔軟性が提供される。この機能は、拡張性、可用性、セキュリティ(ファイアウォールなど)、および性能の要件に対処するために、様々な構成でのアプリケーションの柔軟な配置をサポートする。サービス配置の構成は、例えばアプリケーションファーム(例えばスケールアウトレプリカ)やアプリケーションパーティション(例えば顧客番号または地理的領域による区分処理)を含む。アプリケーションファームおよびパーティションは、別々に使用することができ、または一緒に使用することができる。例えば、アプリケーションパーティションへのデータ依存ルーティングを使用するようにアプリケーションを配置することができる。アプリケーションパーティションは、アプリケーションサーバのファームからなる。
メッセージ配信目標を達成することを確実にするためにダイアログに関する実行時のエンドポイント解決が提供される一方、広範なネットワーク構成において正しい実行を達成するために柔軟性が提供される。この機能は、拡張性、可用性、セキュリティ(ファイアウォールなど)、および性能の要件に対処するために、様々な構成でのアプリケーションの柔軟な配置をサポートする。サービス配置の構成は、例えばアプリケーションファーム(例えばスケールアウトレプリカ)やアプリケーションパーティション(例えば顧客番号または地理的領域による区分処理)を含む。アプリケーションファームおよびパーティションは、別々に使用することができ、または一緒に使用することができる。例えば、アプリケーションパーティションへのデータ依存ルーティングを使用するようにアプリケーションを配置することができる。アプリケーションパーティションは、アプリケーションサーバのファームからなる。
プロトコル部270はまた、上述のエンドポイント解決を実施するための方法とは無関係に、アプリケーション205によってどの種類のエンドツーエンド保証およびローカルの機能が指定されたかを判定する。アプリケーション205がALO保証を指定した場合、プロトコル部270は、メッセージ275が適切に受信されたという肯定確認応答を受信側(図示せず)から受信するまで、ダイアログの送信バッファ250内にメッセージ275のコピーを保持する。プロトコル部270が受信側から肯定確認応答を受信したとき、プロトコル部270は、そのことをセッション状態235内に記録し、送信バッファ250からメッセージを削除する。プロトコル部270が指定の再試行タイムアウト内に肯定確認応答を受信しなかった場合、プロトコル部は、同一のメッセージシーケンス番号を有する同一のメッセージ275のコピーを再送信する。ダイアログ200は、何回かこのプロセスを反復することができ、ネットワーク上でさらに輻輳が発生するのを回避するために再試行タイマバックオフ法を使用することができる。肯定応答がメッセージTTLによって指定される時間枠内に受信されない場合、エラーが発生し、保証を満たすことができないことが送信側アプリケーション205に通知される。
ダイアログメッセージ280を受信したとき、プロトコル部270は、メッセージを受信バッファ状態240内にコピーする。プロトコル部270はまた、次の予想されるメッセージシーケンス番号を記録する。メッセージ280を受信した場合、ダイアログ200の保証がAMOを含むとき、到着メッセージ280のメッセージシーケンス番号は、受信バッファ状態240内に前述のように格納される先に到着したメッセージシーケンス番号の組と比較される。この組が合致するシーケンス番号を既に含む場合、メッセージ280は複製とみなされて廃棄される。そうでない場合、後の参照のためにメッセージ280がローカルの受信バッファ240内に配置される。
保証がALOを含む場合、プロトコル部270は、メッセージ280の受信時に順序付けられていない完全に選択的な肯定確認応答をダイアログに関するパートナのエンドポイントに送信する。この確認応答は、セッションでそれまでに受信したすべてのメッセージのシーケンス番号を含まなければならない。1組のシーケンス範囲を含む略記法を使用して、メッセージ空間を節約することができる。
指定された保証がIOを含まない場合、メッセージ280は、受信チャネル220を介して受信側アプリケーション205に「配信」するために即座に使用可能にされる。具体的には、メッセージが受信のために使用可能であるという通知がアプリケーション205に送信される。次いでアプリケーション205は受信側215を呼び出し、その結果、配信のために使用可能な次のメッセージがアプリケーション205に渡され、これは「配信」が行われたと呼ばれる。
保証としてIOが指定された場合、到着メッセージ280のシーケンス番号が、次の予想されるシーケンス番号と比較される。シーケンス番号が次の予想されるシーケンス番号より小さい場合、到着メッセージ280が廃棄される。それらが合致する場合、到着メッセージ280は即座に、受信側アプリケーション205に配信することができるようにされ、次の予想されるシーケンス番号が、次の欠落メッセージの番号に設定される。シーケンス番号が次の予想されるシーケンス番号よりも大きい場合、動作は、保証としてALO指定されるか否かに左右される。ALOの保証が指定されない場合、メッセージ280は即座に、受信側アプリケーション205に配信することを可能にされ、次の予想されるシーケンス番号が、到着メッセージ280のシーケンス番号よりも1つ大きい番号に設定される。ALOの保証が指定される場合、メッセージ280は受信側アプリケーション205に配信することが可能とはならないものの、受信バッファ240内にとどまる。したがって、それらが合致しない場合、小さいシーケンス番号の少なくとも1つの他のメッセージを受信していないと推定される。そのような欠落した小さい番号のメッセージすべてが到着したとき、メッセージの連続的範囲が、適切なシーケンスとして受信側アプリケーションに配信するのに使用可能となり、次の予想されるシーケンス番号が、次の欠落メッセージの番号に設定される。
前述のように、メッセージが受信側アプリケーション205に配信することが可能なとき、受信側アプリケーション205に対して通知が発行される。次いで受信側アプリケーションは、ダイアログチャネル220上でReceive()メソッド215を呼び出し、使用可能な次のメッセージの配信を受諾する。Receive()は、使用可能な各メッセージを受信するために複数回呼び出すことができる。順序を確実にするために、イベント通知が逐次配信される。したがって、メッセージがアプリケーション205に配信することが可能なとき、ダイアログ200イベントと共に先に登録されたアプリケーションコードを呼び出すことにより、単一のイベント通知がアプリケーション205に配信される。アプリケーションコードに対するその呼出しが返るまでは、他のメッセージが配信することが可能な場合であっても、そのアプリケーションコードへの他の呼出しは行われない。そのアプリケーションコード内で、アプリケーション205は通常、Dialog Receive()215を呼び出して、次の使用可能なメッセージを受信する。
やはり前述のように、Send()210が呼び出されたとき、現在送信バッファ250中にあるメッセージ数が、指定のバッファ割当と比較される。現在送信バッファ250中にあるメッセージ数がその割当を超過する場合、空間が使用可能となるまで、または送信タイムアウトとなるまで、イベントに対して呼出し元Send()210がブロックされる。送信バッファ250内の空間が利用可能となったとき、バッファは、メッセージの送信を待機する何らかの呼出し元が存在するか否かをチェックされる。そうである場合、呼出し元Send()210がブロック解除され、再びメッセージを送信することができる。
メッセージバッファ250および240、チャネル220、ならびにプロトコル部270内を含むダイアログ200に関するすべての状態を、ダイアログストア260内に同時に保持することができる。ダイアログストア260は、最新の情報を含むべきである。これにより、ダイアログ状態235がダイアログストア260の永続性プロパティを確実に有することとなり、すべての機能が、使用中のストア260にかかわりなく機能することが可能となる。例えば、メッセージ280を受信バッファ240内に配置することには、ストア260へのディスク書込みが関係する可能性がある。保証を実現するために、確認応答は、メッセージがストア260内に記録された後でないと送信されない。これにより、例えば、送信側または受信側がメッセージのコピーを常に確実に有するようにされる。同様に、送信側では、Send()210は、メッセージがストア260内に記録された後でなければ完了しない。
前述のように、ダイアログストア260はプラグが可能なストアであり、これは非常に高い柔軟性によって、永続性、性能、自律性、および管理の目標に合致させることを可能となる。例えば、アプリケーションメモリ内のすべての状態を保持するメモリダイアログストアの実装、別々の専用デーモンプロセスのメモリ内の状態を保持する高速ダイアログストアの実装、または構造化照会言語(SQL)サーバなどの永続データベースストアの実装を含む単一のフレームワーク内の複数のストアのうちの1つからストア260を選択することができる。同一のアプリケーション205内の異なるダイアログが、異なるストアを使用することができる。さらに、本発明により、いくつかのダイアログストア260をローカルのコンピュータノードまたは別のノード上で動作するように構成することも可能となる。
ダイアログ200はアプリケーション205の代わりにエージェントとして動作するので、アプリケーション205は、接続性が変化することとは別におかれる。これにより、例えば、アプリケーションが実行され、いくつかのメッセージを送受信し、次いで他のエンドポイントが応答し、さらには待機して利用可能とする必要ない状態で終了するようなバッチスタイルの処理が可能となる。さらに、様々な配信の保証およびローカルの機能、例えばメッセージまたはセッションTTLに合致することだけに依存する非常に柔軟にメッセージ配信をスケジューリングすることができる。例えば、配信の保証に応じて、ダイアログ200はピークメッセージの負荷をある期間に分散することができ(負荷平衡)、あるいは、アプリケーション205とは独立に、メッセージ配信をよりコスト効率の良い時間にシフトし、資源が使用可能となるまで待機し、メッセージまたはダイアログの優先順位を調節することなどを行う。加えて、ストア260は、アプリケーション205に対してシャットダウンの機能および再始動の機能を提供する。バッチ処理、スケジューリング、ならびにアプリケーションのシャットダウンの機能および再始動の機能により、システムの可用性および拡張性が向上する。
加えて、前述のように、アプリケーション205は、Send()210およびReceive()215演算をダイアログバッファ250および240に関して処理することを指定することができる。これにより、アプリケーションは、例えばメッセージを受信し、1つまたは複数のダイアログに関するいくつかのメッセージを送信し、すべて単一のトランザクション内にあるアプリケーションテーブルを更新することが可能となる。このようなトランザクションの使用法においては、これは単にローカルの概念であって他のエンドポイントに搬送したりされない。
ダイアログはまた、実行中の障害回復も提供するが、これは、アプリケーションの実装を使用せずに、多くの障害265を自動的に回復(マスク)させることができる。アプリケーションは、ダイアログ200の寿命の間にアサートされた特性(すなわち、アサートされた保証および機能)を受信することができる。ダイアログ200またはプロトコル部270についての下部構造により、アサートされる特性がもはや満たされないと判定された場合、主要なアプリケーションコードと、またはアプリケーション205とさえ無関係に動作する帯域外の訂正を考慮して、ダイアログは障害状態に配置され、障害イベントが生成される。障害265を訂正(修復)することができる場合、ダイアログをサービスに戻すことができる。回復不能な障害、すなわち修復することができない障害は、ダイアログ200およびアプリケーション通知が終了する結果となる可能性がある。このような設計は、高信頼性のアプリケーションの開発の基礎となる「フェイルファースト(fail−fast)」モデルに準拠する。
致命的でない障害には、メッセージの破壊、紛失、重複、または遅延、伝送機構およびネットワークの障害、プロセス障害、中継点障害、ならびにシステム障害を含めることができる。前述のように、ダイアログ200がアプリケーションにアブストラクションを提供し、それ自体のバッファおよびストアを維持するので、ダイアログ200は、断続的に接続されるアプリケーションおよび環境もサポートする。ダイアログはまた、ネットワークトポロジに対する変化、再ネゴシエーションされたセキュリティコンテキスト、またはエンドポイントの再配置などの環境の変化に適合することもできる。
ダイアログ200はそれ自体で、例えばメッセージを再送信することよってこうした障害を自動的に修復するよう企図することができる。これに代えて、またはこれとともに、ダイアログ200は、第3者、例えばシステムオペレータまたは診断用のコードに要求を送信して、障害を修復する際の助けを求めることができる。この助けは例えば、ネットワーク内の断線を修復する単純な人間による介入とすることができ、または場合によっては自動修復プロセスとすることができる。いずれの場合も、障害を修復した後は、ダイアログ200はメッセージの送信を続行することができる。これらを他の可用性の機能と組み合わせることにより、長寿命のダイアログが可能となる。しかし、ダイアログ200または何らかの他の第3者の介入によって障害を解決することができない場合、ダイアログを開始したアプリケーション205に対してエラーメッセージを生成すべきである。
アプリケーションプロセス障害および再始動にわたってダイアログを維持することを可能にするダイアログストア260を使用するようにアプリケーションを構成することができる。加えて、何らかのストア260により、システム障害および再始動を許容することができる。
ドメイン固有の障害ハンドラと前述の基本メッセージ再送信サポートとの組合せにより、他の伝送障害を自動的に処理することができる。その例には、セキュリティ証明書(credential)またはポリシー満了の結果として生じる障害が含まれる。保護セッション上で送信されたメッセージに、証明書満了のために障害が発生した場合、ダイアログ200は、セキュリティ証明書を再ネゴシエーションし、ダイアログの障害をクリアすることができる。ダイアログの処理が再開したとき、バッファリングされたメッセージは、標準の再試行プロセスによって更新された証明書と共に再送信される。
やはり前述のように、ダイアログ200に関する設計および対応する下部構造により、ランタイムが実行環境の変化にダイアログ200を動的に適合させることが可能となる。これは、アプリケーション実装にとって透過的に実現することができ、長寿命のダイアログおよび高いレベルで使用可能なアプリケーションを可能とする。
障害ハンドラ(プラグすることが可能)と、送信および配信の再試行と、障害および修復モデルとの上述の組合せにより、ダイアログは多くの環境変化に適合することが可能となる。こうした変化には、限定はしないが、ポリシーの変化(例えばメッセージプライバシー)、プロトコルの変化(例えば新しいセキュリティプロトコルのサポート)、ネットワークトポロジの変化(例えばルータまたはファイアウォールの追加または取外し)、負荷の増大に対処するための配置アプリケーションの変更(例えば、アプリケーションファームおよび/またはパーティションの導入)、およびダイアログのエンドポイントと関連する状態の再配置(例えば、災害回復)が含まれる。これにより、非常に小規模から非常に大規模までをサポートするスケーラブルな配置の選択が可能となる。例えば、ダイアログ200は、やはりアプリケーションの実装にとって透過的なスケールアップ、スケールアウト、アプリケーション複製、または区分化をサポートする。
図3に、ダイアログ200のライフサイクルおよび状態を示す。ダイアログ200は、アクティブ320または非アクティブ360の2つの主状態の一方とすることができる。ダイアログ200がアクティブ320である場合、ダイアログチャネルオブジェクト220がメモリ内にあり、そうでない場合、ダイアログ200が非アクティブ360であり、ダイアログ200はダイアログストア260内にのみ存在する。管理システム資源は、手動または自動で行うことのできる非アクティブ化350および再アクティブ化340プロセスによって行われる。例えば、非アクティブ化350は、アプリケーションがDisposeを呼び出す場合に手動で行うことができ、またはメッセージがダイアログチャネル上で交換されない場合に一定期間が非活動で経過する非活動時間のために自動的に行うことができる。このようなチャネルを非アクティブ化することが可能となり(対応するオブジェクトがメモリから解放され)、したがって他の事柄のためにメモリ資源が解放される。
再アクティブ化340は、アプリケーションがダイアログマネージャ(図示せず)にチャネルを要求する場合に手動で行うことができ、または新しいメッセージがセッションに到着した場合に自動的に行うことができる。ダイアログ作成310の間に、ダイアログマネージャによって各ダイアログに固有のIDが割り当てられる。このIDは、再アクティブ化340要求時にアプリケーション205によってダイアログマネージャに渡され、ダイアログマネージャはIDを使用してダイアログ状態の位置を突き止め、チャネルを再開する。非アクティブ化350および再アクティブ化340のインターフェースにより、システムが、発信メッセージの送信または着信メッセージの処理のためにアクティブに使用されていないダイアログに関連する処理資源を制限することが可能となる。これにより、下部構造が、ダイアログストア260に関連する資源以外の関係する資源を再利用することが可能となる。さらに、この設計により、優先順位または資源可用性に基づくメッセージ送信のスケジューリング、より効率的な送信のためのメッセージのバッチ処理、優先順位または資源可用性に基づくメッセージ配信のスケジューリング、およびより効率的な処理のためのメッセージ配信のバッチ処理を含む資源スケジューリングが可能となる。
ダイアログの作成310は、ダイアログマネージャによって制御され、作成310機能を呼び出すアプリケーションによって開始することができる。あるいは、メッセージ交換システムは、新しいダイアログが必要であることを示す別のエンドポイントからのメッセージを受信した後に、ダイアログ作成310を開始することができる。この場合、システムは、ダイアログが要求されたことをアプリケーション205に通知する。次いでアプリケーション205は、ダイアログマネージャ上のAcceptメソッドを呼び出して、ダイアログ要求を受諾し、ダイアログ作成310を引き起こすことができ、またはダイアログマネージャ上のRejectメソッドを呼び出して、ダイアログ要求を拒絶することができる。ダイアログマネージャはまた、ティアダウン(Teardown)330も制御し、いくつかの理由でそれを開始することができる。1つの理由は、セッションが首尾よく完了し、すなわち両側が送信を終了し、メッセージがもう残っていないということであろう。ティアダウン330を制御する別の理由は、ダイアログ200が終了し、例えばアプリケーションがTerminate()関数を呼び出し、またはパートナのエンドポイントから終了を求める指示を受信したことかもしれない。一方の側がダイアログを終了したとき、これを示すためにメッセージが他方の側に送信される。このメッセージに対する信頼性はなく、単に、ダイアログが終了したことを他方の側に伝えるための試行である。終了は、ダイアログのセッションを介してそれ以上のメッセージが交換されることがないことを示唆する。
本発明の説明では、ダイアログを両方のセッションエンドポイントのパートナでアプリケーションのメッセージを送信および受信することができる二重通信機構と定義するが、別の例示される実施形態には、単信モデルが含まれる。実施形態によれば、一方のセッションエンドポイントは、アプリケーションのメッセージ送信のみを行い、そのパートナのエンドポイントからアプリケーションのメッセージを受信せず、セッションエンドポイントのパートナは、アプリケーションのメッセージの受信のみを行い、アプリケーションのメッセージを送信しない。ダイアログにおいては、同一の構成が可能な保証、および構成が可能なローカルのエンドポイントの機能が適用される。実装は、送信側エンドポイントで受信バッファ240が不要であり、受信側エンドポイントで送信バッファ250が不要である点で異なる。
本発明の範囲内の実施形態はまた、コンピュータ実行可能命令またはデータ構造を搬送し、または格納するためのコンピュータ読取可能な媒体も含む。このようなコンピュータ読取可能な媒体は、汎用コンピュータまたは専用コンピュータでアクセスすることができる入手可能などんな媒体でもよい。例えば限定はしないが、そのようなコンピュータ読取可能な媒体には、RAM、ROM、EEPROM、CD−ROM、または他の光ディスク記憶媒体、磁気ディスク記憶媒体または他の磁気記憶装置、あるいはコンピュータ実行可能命令またはデータ構造の形態の所望のプログラムコード手段を搬送または記憶するのに使用することができ、かつ汎用コンピュータまたは専用コンピュータでアクセスすることができる他のどんな媒体も含めることができる。情報がネットワークまたは他の通信接続(ハードワイヤード、無線、あるいはハードワイヤードと無線の組合せ)を介してコンピュータに転送または供給されるとき、コンピュータはその接続をコンピュータ読取可能な媒体として適切に認識する。したがって、任意のそのような接続が、コンピュータ読取可能な媒体と呼ぶのは適切である。上記の組合せもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。例えばコンピュータ実行可能命令は、ある機能または機能の集まりを汎用コンピュータ、専用コンピュータ、または専用処理装置に実行させる命令およびデータを含む。
図4および以下の議論は、本発明を実施することができる適切なコンピューティング環境の簡潔で一般的な説明を与えるものである。必須ではないが、ネットワーク環境内のコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的状況の下で本発明を説明する。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールが、本明細書で開示される方法のステップを実行するプログラムコード手段の例を表す。このような実行可能命令の特定のシーケンス、または関連するデータ構造が、このようなステップで記述される機能を実施する対応する行為の例を表す。
パーソナルコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な消費者向け電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む、多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境で本発明を実施できることを当業者は理解されよう。本発明は、通信ネットワークを介して(ハードワイヤードリンク、無線リンク、あるいはハードワイヤードリンクと無線リンクの組合せによって)リンクされるローカル処理装置およびリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリ記憶装置とリモートメモリ記憶装置のどちらにも置くことができる。
図4を参照すると、本発明を実装するための例示のシステムは、従来型コンピュータ420の形態の汎用コンピューティング装置を含む。従来型コンピュータ420は、処理装置421と、システムメモリ422と、システムメモリ422を含む様々なシステム構成要素を処理装置421に結合するシステムバス423とを含む。システムバス423は、メモリバスまたはメモリコントローラと、周辺バスと、様々なバスアーキテクチャのいずれかを用いるローカルバスとを含むいくつかのタイプのバス構造のいずれでもよい。システムメモリは、読取り専用メモリ(ROM)424およびランダムアクセスメモリ(RAM)425を含む。始動中などにコンピュータ420内の要素間で情報を転送する助けになる基本ルーチンを含む基本入出力システム(BIOS)426を、ROM424内に格納することができる。
コンピュータ420はまた、磁気ハードディスク439を読み書きするための磁気ハードディスクドライブ427と、取外し可能磁気ディスク429を読み書きするための磁気ディスクドライブ428と、CD−ROMや他の光媒体などの取外し可能光ディスク431を読み書きするための光ディスクドライブ430とを含むことができる。磁気ハードディスクドライブ427、磁気ディスクドライブ428、および光ディスクドライブ430は、それぞれハードディスクドライブインターフェース432、磁気ディスクドライブインターフェース433、および光ドライブインターフェース434によってシステムバス423に接続される。ドライブと、それに関連するコンピュータ読取可能な媒体とにより、コンピュータ420に対して、コンピュータ実行可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶が提供される。本明細書で説明する例示される環境では、磁気ハードディスク439、取外し可能磁気ディスク429、および取外し可能光ディスク431を使用するが、磁気カセット、フラッシュメモリカード、デジタルバーサタイルディスク、ベルヌーイカートリッジ、RAM、ROMなど、他のタイプのデータ記憶用コンピュータ読取可能な媒体も使用することができる。
オペレーティングシステム435、1つまたは複数のアプリケーションプログラム436、他のプログラムモジュール437、およびプログラムデータ438を含む1つまたは複数のプログラムモジュールを有するプログラムコード手段を、ハードディスク439、磁気ディスク429、光ディスク431、ROM424、またはRAM425上に格納することができる。ユーザは、キーボード440、ポインティングデバイス442、あるいはマイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどの他の入力装置(図示せず)を介してコンピュータ420にコマンドおよび情報を入力することができる。上記およびその他の入力装置はしばしば、システムバス423に結合されたシリアルポートインターフェース446を介して処理装置421に接続される。あるいは、入力装置は、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)などの他のインターフェースによって接続することもできる。モニタ447または他のディスプレイ装置もまた、ビデオアダプタ448などのインターフェースを介してシステムバス423に接続される。モニタに加えて、パーソナルコンピュータは一般に、スピーカやプリンタなどの他の周辺出力装置(図示せず)を含む。
コンピュータ420は、リモートコンピュータ449aおよび449bなどの1つまたは複数のリモートコンピュータに対する論理接続を用いて、ネットワーク環境で動作することができる。リモートコンピュータ449aおよび449bはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の共通ネットワークノードでよく、一般にはコンピュータ420に関する前述の要素のうちの多くまたはすべてを含むが、図4にはメモリ記憶装置450aおよび450bと、それに関連するアプリケーションプログラム436aおよび436bだけを示してある。図4に示す論理接続は、ローカルエリアネットワーク(LAN)451および広域ネットワーク(WAN)452を含む。これらは限定的なものではなく、単に例としてここで示したに過ぎない。このようなネットワーキング環境は、オフィス全体または企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
LANネットワーキング環境で使用するとき、コンピュータ420は、ネットワークインターフェース/アダプタ453を介してローカルネットワーク451に接続される。WANネットワーキング環境で使用するとき、コンピュータ420は、モデム454、無線リンク、あるいはインターネットなどの広域ネットワーク452を介して通信を確立するための他の手段を含むことができる。モデム454は内蔵でも外付けでもよく、シリアルポートインターフェース446を介してシステムバス423に接続される。ネットワーク環境では、コンピュータ420に関して示したプログラムモジュールまたはその一部を、リモートメモリ記憶装置内に格納することができる。ここで示したネットワーク接続は例示的なものであって、広域ネットワーク452を介して通信を確立する他の手段も使用できることを理解されよう。
本発明の精神または不可欠な特徴から逸脱することなく、本発明を他の特定の形態で実施することができる。記載の実施形態は、すべての点において例示的なものに過ぎず、限定的ではないとみなすべきである。したがって、本発明の範囲は、上記の説明によってではなく、特許請求の範囲によって示される。特許請求の範囲の等価の意味および範囲内にあるすべての変更は、その範囲内に包含されるべきである。
100a、100b 高信頼性メッセージ交換スタック
105、185 アプリケーション
115 メッセージ
120、180 高信頼性メッセージ交換フレームワーク
135 中継点
140 データグラムメッセージ交換層
145、155、170 伝送機構
160、165 伝送機構
190 セッション状態(送信)バッファ
191 メッセージ
192 肯定応答メッセージ
195 セッション状態(受信)バッファ
200 ダイアログ
205 アプリケーション
220 ダイアログチャネル
235 ダイアログ状態
240 受信バッファ
250 送信バッファ
260 ダイアログストア
265 障害
270 プロトコル部
275 メッセージ
280 ダイアログメッセージ
285 ポート
310 ダイアログ作成
420 従来型コンピュータ
421 処理装置
422 システムメモリ
423 システムバス
424 読取り専用メモリ(ROM)
425 ランダムアクセスメモリ(RAM)
426 基本入出力システム(BIOS)
427 磁気ハードディスクドライブ
428 磁気ディスクドライブ
429 取外し可能磁気ディスク
430 光ディスクドライブ
431 取外し可能光ディスク
432 ハードディスクドライブインターフェース
433 磁気ディスクドライブインターフェース
434 光ドライブインターフェース
435 オペレーティングシステム
436、436a、436b アプリケーションプログラム
437 他のプログラムモジュール
438 プログラムデータ
439 磁気ハードディスク
440 キーボード
442 ポインティングデバイス
446 シリアルポートインターフェース
447 モニタ
448 ビデオアダプタ
449a、449b リモートコンピュータ
450a、450b メモリ記憶装置
451 ローカルエリアネットワーク(LAN)
452 広域ネットワーク(WAN)
453 ネットワークインターフェース/アダプタ
454 モデム
105、185 アプリケーション
115 メッセージ
120、180 高信頼性メッセージ交換フレームワーク
135 中継点
140 データグラムメッセージ交換層
145、155、170 伝送機構
160、165 伝送機構
190 セッション状態(送信)バッファ
191 メッセージ
192 肯定応答メッセージ
195 セッション状態(受信)バッファ
200 ダイアログ
205 アプリケーション
220 ダイアログチャネル
235 ダイアログ状態
240 受信バッファ
250 送信バッファ
260 ダイアログストア
265 障害
270 プロトコル部
275 メッセージ
280 ダイアログメッセージ
285 ポート
310 ダイアログ作成
420 従来型コンピュータ
421 処理装置
422 システムメモリ
423 システムバス
424 読取り専用メモリ(ROM)
425 ランダムアクセスメモリ(RAM)
426 基本入出力システム(BIOS)
427 磁気ハードディスクドライブ
428 磁気ディスクドライブ
429 取外し可能磁気ディスク
430 光ディスクドライブ
431 取外し可能光ディスク
432 ハードディスクドライブインターフェース
433 磁気ディスクドライブインターフェース
434 光ドライブインターフェース
435 オペレーティングシステム
436、436a、436b アプリケーションプログラム
437 他のプログラムモジュール
438 プログラムデータ
439 磁気ハードディスク
440 キーボード
442 ポインティングデバイス
446 シリアルポートインターフェース
447 モニタ
448 ビデオアダプタ
449a、449b リモートコンピュータ
450a、450b メモリ記憶装置
451 ローカルエリアネットワーク(LAN)
452 広域ネットワーク(WAN)
453 ネットワークインターフェース/アダプタ
454 モデム
Claims (47)
- 1つまたは複数のメッセージ伝送機構をサポートするメッセージ交換システムにおいて、所定のメッセージ伝送機構を開発時に指定せずに、実行時に使用される前記所定のメッセージ伝送機構とは無関係に、実行時に満たすべき1つまたは複数のエンドツーエンドメッセージの配信の保証を指定することを可能にする単一のプログラミングモデルを提供することによってアプリケーション開発を簡略化する方法であって、
1つまたは複数のメッセージを送信および受信するのに使用可能な1つまたは複数のメッセージ伝送機構を介してメッセージを交換するための送信演算および受信演算を抽象化するメッセージチャネルインターフェースを定義する動作と、
単一のプログラミングモデル内で使用するために、前記1つまたは複数の使用可能メッセージ伝送機構を開発時に指定することなく、前記1つまたは複数の使用可能なメッセージ伝送機構とは無関係に実行時に各々指定することができる複数のエンドツーエンドメッセージの配信の保証を定義する動作であって、前記複数のメッセージの配信の保証は、少なくとも1回メッセージ配信、高々1回メッセージ配信、順序ごと送信メッセージ配信、およびセッション生存期間のうち少なくとも1つを含む動作と
を備えたことを特徴とする方法。 - 複数のローカルの高信頼性メッセージの機能を定義する動作であって、前記単一のプログラミングモデル内で使用するために前記複数のローカルの高信頼性メッセージの機能を選択することができ、前記複数のローカルの高信頼性メッセージの機能は、セッション状態ストレージ、メッセージ生存期間、および処理済みメッセージバッファリングのうち少なくとも1つを含む動作をさらに備えたことを特徴とする請求項1に記載の方法。
- セッション状態ストレージの前記ローカルの高信頼性メッセージの機能は、プラグが可能なストアを含むことを特徴とする請求項2に記載の方法。
- 前記ストアは、メモリ内ストレージ、ディスク上の永続ストレージ、またはデーモンプロセスストレージのうち少なくとも1つを含むことを特徴とする請求項3に記載の方法。
- 前記ストアは、前記定義された複数のエンドツーエンドメッセージの配信の保証のうち1つまたは複数を指定するアプリケーションのローカルにあることを特徴とする請求項4に記載の方法。
- 前記ストアは、前記定義された複数のエンドツーエンドメッセージの配信の保証のうち1つまたは複数を指定するアプリケーションのリモートにあることを特徴とする請求項4に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、最大メッセージサイズと共に前記システムによってバッファリングされ、メッセージが消費することができる最大スペースを制限する最大メッセージ数を定義するバッファ割当をさらに含むことを特徴とする請求項2に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、前記バッファ割当に従って必要なバッファ空間を使用できない場合、送信タイムアウトが満了した後にメッセージ送信機能のブロックを解除する送信タイムアウトをさらに含むことを特徴とする請求項7に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、最大メッセージサイズと共に指定のメッセージ数に対して十分なバッファ空間を確保するバッファ割当をさらに含むことを特徴とする請求項2に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、優先順位の選択肢をさらに含み、高い優先順位のメッセージの送信が、低い優先順位のメッセージよりも優先されることを特徴とする請求項2に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、優先順位の選択肢をさらに含み、高い優先順位のメッセージの配信が、低い優先順位のメッセージよりも優先されることを特徴とする請求項2に記載の方法。
- 処理済みメッセージバッファリングの前記ローカルの高信頼性メッセージの機能は、前記セッション状態ストレージの永続性の如何にかかわらず使用可能であることを特徴とする請求項2に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、メッセージを配信不能とみなす前にメッセージ配信をアボートしなければならない回数であって構成が可能な数をさらに含むことを特徴とする請求項2に記載の方法。
- 前記エンドツーエンドメッセージの配信の保証およびローカル機能によって定義されるメッセージの構成の選択肢を含む固有の1組を提供する1組のプロファイルによってメッセージ交換特性の定義が可能なことを特徴とする請求項2に記載の方法。
- 1つまたは複数のメッセージ伝送機構をサポートするメッセージ交換システムにおいて、所定のメッセージ伝送機構を開発時に指定せず、前記所定のメッセージ伝送機構を実行時に選択する際に使用するために1つまたは複数のエンドツーエンド配信保証を指定することを可能にする単一のプログラミングモデルを提供することによってアプリケーション開発を簡略化する方法であって、
前記1つまたは複数のメッセージ伝送機構を介してメッセージを交換するためにメッセージチャネルインターフェースを抽象化するステップと、
前記単一のプログラミングモデル内で使用するために複数のエンドツーエンドメッセージの配信の保証のうち1つまたは複数をアプリケーション開発者が指定することを可能にするステップであって、当該指定されるエンドツーエンド配信保証は、開発時にいずれのメッセージ伝送機構も指定することなく、実行時に適切なメッセージ伝送機構を選択する際に使用され、前記複数のメッセージの配信の保証は、少なくとも1回メッセージ配信、高々1回メッセージ配信、順序ごと送信メッセージ配信、およびメッセージ生存期間のうち少なくとも1つを含むステップと
を備えたことを特徴とする方法。 - アプリケーション開発者が、複数のローカルの高信頼性メッセージの機能のうち1つまたは複数を指定することを可能にするステップであって、前記複数のローカルの高信頼性メッセージの機能の各々は、前記単一のプログラミングモデル内で使用するために選択することができ、前記複数のローカルの高信頼性メッセージの機能は、セッション状態ストレージ、メッセージ生存期間、および処理済みメッセージバッファリングのうち少なくとも1つを含むステップをさらに備えたことを特徴とする請求項15に記載の方法。
- 前記セッション状態ストレージのローカルの高信頼性メッセージの機能は、プラグが可能なストアを含むことを特徴とする請求項16に記載の方法。
- 前記ストアは、メモリ内ストレージ、ディスク上の永続ストレージ、またはデーモンプロセスストレージのうち少なくとも1つを含むことを特徴とする請求項17に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、最大メッセージサイズと共に前記システムによってバッファリングされる最大メッセージ数を定義するバッファ割当をさらに含むことを特徴とする請求項16に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、前記バッファ割当が満たされた場合、前記送信タイムアウトが満了した後に前記送信機能のブロックを解除する送信タイムアウトをさらに含むことを特徴とする請求項19に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、優先順位の選択肢をさらに含み、高い優先順位のメッセージが、低い優先順位のメッセージよりも前に送信されることを特徴とする請求項16に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、優先順位の選択肢をさらに含み、高い優先順位のメッセージが、低い優先順位のメッセージよりも前に受信されることを特徴とする請求項16に記載の方法。
- 処理済みメッセージバッファリングの前記ローカルの高信頼性メッセージの機能は、前記セッション状態ストレージの永続性の如何にかかわらず使用可能であることを特徴とする請求項16に記載の方法。
- 前記ローカルの高信頼性メッセージの機能は、メッセージを配信不能とみなす前にメッセージ配信をアボートしなければならない回数を構成する手段をさらに含むことを特徴とする請求項16に記載の方法。
- 前記エンドツーエンドメッセージの配信の保証およびローカル機能によって定義されるメッセージ構成の選択肢を含む固有の1組を提供する1組のプロファイルによってメッセージ配信特性の定義が可能なことを特徴とする請求項16に記載の方法。
- 1つまたは複数のメッセージ伝送機構をサポートするメッセージ交換システムにおいて、所定のメッセージ伝送機構を開発時に指定せずに、実行時に前記所定のメッセージ伝送機構を選択する際に使用するために1つまたは複数のエンドツーエンドメッセージの配信の保証を指定することを可能にする単一のプログラミングモデルを提供することによってアプリケーション開発を簡略化する方法を実施するコンピュータ実行可能命令を格納する1または複数のコンピュータ読取可能な媒体を含むコンピュータプログラム製品であって、前記方法は、
1つまたは複数のメッセージ伝送機構を介してメッセージを交換するための送信演算および受信演算を抽象化するメッセージチャネルインターフェースを定義する動作と、
単一のプログラミングモデル内で使用するために、適切なメッセージ伝送機構を開発時に指定せずに、前記適切なメッセージ伝送機構を実行時に選択する際に使用すべき複数のエンドツーエンドメッセージの配信の保証を定義する動作であって、前記複数のメッセージの配信の保証は、少なくとも1回メッセージ配信、高々1回メッセージ配信、順序ごと送信メッセージ配信、およびセッション生存期間のうち少なくとも1つを含む動作と
を備えたことを特徴とするコンピュータプログラム製品。 - 複数のローカルの高信頼性メッセージの機能を定義する動作をさらに備え、前記複数のローカル高信頼性メッセージ交換機能の各々は、前記単一のプログラミングモデル内で使用するために選択することができ、前記複数のローカルの高信頼性メッセージの機能は、セッション状態ストレージ、メッセージ生存期間、および処理済みメッセージバッファリングのうち少なくとも1つを含むことを特徴とする請求項26に記載のコンピュータプログラム製品。
- 前記セッション状態ストレージのローカルの高信頼性メッセージの機能は、プラグが可能なストアを含むことを特徴とする請求項27に記載のコンピュータプログラム製品。
- 前記ストアは、メモリ内ストレージ、ディスク上の永続ストレージ、またはデーモンプロセスストレージのうち少なくとも1つを含むことを特徴とする請求項28に記載のコンピュータプログラム製品。
- 前記ローカルの高信頼性メッセージの機能は、最大メッセージサイズと共に前記システムによってバッファリングされる最大メッセージ数を定義するバッファ割当をさらに含むことを特徴とする請求項27に記載のコンピュータプログラム製品。
- 前記ローカルの高信頼性メッセージの機能は、前記バッファ割当が満たされた場合に前記送信タイムアウトが満了した後に前記送信機能のブロックを解除する送信タイムアウトをさらに含むことを特徴とする請求項30に記載のコンピュータプログラム製品。
- 前記ローカルの高信頼性メッセージの機能は、優先順位の選択肢をさらに含み、高い優先順位のメッセージが、低い優先順位のメッセージよりも前に送信されることを特徴とする請求項27に記載のコンピュータプログラム製品。
- 前記ローカルの高信頼性メッセージの機能は、優先順位の選択肢をさらに含み、高い優先順位のメッセージが、低い優先順位のメッセージよりも前に受信されることを特徴とする請求項27に記載のコンピュータプログラム製品。
- 処理済みメッセージバッファリングの前記ローカルの高信頼性メッセージの機能は、前記セッション状態ストレージの永続性の如何にかかわらず使用可能であることを特徴とする請求項27に記載のコンピュータプログラム製品。
- 前記ローカルの高信頼性メッセージの機能は、メッセージを配信不能とみなす前にメッセージ配信をアボートしなければならない回数を構成する手段をさらに含むことを特徴とする請求項27に記載のコンピュータプログラム製品。
- 前記エンドツーエンドメッセージの配信の保証およびローカル機能によって定義されるメッセージ構成の選択肢を含む固有の1組を提供する1組のプロファイルによってメッセージ配信特性を定義することができることを特徴とする請求項27に記載のコンピュータプログラム製品。
- 所定のメッセージ伝送機構を開発時に指定せずに、実行時に前記所定のメッセージ伝送機構を選択する際に使用するために1つまたは複数のエンドツーエンドメッセージの配信の保証を指定することを可能にする単一のプログラミングモデルを提供することによってアプリケーション開発を簡略化する方法を実施するコンピュータ実行可能命令を格納する1または複数のコンピュータ読取可能な媒体を含むコンピュータプログラム製品であって、前記方法は、
1つまたは複数のメッセージ伝送機構を介してメッセージを交換するためのメッセージチャネルインターフェースを抽象化するステップと、
前記単一のプログラミングモデル内で使用するために複数のエンドツーエンドメッセージの配信の保証のうち1つまたは複数をアプリケーション開発者が指定することを可能にするステップであって、当該指定されるエンドツーエンドの配信の保証は、開発時にいずれのメッセージ伝送機構も指定することなく、実行時に適切なメッセージ伝送機構を選択する際に使用され、前記複数のメッセージの配信の保証は、少なくとも1回メッセージ配信、高々1回メッセージ配信、順序ごと送信メッセージ配信、およびメッセージ生存期間のうち少なくとも1つを含むステップと
を備えたことを特徴とするコンピュータプログラム製品。 - アプリケーション開発者が、複数のローカルの高信頼性メッセージの機能のうち1つまたは複数を指定することを可能にするステップであって、前記複数のローカルの高信頼性メッセージの機能の各々は、前記単一のプログラミングモデル内で使用するために選択することができ、前記複数のローカルの高信頼性メッセージの機能は、セッション状態ストレージ、メッセージ生存期間、および処理済みメッセージバッファリングのうち少なくとも1つを含むステップをさらに備えたことを特徴とする請求項37に記載のコンピュータプログラム製品。
- 前記セッション状態ストレージのローカルの高信頼性メッセージの機能は、プラグが可能なストアを含むことを特徴とする請求項38に記載のコンピュータプログラム製品。
- 前記ストアは、メモリ内ストレージ、ディスク上の永続ストレージ、またはデーモンプロセスストレージのうち少なくとも1つを含むことを特徴とする請求項39に記載のコンピュータプログラム製品。
- 前記ローカルの高信頼性メッセージの機能は、最大メッセージサイズと共に、前記システムによってバッファリングされる最大メッセージ数を定義するバッファ割当をさらに含むことを特徴とする請求項38に記載のコンピュータプログラム製品。
- 前記ローカルの高信頼性メッセージの機能は、前記バッファ割当が満たされた場合に前記送信タイムアウトが満了した後に前記送信機能のブロックを解除する送信タイムアウトをさらに含むことを特徴とする請求項41に記載のコンピュータプログラム製品。
- 前記ローカルの高信頼性メッセージの機能は、優先順位の選択肢をさらに含み、高い優先順位のメッセージが、低い優先順位のメッセージよりも前に送信されることを特徴とする請求項38に記載のコンピュータプログラム製品。
- 前記ローカルの高信頼性メッセージの機能は、優先順位の選択肢をさらに含み、高い優先順位のメッセージが、低い優先順位のメッセージよりも前に受信されることを特徴とする請求項38に記載のコンピュータプログラム製品。
- 処理済みメッセージバッファリングの前記ローカルの高信頼性メッセージの機能は、前記セッション状態ストレージの永続性の如何にかかわらず使用可能であることを特徴とする請求項38に記載のコンピュータプログラム製品。
- 前記ローカルの高信頼性メッセージの機能は、メッセージを配信不能とみなす前にメッセージ配信をアボートしなければならない回数を構成する手段をさらに含むことを特徴とする請求項38に記載のコンピュータプログラム製品。
- 前記エンドツーエンドメッセージの配信の保証およびローカル機能によって定義されるメッセージ構成の選択肢を含む固有の1組を提供する1組のプロファイルによってメッセージ配信特性の定義が可能なことを特徴とする請求項38に記載のコンピュータプログラム製品。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/401,649 US7676580B2 (en) | 2003-03-27 | 2003-03-27 | Message delivery with configurable assurances and features between two endpoints |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004295895A true JP2004295895A (ja) | 2004-10-21 |
Family
ID=32825023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004093769A Pending JP2004295895A (ja) | 2003-03-27 | 2004-03-26 | 2点間の保証および機能の構成が可能なメッセージ配信 |
Country Status (19)
Country | Link |
---|---|
US (1) | US7676580B2 (ja) |
EP (1) | EP1463249A3 (ja) |
JP (1) | JP2004295895A (ja) |
KR (1) | KR20040086583A (ja) |
CN (1) | CN1534923B (ja) |
AU (1) | AU2004200732A1 (ja) |
BR (1) | BRPI0400775A (ja) |
CA (1) | CA2460274A1 (ja) |
CO (1) | CO5560092A1 (ja) |
IL (1) | IL160572A0 (ja) |
MX (1) | MXPA04002731A (ja) |
MY (1) | MY144262A (ja) |
NO (1) | NO20041261L (ja) |
NZ (1) | NZ531382A (ja) |
PL (1) | PL366440A1 (ja) |
RU (1) | RU2363040C2 (ja) |
SG (1) | SG116532A1 (ja) |
TW (1) | TWI337823B (ja) |
ZA (1) | ZA200401582B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006216034A (ja) * | 2005-02-04 | 2006-08-17 | Microsoft Corp | 相関メッセージを、ネットワークを介して通信するための待機セッション |
US20230069362A1 (en) * | 2021-08-27 | 2023-03-02 | Toshiba Tec Kabushiki Kaisha | Maintenance support server and maintenance system |
Families Citing this family (115)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8144671B2 (en) | 2005-07-01 | 2012-03-27 | Twitchell Jr Robert W | Communicating via nondeterministic and deterministic network routing |
US7693952B2 (en) * | 2003-03-27 | 2010-04-06 | Microsoft Corporation | Availability and scalability in a messaging system in a manner transparent to the application |
US7966368B2 (en) * | 2003-05-02 | 2011-06-21 | Microsoft Corporation | Communicating messages over transient connections in a peer-to-peer network |
JP2005293370A (ja) * | 2004-04-01 | 2005-10-20 | Hitachi Ltd | 記憶制御システム |
US7142107B2 (en) | 2004-05-27 | 2006-11-28 | Lawrence Kates | Wireless sensor unit |
US7483943B2 (en) * | 2004-09-21 | 2009-01-27 | Microsoft Corporation | Reliable messaging using clocks with synchronized rates |
KR100663465B1 (ko) * | 2004-10-08 | 2007-01-02 | 삼성전자주식회사 | 전송제어 프로토콜을 사용하는 데이터 네트워크에서 다중 세그먼트 복구를 위한 가상 블록 정보의 송수신 방법 및 장치 |
US7730196B2 (en) * | 2004-12-03 | 2010-06-01 | Microsoft Corporation | Efficient transfer of messages using reliable messaging protocols for web services |
US7899921B2 (en) * | 2004-12-08 | 2011-03-01 | Microsoft Corporation | Verifying and maintaining connection liveliness in a reliable messaging for web services environment |
US7474618B2 (en) * | 2005-03-02 | 2009-01-06 | Objective Interface Systems, Inc. | Partitioning communication system |
US8032500B2 (en) * | 2005-08-22 | 2011-10-04 | Oracle America, Inc. | Dynamic sending policies and client-side disaster recovery mechanism for messaging communication |
JP2007081678A (ja) * | 2005-09-13 | 2007-03-29 | Ntt Docomo Inc | データ中継装置及びデータ中継方法 |
US7721293B2 (en) * | 2005-09-21 | 2010-05-18 | Sap Ag | Web services hibernation |
US7761533B2 (en) * | 2005-09-21 | 2010-07-20 | Sap Ag | Standard implementation container interface for runtime processing of web services messages |
US7711836B2 (en) * | 2005-09-21 | 2010-05-04 | Sap Ag | Runtime execution of a reliable messaging protocol |
US20070067461A1 (en) * | 2005-09-21 | 2007-03-22 | Savchenko Vladimir S | Token streaming process for processing web services message body information |
US7716279B2 (en) * | 2005-09-21 | 2010-05-11 | Sap Ag | WS addressing protocol for web services message processing runtime framework |
US7788338B2 (en) | 2005-09-21 | 2010-08-31 | Sap Ag | Web services message processing runtime framework |
US7606921B2 (en) * | 2005-09-21 | 2009-10-20 | Sap Ag | Protocol lifecycle |
US8745252B2 (en) * | 2005-09-21 | 2014-06-03 | Sap Ag | Headers protocol for use within a web services message processing runtime framework |
US20070081472A1 (en) * | 2005-10-06 | 2007-04-12 | Mung Chiang | System for evolvable network design |
US20070294584A1 (en) * | 2006-04-28 | 2007-12-20 | Microsoft Corporation | Detection and isolation of data items causing computer process crashes |
WO2008101756A1 (en) * | 2007-02-20 | 2008-08-28 | International Business Machines Corporation | Method and system for concurrent message processing |
US20080307056A1 (en) * | 2007-06-07 | 2008-12-11 | Vladimir Videlov | Web Services Reliable Messaging |
US8200836B2 (en) * | 2007-11-16 | 2012-06-12 | Microsoft Corporation | Durable exactly once message delivery at scale |
US8214847B2 (en) * | 2007-11-16 | 2012-07-03 | Microsoft Corporation | Distributed messaging system with configurable assurances |
US7523206B1 (en) | 2008-04-07 | 2009-04-21 | International Business Machines Corporation | Method and system to dynamically apply access rules to a shared resource |
WO2009140669A2 (en) | 2008-05-16 | 2009-11-19 | Terahop Networks, Inc. | Securing, monitoring and tracking shipping containers |
US20100008377A1 (en) * | 2008-07-08 | 2010-01-14 | International Business Machines Corporation | Queue management based on message age |
US8600559B2 (en) | 2008-10-27 | 2013-12-03 | Lennox Industries Inc. | Method of controlling equipment in a heating, ventilation and air conditioning network |
US9268345B2 (en) | 2008-10-27 | 2016-02-23 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8255086B2 (en) | 2008-10-27 | 2012-08-28 | Lennox Industries Inc. | System recovery in a heating, ventilation and air conditioning network |
US8802981B2 (en) | 2008-10-27 | 2014-08-12 | Lennox Industries Inc. | Flush wall mount thermostat and in-set mounting plate for a heating, ventilation and air conditioning system |
US8352080B2 (en) | 2008-10-27 | 2013-01-08 | Lennox Industries Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8452456B2 (en) | 2008-10-27 | 2013-05-28 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8463443B2 (en) | 2008-10-27 | 2013-06-11 | Lennox Industries, Inc. | Memory recovery scheme and data structure in a heating, ventilation and air conditioning network |
US8615326B2 (en) | 2008-10-27 | 2013-12-24 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8564400B2 (en) | 2008-10-27 | 2013-10-22 | Lennox Industries, Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8352081B2 (en) | 2008-10-27 | 2013-01-08 | Lennox Industries Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8655490B2 (en) | 2008-10-27 | 2014-02-18 | Lennox Industries, Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8548630B2 (en) | 2008-10-27 | 2013-10-01 | Lennox Industries, Inc. | Alarm and diagnostics system and method for a distributed-architecture heating, ventilation and air conditioning network |
US9152155B2 (en) | 2008-10-27 | 2015-10-06 | Lennox Industries Inc. | Device abstraction system and method for a distributed-architecture heating, ventilation and air conditioning system |
US8600558B2 (en) | 2008-10-27 | 2013-12-03 | Lennox Industries Inc. | System recovery in a heating, ventilation and air conditioning network |
US8463442B2 (en) | 2008-10-27 | 2013-06-11 | Lennox Industries, Inc. | Alarm and diagnostics system and method for a distributed architecture heating, ventilation and air conditioning network |
US8725298B2 (en) | 2008-10-27 | 2014-05-13 | Lennox Industries, Inc. | Alarm and diagnostics system and method for a distributed architecture heating, ventilation and conditioning network |
US9377768B2 (en) | 2008-10-27 | 2016-06-28 | Lennox Industries Inc. | Memory recovery scheme and data structure in a heating, ventilation and air conditioning network |
US8774210B2 (en) | 2008-10-27 | 2014-07-08 | Lennox Industries, Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8892797B2 (en) | 2008-10-27 | 2014-11-18 | Lennox Industries Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8560125B2 (en) | 2008-10-27 | 2013-10-15 | Lennox Industries | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8452906B2 (en) | 2008-10-27 | 2013-05-28 | Lennox Industries, Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8437877B2 (en) | 2008-10-27 | 2013-05-07 | Lennox Industries Inc. | System recovery in a heating, ventilation and air conditioning network |
US8295981B2 (en) | 2008-10-27 | 2012-10-23 | Lennox Industries Inc. | Device commissioning in a heating, ventilation and air conditioning network |
US8239066B2 (en) | 2008-10-27 | 2012-08-07 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8762666B2 (en) | 2008-10-27 | 2014-06-24 | Lennox Industries, Inc. | Backup and restoration of operation control data in a heating, ventilation and air conditioning network |
US8994539B2 (en) | 2008-10-27 | 2015-03-31 | Lennox Industries, Inc. | Alarm and diagnostics system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8977794B2 (en) | 2008-10-27 | 2015-03-10 | Lennox Industries, Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8442693B2 (en) | 2008-10-27 | 2013-05-14 | Lennox Industries, Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8661165B2 (en) | 2008-10-27 | 2014-02-25 | Lennox Industries, Inc. | Device abstraction system and method for a distributed architecture heating, ventilation and air conditioning system |
US8543243B2 (en) | 2008-10-27 | 2013-09-24 | Lennox Industries, Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8855825B2 (en) | 2008-10-27 | 2014-10-07 | Lennox Industries Inc. | Device abstraction system and method for a distributed-architecture heating, ventilation and air conditioning system |
US8798796B2 (en) | 2008-10-27 | 2014-08-05 | Lennox Industries Inc. | General control techniques in a heating, ventilation and air conditioning network |
US9325517B2 (en) | 2008-10-27 | 2016-04-26 | Lennox Industries Inc. | Device abstraction system and method for a distributed-architecture heating, ventilation and air conditioning system |
US9432208B2 (en) | 2008-10-27 | 2016-08-30 | Lennox Industries Inc. | Device abstraction system and method for a distributed architecture heating, ventilation and air conditioning system |
US9651925B2 (en) | 2008-10-27 | 2017-05-16 | Lennox Industries Inc. | System and method for zoning a distributed-architecture heating, ventilation and air conditioning network |
US9261888B2 (en) | 2008-10-27 | 2016-02-16 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8744629B2 (en) | 2008-10-27 | 2014-06-03 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8655491B2 (en) | 2008-10-27 | 2014-02-18 | Lennox Industries Inc. | Alarm and diagnostics system and method for a distributed architecture heating, ventilation and air conditioning network |
US8874815B2 (en) | 2008-10-27 | 2014-10-28 | Lennox Industries, Inc. | Communication protocol system and method for a distributed architecture heating, ventilation and air conditioning network |
US9678486B2 (en) | 2008-10-27 | 2017-06-13 | Lennox Industries Inc. | Device abstraction system and method for a distributed-architecture heating, ventilation and air conditioning system |
US8788100B2 (en) | 2008-10-27 | 2014-07-22 | Lennox Industries Inc. | System and method for zoning a distributed-architecture heating, ventilation and air conditioning network |
US9632490B2 (en) | 2008-10-27 | 2017-04-25 | Lennox Industries Inc. | System and method for zoning a distributed architecture heating, ventilation and air conditioning network |
US8437878B2 (en) | 2008-10-27 | 2013-05-07 | Lennox Industries Inc. | Alarm and diagnostics system and method for a distributed architecture heating, ventilation and air conditioning network |
US8694164B2 (en) | 2008-10-27 | 2014-04-08 | Lennox Industries, Inc. | Interactive user guidance interface for a heating, ventilation and air conditioning system |
US8433446B2 (en) | 2008-10-27 | 2013-04-30 | Lennox Industries, Inc. | Alarm and diagnostics system and method for a distributed-architecture heating, ventilation and air conditioning network |
JP5169761B2 (ja) * | 2008-11-17 | 2013-03-27 | 富士通株式会社 | 電子ファイル管理システム,端末装置および電子ファイル管理プログラム |
US8424024B2 (en) * | 2009-03-26 | 2013-04-16 | Digi International Inc. | Application-specific serial port redirector |
US7958244B2 (en) * | 2009-09-25 | 2011-06-07 | International Business Machines Corporation | Imposed policies for handling instant messages |
USD648642S1 (en) | 2009-10-21 | 2011-11-15 | Lennox Industries Inc. | Thin cover plate for an electronic system controller |
USD648641S1 (en) | 2009-10-21 | 2011-11-15 | Lennox Industries Inc. | Thin cover plate for an electronic system controller |
US8285775B2 (en) * | 2009-10-22 | 2012-10-09 | International Business Machines Corporation | Expedited transaction failure handling by leveraging a reliable message transport protocol to assist detection of discarded processing |
US8260444B2 (en) | 2010-02-17 | 2012-09-04 | Lennox Industries Inc. | Auxiliary controller of a HVAC system |
US8719625B2 (en) * | 2010-07-22 | 2014-05-06 | International Business Machines Corporation | Method, apparatus and computer program for processing invalid data |
US9264787B2 (en) | 2010-11-29 | 2016-02-16 | Rosemount Inc. | Communication system for process field device |
US8910182B2 (en) * | 2011-05-27 | 2014-12-09 | Microsoft Corporation | Managing and simplifying distributed applications |
US8806250B2 (en) | 2011-09-09 | 2014-08-12 | Microsoft Corporation | Operating system management of network interface devices |
US8892710B2 (en) | 2011-09-09 | 2014-11-18 | Microsoft Corporation | Keep alive management |
US9049660B2 (en) | 2011-09-09 | 2015-06-02 | Microsoft Technology Licensing, Llc | Wake pattern management |
US9047182B2 (en) | 2012-12-27 | 2015-06-02 | Microsoft Technology Licensing, Llc | Message service downtime |
US9742819B2 (en) * | 2013-03-15 | 2017-08-22 | Synaptive Medical (Barbados) Inc. | System and method for reliable messaging between application sessions across volatile networking conditions |
US9614794B2 (en) * | 2013-07-11 | 2017-04-04 | Apollo Education Group, Inc. | Message consumer orchestration framework |
US9454364B2 (en) | 2013-07-17 | 2016-09-27 | Accenture Global Services Limited | Mobile application optimization platform |
US9749280B2 (en) * | 2013-09-20 | 2017-08-29 | Oracle International Corporation | Techniques for reliable messaging for an intermediary in a network communication environment |
ES2930670T3 (es) * | 2014-03-11 | 2022-12-21 | Iex Group Inc | Técnicas para el mecanismo de retransmisión de mensajes |
US10362059B2 (en) * | 2014-09-24 | 2019-07-23 | Oracle International Corporation | Proxy servers within computer subnetworks |
KR102357697B1 (ko) * | 2014-09-23 | 2022-02-08 | 오라클 인터내셔날 코포레이션 | 컴퓨터 서브네트워크들 내의 프록시 서버들 |
US10142273B2 (en) | 2015-06-23 | 2018-11-27 | International Business Machines Corporation | Handling various scenarios where an email recipient is not available |
US10333879B2 (en) | 2015-08-07 | 2019-06-25 | Satori Worldwide, Llc | Scalable, real-time messaging system |
US9319363B1 (en) | 2015-08-07 | 2016-04-19 | Machine Zone, Inc. | Scalable, real-time messaging system |
US9602455B2 (en) | 2015-08-07 | 2017-03-21 | Machine Zone, Inc. | Scalable, real-time messaging system |
US9407585B1 (en) | 2015-08-07 | 2016-08-02 | Machine Zone, Inc. | Scalable, real-time messaging system |
US9319365B1 (en) | 2015-10-09 | 2016-04-19 | Machine Zone, Inc. | Systems and methods for storing and transferring message data |
US9385976B1 (en) | 2015-10-09 | 2016-07-05 | Machine Zone, Inc. | Systems and methods for storing message data |
US9397973B1 (en) | 2015-10-16 | 2016-07-19 | Machine Zone, Inc. | Systems and methods for transferring message data |
CN107231284B (zh) * | 2016-03-23 | 2020-06-05 | 阿里巴巴集团控股有限公司 | 一种消息的发送方法和终端设备 |
CN107231283B (zh) * | 2016-03-23 | 2020-12-18 | 阿里巴巴集团控股有限公司 | 消息管理方法及装置、消息预读方法及装置 |
US9602450B1 (en) | 2016-05-16 | 2017-03-21 | Machine Zone, Inc. | Maintaining persistence of a messaging system |
US10404647B2 (en) | 2016-06-07 | 2019-09-03 | Satori Worldwide, Llc | Message compression in scalable messaging system |
US9608928B1 (en) * | 2016-07-06 | 2017-03-28 | Machine Zone, Inc. | Multiple-speed message channel of messaging system |
US9967203B2 (en) | 2016-08-08 | 2018-05-08 | Satori Worldwide, Llc | Access control for message channels in a messaging system |
US10374986B2 (en) | 2016-08-23 | 2019-08-06 | Satori Worldwide, Llc | Scalable, real-time messaging system |
US10305981B2 (en) | 2016-08-31 | 2019-05-28 | Satori Worldwide, Llc | Data replication in scalable messaging system |
US9667681B1 (en) | 2016-09-23 | 2017-05-30 | Machine Zone, Inc. | Systems and methods for providing messages to multiple subscribers |
US10187278B2 (en) | 2017-02-24 | 2019-01-22 | Satori Worldwide, Llc | Channel management in scalable messaging system |
US10270726B2 (en) | 2017-02-24 | 2019-04-23 | Satori Worldwide, Llc | Selective distribution of messages in a scalable, real-time messaging system |
US10447623B2 (en) | 2017-02-24 | 2019-10-15 | Satori Worldwide, Llc | Data storage systems and methods using a real-time messaging system |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020004812A1 (en) | 1997-06-26 | 2002-01-10 | Tetsuro Motoyama | Method and system for diagnosis and control of machines using connectionless modes having delivery monitoring and an alternate communication mode |
GB2268374A (en) | 1992-06-23 | 1994-01-05 | Ibm | Network addressing |
US5786771A (en) | 1993-02-12 | 1998-07-28 | International Business Machines Corporation | Selectable checking of message destinations in a switched parallel network |
US5377350A (en) | 1993-04-30 | 1994-12-27 | International Business Machines Corporation | System for cooperative communication between local object managers to provide verification for the performance of remote calls by object messages |
IL111154A0 (en) | 1993-10-21 | 1994-12-29 | Martino Ii John A | Systems and methods for electronic messaging |
US5826269A (en) | 1995-06-21 | 1998-10-20 | Microsoft Corporation | Electronic mail interface for a network server |
US6339794B2 (en) | 1995-12-08 | 2002-01-15 | Microsoft Corporation | Wire protocol for a media server system |
GB2313524A (en) * | 1996-05-24 | 1997-11-26 | Ibm | Providing communications links in a computer network |
US5872930A (en) | 1996-07-11 | 1999-02-16 | Microsoft Corporation | Load balancing between E-mail servers within a local area network |
US5870556A (en) | 1996-07-12 | 1999-02-09 | Microsoft Corporation | Monitoring a messaging link |
US5819272A (en) | 1996-07-12 | 1998-10-06 | Microsoft Corporation | Record tracking in database replication |
US5951648A (en) | 1997-03-03 | 1999-09-14 | Mylex Corporation | Reliable event delivery system |
US6058389A (en) | 1997-10-31 | 2000-05-02 | Oracle Corporation | Apparatus and method for message queuing in a database system |
US6205498B1 (en) | 1998-04-01 | 2001-03-20 | Microsoft Corporation | Method and system for message transfer session management |
US6446206B1 (en) | 1998-04-01 | 2002-09-03 | Microsoft Corporation | Method and system for access control of a message queue |
US6256634B1 (en) | 1998-06-30 | 2001-07-03 | Microsoft Corporation | Method and system for purging tombstones for deleted data items in a replicated database |
US6594701B1 (en) | 1998-08-04 | 2003-07-15 | Microsoft Corporation | Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data |
US7050432B1 (en) | 1999-03-30 | 2006-05-23 | International Busines Machines Corporation | Message logging for reliable multicasting across a routing network |
US7020697B1 (en) | 1999-10-01 | 2006-03-28 | Accenture Llp | Architectures for netcentric computing systems |
US6970945B1 (en) | 1999-11-01 | 2005-11-29 | Seebeyond Technology Corporation | Systems and methods of message queuing |
US7003571B1 (en) * | 2000-01-31 | 2006-02-21 | Telecommunication Systems Corporation Of Maryland | System and method for re-directing requests from browsers for communication over non-IP based networks |
US7162512B1 (en) | 2000-02-28 | 2007-01-09 | Microsoft Corporation | Guaranteed exactly once delivery of messages |
US6772216B1 (en) * | 2000-05-19 | 2004-08-03 | Sun Microsystems, Inc. | Interaction protocol for managing cross company processes among network-distributed applications |
US20020123966A1 (en) | 2000-06-23 | 2002-09-05 | Luke Chu | System and method for administration of network financial transaction terminals |
US6980518B1 (en) * | 2000-06-23 | 2005-12-27 | International Business Machines Corporation | Gossip-based reliable multicast message recovery system and method |
US6816458B1 (en) * | 2000-09-13 | 2004-11-09 | Harris Corporation | System and method prioritizing message packets for transmission |
US20020073211A1 (en) * | 2000-12-12 | 2002-06-13 | Raymond Lin | System and method for securely communicating between application servers and webservers |
US6954792B2 (en) * | 2001-06-29 | 2005-10-11 | Sun Microsystems, Inc. | Pluggable authentication and access control for a messaging system |
US6877107B2 (en) | 2001-07-05 | 2005-04-05 | Softwired Ag | Method for ensuring operation during node failures and network partitions in a clustered message passing server |
US7254616B1 (en) * | 2001-07-27 | 2007-08-07 | Ciena Corporation | Reliable communication mechanism with “at most once” delivery guarantee |
US7631092B2 (en) | 2001-10-05 | 2009-12-08 | Bea Systems, Inc. | System and method for providing a pluggable message store |
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 |
US7162524B2 (en) | 2002-06-21 | 2007-01-09 | International Business Machines Corporation | Gapless delivery and durable subscriptions in a content-based publish/subscribe system |
US7720910B2 (en) | 2002-07-26 | 2010-05-18 | International Business Machines Corporation | Interactive filtering electronic messages received from a publication/subscription service |
US7203706B2 (en) | 2002-08-01 | 2007-04-10 | Oracle International Corporation | Buffered message queue architecture for database management systems with memory optimizations and “zero copy” buffered message queue |
US7181482B2 (en) | 2002-08-01 | 2007-02-20 | Oracle International Corporation | Buffered message queue architecture for database management systems |
WO2004036382A2 (en) | 2002-10-17 | 2004-04-29 | Tibco Software Inc. | Method and system to communicate messages in a computer network |
US7152180B2 (en) * | 2002-12-06 | 2006-12-19 | Ntt Docomo, Inc. | Configurable reliable messaging system |
US7290051B2 (en) * | 2003-01-09 | 2007-10-30 | Sun Microsystems, Inc. | Method and apparatus for hardware implementation independent verification of network layers |
US7693952B2 (en) | 2003-03-27 | 2010-04-06 | Microsoft Corporation | Availability and scalability in a messaging system in a manner transparent to the application |
US7287066B2 (en) | 2003-10-31 | 2007-10-23 | Sap Aktiengesellschaft | Publish-subscribe system having a reliability mechanism |
US7634583B2 (en) | 2003-12-18 | 2009-12-15 | Microsoft Corporation | Systems and methods that utilize persisted push/pull state to provide reliable message publishing |
GB2412762B (en) | 2004-04-02 | 2009-01-28 | Symbian Software Ltd | Inter process communication in a computing device |
US7483943B2 (en) | 2004-09-21 | 2009-01-27 | Microsoft Corporation | Reliable messaging using clocks with synchronized rates |
US7525964B2 (en) | 2004-11-03 | 2009-04-28 | International Business Machines Corporation | Mechanism for delivering messages to competing consumers in a point-to-point system |
US7613830B2 (en) | 2004-12-10 | 2009-11-03 | Microsoft Corporation | Reliably transferring queued application messages |
GB0427798D0 (en) | 2004-12-18 | 2005-01-19 | Ibm | Publish/subscribe messaging system |
US20060146999A1 (en) | 2005-01-06 | 2006-07-06 | Tervela, Inc. | Caching engine in a messaging system |
US8255455B2 (en) | 2005-12-30 | 2012-08-28 | Sap Ag | Method and system for message oriented middleware virtual provider distribution |
US7818417B2 (en) | 2006-01-10 | 2010-10-19 | International Business Machines Corporation | Method for predicting performance of distributed stream processing systems |
US20070245018A1 (en) | 2006-04-12 | 2007-10-18 | International Business Machines Corporation | Dynamic access control in a content-based publish/subscribe system with delivery guarantees |
US20080209007A1 (en) | 2007-02-27 | 2008-08-28 | Tekelec | Methods, systems, and computer program products for accessing data associated with a plurality of similarly structured distributed databases |
US8136122B2 (en) | 2007-08-30 | 2012-03-13 | Software Ag | Systems and/or methods for providing feature-rich proprietary and standards-based triggers via a trigger subsystem |
DE602008004570D1 (de) | 2007-09-20 | 2011-02-24 | Markport Ltd | Nachrichtenübermittlung in mobilfunknetzen |
-
2003
- 2003-03-27 US US10/401,649 patent/US7676580B2/en not_active Expired - Fee Related
-
2004
- 2004-02-24 AU AU2004200732A patent/AU2004200732A1/en not_active Abandoned
- 2004-02-25 IL IL16057204A patent/IL160572A0/xx unknown
- 2004-02-25 NZ NZ531382A patent/NZ531382A/en not_active IP Right Cessation
- 2004-02-26 ZA ZA200401582A patent/ZA200401582B/xx unknown
- 2004-03-01 MY MYPI20040701A patent/MY144262A/en unknown
- 2004-03-02 TW TW093105449A patent/TWI337823B/zh not_active IP Right Cessation
- 2004-03-04 CA CA002460274A patent/CA2460274A1/en not_active Abandoned
- 2004-03-10 SG SG200401467A patent/SG116532A1/en unknown
- 2004-03-19 PL PL36644004A patent/PL366440A1/xx unknown
- 2004-03-23 MX MXPA04002731A patent/MXPA04002731A/es not_active Application Discontinuation
- 2004-03-25 CO CO04028254A patent/CO5560092A1/es not_active Application Discontinuation
- 2004-03-25 EP EP04007250A patent/EP1463249A3/en not_active Withdrawn
- 2004-03-25 BR BR0400775-1A patent/BRPI0400775A/pt not_active IP Right Cessation
- 2004-03-26 RU RU2004109131/09A patent/RU2363040C2/ru not_active IP Right Cessation
- 2004-03-26 CN CN2004100322497A patent/CN1534923B/zh not_active Expired - Fee Related
- 2004-03-26 NO NO20041261A patent/NO20041261L/no unknown
- 2004-03-26 JP JP2004093769A patent/JP2004295895A/ja active Pending
- 2004-03-26 KR KR1020040020852A patent/KR20040086583A/ko not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006216034A (ja) * | 2005-02-04 | 2006-08-17 | Microsoft Corp | 相関メッセージを、ネットワークを介して通信するための待機セッション |
US20230069362A1 (en) * | 2021-08-27 | 2023-03-02 | Toshiba Tec Kabushiki Kaisha | Maintenance support server and maintenance system |
Also Published As
Publication number | Publication date |
---|---|
EP1463249A2 (en) | 2004-09-29 |
CN1534923A (zh) | 2004-10-06 |
ZA200401582B (en) | 2004-08-31 |
NZ531382A (en) | 2005-10-28 |
MXPA04002731A (es) | 2005-06-17 |
IL160572A0 (en) | 2004-07-25 |
NO20041261L (no) | 2004-09-28 |
CN1534923B (zh) | 2012-05-30 |
US7676580B2 (en) | 2010-03-09 |
SG116532A1 (en) | 2005-11-28 |
MY144262A (en) | 2011-08-29 |
KR20040086583A (ko) | 2004-10-11 |
PL366440A1 (en) | 2004-10-04 |
EP1463249A3 (en) | 2006-06-07 |
TW200503487A (en) | 2005-01-16 |
RU2004109131A (ru) | 2005-09-10 |
RU2363040C2 (ru) | 2009-07-27 |
CA2460274A1 (en) | 2004-09-27 |
CO5560092A1 (es) | 2005-09-30 |
TWI337823B (en) | 2011-02-21 |
US20040205781A1 (en) | 2004-10-14 |
AU2004200732A1 (en) | 2004-10-14 |
BRPI0400775A (pt) | 2004-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4515800B2 (ja) | メッセージ交換システムにおける可用性および拡張性をアプリケーションに透過的に向上させる方法 | |
JP2004295895A (ja) | 2点間の保証および機能の構成が可能なメッセージ配信 | |
CN110297801B (zh) | 基于容错fpga的事务系统的正好一次事务语义的系统和方法 | |
US7840682B2 (en) | Distributed kernel operating system | |
CA2547829C (en) | Improved distributed kernel operating system | |
NO331943B1 (no) | Tilgjengelighet og skalerbarhet i et meldingssystem pa en mate som er transparent for applikasjonen. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070326 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090522 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090821 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091013 |