JP2006260588A - 分散コンポーネントアプリケーションでの待機メソッド呼び出し方法 - Google Patents

分散コンポーネントアプリケーションでの待機メソッド呼び出し方法 Download PDF

Info

Publication number
JP2006260588A
JP2006260588A JP2006114852A JP2006114852A JP2006260588A JP 2006260588 A JP2006260588 A JP 2006260588A JP 2006114852 A JP2006114852 A JP 2006114852A JP 2006114852 A JP2006114852 A JP 2006114852A JP 2006260588 A JP2006260588 A JP 2006260588A
Authority
JP
Japan
Prior art keywords
message
client
interface
call
queue
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.)
Granted
Application number
JP2006114852A
Other languages
English (en)
Other versions
JP4528742B2 (ja
JP2006260588A5 (ja
Inventor
Richard Dievendorff
リチャード ディーベンドルフ
Patrick J Helland
パトリック ジェイ. へランド
Gagan Chopra
ガーガン ショプラ
Mohsen Al-Ghosein
モーセン アル−ゴセイン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006260588A publication Critical patent/JP2006260588A/ja
Publication of JP2006260588A5 publication Critical patent/JP2006260588A5/ja
Application granted granted Critical
Publication of JP4528742B2 publication Critical patent/JP4528742B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】メソッド呼び出しを、オブジェクトモデルの通常のコールセマンティックスを使用して同期方式でも、リアルタイム方式でも、待機方式でも行うことを可能にする。
【解決手段】オブジェクトランタイムアーキテクチャによれば、オブジェクトのプロキシが用意されており、このプロキシは、オブジェクトでのクライアントのメソッドコールを受信し、メソッドコールをマーシャリングしてメッセージに変換し、そのメッセージをオブジェクトに関連するキューに送るためのレコーダを備えている。オブジェクトランタイムアーキテクチャによれば、さらに、メッセージをキューからプレーヤにディスパッチするリスナが用意されており、プレーヤは、メソッドコールをオブジェクトに対して出すためにスタブを使用してメッセージをアンマーシャリングする。
【選択図】図2

Description

本発明は、分散コンポーネントをベースとするコンピュータソフトウェアアプリケーションに関し、より詳細には、かかるアプリケーションでの待機メソッド呼び出しに関する。
多くの情報処理アプリケーションでは、分散ネットワーク内のホストまたはサーバコンピュータ上で稼動しているサーバアプリケーションは、多数のユーザによって操作される、ネットワークの端末またはワークステーション上で稼動しているクライアントアプリケーションのために処理サービスを提供している。このようなサーバアプリケーションの一般的な例としては、大学でのクラス登録、旅行予約、銀行での振込みや他のサービス、およびビジネスでの販売を処理するソフトウェアがある。これらの例では、サーバアプリケーションによって提供される処理サービスは、クラススケジュール、ホテル予約、勘定残高、注文品発送、支払い、または在庫品のデータベースを、それぞれのステーションで個々のユーザによってとられたアクションを受けて更新している。これは、クライアント/サーバコンピューティングとも呼ばれている。
「分散オブジェクト」として知られるクライアント/サーバコンピューティングの形態では、サーバアプリケーションは、マイクロソフトコンポーネントオブジェクトモデル(COM : Component Object Model)や分散コンポーネントオブジェクトモデル(DCOM : Distributed Component Object Model)、IBMシステムオブジェクトモデル(SOM : System Object Model)、Object Management Groupの共通オブジェクトリクエストブローカアーキテクチャ(CORBA : Common Object Request Broker Architecture)などの、オブジェクト指向プログラミング(OOP : Object−Oriented Programming)モデルに準拠するコンポーネントの集まりとして開発されている。オブジェクト指向プログラミングには、一般的に、プログラミングの容易性、拡張容易性、コードの再利用、および異なるベンダや(ある種のオブジェクト指向プログラミングモデルでは)異種プログラミング言語にまたがるソフトウェアの統合化、といった利点がある。
オブジェクト指向プログラミングでは、プログラムはオブジェクトクラスの集まりとして書かれ、各クラスは実世界をモデル化し、あるいはアイテムの属性を表すデータを、アイテムの作用を表すメソッド(例えば、プログラムの関数やプロシージャ)と結合することによってアイテムを抽象化している。具体的に説明すると、オブジェクトは、クラスと呼ばれるプログラマ定義の型のインスタンスであり、これはデータカプセル化、多形性および継承という特性を示している。
データカプセル化とは、データ(オブジェクトの属性とも呼ばれる)を、そのデータに作用を及ぼすメソッド(オブジェクトのメンバ関数とも呼ばれる)と結合して単一のソフトウェアコンポーネント(つまり、オブジェクト)にし、オブジェクトがその内部構成、構造およびオペレーションを隠し、1つまたは2つ以上のインタフェースを通してオブジェクトを利用するクライアントプログラムにだけその作用が見えるようにすることである。オブジェクトのインタフェースは、そのオブジェクトの意味的に関連をもつメソッドの集まりである。言い換えれば、クライアントプログラムは、オブジェクトのデータに直接にアクセスするのではなく、オブジェクトのインタフェースからメソッドを呼び出してデータの操作を行わなければならない。
多形性とは、2つの類似オブジェクトを共通インタフェースから表示できる(つまり、オブジェクトとやりとりできる)能力のことであり、これによって、2つのオブジェクトを区別しないで済むことになる。継承とは、オブジェクトの異なるクラスを基底クラスから派生することであり、そこでは派生クラスは基底クラスの属性と特性を継承している。
「分散オブジェクト」によるクライアント/サーバコンピューティングでは、ユーザのコンピュータ側のクライアントプログラムは、「リアルタイム」または同期処理メカニズムを使用して、サーバコンピュータ側に常駐するサーバアプリケーションのオブジェクトでリモートプロシージャコール(RPC : remote procedure call)などの、メソッドを遠隔で呼び出しているのが代表的である。代表的なリモートプロシージャコールでは、オペレーティングシステムのオブジェクトサービスは、サーバアプリケーションオブジェクトをインタフェース定義言語で記述したものをコンパイルし、クライアントコンピュータ側のサーバアプリケーションオブジェクトのためにローカル「プロキシ」を生成している。クライアントソフトウェアは、通常のローカルプロシージャコールをプロキシに対して直接に出すことによって、リモートサーバアプリケーションオブジェクトのメソッドを呼び出している。他方、プロキシの方はRPCサービスを利用して、プロシージャコールをリモートサーバコンピュータ側の実際のサーバアプリケーションオブジェクトに伝達している。RPCサービスは、コールパラメータの値をマーシャル(marshal)してネットワークメッセージに変換し、そのメッセージをネットワークプロトコルでサーバコンピュータに送信している。サーバコンピュータ側では、RPCサービスは、コールパラメータをアンマーシャル(unmarshal)し、正しいサーバアプリケーションオブジェクトメソッドへのコールを出している。RPCサービスは、サーバアプリケーションオブジェクトメソッドからの戻り値もマーシャリングとアンマーシャリングを行って、ネットワークメッセージでクライアントプログラムに送り返している。
従って、RPCサービスは、ネットワークコミュニケーションがもつすべての複雑さを、「シーンの背後」で効果的に処理し、クライアントプログラムがローカルプロシージャコールを行うのと同じようにリモートメソッドを呼び出すようにしている。ローカルプロシージャコールと同じように、クライアントプログラムの実行は、RPCメソッド呼び出しの間、そのメソッドが完了して、送り返されるまで一時中止(「ブロッキング」とも呼ばれる)される。このようにして、クライアントプログラムとサーバアプリケーションオブジェクト間の実行の流れを同期化している。
多くのアプリケーションに適しているとはいえ、RPCのようなリアルタイムメソッド呼び出しモデルは、可用性、ネットワーク伝送コスト、プライオリティの欠如、オブジェクトの寿命、参照局所性に関していくつかの制約があるために、他のアプリケーションの要求を十分に満足していない。
可用性に関しては、リアルタイムメソッド呼び出しモデルでは、クライアントプログラムがオブジェクトのメソッドのいずれかへのコールを出す時点で、サーバアプリケーションオブジェクトが利用可能になっていることが要求される。利用可能になっていなければ、リアルタイムメソッド呼び出しは行うことができない。しかし、実際には、サーバアプリケーションオブジェクトは、ネットワーク障害が原因で、あるいは、サーバコンピュータの過負荷処理が原因で利用できない場合がある。ある場合には、サーバコンピュータは一定の期間の間オフラインにされることもあれば(例えば、アップグレードやメインテナンスために)、一日のある時間だけオンラインになっていることもある。さらに、いずれかのサーバアプリケーションオブジェクトが「リアルタイム」で使用できない場合には、作業のどの部分も(利用可能なサーバアプリケーションオブジェクトによる作業も含む)完了できないことになる。この問題は、多数のノード(つまり、ネットワーク上のコンピュータ)が係わりもつ複雑なオペレーションの場合にはさらに深刻である。例えば、各々が時間にすると約90%利用可能になっている、別々のノードに置かれた4つの独立オブジェクトへのアクセスを要求しているプロセスは、実際に利用可能になっているのは時間にすると約66%だけである(つまり、90% = 65.61%)。
さらに、いくつかのクライアントコンピュータは、たまにしかネットワークに接続されていないために、リアルタイムメソッド呼び出しを出すことができる時間が限られている。このようにたまにしか接続されていないクライアントコンピュータの良い例として、モバイルユーザのラップトップ型、ノートブック型およびハンドヘルド型コンピュータがあるが、現在では、これらのコンピュータは推定で新規コンピュータ購入の50%以上を占めている。
リアルタイムメソッド呼び出しモデルに要求される可用性は、サーバアプリケーションの対話型ユーザによるピーク要求量を処理できるだけの十分な容量を持つようにサーバコンピュータを構成しなければならないことも意味している。その結果として、代表的なシステムは、大部分の時間の間利用されないままになっているが、他の時間には利用過剰になっている(負荷が予想を越えるとき)サーバコンピュータを含む構成になっている。
以上のような理由から、リアルタイムメソッド呼び出しモデルは、可用性が制限され、モバイルユーザと大多数のノードが存在し、対話型ユーザの負荷に大幅なばらつきのあるようなコンピューティング環境には不向きである。
ネットワーク伝送コストに関しては、各リアルタイムメソッド呼び出しをRPCで行うためには、ラウンドトリップネットワークコミュニケーションが必要になるため、コールパラメータのマーシャリングとアンマーシャリングの処理時間、ネットワークプロトコルスタックでの処理、および伝送時間といったように、ネットワーク伝送コストが大きくなっている。さらに、クライアントは、有用な仕事を実行するためにサーバアプリケーションコンポーネントの多数のメソッドを呼び出す必要があるため、ネットワーク伝送コストが倍になる場合がある。特に、最新のオブジェクト指向設計手法では、各コールでのパラメータ数が相対的に少ないのに、多数のプロシージャコールが行われる傾向がある。このようなオブジェクトの代表例では、クライアントは、まず、オペレーションをセットアップするためにいくつかの「プロパティセット」メソッドをコールし、そのあとオペレーションを処理するためにメソッドを呼び出す設計になっている。その結果、ネットワークオーバヘッドに大量の時間が消費される可能性がある。これらのネットワーク伝送コストは、リアルタイムメソッド呼び出しを、ある種のアプリケーションに適しないものにしている。
プライオリティに関しては、代表的なリアルタイムメソッド呼び出しモデルに準拠するコールは、プライオリティという考え方とは関係なく、「先着順サービス (first−come, first−served)」方式で到着した時点で処理されている。
オブジェクト寿命に関しては、サーバアプリケーションオブジェクトは、リアルタイムメソッド呼び出しモデルでは寿命が長くなる傾向がある。代表的な分散オブジェクトクライアント/サーバコンピューティングでは、サーバアプリケーションオブジェクトは、クライアントによる作成時からオブジェクトが解放されるまでサーバコンピュータに存在している。オブジェクトは、クライアントがオブジェクトのメソッドを呼び出すのを待つだけでも大くの時間を消費し、メソッドから結果が戻されてからクライアントによる次のメソッド呼び出しまでに大量のネットワーク伝送コストを消費している。他方、オブジェクトはサーバコンピュータリソースを消費し、この中には、メモリと実行環境の処理オーバヘッドが含まれている。サーバアプリケーションオブジェクトが、実際に「目覚め (wake up)」、「休眠 (sleep)」するのは、メソッドコールごとに少なくとも一回である。このサーバアプリケーションオブジェクト「占有時間」は、サーバオブジェクトの高速サイクリングの妨げとなっており、サーバアプリケーションのスケーラビリティを制限している。
参照局所性に関しては、コンピュータシステムの多くの部分(例えば、プロセッサキャッシュや仮想メモリワーキングセット)は、パフォーマンス向上を達成するために参照局所性に頼っている。局所性の高いアプリケーション、例えば、ローカルに利用可能なデータの使用を通してストレートに実行されるオブジェクトまたはアプリケーションコードは、従って、パフォーマンス向上をもたらす参照パターンをもっている。これとは対照的に、オブジェクトが、RPCのようなリアルタイムメソッド呼び出しを使用する複数のサーバコンピュータに分散されているアプリケーションは、参照局所性が劣っている。例えば、サーバオブジェクトは最初のリアルタイムメソッドコールによって作成され、その寿命の大半は後続のリアルタイムメソッドコールを待つことに消費されることがよくある。各メソッドコールを処理した後、サーバオブジェクトは、プロセッサキャッシュから移動されるのが代表的であるため、コール間のシステムの仮想メモリワーキングセットから外されることがある。従って、リアルタイムメソッド呼び出しはアプリケーションのトランザクション処理量を制限している。
リアルタイムRPCメソッド呼び出しの可用性の制約のいくつかを解決する、「分散オブジェクト」に代わるものとして、「メッセージ指向ミドルウェア (MOM : message oriented middleware)」とも呼ばれている形態のクライアント/サーバコンピューティングがある。MOMでは、クライアントアプリケーションは、メッセージをメッセージキューに送ることによってリモートサーバアプリケーションと通信している。サーバアプリケーションは、クライアントアプリケーションよりも遅い時期に実行されることがあるため、そのメッセージキューからメッセージを取り出して、処理している。サーバアプリケーションは、メッセージを同一または別のメッセージキューに送信することによって処理結果をクライアントアプリケーションに戻し、クライアントアプリケーションが処理できるようにしている。この待機メッセージング(queued messaging)には、クライアントアプリケーションとサーバアプリケーションが同時に利用可能になっている必要がなく、同じ寿命である必要はないという利点がある。
しかし、従来のMOMプロダクトには、いくつかの制約もある。1つの制約は、クライアントアプリケーションとサーバアプリケーションが、メッセージを独自にリニアストリームとしてフォーマットしていることである。具体的に説明すると、クライアントアプリケーションとサーバアプリケーションは、このストリームからのデータのマーシャリングとアンマーシャリングを独自に行わなければならない。このマーシャリングサポートは、待機メッセージングの機構には用意されていない。
従来のMOMのもう1つの制約は、クライアントアプリケーションとサーバアプリケーションが、ベンダ固有のメッセージキューイングアプリケーションプログラミングインタフェース(API)を使用して待機メッセージング機構と通信していることである。言い換えれば、クライアントアプリケーションとサーバアプリケーションは、メッセージキューイングAPIへの明示的コールを通してメッセージキューにメッセージを送っている。これは、クライアント/サーバアプリケーションの開発者が学ばなければならない、他のAPIセットになっている。例えば、MQI(MQ Series APIを意味する)は、IBM社のMQSeriesメッセージ指向ミドルウェアプロダクトである。その他のMOMプロダクトベンダ、例えば、Microsoft社(Microsoft Message Queue(MSMQ))、Covia社(Communications Integrator)、Peerlogic社(PIPES)、Horizon Strategies社(Message Express)、およびSystem Strategies社(ezBridge)は、異なるメッセージキューイングAPIを提供している。
MOMプロダクトのカストマ(情報テクノロジ (IT) 企業など)は、さまざまな理由で、ベンダ提供メッセージキューイングAPIの上に別のAPI層を構築している。その理由の1つは、IT企業はメッセージキューイングAPIのどの部分を使用し、APIをどのように使用するかをアプリケーション開発者に判断させることを望んでいないからである。第2の理由は、ベンダのメッセージキューイングAPIが余りに高価で、複雑であり、アプリケーション開発者に提供するオプションが多すぎるからである。そのために、IT企業は、アプリケーション開発者用のAPIを単純化する試みとして独自のAPI層を構築している。その結果として、開発者の大部分は、ベンダのメッセージキューイングAPIとIT提供のAPIの両方を学習せざるを得なくしている。第3の理由は、IT企業はアプリケーションを、ある特定のベンダのメッセージキューイングAPIまたはMOMプロダクトに依存させることを望んでおらず、将来他のベンダにスイッチする柔軟性を残しておきたいことを望んでいるからである。このことは、しばしばIT企業がMOMプロダクトの機能を十分に活用する妨げとなっている。この現象は、MOMプロダクトを使用するアプリケーションの実現を遅らせ、ときには、IT企業がMOMプロダクトの新開発機能を活用することを困難にしている。
従来のMOMプロダクトのもう1つの制約は、構成によってはパフォーマンスが最適状態に及ばないことである。具体的には、アプリケーションおよびアプリケーションオブジェクトは、特に同じプロセス内にあるときは、処理時間コストを極めて低くして、メソッドコールでローカルに通信することができる。アプリケーションとアプリケーションオブジェクトがメッセージキューイングAPIを通して通信するためには、アプリケーションまたはオブジェクトが同一プロセスといったように、同一または類似の環境内にある場合であっても、キューマネージャを通した処理が必要になる。
本発明は、オブジェクトのクライアントが、メッセージキューイングAPIを使用することなく、オブジェクトモデルの通常のコールセマンティックス(call semantics)を使用して待機方式(queued basis)でメソッド呼び出しをオブジェクトが出し、および受けるようにしている。具体的に説明すると、クライアントはオブジェクトモデルの通常のセマンティックスを使用して、オブジェクトを作成し、オブジェクトのメソッドをコールし、オブジェクトを解放する。オブジェクトフレームワークまたは実行環境は、メソッド呼び出しを自動的にキューに置いて待機させ、その後の適当な時刻に、この待機メソッド呼び出し(queued method invocation)をオブジェクトに対して出すようにするサービスを提供している。その間に、クライアントは、呼び出されたメソッドとは非同期に実行を継続することが許されている。オブジェクトの方は、待機メソッド呼び出しが通常のコールセマンティックスごとにそのインタフェースに対して出され、そのあと、プロセスは、通常のコールセマンティックスを使用してメソッドからの値を返している。従って、アプリケーション開発者は、従来のメッセージ指向ミドルウェアによる待機処理のために、メッセージキューイングAPIを使用するようにクライアントとオブジェクトをプログラムする必要がなくなるので、このようなAPIを学習しないで済むことになる。
本発明のある側面によれば、オブジェクトは、リアルタイムと待機の両方のメソッド呼び出しを共通インタフェースから受信することができる。リアルタイムメソッド呼び出しは、インタフェースへのローカルプロシージャコールまたはリモートプロシージャコールを通してオブジェクトに渡される。待機メソッド呼び出しは、待機メソッド呼び出し機能内のキューに置かれた後、この機能からのローカルプロシージャコールを通してオブジェクトのインタフェースに渡される。リアルタイムメソッド呼び出しと待機メソッド呼び出しの区別は、オブジェクトからは見えないようになっている。従って、オブジェクトは、修正しなくても、リアルタイム同期環境でも、待機非同期環境でも実行させることができる。オブジェクトは、比喩的表現を使用すると、その環境がリアルタイム方式であるか、キュー方式であるかには「無関心」であり、そのインタフェース上のメソッドがどのような呼び出し方をされるかについては「寛大」である。
本発明の別の側面によれば、オブジェクトフレームワークまたは環境は、待機メソッド呼び出しに対して自動マーシャリングもサポートしている。クライアントは、システムに用意されたプロキシとスタブまたはラッパ (wrapper) を通してオブジェクトに対する待機メソッド呼び出しを出すが、プロキシとスタブまたはラッパは、インタフェース定義言語でオブジェクトのインタフェースを記述したものからコンパイルされ、待機メッセージとの間でコールパラメータと関連データを正しくマーシャリングする機能を実装している。
本発明のさらに別の側面によれば、メソッド呼び出しキューイング機能は、クライアント側のメソッド呼び出しレコーダと、クライアントとオブジェクトの間でやりとりするオブジェクト側のメソッド呼び出しプレーヤとを含んでいる。メソッド呼び出しレコーダは、可能な限り2つ以上のメソッド呼び出しをクライアントから受信し、バッチでメソッド呼び出しプレーヤに転送される。例えば、レコーダは、トランザクションの一部としてオブジェクトでクライアントによって行われた、複数の待機メソッド呼び出しを収集し、そのトランザクションがコミットされるまでメソッド呼び出しを転送しないようにすることができる。メソッド呼び出しプレーヤは、待機メソッド呼び出しをメソッド呼び出しキューから順番に取り出していき、オブジェクトに対するメソッド呼び出しを、おそらくは、そのオブジェクトが係わりを持つトランザクションの一部として出すことになる。
本発明のさらに別の側面によれば、待機メソッド呼び出しをサポートするオブジェクトは、そのメソッドが入力パラメータだけをもつため、アプリケーション固有情報を戻さないとする制約に適合している。この場合、待機メソッド呼び出しは、クライアントからオブジェクトへ一方向通信として出すことができるので、クライアントはメソッド呼び出しの結果を、リアルタイム実行でも、同期実行でも待たないで済むようになっている。オブジェクトは、待機メソッド呼び出しの処理結果を、クライアントからの入力パラメータで指定された結果オブジェクトに対するリアルタイムまたは待機メソッド呼び出しを出すことによって提供することができる。
本発明のその他の特徴および利点については、添付図面を参照して以下に記載されている図示実施形態の詳細説明の中で明らかにする。
本発明は、待機コンポーネントメソッド呼び出しのための方法およびシステムを目的としている。以下に説明する一実施形態では、本発明は、”Microsoft Windows NT Server 5.0”という名称で、Microsoft Corporation(米国ワシントン州Redmond)によって販売されているオペレーティングシステムの、”COM+”という名称のオブジェクトサービスコンポーネントに組み込まれている。要約して説明すると、このソフトウェアはスケーラブルで、ハイパフォーマンスなネットワークおよびコンピュータオペレーティングシステムであり、分散クライアント/サーバコンピューティングをサポートすると共に、マイクロソフトコンポーネントオブジェクトモデル(COM)に準拠するコンポーネントアプリケーションに対してオブジェクト実行環境を提供している。COM+コンポーネントは、以前のオブジェクトシステムから引き継いだオブジェクトサービスを取り入れており、その中には、マイクロソフトコンポーネントオブジェクトモデル、マイクロソフトオブジェクトリンキング・エンベッディング(OLE : Microsoft Object Linking and Embedding)、マイクロソフト分散コンポーネントオブジェクトモデル(DCOM)、およびマイクロソフトトランザクションサーバ(MTS : Microsoft Transaction Server)が含まれている。
(動作環境の例)
以下では、本発明を実装するのに適しているコンピューティング環境の概要を、図1を参照して要約して説明することにする。以下では、本発明は、コンピュータ上で稼動するコンピュータプログラムのコンピュータ実行可能命令を広い意味でとらえて説明されているが、この分野の当業者ならば理解されるように、本発明は、他のプログラムモジュールと組み合わせて実装することも可能である。一般的に、プログラムモジュールとしては、ルーチン、プログラム、コンポーネント、データ構造などがあり、これらは特定のタスクを実行し、あるいは特定の抽象データ型を実装している。さらに、この分野の当業者ならば理解されるように、本発明は他のコンピュータシステム構成でも実施可能であり、そのようなものとしては、ハンドヘルド型デバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルコンシューマエレクトロニクス、ミニコンピュータ、メインフレームコンピュータなどがある。本発明の図示実施形態は、分散コンピューティング環境でも実施されており、そこで、タスクは、通信ネットワークを通してリンクされたリモート処理デバイスによって実行されている。しかし、本発明のいくつかの実施形態は、スタンドアロンコンピュータで実施することが可能になっている。分散コンピューティング環境では、プログラムモジュールはローカルとリモートの両方のメモリストレージデバイスに常駐させておくことができる。
図1に、本発明を実装した例示的なシステムは、従来のコンピュータ20(パーソナルコンピュータ、ラップトップ、セットトップ、サーバ、メインフレーム、および他の様々なコンピュータ)を含む。コンピュータ20は、処理装置21、システムメモリ22、およびシステムメモリを含むさまざまなシステムコンポーネントを処理装置21に相互接続するシステムバス23を含む。演算ユニットは、様々な市販されている利用可能なプロセッサのいずれかである。Intel x86,PentiumおよびIntel社やCyrix社、AMD社、Nexgen社を含む他の互換性のあるプロセッサ、Digital社からAlpha、MIPS Technology社からMIPS、NEC社、IDT社、Siemens社など、IBM社およびMotorola社からPower PCなどが含まれる。
システムバスは、メモリバスまたはメモリコントローラ、周辺バス、および、例えばPCI、VESA、Microchannel、ISAおよびEISA等のバス構成を使用したローカルバスを含むいくつかの種類のいずれかのバス構造を含むことができる。システムメモリは、リードオンリーメモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。スタートアップ中など、コンピュータ20内の要素間の情報転送を手助けする基本ルーチンを含む基本入出力システム(BIOS)は、ROM24に記憶される。
コンピュータ20はさらに、ハードディスクドライブ27、例えばリムーバブルディスク29に書込みまたは読取りを実施する磁気ディスクドライブ28、および例えばCD−ROMディスク31を読んだり、あるいはその他の光学的媒体から読取りまたは書込みを実施する光ディスクドライブ30を含む。ハードディスクドライブ27、磁気ディスクドライブ28および光ディスクドライブ30はそれぞれ、ハードディスクドライブインタフェース32、磁気ディスクドライブインタフェース33および光ディスクドライブインタフェース34によってシステムバス23に接続される。これらのドライブおよびその関連するコンピュータが読取り可能な媒体は、データ、データ構造、コンピュータ実行可能命令などの不揮発性の記憶をパーソナルコンピュータ20に提供する。以上に述べたコンピュータが読取り可能な媒体の記述は、ハードディスク、リムーバブル磁気ディスクおよびCDについてのものだが、さらに、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ等の、コンピュータが読取り可能な他の種類の媒体を含めることができる。また、典型的な実行環境で使用することができる。
いくつかのプログラムモジュールは、オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、その他のプログラムモジュール137およびプログラムデータ38を含む、ドライブおよびRAM25に記憶することができる。その他の入力装置(図示せず)には、マイクロホン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナ等がある。これらおよびその他の入力装置は、システムバスに結合されたシリアルポートインタフェース46を介して処理装置21に接続されることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)など他のインタフェースによって接続することもできる。モニタ47またはその他の種類のディスプレイ装置が、ビデオアダプタ48等のインタフェースを介してシステムバス23に接続される。モニタに加えて、パーソナルコンピュータは一般に、スピーカやプリンタ等の、その他の周辺出力装置(図示せず)を含む。
コンピュータ20は、リモートコンピュータ49等の1つまたは複数のリモートコンピュータへの論理接続を使用したネットワーク環境で動作することができる。リモートコンピュータ49は、サーバ、ルータ、ピア装置、またはその他の一般的なネットワークノードであり、図1には記憶装置50のみを示したが、一般にはコンピュータ20に関して説明した要素の全てまたは多くを含む。図1に示した論理接続は、ローカルエリアネットワーク(LAN)51およびワイドエリアネットワーク(WAN)52を含む。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットに普通に見られる。
LANネットワーキング環境で使用されるとき、コンピュータ20は、ネットワークインタフェースまたはアダプタ53を介してローカルネットワーク51に接続される。WANネットワーキング環境で使用されるとき、コンピュータ20は一般に、モデム54、またはインターネット等のワイドエリアネットワーク52上で通信を確立するその他の手段を含む(例えば、LAN51およびゲートウェイまたはプロキシサーバー55を経由して)。モデム54は、内部モデムでもまたは外部モデムでもよく、シリアルポートインタフェース46を介してシステムバス23に接続される。ネットワーク化された環境では、コンピュータ20に関して図示したプログラムモジュールまたはそれらの部分を、リモートメモリ記憶装置に記憶することができる。図示のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立するその他の手段を使用することもできることを理解されたい。
コンピュータプログラミング分野の当業者が行うプラクティスに従って、以下では、本発明は、別段の断りがない限り、コンピュータ20によって実施される動作とオペレーションの記号表現に関連付けながら説明されている。このような動作とオペレーションは、コンピュータで実行される(computer−executed)とも呼ばれている。当然に理解されるように、動作およびオペレーションの記号表現には、データビットを表す電気信号を処理ユニット21が操作し、その結果として電気信号の表現を変換(transformation)または変形(reduction)すること、メモリシステム(システムメモリ22、ハードドライブ27、フロッピディスク29、およびCD−ROM31を含む)内のメモリロケーションにデータビットを保存しておくことによって、コンピュータシステムのオペレーションを再構成するか、さもなければ変更することのほかに、他の信号処理も含まれている。データビットが保存されているメモリロケーションは、データビットに対応する特定の電気的、磁気的、または光学的特性をもつ物理ロケーションである。
(コンポーネントアプリケーション実行環境)
次に、図2を参照して説明すると、上述したように、Microsoft Windows NT 5.0オペレーティングシステムのCOM+コンポーネントは、サーバコンピュータ84側にランタイムオブジェクト実行環境を生成するためのランタイムサービスまたはシステムサービスを提供し、この実行環境からオブジェクト86に対し待機メソッド呼び出しが自動的に提供されるようにしている(以下、待機コンポーネントと呼ぶ)。COM+コンポーネントは、ダイナミックリンクライブラリ(”DLL” : dynamic link library)として実装されている(DLLは周知の実行可能ファイルフォーマットであり、実行可能コードを動的にまたはランタイムにリンクして、アプリケーションプログラムのプロセスに組み入れることを可能にしている)。COM+ DLLは、コンポーネントアプリケーションオブジェクトのホストの働きをするアプリケーションサーバプロセス(例えば、”ASP”90)に直接にロードされ、これらのプロセスのバックグランドで透過的に実行される。
図示のASP90は、待機コンポーネント86を含めて、コンポーネントアプリケーションオブジェクトの実行をホストするシステムプロセスである。各ASP90は、「COM+ Application」と呼ばれるコレクション(以前のMicrosoft Transaction Serverのオブジェクト実行環境では「パッケージ」とも呼ばれていた)にグループ化された複数のコンポーネントオブジェクトをホストすることができる。また、マルチスレッド、マルチタスキングオペレーティングシステム(例えば、図示実施例におけるMicrosoft Windows NT)のもとで、サーバコンピュータ84上で、複数のASP90を実行させることも可能である。各ASP90は、サーバアプリケーションオブジェクトのために別々のトラスト境界 (trust boundary) と障害隔離領域 (fault isolation domain) を提供している。言い換えれば、別々のASPで実行されているとき、あるサーバアプリケーションオブジェクトで障害が起こると、そのASPは終了するのが一般であるが、別のASP内のサーバアプリケーションオブジェクトはその障害に影響されないようになっている。図示の実施形態では、コンポーネントアプリケーションオブジェクトはCOM+ Applicationとしてグループ化され、”COM+ Explorer”と呼ばれる管理ユーティリティを使用して1つのASP90内で一緒に実行されるようになっている。このユーティリティは、コンポーネントアプリケーションオブジェクトと関連付けられた属性値を管理するためのグラフィカルユーザインタフェースを提供しているが、この中には、オブジェクトをCOM+ Applicationにグループ化することも含まれている。
図2に示す代表的な設備では、実行環境80はサーバコンピュータ84側に置かれており、このサーバコンピュータ(例えば、上述したコンピュータ20)は、実行環境80でコンポーネントアプリケーションオブジェクトにアクセスする多数のクライアントコンピュータ92を収容している、分散コンピュータネットワーク91内に接続されている。別の方法として、実行環境80をシングルコンピュータ上に置いておき、そのコンピュータにも置かれているクライアントプロセスによってアクセスされるコンポーネントアプリケーションオブジェクトのホストとなることも可能である。
(コンポーネントアプリケーションオブジェクトの概要)
図2に示すように、コンピュータ84は、コンポーネントアプリケーションオブジェクト群を収容しているCOM+ Applicationとして開発されたコンポーネントアプリケーションを実行する。例えば、ASP90の実行環境86でホストされるコンポーネントアプリケーションオブジェクト(待機コンポーネント86など)は、大学の登録アプリケーションでのクラス登録やオンラインセールスアプリケーションでの注文を管理するためのコードなどのように、クライアント/サーバアプリケーションのビジネスロジックを実装することが可能である。代表例として、各コンポーネントアプリケーションは、複数のコンポーネントを含み、各コンポーネントは、そのアプリケーションの作業の一部に対してプログラムコードを収めている。
図3を参照して説明すると、図示実行環境80(図2)内のコンポーネントアプリケーションオブジェクトは、マイクロソフトコンポーネントオブジェクトモデル(COM)仕様に準拠し(つまり、「COMオブジェクト」100として実装されている)、上述したようにMicrosoft Windows NT Server 5.0オペレーティングシステムのCOM+サービスを使用して実行されているが、別の方法として、他のオブジェクト標準(Object Management GroupのCORBA(Common Object Request Broker Archit)の仕様、およびSun Microsystems, Inc.のJava Beansを含む)に準拠して実装し、別のオペレーティングシステムのオブジェクトサービスを使用して実行させることも可能である。COM仕様は、オブジェクトとそのインタフェースに関するバイナリ標準を規定し、ソフトウェアコンポーネントをアプリケーションに統合化することを容易にしている(COMおよびOLEの詳しい解説は、Kraig Brockschmidt著「Inside OLE・第2版」、Microsoft Press, Redmond, Washington (1995) に記載されている)。
COMによれば、COMオブジェクト100は、インスタンスデータ構造102、仮想関数テーブル104、およびメソッドまたはメンバ関数106−108によってコンピュータ84(図2)内で表されている。インスタンスデータ構造102は、仮想関数テーブル104を指すポインタ110とデータ112(データメンバとも、オブジェクトのプロパティとも呼ばれている)を収めている。ポインタは、メモリ内のデータのアドレスを保持しているデータ値である。仮想関数テーブル104は、メソッド106−118のエントリ116−118をもっている。エントリ116−118の各々は、対応するメソッドを実装しているコードへのレファレンス(参照)を収めている。
ポインタ110、仮想関数テーブル104、およびメソッド106−108は、COMオブジェクト100のインタフェースを実装している。規則により、COMオブジェクトのインタフェースは、図2に待機コンポーネント86について示されているようにプラグインジャックとしてグラフィカルに示されている。また、インタフェースは、従来から、大文字の ”I” から始まる名前が付けられている。COMによれば、COMオブジェクト100は、複数のインタフェースを含むことが可能であり、これらのインタフェースは、1つまたは2つ以上の仮想関数テーブルで実現されている。インタフェースのメソッドは、
”IInterfaceName::FunctionName”
で表されている。
COMオブジェクト100の仮想関数テーブル104とメソッド106−108は、コンピュータ20(図1)にダイナミックリンクライブラリファイル(ファイル名のエクステンション ”.dll” で示されている)としてストアされているオブジェクトサーバプログラム120(以下、「オブジェクトサーバDLL」と呼ぶ)によって提供される。COMによれば、オブジェクトサーバDLL120は、これがサポートするクラスの仮想関数テーブル104とメソッド106−108のためのコードを含み、そのクラスのオブジェクトのためのインスタンスデータ構造102を生成するクラスファクトリ122も含んでいる。
他のオブジェクトとプログラム(COMオブジェクト100の「クライアント」と呼ぶ)は、COMオブジェクトのインタフェースからメソッドを呼び出すことによってCOMオブジェクトの機能にアクセスする。しかし、最初に、COMオブジェクトは、インスタンス生成されなければならず(つまり、クラスファクトリにオブジェクトのインスタンスデータ構造102を生成させることによって)、また、クライアントはCOMオブジェクトを指すインタフェースポインタを取得しなければならない。
COMオブジェクト100が例示される前に、オブジェクトが最初にコンピュータ20にインストールされる。代表例として、このインストールは、COM+ Applicationに含まれる関連オブジェクト群をインストールすることにより行われる。COMオブジェクト100は、オブジェクトを提供するオブジェクトサーバDLLファイル(1つまたは複数)120を、コンピュータ20がアクセスできるデータストレージ(代表例として、図1に示すハードドライブ27)に保存することによってインストールされ、COMオブジェクトのCOM属性(例えば、クラス識別子、オブジェクトサーバDLLファイル120のパスと名前など)をシステムレジストリ、カタログ、または類似のコンフィギュレーションデータベースに登録することによって行われる。
クライアントは、システム提供サービスおよび標準のセットを使用して、COMオブジェクトのインスタンスを生成を要求し、システム定義コンポーネントインタフェース群は、COMオブジェクトのクラスとインタフェースに割り当てられたクラスとインタフェース識別子に基づいている。具体的には、サービスは、COM+ライブラリに用意されているアプリケーションプログラミングインタフェース (API) 関数としてクライアントプログラムに利用可能になっている。なお、COM+ライブラリは、Microsoft Windows NT Server 5.0オペレーティングシステムのコンポーネントであり、”OLE32.DLL” と名付けられたファイルに入っている。また、COM+では、COMオブジェクトのクラスは、クラス識別子 (“CLSID”) と一意的に関連付けられ、そのCLSIDによって「レジストリ」と呼ばれるシステムコンフィギュレーションデータベースに登録されている。COMオブジェクトクラスのレジストリエントリは、クラスのCLSIDを、クラスを提供する実行可能ファイル(例えば、クラスのインスタンスを生成するクラスファクトリを収めているDLLファイル)を識別する情報と関連付けている。クラス識別子は、グローバルにユニークな128ビット識別子 (“GUID”) であり、これは “CoCreateGUID” と名付けたCOM+サービス(またはグローバルにユニークな識別子を作るために使用される、他の複数のAPIとユーティリティのいずれか)を使用して、プログラマが作成し、それぞれのクラスに割り当てられる。さらに、コンポーネントのインタフェースがインタフェース識別子 (“IID”) と関連付けられている。
具体的には、COM+ライブラリは、API関数を提供する。割り当てられたCLSIDおよび必要とするインタフェースのIIDを使用してコンポーネントの生成を要求するためにクライアントプログラムによってコールすることができる、例えば、“CoCreateInstance()” および “CoGetObject()” である。クライアントのインスタンス生成要求に応答して、”CoCreateInstance()” APIは、レジストリ内の要求されたCLSIDのレジストリエントリを調べ、そのクラスの実行可能ファイルを特定する。次に、”CoCreateInstance()” API関数は、そのクラスの実行可能ファイルをロードし、実行可能ファイル内のクラスファクトリを使用してCOMオブジェクト100のインスタンスを作成する。最後に、”CoCreateInstance()” API関数は、要求されたインタフェースのポインタをクライアントプログラムに戻してくる。”CoCreateInstance()” API関数は、システムレジストリの中でCOMオブジェクト100に対して登録された属性に応じて、実行可能ファイルをクライアントプログラムのプロセスにロードすることも、サーバプロセスの中にロードすることも可能である(つまり、同じコンピュータに置かれていても、分散コンピュータネットワーク内のリモートコンピュータに置かれていても構わない)。この場合、サーバプロセスはローカルでも、リモートでも構わない。他方、”CoGetObject()” APIは、COM Moniker Architectureを使用して、サーバオブジェクトクラスを特定しているストリングを解析し、モニカ (moniker) オブジェクトを作成する。このモニカオブジェクトは、サーバオブジェクトクラスのインスタンスを作成するために使用される。
COMオブジェクト100のクライアントが、COMオブジェクトの最初のインタフェースポインタを取得した後、クライアントはコンポーネントの他の必要とするインタフェースのポインタを、必要とするインタフェースに関連付けられたインタフェース識別子を使用して取得することができる。COM+は、”IUnknown” インタフェースを含めて、COMオブジェクトによって一般にサポートされているいくつかの標準インタフェースを定義している。このインタフェースは、”QueryInterface()”と名付けたメソッドを含んでいる。”QueryInterface()” 関数は、インタフェース識別子を引数としてコールすることができ、そのインタフェース識別子に関連付けられたインタフェースを指すポインタを戻してくる。各COMオブジェクトの ”IUnknown” インタフェースも、COMオブジェクトへのレファレンス(例えば、インタフェースポインタ)を保持しているクライアントプログラムのカウントをとるためのメソッド、”AddRef() と ”Release()” を含んでいる。規則により、”IUnknown” インタフェースのメソッドは、COMオブジェクト上の各インタフェースの一部として含まれている。従って、COMオブジェクト100のインタフェースを指すものとしてクライアントが取得するインタフェースポインタは、QueryInterface関数をコールするために使用できる。
(トランザクション処理の概要)
図2に戻って説明すると、COM+コンポーネントは、図示実行環境80におけるコンポーネントアプリケーションオブジェクトのための自動トランザクション処理も実装している。自動トランザクション処理は、1997年10月28日に出願され、1999年3月30日に特許交付された米国特許第5,890,161号、「Automatic Transaction Processing Of Component−Based Server Applications」Helland他に詳しく説明されている(以下、「自動トランザクション特許出願」と呼ぶ)。要約して説明すると、自動トランザクション処理は、実行環境80におけるコンポーネントアプリケーションオブジェクトの処理動作を自動的に調整し、一般にトランザクションと呼ばれている、単一の分割不能作業単位として効力をもつようにオペレーションの各部分を形成している。
実行環境80におけるトランザクションは、トランザクションマネージャ128によって管理される。トランザクションマネージャ128は、データベースやファイルシステムなどの、複数の管理対象トランザクションリソースが係わっているトランザクションを調整するシステムサービスである。トランザクションマネージャ128は、あるトランザクションに関係するすべての処理作業(例えばデータベースの更新)が、ACIDプロパティ(アトミック性(Atomicity)、一貫性(Consistency)、隔離(Isolation)、持続性(Durability))に従って行われることを保証する。これは、周知の2フェーズコミットプロトコルを使用し、障害(例えば、コンピュータまたはネットワークのハードウェアまたはソフトウェア障害や、リソースマネージャまたはアプリケーションの誤った振る舞いが原因で起こるエラー)、競合状態(例えば、あるリソースマネージャがアボートを出している間にコミットを開始するトランザクション)、あるいは利用可能性(リソースマネージャはトランザクションを準備しているが、リターンすることがない)に関係なく、行われる。図示のトランザクションマネージャ128は、Microsoft SQL Server 6.5の一部としてリリースされたマイクロソフト分散トランザクションコーディネータ(MSDTC : Microsoft Distributed Transaction Coordinator)である。トランザクション処理に関するバックグランド情報の詳細は、特に、Jim Gray、Andreas Reuter共著「Transaction Processing Concepts and Techniques」、Morgan Kaufmann, 1993に記載されている。
(待機コンポーネントランタイムアーキテクチャ)
ここでも図2に示すように、待機コンポーネントランタイムアーキテクチャ130(以下、「QCアーキテクチャ」と呼ぶ)は、通常のCOMコールセマンティックスを使用して、待機メソッド呼び出しをサポートしている。具体的に説明すると、クライアントコンピュータ92側のプロセス134内のクライアント132は、処理中のCOMオブジェクトとリアルタイムで同期してやりとりするための通常のCOM規則を使用して、待機コンポーネント86のインタフェース87からメソッドを呼び出す。この中には、例えば、”CoGetObject()”または”CoCreateInstance()”コールなどでオブジェクトを作成すること、例えば、”CoCreateInstance()” APIコールや”QueryInterface()”コールでインタフェース識別子(IID) を指定して、インタフェースポインタを取得すること、その仮想関数テーブルまたはディスパッチインタフェース(動的バインディングの場合)を通してオブジェクトへのコールを出すこと、最後に、例えば、オブジェクトの”Release()” メソッドをコールすることによってオブジェクトを解放することが含まれる。(本発明のいくつかの実装形態では、ここに図示のQCアーキテクチャ130におけるように、クライアントは、リアルタイムメソッド呼び出しの場合とは異なるオブジェクト作成メカニズムを、待機メソッド呼び出しに対して使用することができる(つまり、以下で説明する “CoGetObject()” APIとキューモニカ)が、その場合でも、共通コールセマンティックスを使用してオブジェクトのメソッドを呼び出すようになっている。)他方、待機コンポーネント86は、ローカルメソッドコールの場合と同じように、そのメソッドがその仮想関数テーブルまたはディスパッチインタフェースを通して呼び出されるようになっている。言い換えれば、クライアント132と待機コンポーネント86は、いずれかのメッセージキューイングAPIを使用するように書かれていなくても、待機コンポーネントのメソッドの待機メソッド呼び出しを出したり、受け取ったりすることができる。
待機コンポーネント86でのクライアントのメソッド呼び出しは、クライアントとオブジェクトとがやりとりするクライアント側140に記録され、後刻にプレイバックされ、このやりとりのサーバ側142の待機コンポーネント86に対して出される。図示のQCアーキテクチャ130は、待機コンポーネント86でのクライアントのメソッド呼び出しをすべて記録するが、メソッド呼び出しをプレイバックするのは、クライアント132が待機コンポーネント86の使用を完了してからである(つまり、クライアントが待機コンポーネントを解放した後である)。さらに、クライアント132があるトランザクションに関与している場合、メソッド呼び出しは、そのトランザクションが正常完了に到達するまでプレイバックされない。
図示のQCアーキテクチャ130は、Microsoft Windows NT 5.0オペレーティングシステムのCOM+コンポーネントに実装されている。COM+コンポーネントは、コンピュータシステム20上で実行されるCOMオブジェクトに種々のランタイムオブジェクトサービスを提供している。ランタイムサービスは、レコーダ150、リスナ152およびプレーヤ154を提供し、これらはクライアント132による待機メソッド呼び出しを、通常のコールセマンティックスを通して待機コンポーネント86で実行する。レコーダ150は、待機コンポーネントのプロキシの働きをして、コールパラメータおよびメッセージの中の関連データとともに、クライアントのメソッド呼び出しのマーシャリングを行い、さらに、メッセージキューイングAPI(”Microsoft Message Queue” または ”MSMQ” など)を使用して、そのメッセージを待機コンポーネント86と関連付けられているメソッド呼び出しメッセージキュー158に入れる。(MSMQの詳細は、「Microsoft Developer Network (MSDN) Library Edition」July 1998、SDK Documentation、Platform SDK、Networking and Distributed Services、Microsoft Message Queue Server (MSMQ) に記載されている。)リスナ152は、メッセージがキュー158に到着するのを待ち、メッセージがプレーヤ154に到着するとメッセージをディスパッチする。プレーヤ154は、メッセージからのメソッド呼び出しをアンマーシャリングし、待機コンポーネント86に対してメソッド呼び出しを出す。
図示のQCアーキテクチャ130における上述した各部分について、以下詳しく説明する。
(待機コンポーネント)
図示のQCアーキテクチャ130における待機コンポーネント86は、上述し、図3に示す構造をもつCOMオブジェクトである。待機コンポーネント86は、属性(”QUEUEABLE”属性)をコンポーネントのインタフェースと関連付けることによって、待機メソッド呼び出しをサポートするものとして特定される。コンポーネントの開発者は、インタフェース属性マクロ(つまり、”QUEUEABLE” という語)を、インタフェース記述言語でコンポーネントのクラスを記述しているインタフェースセクションに追加することによって、QUEUEABLE属性をコンポーネントのインタフェースに割り当てる。別の方法として、上述した ”COM+ Explorer” には、オブジェクトに関連付けられた属性を、図示の実行環境80でセットするためのグラフィカルコントロールがオブジェクトプロパティシートダイアログに用意されているので、これを使用してQUEUEABLE属性をセットすることもできる。本発明のいくつかの実施形態では、QUEUEABLE属性は、カタログ165、オペレーティングシステムレジストリ、またはオペレーティングシステムや特定アプリケーションソフトウェアに関連する他のコンフィギュレーションデータベースに保存しておくことができる。
待機コンポーネント86がパッケージされているCOM+ Applicationと関連付けられた属性もいくつかある。”Queued App” 属性は、COM+ Applicationのオブジェクトを待機メソッド呼び出しを通して呼び出せるかどうかを示している。”Queue Listener” 属性は、COM+ Applicationにリスナ152(図2)のような、キューリスナを始動させるかどうかを示している。また、”Queue BLOB” 属性は、COM+ Applicationに関連するキュー群のMSMQ名(グローバルにユニークな識別子 (GUID) 形式の名前)を収めている。(”BLOB” は”Binary Large Object” を表す頭字語である。)図示のアーキテクチャ130では、”Queue App” 属性と ”Queue Listener” 属性はブール代数フラグとして保存され、これは「オン」か「オフ」のどちらかにセットされる。”Queue BLOB” 属性は、5つの異なるキューのMSMQ名をストアしている。”Queue App” 属性と “Queue Listener” 属性は、”Queue App” 属性と “Queue Listener” 属性をCOM+Applicationのプロパティシートでセットするためのチェックボックスコントロールが用意されている、COM+ Explorerユーティリティを使用すると、アプリケーションインテグレータが表示し、指定することができる。”Queue App” 属性と “Queue Listener” 属性が「オン」にセットされると、これを受けてこのユーティリティは “Queue BLOB” 属性を生成する。
COM+ Applicationが初めて作成されるとき、”Queue App” 属性と “Queue Listener” 属性はオフにセットされ、”Queue BLOB” 属性はヌルになっている。”Queue App” 属性がオンにされると(例えば、COM+ Explorerでチェックボックスコントロールを選択することにより)、COM+ ExplorerはCOM+ランタイムサービスの中のAPI関数を初期化し、COM+ ApplicationのためのMSMQキュー群を作成し、そのMSMQ名を “Queue BLOB” 属性にストアする。さらに、”Queue App” 属性と “Queue Listener” 属性は共にオンにされる。その後、アプリケーションインテグレータは、COM+ Explorerでこれらの属性のどちらかのチェックボックスを選択解除して属性をオフにすることができる。このことは、待機コンポーネントとなることができるオブジェクトを含んでいる場合であっても、COM+ Applicationにリアルタイムメソッド呼び出しだけを使用させることを意味する。
図示のQCアーキテクチャ130では、待機コンポーネントのインタフェースは、開発者によって “QUEUEABLE” 属性のマークが直接に付けられる。COMオブジェクトは、少なくとも1つのインタフェースに“QUEUEABLE” のマークが付けられていれば、キュー可能なコンポーネントであるとみなされる。”Queued App” と指定されたCOM+ Applicationに置かれていれば、そのオブジェクトは待機コンポーネントとみなされる。しかし、本発明の代替実施形態では、コンポーネント自体に“QUEUEABLE” 属性のマークを付けることができる。マークされたコンポーネントのインタフェースは、そのメソッドが[in] パラメータだけをもっていれば、いずれもQUEUEABLEとみなされる。
(待機コンポーネントのアクティベーション)
上述したように、クライアント132は、リアルタイムメソッド呼び出しでも使用されている通常のCOMコールセマンティックスを使用して待機コンポーネント86を作成する。具体的には、図示QCアーキテクチャ130のクライアントは、COMの標準インスタンス生成APIである、”CoGetObject()” API(またはVisual BasicまたはVisual Javaプログラミング言語のセマンティックスに準拠する同等の “GetObject” API)へのコールで待機コンポーネント86を作成する。クライアントは、生成しようとする待機コンポーネントが、待機メソッド呼び出しで使用されることを、”queue:/new:” の後に、待機コンポーネントのプログラムIDまたはストリング形式のグローバルにユニークな識別子(GUID) を続けたものを、”CoGetObject()” APIコールの “displayname” パラメータとして指定することによって規定する。これを受けて、”CoGetObject()” APIはこのストリングを“new” モニカと”queue” モニカに変換し、”CoGetObject()” APIは待機コンポーネントとこれらモニカとバインドさせる。newモニカは、”CoGetObject()” APIと類似した処理を実行して、サーバオブジェクトのインスタンスを作成する。queueモニカは、クライアントが待機コンポーネントで待機メソッド呼び出しを使用できるように、図4に示すレコーダ構造をセットアップする処理を実行する。
代替実現形態では、クライアントは、待機コンポーネントが該当属性(つまり、そのインタフェースまたはクラスに関連付けられたQUEUEABLE属性)をもっていれば、インスタンス生成要求での待機メソッド呼び出しを明示的に指定しなくても、待機コンポーネント86を生成することができる。クライアントは、”CoGetObject()”または “CoCreateInstance()” APIを通して待機コンポーネントインスタンスの作成を要求するだけでよく、そうすれば、これらの関数がその属性に基づいて、オブジェクトを待機コンポーネントとして作成する。
オブジェクトインスタンス生成コールの例は、図7のプログラムリスティング159に示されている。
(レコーダ)
図4を参照して具体的に説明すると、図示QCアーキテクチャ130のレコーダ150は、COM+ DLLに用意されているCOMオブジェクトである。レコーダDLLは、”d:?Program Files?Microsoft?COM+” のようなセットアッププログラムによって、インストール時に、コンポーネント20のCOM+関連ディレクトリに入れられる。このセットアップは、レコーダDLLに自己登録もさせる。この中には、レコーダ150を特定する構成情報(クラス識別子、DLLパス名、属性など)をカタログや他のコンフィギュレーションデータベースにストアすることも含まれている。
図示QCアーキテクチャでは、プロキシオブジェクト160は、プロキシマネージャの働きをするレコーダ150から構成されている。このレコーダは1つまたは複数のインタフェースプロキシ166と167を管理しているが、これらのプロキシは、クライアントプロセス134で待機コンポーネント86のプロキシとなるように待機コンポーネント86のインタフェース87の実装を提供し、待機コンポーネント86でのクライアント132のメソッド呼び出しをプロキシインタフェースへの直接メソッドコールとして受信する。インタフェースプロキシ166−167は、Microsoft COM RPCの標準マーシャリングアーキテクチャに従って生成されるか(つまり、Microsoft Interface Definition Language (MIDL) による待機コンポーネント86の記述)、あるいはMicrosoft Automation Type Libraryのマーシャラ(Marshaler)に従って生成される。(Microsoft COM RPCの詳細は、Brockschmidt著「Inside OLE第2版」、277−338 (Microsoft Press 1995) に記載されている。)
さらに具体的に説明すると、プロキシマネージャの働きをするレコーダ150は “IUnknown” インタフェース162を実装している。コンポーネントアプリケーションオブジェクトの概要の個所で上述したように、クライアント132は、IUnknownインタフェース162の “QueryInterface()” メソッドへのコールの中で、インタフェースのインタフェース識別子 (IID) を指定することによってインタフェースポインタを要求する。指定されたIIDが、カタログ165(図2)にリストされている “immutable IID set” の一部であることを条件として、レコーダ150は、インタフェースプロキシ(166−167)(”facelet” とも呼ばれる)をロードし、集約する。インタフェースプロキシは、そのIIDがクライアントの要求の中で指定されている、それぞれの待機コンポーネントインタフェースのために、プロキシインタフェース168−169を実装するための、標準マーシャリングアーキテクチャのMIDLコンパイラによって生成されている。プロキシインタフェース168−169は、待機メソッド呼び出しを受信するように最終的にインスタンス生成された待機コンポーネントのインタフェースと一致している。
レコーダ150は、 “IRpcChannelBuffer” インタフェース170および “IObjectControl” インタフェース172も実装している。IObjectControlインタフェース172は、Microsoft Transaction Server (MTS) に従って定義され、MTSのJust−In−Time Activation機能(この機能はCOM+に組み込まれている)に従って、オブジェクトデアクティベーションの通知を受信するためにレコーダ150によって使用されるインタフェースである。IRpcChannelBufferインタフェースは、COM RPC標準マーシャリングアーキテクチャに定義されているインタフェースである。
インタフェースプロキシ166−167は、クライアントプロセス134のメモリからの該当コールパラメータと関連データを含んでいる、クライアントのメソッド呼び出しをマーシャリングして、バッファに入れるためにMIDLコンパイラによって生成される。Microsoft COM RPCの標準マーシャリングアーキテクチャによれば、インタフェースプロキシ166−167は、“IRpcChannelBuffer” インタフェース170(これは標準マーシャリングアーキテクチャに定義されているCOMインタフェースである)を使用して、バッファを待機コンポーネントのASP90に転送している。しかし、リアルタイムRPCでメソッド呼び出しを転送する代わりに、レコーダ150の“IRpcChannelBuffer” インタフェース170の実装では、待機コンポーネント86でのクライアントのメソッド呼び出し(IUnknownインタフェースのメソッドへの呼び出しを除く)のすべてを、1つの連続したバッファに記録している。レコーダは、これらのIUknownメソッドをローカルに実装しているので、このようなメソッド呼び出しはバッファに記録しない。
クライアントが待機コンポーネントの使用を完了すると(つまり、クライアントが待機コンポーネントへのレファレンスを解放すると)、MSMQリソースディスペンサ176は、メソッド呼び出しのバッファをMSMQに引き渡す。クライアントのトランザクションが正常に完了すると、MSMQは記録されたメソッド呼び出しを収めている連続バッファを、待機コンポーネント86が置かれているCOM+ Applicationのメッセージキュー158にメッセージとして送信する。他方、クライアントのトランザクションがアボートしたときは、MSMQはバッファを破棄し、メッセージを送信しないので、記録されたメソッド呼び出しはキャンセルされる。(トランザクションがアボートする「運命にある」いくつかの場合には、MSMQリソースディスペンサ (resource dispenser) は、いずれにしろアボート処理のときバッファが破棄されるので、バッファをMSMQに渡さないだけである。)MSMQリソースディスペンサ176は、レコーダの要求を受信してバッファされたメソッド呼び出しをメッセージキュー158に送信するためのインタフェース178を有している。MSMQリソースディスペンサ176は、オープンMSMQキューのキャッシュを備え、MSMQ APIを使用してメソッド呼び出しのバッファを、MSMQを経由してメッセージキュー158に送信する。
(リスナ)
再び図2に戻って説明すると、リスナ152は、待機コンポーネント86が置かれているCOM+ Applicationのメッセージキュー158をモニタするCOM+提供のオブジェクトである。リスナ152は、COM+ Applicationがその “Queue BLOB” 属性で指定されたメッセージキューをもち、”Queue Listener” 属性がオンにセットされていれば、COM+ Applicationのスタートアップ時に生成される。リスナ152は、COM+ Applicationのメッセージキュー158をオープンし、メッセージが到着するのを待つ。メッセージが到着すると、リスナ152は、メッセージを消費し、処理するプレーヤ154のインスタンスを実行するためのスレッドをディスパッチする。図示QCアーキテクチャ130では、ASP90ごとに1つのリスナ152がある。
リスナ152のセットアップ時に、メッセージキュー158は、多数のクライアント132の待機メソッド呼び出しからの多数のメッセージを収容できる潜在能力を持っている。さらに、リスナ152は、複数のメッセージキューをモニタして、ASP90内のCOM+ Applicationsを調べることができる。従って、リスナ152は、好ましくは、適度のサイズのスレッドプールを使用し、そこからプレーヤスレッドをディスパッチするようにすると、メッセージ処理スループットが最大になる。スレッドの数を適度にすると、サーバコンピュータプロセッサの過負荷が回避される。さらに、待機メソッド呼び出しはリアルタイム応答を必要としないので、新規スレッドを待機メッセージ用に即時にスケジュールする必要がなくなる。別の方法として、プールされるオブジェクトインスタンスの数に上限と下限を設けると、待機コンポーネントにプーリングされたオブジェクトインスタンスは、過負荷が防止される。複数のメッセージキューの場合には、リスナ152は、プレーヤスレッドディスパッチングをキューの間で公平に配分することが好ましく、そのようにすれば、別のキューのディスパッチを開始する前にあるキューからのメッセージが消費されることはない。
(プレーヤ)
図5に示すように、プレーヤ154は、COM+ Utilityライブラリに用意されている(COM+ディレクトリ内のDLLファイルにも入っている)COMオブジェクトに実装されている。上述したように、リスナ152は、待機コンポーネント86のメソッド呼び出しが入っているメッセージが到着したとき、リスナのASP90にプレーヤ154を作成し、呼び出す。プレーヤ154は、「トランザクション要求(transaction required)」にセットされたトランザクション属性をもっている。このようにセットされていると、COM+実行環境80は、そこでプレーヤが生成されるトランザクションを、上掲の自動トランザクション特許出願に記載されている自動トランザクションアーキテクチャに従って自動的に開始する。待機コンポーネント86に対してプレーヤ154によってプレイバックされるメソッド呼び出しも、自動的に関連付けられてこのトランザクションに入れられる。
作成されると、プレーヤ154は、リスナ152内のルーチンをコールして、待機コンポーネント86のメッセージ呼び出しを収めている待機メッセージを取り出す。プレーヤ154は、最初にバッファを獲得し、次にリスナのルーチンを使用して、”MQReceiveMessage” API(標準MSMQ API)オペレーションを通してメッセージをバッファにロードする。”MQReceiveMessage” APIオペレーションは、プレーヤのトランザクションの一部にされる。
次に、プレーヤ154は、ASP90内の待機コンポーネントのインスタンスを生成し、スタブオブジェクト180でスタブマネージャの働きをする。つまり、Microsoft COM RPCの標準マーシャリングアーキテクチャによって生成された(つまり、Microsoft インタフェース定義言語 (MIDL) による待機コンポーネントの記述から生成された)またはMicrosoft Automation Type Libraryのマーシャラに従って生成されたインタフェーススタブ182−183を管理する。スタブマネージャとして、プレーヤ154は、それぞれのインタフェース識別子 (IID) がメッセージに見つかったとき、待機コンポーネントのインタフェース87のインタフェーススタブ182−183(「スタブレット(stublet)」とも呼ばれる)をロードする。プレーヤ154は、スタブレット182−183を使用して、メッセージからのメソッド呼び出しデータをアンマーシャリングし、アンマーシャリングされたメソッド呼び出しを待機コンポーネント86に対して出す。また、プレーヤ154は、レコーダ150によって挿入されたセキュリティヘッダを、該当セキュリティサービスをコールすることによってインターセプトする。
(持続的サーバ側アボート)
リスナ152とプレーヤ154は協力し合って、「有害メッセージ(poison message)」と「持続的サーバ側アボート」を処理する。(ここで言う有害メッセージとは、待機コンポーネントにプレイバックされたときトランザクションアボートを持続的に引き起こすようなメソッド呼び出しを収めているメッセージのことである。)具体的に説明すると、メソッド呼び出し群が待機コンポーネント86にプレイバックされるときプレーヤのトランザクションがアボートすると、待機コンポーネントの作業はロールバックされる。また、トランザクションがアボートすると、MSMQは、そのトランザクションアボート処理の一部として、メソッド呼び出しメッセージをCOM+ Applicationのメッセージキュー158に戻し、再試行する。図示のQCアーキテクチャ130では、プレーヤ154は、エラーまたは障害を示す戻り値(例えば、障害HRESULT値)を待機コンポーネント86から受信すると、トランザクションをアボートさせるようになっている。待機コンポーネントでのメソッド呼び出しの処理がアボートを保証している場合には、待機コンポーネント86は “SetAbort()” メソッドをコールして(上掲の自動トランザクション特許出願に記載されているように)トランザクションをアボートさせることも可能である。
図示のQCアーキテクチャ130では、COM+ Applicationと関連付けられたメッセージキューは5つある。つまり、通常の入力キュー、「第1回再試行」キュー、「第2回再試行」キュー、「第3回再試行」キュー、および「最終休止」キューである。QCアーキテクチャでは、これらのキューを使用して持続的サーバ側アボートを処理している。具体的には、待機コンポーネント86に対するメソッド呼び出しを繰り返した結果、トランザクションにアボートが起こると、QCアーキテクチャ130では、次のシーケンスをサイクルする。つまり、(1) プレーヤ154は、COM+ Applicationのキューからメソッド呼び出しメッセージを取り出し、(2) プレーヤ154は、待機コンポーネント86のインスタンスを生成し、待機コンポーネントに対しメソッド呼び出しをプレイし、(3) トランザクションはアボートし、ロールバックされ、(4) MSMQはメッセージを、そのメッセージが取り出されたCOM+ Applicationのメッセージキューの先頭に戻す。
連続的アボートが起こると、プレーヤ154は、戻された「有害メッセージ」を、COM+ Applicationの再試行キューのシーケンスを通って移動させていく。QCアーキテクチャの代替実施形態では、図示アーキテクチャについて後述するものとは異なる数の再試行とインターバルを使用することが可能である。具体的には、アボートの後通常の入力キューに戻ると、プレーヤ154は、戻されたメッセージを第1回再試行キューに移動する。リスナ152は、毎分1回ごとに第1回再試行キューが尽きるまでサービスし、ほぼ1分のインターバルでプレーヤ154を通して待機コンポーネント86にメッセージをリプレイする。
メッセージが3回目に第1回再試行キューに戻されると、プレーヤ154は、メッセージを第2回再試行キューに移動する。リスナ152は、3分ごとに第2回再試行キューが尽きるまでサービスする。ここで再び、このインターバルでメッセージはプレーヤ154を通して待機コンポーネント86にリプレイされる。
メッセージが3回、第2回再試行キューに戻されると、プレーヤ154は、メッセージを第3回再試行キューに移動する。リスナ152は、5分ごとに第3回再試行キューが尽きるまでサービスし、ここで再び、メッセージは、このインターバルでプレーヤ154を通して待機コンポーネント86にリプレイされる。
メッセージが5回目に第3回再試行キューに戻されると、プレーヤ154は、メッセージをCOM+ Applicationの最終休止キューに移動する。しかし、この最終休止キューは、リスナ152によってサービスされない。メッセージは、手作業で移動されるか(以下で説明するQueued Components Message Moverユーティリティを使用して)、あるいはMSMQ Explorer(MSMQを管理するユーティリティプログラム)によって除去されるまで最終休止キューに残っている。
アボートが起こるたびに、プレーヤ154は、イベントログメッセージを書き出す。プレーヤ154は、メッセージがあるキューから別のキューに移されたとき、別のイベントログメッセージを書き出す。メッセージが最終休止キューに移されると、さらに別のイベントログメッセージを1つだけ書き出す。プレーヤ154は、メッセージを診断情報で補足するといった目的で、キューからキューに移動する前にメッセージを修正することも可能である。
待機コンポーネント86は、オプションとして、関連の例外ハンドラ188をもつことも可能であり、これは、カタログ165に登録されている待機コンポーネント86の “Exception_CLSID”エントリによって指定されている。この例外ハンドラは “IPlaybackControl” インタフェース190をサポートするCOMオブジェクトである。例外ハンドラ188が待機コンポーネント86に対して登録されていれば、プレーヤ154は、メッセージからのメソッド呼び出しをプレイする前に、まず例外ハンドラの“IPlaybackControl” インタフェース190をコールする。待機コンポーネント86は、自身が“IPlaybackControl” インタフェース190をもち、自身を“Exception_CLSIDエントリに例外ハンドラとして指定することもできる。“Exception_CLSIDエントリの指定がなければ、プレーヤ154も、待機コンポーネント86の“IPlaybackControl” インタフェース190があるかどうかを問い合わせをし、コールして例外処理を行う。
“IPlaybackControl” インタフェース190は、メッセージが最終休止キューに置かれる寸前にあることを例外ハンドラ188に知らせ、持続的アボートで別の方法で処理できるようにすることを目的としている。例外ハンドラは、問題診断情報を収集したり、プレーヤによるこのインタフェースへのコールに応答して、持続的で重大な問題があることをクライアントに知らせるオブジェクトまたはメッセージを生成したりする機能を実装することも可能である。待機コンポーネント86が、関連の例外ハンドラをもっていなければ、「有害メッセージ」は、その再試行が上述したように尽きたとき、最終休止キューに入れられるだけである。しかし、例外ハンドラが存在していれば、プレーヤ154は、メッセージが最終休止キューに移される前に最後の1回だけ“IPlaybackControl” インタフェースのメソッドをコールする。待機コンポーネント86へのメソッド呼び出しプレイバックがこの最終回でもアボートを引き起こしたときは、「有害メッセージ」は最終休止キューに入れられる。
他方、クライアント側では、MSMQは、COM+ Applicationの入力メッセージキューをまたがってメッセージが移動できない場合がある。このようなことが起こるのは、例えば、キューアクセスコントロールがメッセージをクライアントからサーバに移動することを許していないときである。このような場合は、MSMQはメッセージをクライアント側キューマネージャの “Xact Dead Letter” キューに移動する。QCアーキテクチャ130には、配達不能 (dead letter) キューモニタ194が用意されている(図6参照)。このモニタ194は、クライアントコンピュータ92側の待機コンポーネント86の “Exception_CLSID” カタログエントリで指定された例外ハンドラ188のインスタンスを生成し、”IPlaybackControl” インタフェース190のIIDを指定して “QueryInterface()” コールを出す。これが成功すると、モニタは “IPlaybackControl::FinalClientRetry()” メソッドを呼び出し、メッセージからのメソッド呼び出しを、クライアント側の待機コンポーネント86の実装に対してプレイバックする。このクライアント側の待機コンポーネントは、オプションとして、診断情報を保存しておくことも、以前のトランザクションの効果を逆に戻す(補償する)アクションをとることもできる。プレイバックがコミットされたときは、メッセージは配達不能キューから除去される。プレイバックがアボートするか、あるいは例外ハンドラ188とIPlaybackControlインタフェース190が利用可能でないときは、メッセージは手作業による処理のために配達不能キューに残されている。
(待機コンポーネントメッセージムーバ)
QCアーキテクチャ130には、システム管理者や他の人がメッセージをあるCOM+ Applicationキューから別のキューに手作業で移動できるようにする、「待機コンポーネントメッセージムーバ(Queued Components Message Mover)」と呼ばれる管理ツールが用意されている。上述したように、QCアーキテクチャ130は、メッセージを最終休止キューに移すことによって持続的サーバ側アボートを処理し、リスナ152とプレーヤ154がメッセージで継続的に「ループ」するのを防止している。ある場合には、持続的アボートの原因は、サーバコンピュータ側で訂正することができる。例えば、アボートは、リソース(例えば、データベース)が利用可能でないと起こることがある。この事態が手作業で訂正された後、待機コンポーネントメッセージムーバユーティリティを使用して、以前の有害メッセージをCOM+ Applicationの入力メッセージキューに戻しておけば、追加の再試行が可能になる。待機コンポーネントメッセージムーバユーティリティは、メッセージをトランザクションとして移動することが好ましく、そのようにすれば、移動期間中に障害が行ったときメッセージが紛失したり、重複したりすることがない。待機コンポーネントメッセージムーバは、Visual Basicを使用するといったように、OLEオートメーションを通してプログラムで動作させることも可能である。
(インタフェース)
図8は、”IPlaybackControl”インタフェース190を定義しているプログラムリスティング200を示す図である。上述したように、このインタフェースは、例外ハンドラ188によって実装され、例外ハンドラは、持続的サーバ側アボートとクライアント側MSMQ配達障害の異常処理に参加するように待機コンポーネント86のカタログ165に登録されている。インタフェース190は、 ”FinalClientRetry()”メソッドと“FinalServerRetry()”メソッドを含んでいる。
”FinalClientRetry()”メソッドは、MSMQを通してメッセージをサーバコンピュータ84に配達しようとする、すべての試みが拒否され、メッセージが”Xact Dead Letter”キュー上で終了したことを、クライアントコンピュータ92側の例外ハンドラ188(定義されている場合)に通知する。例えば、キューのパーミッションは、メッセージがキューに配達されることを許可していない場合がある。メッセージがXact Dead Letterキューに到着すると、QCアーキテクチャ130は、”FinalClientRetry()”メソッドをコールして、例外ハンドラにそのように通知する。これを受けて、例外ハンドラは、待機コンポーネントクラスに関係する例外アクションをとることができる。そのようなアクションとしては、その障害をアプリケーション固有の用語で記録したり、メールメッセージをエンドユーザや管理者に送信したりすることがあり、あるいは以前のトランザクションの効果を逆に戻すといった、クライアント側の補償アクションをとることさえもある。待機コンポーネントクラスのために特定された例外ハンドラが、このインタフェースを実装していないか、あるいはその”FinalClientRetry()”メソッドコールから障害結果が戻された場合には、メッセージはXact Dead Letterキューに残されままになっている。
“FinalServerRetry()” メソッドは、据え置かれたアクティベーションを待機コンポーネント86にプレイバックするすべての試みが失敗し(例えば、エラーHRESULTまたはトランザクションアボートによって)、メッセージがCOM+ Applicationの「最終休止」キューに移される寸前にあることを、サーバコンピュータ84側の待機コンポーネントの例外ハンドラに通知する。サーバ側例外ハンドラは、待機コンポーネントクラスに固有の例外アクションをとることができる。そのようなアクションとしては、その障害をアプリケーション固有の用語で記録したり、メールメッセージをエンドユーザや管理者に送信したりすることがあり、あるいは以前のトランザクションの効果を逆に戻すといった、クライアント側の補償アクションをとることさえもある。好ましくは、待機コンポーネントは、このトランザクションを正常に完了させるための、あらゆる努力をする必要があり、さもなければ、メッセージを再処理するための手作業による介入が必要になる。待機コンポーネントクラスのために登録された例外ハンドラが、”IPlaybackControl”インタフェースを実装していないか、あるいは”FinalServerRetry()”メソッドの実装から障害結果が戻されたか、トランザクションがアボートしたときは、メッセージは「最終休止」キューに移される。
(待機メソッド呼び出しメッセージ)
次に、図9および図10を参照して説明すると、クライアントのメソッド呼び出しを収めていて、QCアーキテクチャ130のレコーダ150によって記録されるメッセージ220は、図10に示すフォーマットになっており、このフォーマットは、図9に示すプログラムリスティング222に定義されているデータ構造を使用している。このメッセージフォーマットによれば、メッセージ220は、メッセージヘッダ224とメッセージ本体226を含んでいる。メッセージ本体226は、コンテナセクション228と1つまたは2つ以上のメソッド、セキュリティまたは診断セクション230を含んでいる。コンテナ、メソッドセキュリティおよび診断セクション228,230は、該当タイプのセクションヘッダ234,236から始まっている。セクションヘッダ234,236は、さらに共通ヘッダ(図9の”_CommonHeader”構造)を含んでいる。コンテナセクション228には、コンテナセクションヘッダ234があるのに対し、メソッドセクションの各々は長または短メソッドヘッダ236とパラメータデータ238を含んでいる。
メッセージヘッダ224は、レコーダまたはMSMQのどちらかによってセットされ、メッセージ本体と一緒に送信される複数のメッセージプロパティを収めている。これらのメッセージプロパティには、プライオリティ、メッセージID、相関ID、MSMQパス名、および応答キュー名がある。プライオリティは、メッセージがCOM+ Applicationのメッセージ入力キューからプレイバックされるときの順序を判断するためにセットできる値である。クライアントアプリケーションによって割り当てられるプライオリティ値を高くすると、特定のオペレーションにプライオリティ処理が与えられる。例えば、銀行アプリケーションにおいて、小切手処理よりも、クレジットカード認可が優先されるといったようにである。メッセージIDは個々のメッセージを特定している。相関IDは、QCアーキテクチャ130では、ワークフロー内の待機メソッド呼び出しメッセージ群をグループ化するために使用されている。ワークフローを開始する初期メッセージは、ヌルの相関IDをもつメッセージを生成する。初期メッセージのメッセージIDは、ワークフロー内のすべての後続メッセージの相関IDとなる。MSMQパス名はデスティネーションコンピュータ名、バックスラッシュ文字(つまり、”\”)、およびデスティネーションコンピュータ上のキューの名前からなっている。例えば、”MachineName?payroll”。マシン名にピリオドを使うと、「このコンピュータ」、つまり、クライアントコンピュータを意味する。応答キュー名はサーバコンピュータからの応答メッセージのキューを示している。
セクション228、230の各々における共通ヘッダ234,236(図9のプログラムリスティング206では構造宣言”_CommonHeader”によって定義されている)は、2つの値、つまり、タイプと長さからなっている。タイプ値は次表に示すようにセクションのタイプを示している。長さはセクションヘッダとその内容の長さである。従って、現在の”_CommonHeader”を指すポイントに長さを加えると、次の”_CommonHeader”に進む。
Figure 2006260588
コンテナセクション228は、コンテナヘッダ234を含んでいる。図9の”_ContainerHeader”構造宣言で定義されているように、コンテナヘッダ234は、GUIDシグネーチャ、バージョン番号、およびサーバオブジェクトを作成するモニカを含んでいる。GUIDシグネーチャ (“guidSignature”) は、メッセージがQCアーキテクチャ130においてレコーダからプレーヤへのものであることを示している。GUIDシグネーチャに異なる値を使用すれば、異なるプレーヤクラスを示すことができる。モニカは、待機コンポーネント86を作成するためのストリーム形式のCOMモニカである。代替アーキテクチャでは、コンテナヘッダは、メッセージプロトコルバージョン番号およびクライアント側COMバージョン識別子といった、追加の値を含むことが可能である。
メソッドヘッダ236(図9に構造宣言”_ShortMethodHeader”および”_MethodHeader”によって定義されている)は、待機コンポーネント86でのメソッド呼び出しを表している。メソッドヘッダは短または長ヘッダにすることができるが、その違いは長メソッドヘッダがインタフェース識別子(IID)を指定している点である。短メソッドヘッダのIIDは、メッセージ全体を左から右へパスしているとき現れた最近の長メソッドヘッダからのものであることを意味している。メソッドヘッダ236は、メソッド識別子、データ表現、フラグフィールド、長さ、インターセプタフラグ、およびIID(長メソッドヘッダの場合)を含んでいる。メソッド識別子 (“dwMethodId”) は、呼び出されるメソッドの仮想関数テーブル104(図3)までのインデックスである。データ表現は、COM RPCの標準マーシャリングアーキテクチャの規則に従う”RPCOLEMESSAGE”からの”RPCOLEDATREP”値を収めており、これは、COM RPCの標準マーシャリングアーキテクチャに従うメソッド呼び出しのマーシャリング(図4)期間に、インタフェースプロキシ166−167によってレコーダ150の ”IRPCChannelBuffer”インタフェース170に提示されるパラメータの1つである。フラグフィールドは、COM RPCの標準マーシャリングアーキテクチャの規則に従う “RPCOLEMESSAGE rpcFlags”フィールドを含んでおり、これも、メソッド呼び出しのマーシャリング期間にインタフェースプロキシによってレコーダ150に提示される。長さフィールドは、COM RPCの標準マーシャリングアーキテクチャの規則に従う “RPCOLEMESSAGE cbBuffer”フィールドを含んでおり、これも、メソッド呼び出しのマーシャリング期間にインタフェースプロキシによってレコーダ150に提示される。インターセプタフラグは、どのマーシャリングメソッドが使用されたかを示す0か1を収めている。0はMIDL生成のインタフェースプロキシが使用されたことを意味する。長メソッドヘッダ内のIIDは、メソッドが呼び出される待機コンポーネント86のインタフェースを示している。
メソッドセクション内のパラメータデータ238は、メソッド呼び出しからインタフェースプロキシ166−167によって生成された、マーシャリング済みパラメータデータである。
メッセージ本体226は、セクションの共通ヘッダのセクションタイプに示されているセキュリティヘッダセクション、セキュリティレファレンスセクション、および診断セクション(上記表1に示す値)を含むことも可能である。セキュリティヘッダセクションは、図9の “_SecurityHeader” データ構造宣言に定義されているセキュリティヘッダを含んでいる。セキュリティヘッダセクションは、レコーダで抽出され、メソッド呼び出しのプレイバック時にアクセス特権をチェックするために使用されるセキュリティ情報を収めている。このセキュリティ情報は、メソッドごとに変化する。セキュリティレファレンスセクションは、セキュリティレファレンスヘッダを含んでおり、同じセキュリティ情報がメッセージ内の後続メソッド呼び出しに適用されるときセキュリティ情報が繰り返されるのをセーブするために、メッセージ内の先行セキュリティヘッダセクションを指定している。診断セクションは、サーバ側がアボートした後メッセージがCOM+ Applicationキューの間で移動されるときメッセージ本体に付加されるデータである。この診断データには、例えば、障害の時刻と理由を含めることが可能である。診断セクションは、メッセージのプレイバック期間プレーヤ154によって無視されるが、これを使用すると、手作業による介入が容易になる(例えば、メッセージがCOM+ Applicationの最終休止キューに到着した後)。
図示実施形態を参照して本発明の原理を説明してきたが、これまでの説明から理解されるように、図示実施形態はかかる原理から逸脱することなく、構成および細部の面で変更することが可能である。当然に理解されるように、ここで説明されているプログラム、プロセス、またはメソッドは、別段の断りがない限り、どの特定タイプのコンピュータ装置にも限定されず、係わりをもつものでもない。ここに記載されている教示事項に従うオペレーションは、種々タイプの汎用コンピュータ装置または特殊コンピュータ装置を使用して実行することが可能である。ソフトウェアの形で示されている図示実施形態の各エレメントは、ハードウェアで実現することが可能であり、その逆も同様である。
本発明の原理は可能な限りの多数の実施形態に応用可能であることから理解されるように、詳しく説明してきた実施形態は単なる例示的なものであり、本発明の範囲を限定するものではない。従って、特許請求の範囲に記載されている、かかる実施形態またはその変形実施形態はいずれも、本発明の範囲と精神に属するものである。
待機メソッド呼び出しのために本発明を具現化している方法および装置を実装するために使用できるコンピュータシステムを示すブロック図である。 本発明の図示実施形態による待機メソッド呼び出しのための実行環境とランライムアーキテクチャを示すブロック図である。 図2の実行環境における待機コンポーネントの構造を示すブロック図である。 図2のランタイムアーキテクチャにおけるレコーダとプロキシを示すブロック図である。 図2のランタイムアーキテクチャにおけるプレーヤとスタブを示すブロック図である。 図2のランタイムアーキテクチャにおける配達不能メッセージキューモニタと例外ハンドラを示すブロック図である。 図2のランタイムアーキテクチャにおける待機コンポーネントをアクティベートするためのオブジェクトインスタンス生成コールの例を示すプログラムリストである。 図5と図6における例外ハンドラの “IPlaybackControl” インタフェースを示すプログラムリストである。 図2のランタイムアーキテクチャにおける待機メソッド呼び出しメッセージのフォーマットを示すプログラムリストである。 図2のランタイムアーキテクチャにおける待機メソッド呼び出しメッセージのフォーマットを示すブロック図である。
符号の説明
80 実行環境
84 サーバコンピュータ
86 オブジェクト
90 ASP
92 クライアントコンピュータ
128 トランザクションマネージャ
130 待機コンポーネントランタイムアーキテクチャ
132 クライアントプログラム
134 クライアントプロセス
150 レコーダ
152 リスナ
154 プレーヤ
158 メッセージキュー
165 カタログ

Claims (2)

  1. メモリと処理装置とを有するコンピュータシステムにおいて、クライアントがオブジェクトメソッドにアクセスする、コンピュータで実行される方法であって、
    前記メモリの領域に、オブジェクトにメソッドコールをリアルタイムで受信させるか、待機方式で受信させるかを指定し、
    前記処理装置により、オブジェクトモデルのコールセマンティックスに従いクライアントによってメソッドコール上のオブジェクトのメソッドを実行し、
    オブジェクトがリアルタイム方式でメソッドコールを受信するように指定されている場合は、前記処理装置により、前記オブジェクトに対して前記メソッドコールを実行し、そのコールが前記メソッドから返されるまで前記クライアントにブロックさせ、
    オブジェクトが待機方式でメソッドコールを受信するように指定されている場合は、前記処理装置により、
    前記メソッドコールをメッセージの中に記録するステップと、
    前記メッセージをキューに送るステップと、
    前記クライアントに実行を継続させるステップと、
    前記クライアントが実行を継続した後、前記メッセージを前記キューから取り出すステップと、
    前記メッセージに記録された前記メソッドコールを前記オブジェクトに対して出すステップとを実行することを特徴とする方法。
  2. メモリと処理装置とを有するコンピュータシステムにおいて、クライアントがオブジェクトメソッドにアクセスする、コンピュータで実行される方法であって、
    前記メモリの領域に、インタフェースにメソッドコールをリアルタイムで受信させるか、待機方式で受信させるかを指定し、
    前記処理装置により、オブジェクトモデルのコールセマンティックスに従いクライアントによってメソッドコール上のインタフェースのメソッドを実行し、
    インタフェースがリアルタイム方式でメソッドコールを受信するように指定されている場合は、前記処理装置により、前記インタフェースに対して前記メソッドコールを実行し、そのコールが前記メソッドから返されるまで前記クライアントにブロックさせ、
    インタフェースが待機方式でメソッドコールを受信するように指定されている場合は、前記処理装置により、
    前記メソッドコールをメッセージの中に記録するステップと、
    前記メッセージをキューに送るステップと、
    前記クライアントに実行を継続させるステップと、
    前記クライアントが実行を継続した後、前記メッセージを前記キューから取り出すステップと、
    前記メッセージに記録された前記メソッドコールを前記インタフェースに対して出すステップとを実行することを特徴とする方法。
JP2006114852A 1998-08-17 2006-04-18 分散コンポーネントアプリケーションでの待機メソッド呼び出し方法 Expired - Fee Related JP4528742B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/135,378 US6425017B1 (en) 1998-08-17 1998-08-17 Queued method invocations on distributed component applications

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2000565459A Division JP2002522843A (ja) 1998-08-17 1999-08-17 分散コンポーネントアプリケーションでの待機メソッド呼び出し

Publications (3)

Publication Number Publication Date
JP2006260588A true JP2006260588A (ja) 2006-09-28
JP2006260588A5 JP2006260588A5 (ja) 2006-11-09
JP4528742B2 JP4528742B2 (ja) 2010-08-18

Family

ID=22467835

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2000565459A Pending JP2002522843A (ja) 1998-08-17 1999-08-17 分散コンポーネントアプリケーションでの待機メソッド呼び出し
JP2006114852A Expired - Fee Related JP4528742B2 (ja) 1998-08-17 2006-04-18 分散コンポーネントアプリケーションでの待機メソッド呼び出し方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2000565459A Pending JP2002522843A (ja) 1998-08-17 1999-08-17 分散コンポーネントアプリケーションでの待機メソッド呼び出し

Country Status (5)

Country Link
US (1) US6425017B1 (ja)
EP (1) EP1025493B1 (ja)
JP (2) JP2002522843A (ja)
DE (1) DE69936627T2 (ja)
WO (1) WO2000010080A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110124733A (ko) * 2010-05-11 2011-11-17 컴퓨터 어소시에이츠 싱크, 인코포레이티드 동적 인스트루먼테이션을 통한 커스텀 코드의 진단을 스트림라인하기위한 메소드 콜의 검출
US10831885B2 (en) 2016-10-31 2020-11-10 Soliton Systems K.K. Program behavior monitoring control apparatus, distributed object creation management apparatus, recording medium, and program behavior monitoring system
WO2024186662A1 (en) * 2023-03-03 2024-09-12 Snap Inc. Asynchronous task framework

Families Citing this family (166)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6742050B1 (en) * 1997-03-31 2004-05-25 Intel Corporation Inter-object messaging
US6453334B1 (en) 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
JP3508513B2 (ja) * 1997-11-07 2004-03-22 株式会社日立製作所 計算機システムの運用管理方法
CA2316952A1 (en) * 1998-01-02 1999-07-15 Acos International Limited Program flow method and method for expanding a program component system
GB2340267B (en) * 1998-07-31 2003-02-05 Sony Uk Ltd Data storage in ole stystems
JP2000090027A (ja) * 1998-09-10 2000-03-31 Fujitsu Ltd オブジェクト管理システム、情報処理システム、オブジェクト管理プログラムを記録した記録媒体及び情報処理プログラムを記録した記録媒体
US20040154027A1 (en) * 1998-10-14 2004-08-05 Jean-Jacques Vandewalle Method and means for managing communications between local and remote objects in an object oriented client server system in which a client application invokes a local object as a proxy for a remote object on the server
US6829770B1 (en) * 1999-02-23 2004-12-07 Microsoft Corporation Object connectivity through loosely coupled publish and subscribe events
DE19910535A1 (de) * 1999-03-09 2000-09-14 Siemens Ag Verfahren zur automatischen Wiedergewinnung von Engineeringdaten aus Anlagen
FR2792435B1 (fr) * 1999-04-15 2001-07-13 Cit Alcatel Procede de modification d'un protocole entre objets distribues
US6804818B1 (en) * 1999-04-29 2004-10-12 International Business Machines Corporation Integration mechanism for object-oriented software and message-oriented software
US6687831B1 (en) * 1999-04-29 2004-02-03 International Business Machines Corporation Method and apparatus for multiple security service enablement in a data processing system
US8346971B2 (en) * 1999-05-04 2013-01-01 At&T Intellectual Property I, Lp Data transfer, synchronising applications, and low latency networks
JP3690720B2 (ja) 1999-09-14 2005-08-31 インターナショナル・ビジネス・マシーンズ・コーポレーション クライアントサーバーシステム、オブジェクトのプール方法および記憶媒体
US6654782B1 (en) * 1999-10-28 2003-11-25 Networks Associates, Inc. Modular framework for dynamically processing network events using action sets in a distributed computing environment
US6920636B1 (en) * 1999-12-15 2005-07-19 Microsoft Corporation Queued component interface passing for results outflow from queued method invocations
US6970849B1 (en) 1999-12-17 2005-11-29 Microsoft Corporation Inter-server communication using request with encrypted parameter
US7047411B1 (en) 1999-12-17 2006-05-16 Microsoft Corporation Server for an electronic distribution system and method of operating same
US6996720B1 (en) * 1999-12-17 2006-02-07 Microsoft Corporation System and method for accessing protected content in a rights-management architecture
CA2293062A1 (en) * 1999-12-22 2001-06-22 Ibm Canada Limited-Ibm Canada Limitee Efficient use of domain socket pairs in communication for tightly coupled transactions
US7415662B2 (en) 2000-01-31 2008-08-19 Adobe Systems Incorporated Digital media management apparatus and methods
US20020087546A1 (en) * 2000-01-31 2002-07-04 Michael Slater Apparatus, methods, and systems for digital photo management
US6973498B1 (en) 2000-03-23 2005-12-06 Microsoft Corporation Local queue creation security
AU2001249424A1 (en) * 2000-03-29 2001-10-08 Nextset Software Inc. System and method of providing a messaging engine for an enterprise javabeans enabled server to achieve container managed asynchronous functionality
US6981262B1 (en) 2000-06-27 2005-12-27 Microsoft Corporation System and method for client interaction in a multi-level rights-management architecture
US7051200B1 (en) 2000-06-27 2006-05-23 Microsoft Corporation System and method for interfacing a software process to secure repositories
US7158953B1 (en) 2000-06-27 2007-01-02 Microsoft Corporation Method and system for limiting the use of user-specific software features
US7539875B1 (en) * 2000-06-27 2009-05-26 Microsoft Corporation Secure repository with layers of tamper resistance and system and method for providing same
US7017189B1 (en) 2000-06-27 2006-03-21 Microsoft Corporation System and method for activating a rendering device in a multi-level rights-management architecture
US7171692B1 (en) * 2000-06-27 2007-01-30 Microsoft Corporation Asynchronous communication within a server arrangement
US6891953B1 (en) 2000-06-27 2005-05-10 Microsoft Corporation Method and system for binding enhanced software features to a persona
US20020046045A1 (en) * 2000-06-30 2002-04-18 Attila Narin Architecture for an electronic shopping service integratable with a software application
US7225159B2 (en) * 2000-06-30 2007-05-29 Microsoft Corporation Method for authenticating and securing integrated bookstore entries
FI20001617A (fi) * 2000-07-06 2002-01-07 Nokia Mobile Phones Ltd Tiedonsiirtomenetelmõ ja -jõrjestely
US7096252B1 (en) * 2000-10-05 2006-08-22 Stmicroelectronics, Inc. System and method for interfacing network station subsystems
US7062567B2 (en) 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US8831995B2 (en) 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
US20020078251A1 (en) * 2000-12-18 2002-06-20 Philips Electronics North America Corp. Self-determining command path architecture
US7272833B2 (en) * 2000-12-26 2007-09-18 International Business Machines Corporation Messaging service in a federated content management system
US7188342B2 (en) * 2001-04-20 2007-03-06 Microsoft Corporation Server controlled branding of client software deployed over computer networks
US6971001B1 (en) * 2001-05-17 2005-11-29 Accenture Global Services Gmbh General and reusable components for defining net-centric application program architectures
US7296032B1 (en) 2001-05-17 2007-11-13 Fotiva, Inc. Digital media organization and access
US20020174169A1 (en) * 2001-05-21 2002-11-21 Schmid Hans Albrecht Process for operating a distributed computer network comprising several distributed computers
US20020188764A1 (en) * 2001-05-25 2002-12-12 Sun Microsystems, Inc. Method and apparatus for asynchronous component invocation
GB2378536B (en) * 2001-08-09 2005-12-21 Ibm A method of logging message activity
CA2354990A1 (en) * 2001-08-10 2003-02-10 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for fine dining queuing
WO2003060709A2 (en) * 2002-01-16 2003-07-24 Sap Aktiengesellschaft Proxy framework
US7096249B2 (en) * 2002-03-29 2006-08-22 Intel Corporation Method and system for distributing applications
US7216349B2 (en) * 2002-06-05 2007-05-08 International Business Machines Corporation System and method for triggering message queue applications
GB0215808D0 (en) * 2002-07-09 2002-08-14 Ibm A system and method for managing transactions in a messaging system
US20040260947A1 (en) * 2002-10-21 2004-12-23 Brady Gerard Anthony Methods and systems for analyzing security events
GB0225733D0 (en) * 2002-11-05 2002-12-11 Ibm Persistent messaging in a transaction processing environment
US7376957B1 (en) * 2002-12-16 2008-05-20 At&T Delaware Intellectual Property, Inc. Method and system for recovering stranded outbound messages
US7200676B2 (en) 2003-03-26 2007-04-03 Microsoft Corporation Transmitting and receiving messages through a customizable communication channel and programming model
US20040249674A1 (en) * 2003-05-06 2004-12-09 Eisenberg Floyd P. Personnel and process management system suitable for healthcare and other fields
US7673307B2 (en) * 2003-05-29 2010-03-02 International Business Machines Corporation Managing transactions in a messaging system
US20040249853A1 (en) * 2003-06-05 2004-12-09 Microsoft Corporation Late bound subscription based event dispatching system and method
US7293254B2 (en) * 2003-09-18 2007-11-06 Microsoft Corporation Extensibility application programming interface and framework for meta-model objects
US7636733B1 (en) 2003-10-03 2009-12-22 Adobe Systems Incorporated Time-based image management
US20050097046A1 (en) 2003-10-30 2005-05-05 Singfield Joy S. Wireless electronic check deposit scanning and cashing machine with web-based online account cash management computer application system
US7730501B2 (en) * 2003-11-19 2010-06-01 Intel Corporation Method for parallel processing of events within multiple event contexts maintaining ordered mutual exclusion
US7613778B2 (en) * 2004-04-12 2009-11-03 Microsoft Corporation Progressive de-featuring of electronic messages
US7165118B2 (en) * 2004-08-15 2007-01-16 Microsoft Corporation Layered message processing model
US20060053035A1 (en) * 2004-09-09 2006-03-09 Eisenberg Floyd P Healthcare personnel management system
US7681181B2 (en) * 2004-09-30 2010-03-16 Microsoft Corporation Method, system, and apparatus for providing custom product support for a software program based upon states of program execution instability
US20060090155A1 (en) * 2004-10-12 2006-04-27 Gurevich Michael N Methods and apparatus for message oriented invocation
EP1825390A2 (en) 2004-11-13 2007-08-29 Stream Theory, Inc. Hybrid local/remote streaming
US7467389B2 (en) * 2004-11-23 2008-12-16 Sybase, Inc. System and methodology providing service invocation for occasionally connected computing devices
GB0427798D0 (en) * 2004-12-18 2005-01-19 Ibm Publish/subscribe messaging system
US7502843B2 (en) * 2004-12-30 2009-03-10 Microsoft Corporation Server queuing system and method
US7882236B2 (en) * 2005-02-04 2011-02-01 Microsoft Corporation Communication channel model
US7886295B2 (en) * 2005-02-17 2011-02-08 International Business Machines Corporation Connection manager, method, system and program product for centrally managing computer applications
US20060200705A1 (en) * 2005-03-07 2006-09-07 International Business Machines Corporation Method, system and program product for monitoring a heartbeat of a computer application
US8024523B2 (en) 2007-11-07 2011-09-20 Endeavors Technologies, Inc. Opportunistic block transmission with time constraints
WO2006102621A2 (en) 2005-03-23 2006-09-28 Stream Theory, Inc. System and method for tracking changes to files in streaming applications
US7900209B2 (en) * 2005-04-22 2011-03-01 Inventigo, Llc Methods and apparatus for message oriented invocation
US7634542B1 (en) * 2005-07-01 2009-12-15 Sprint Communications Company L.P. System and method to manage service instances for request processing
US7823170B2 (en) * 2005-08-31 2010-10-26 Sap Ag Queued asynchronous remote function call dependency management
US7827152B1 (en) 2005-10-26 2010-11-02 Oracle America, Inc. Asynchronous on-demand service startup
US7467388B2 (en) * 2005-11-22 2008-12-16 Microsoft Corporation Monitoring message queues and starting processing applications
US8261345B2 (en) 2006-10-23 2012-09-04 Endeavors Technologies, Inc. Rule-based application access management
US8351677B1 (en) 2006-10-31 2013-01-08 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US7885451B1 (en) 2006-10-31 2011-02-08 United Services Automobile Association (Usaa) Systems and methods for displaying negotiable instruments derived from various sources
US7876949B1 (en) 2006-10-31 2011-01-25 United Services Automobile Association Systems and methods for remote deposit of checks
US7873200B1 (en) 2006-10-31 2011-01-18 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US8708227B1 (en) 2006-10-31 2014-04-29 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US8799147B1 (en) 2006-10-31 2014-08-05 United Services Automobile Association (Usaa) Systems and methods for remote deposit of negotiable instruments with non-payee institutions
US8959033B1 (en) 2007-03-15 2015-02-17 United Services Automobile Association (Usaa) Systems and methods for verification of remotely deposited checks
US10380559B1 (en) 2007-03-15 2019-08-13 United Services Automobile Association (Usaa) Systems and methods for check representment prevention
US8433127B1 (en) 2007-05-10 2013-04-30 United Services Automobile Association (Usaa) Systems and methods for real-time validation of check image quality
US8538124B1 (en) 2007-05-10 2013-09-17 United Services Auto Association (USAA) Systems and methods for real-time validation of check image quality
US9009292B2 (en) * 2007-07-30 2015-04-14 Sybase, Inc. Context-based data pre-fetching and notification for mobile applications
US8204870B2 (en) * 2007-08-03 2012-06-19 Sybase, Inc. Unwired enterprise platform
US9058512B1 (en) 2007-09-28 2015-06-16 United Services Automobile Association (Usaa) Systems and methods for digital signature detection
US8358826B1 (en) 2007-10-23 2013-01-22 United Services Automobile Association (Usaa) Systems and methods for receiving and orienting an image of one or more checks
US9159101B1 (en) 2007-10-23 2015-10-13 United Services Automobile Association (Usaa) Image processing
US9892454B1 (en) 2007-10-23 2018-02-13 United Services Automobile Association (Usaa) Systems and methods for obtaining an image of a check to be deposited
US9898778B1 (en) 2007-10-23 2018-02-20 United Services Automobile Association (Usaa) Systems and methods for obtaining an image of a check to be deposited
US7996314B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US7996315B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US7996316B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association Systems and methods to modify a negotiable instrument
US8046301B1 (en) 2007-10-30 2011-10-25 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US8001051B1 (en) 2007-10-30 2011-08-16 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US8320657B1 (en) 2007-10-31 2012-11-27 United Services Automobile Association (Usaa) Systems and methods to use a digital camera to remotely deposit a negotiable instrument
US8290237B1 (en) 2007-10-31 2012-10-16 United Services Automobile Association (Usaa) Systems and methods to use a digital camera to remotely deposit a negotiable instrument
US7900822B1 (en) 2007-11-06 2011-03-08 United Services Automobile Association (Usaa) Systems, methods, and apparatus for receiving images of one or more checks
US7896232B1 (en) 2007-11-06 2011-03-01 United Services Automobile Association (Usaa) Systems, methods, and apparatus for receiving images of one or more checks
US8892738B2 (en) 2007-11-07 2014-11-18 Numecent Holdings, Inc. Deriving component statistics for a stream enabled application
US9021503B2 (en) 2007-11-16 2015-04-28 Microsoft Technology Licensing, Llc Coordinating application state and communication medium state
US8505030B2 (en) * 2007-11-16 2013-08-06 Microsoft Corporation Coordinating resources using a volatile network intermediary
US8719841B2 (en) * 2007-11-16 2014-05-06 Microsoft Corporation Dispatch mechanism for coordinating application and communication medium state
US20090198496A1 (en) * 2008-01-31 2009-08-06 Matthias Denecke Aspect oriented programmable dialogue manager and apparatus operated thereby
US10380562B1 (en) 2008-02-07 2019-08-13 United Services Automobile Association (Usaa) Systems and methods for mobile deposit of negotiable instruments
US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8351678B1 (en) 2008-06-11 2013-01-08 United Services Automobile Association (Usaa) Duplicate check detection
US8422758B1 (en) 2008-09-02 2013-04-16 United Services Automobile Association (Usaa) Systems and methods of check re-presentment deterrent
US10504185B1 (en) 2008-09-08 2019-12-10 United Services Automobile Association (Usaa) Systems and methods for live video financial deposit
US7962411B1 (en) 2008-09-30 2011-06-14 United Services Automobile Association (Usaa) Atomic deposit transaction
US8275710B1 (en) 2008-09-30 2012-09-25 United Services Automobile Association (Usaa) Systems and methods for automatic bill pay enrollment
US7885880B1 (en) * 2008-09-30 2011-02-08 United Services Automobile Association (Usaa) Atomic deposit transaction
US7974899B1 (en) 2008-09-30 2011-07-05 United Services Automobile Association (Usaa) Atomic deposit transaction
US8391599B1 (en) 2008-10-17 2013-03-05 United Services Automobile Association (Usaa) Systems and methods for adaptive binarization of an image
US7949587B1 (en) 2008-10-24 2011-05-24 United States Automobile Association (USAA) Systems and methods for financial deposits by electronic message
US7970677B1 (en) 2008-10-24 2011-06-28 United Services Automobile Association (Usaa) Systems and methods for financial deposits by electronic message
US8806611B2 (en) * 2008-12-02 2014-08-12 At&T Intellectual Property I, L.P. Message administration system
US8452689B1 (en) 2009-02-18 2013-05-28 United Services Automobile Association (Usaa) Systems and methods of check detection
US10956728B1 (en) 2009-03-04 2021-03-23 United Services Automobile Association (Usaa) Systems and methods of check processing with background removal
US20100287565A1 (en) * 2009-05-11 2010-11-11 International Business Machines Corporation Method for managing requests associated with a message destination
US8301706B2 (en) 2009-06-15 2012-10-30 Microsoft Corporation Routing of pooled messages via an intermediary
US8542921B1 (en) 2009-07-27 2013-09-24 United Services Automobile Association (Usaa) Systems and methods for remote deposit of negotiable instrument using brightness correction
US9779392B1 (en) 2009-08-19 2017-10-03 United Services Automobile Association (Usaa) Apparatuses, methods and systems for a publishing and subscribing platform of depositing negotiable instruments
US8977571B1 (en) 2009-08-21 2015-03-10 United Services Automobile Association (Usaa) Systems and methods for image monitoring of check during mobile deposit
US8699779B1 (en) 2009-08-28 2014-04-15 United Services Automobile Association (Usaa) Systems and methods for alignment of check during mobile deposit
US9361165B2 (en) * 2009-12-03 2016-06-07 International Business Machines Corporation Automated merger of logically associated messages in a message queue
US9940670B2 (en) * 2009-12-10 2018-04-10 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US20110154289A1 (en) * 2009-12-18 2011-06-23 Sandya Srivilliputtur Mannarswamy Optimization of an application program
US20110173591A1 (en) * 2010-01-13 2011-07-14 Target Brands, Inc. Unit Test Generator
US8661454B2 (en) * 2010-01-26 2014-02-25 Target Brands, Inc. System and method for receiving and transmitting event information
US8549538B2 (en) * 2010-03-18 2013-10-01 Microsoft Corporation Coordinating communication medium state for subtasks
US8250234B2 (en) 2010-04-26 2012-08-21 Microsoft Corporation Hierarchically disassembling messages
US9129340B1 (en) 2010-06-08 2015-09-08 United Services Automobile Association (Usaa) Apparatuses, methods and systems for remote deposit capture with enhanced image detection
US10380565B1 (en) 2012-01-05 2019-08-13 United Services Automobile Association (Usaa) System and method for storefront bank deposits
US9104404B2 (en) * 2012-05-07 2015-08-11 Oracle International Corporation System and method for supporting a deferred reference to an object in an objected-oriented programming language environment
US11599907B2 (en) 2012-05-14 2023-03-07 Iqzone, Inc. Displaying media content on portable devices based upon user interface state transitions
US11663628B2 (en) 2012-05-14 2023-05-30 Iqzone, Inc. Systems and methods for unobtrusively displaying media content on portable devices
US8924252B2 (en) * 2012-05-14 2014-12-30 Iqzone, Inc. Systems and methods for providing timely advertising to portable devices
US10552810B1 (en) 2012-12-19 2020-02-04 United Services Automobile Association (Usaa) System and method for remote deposit of financial instruments
US11138578B1 (en) 2013-09-09 2021-10-05 United Services Automobile Association (Usaa) Systems and methods for remote deposit of currency
US9286514B1 (en) 2013-10-17 2016-03-15 United Services Automobile Association (Usaa) Character count determination for a digital image
DE112014005183T5 (de) * 2013-11-13 2016-07-28 The Weather Channel, Llc Speicherdienstnetz
US10402790B1 (en) 2015-05-28 2019-09-03 United Services Automobile Association (Usaa) Composing a focused document image from multiple image captures or portions of multiple image captures
DE102016006111A1 (de) 2016-05-18 2017-11-23 John Philipp de Graaff Die vorliegende Erfindung bezieht sich auf ein Verfahren das universell angelegt, mehrere Formen von Warteschlangen für Daten (Queues) zu einer verbindet. So kann derselbe Datenraum für mehrere Queues genutzt werden, vorzugsweise für eine Ein- und Ausgabe-Queue und dabei ein FIFO- bzw. eine wahlfreie Ausgabe-Verhalten annehmen
US9900302B2 (en) 2016-06-22 2018-02-20 FinancialForce.com, Inc. Seamless authentication for an application development platform
US10984359B2 (en) 2016-06-23 2021-04-20 FinancialForce.com, Inc. Combining batch and queueable technologies in a salesforce platform for large volume parallel processing
US10496741B2 (en) 2016-09-21 2019-12-03 FinancialForce.com, Inc. Dynamic intermediate templates for richly formatted output
US10326720B2 (en) * 2017-05-05 2019-06-18 Dell Products L.P. Messaging queue service API optimization system
US11038689B2 (en) 2018-03-01 2021-06-15 FinancialForce.com, Inc. Efficient block chain generation
US11030752B1 (en) 2018-04-27 2021-06-08 United Services Automobile Association (Usaa) System, computing device, and method for document detection
US10846481B2 (en) 2018-06-29 2020-11-24 FinancialForce.com, Inc. Method and system for bridging disparate platforms to automate a natural language interface
US11200143B2 (en) 2019-01-08 2021-12-14 FinancialForce.com, Inc. Software development framework for a cloud computing platform
US10922485B2 (en) 2019-07-10 2021-02-16 FinancialForce.com, Inc. Platform interpretation of user input converted into standardized input
WO2021081519A1 (en) 2019-10-25 2021-04-29 Iqzone, Inc. Using system broadcasts to unobtrusively display media content on portable devices
CN112671827B (zh) * 2020-11-25 2023-03-07 紫光云技术有限公司 一种分布式事务最终一致性方法
US11900755B1 (en) 2020-11-30 2024-02-13 United Services Automobile Association (Usaa) System, computing device, and method for document detection and deposit processing
US11741050B2 (en) 2021-01-29 2023-08-29 Salesforce, Inc. Cloud storage class-based variable cache availability
CN114936031B (zh) * 2022-07-22 2022-11-11 浙江中控技术股份有限公司 组件的调用方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08123699A (ja) * 1994-10-26 1996-05-17 Hitachi Ltd 並行処理方法、並行処理システム及び並行処理用プログラムの変換ツール
JPH08212180A (ja) * 1995-02-08 1996-08-20 Oki Electric Ind Co Ltd プロセス間通信処理装置
JPH0916417A (ja) * 1995-06-27 1997-01-17 Hitachi Ltd メッセージ通信方法およびメッセージ通信システム
JPH10500507A (ja) * 1994-05-13 1998-01-13 アップル コンピュータ インコーポレイテッド オブジェクト指向メッセージフィルタリングのシステム及び方法

Family Cites Families (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677576A (en) 1983-06-27 1987-06-30 Grumman Aerospace Corporation Non-edge computer image generation system
US4635208A (en) 1985-01-18 1987-01-06 Hewlett-Packard Company Computer-aided design of systems
US4800488A (en) 1985-11-12 1989-01-24 American Telephone And Telegraph Company, At&T Bell Laboratories Method of propagating resource information in a computer network
US4821220A (en) 1986-07-25 1989-04-11 Tektronix, Inc. System for animating program operation and displaying time-based relationships
US5210874A (en) 1988-03-22 1993-05-11 Digital Equipment Corporation Cross-domain call system in a capability based digital data processing system
US4953080A (en) 1988-04-25 1990-08-28 Hewlett-Packard Company Object management facility for maintaining data in a computer system
AU601328B2 (en) 1988-05-26 1990-09-06 Digital Equipment Corporation Temporary state preservation for a distributed file service
US4972437A (en) 1988-06-24 1990-11-20 International Business Machines Corporation Method of controlling limited resource sessions in a data communications network
US5133075A (en) 1988-12-19 1992-07-21 Hewlett-Packard Company Method of monitoring changes in attribute values of object in an object-oriented database
US5125091A (en) 1989-06-08 1992-06-23 Hazox Corporation Object oriented control of real-time processing
US5430876A (en) 1989-06-27 1995-07-04 Digital Equipment Corporation Remote procedure callback system and method
US5297283A (en) 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
DE69029441T2 (de) 1989-08-24 1997-06-12 Ibm System für den Aufruf von Prozeduren von einem Fernnetzwerkknotenpunkt
US5301280A (en) 1989-10-02 1994-04-05 Data General Corporation Capability based communication protocol
US5093914A (en) 1989-12-15 1992-03-03 At&T Bell Laboratories Method of controlling the execution of object-oriented programs
US5168441A (en) 1990-05-30 1992-12-01 Allen-Bradley Company, Inc. Methods for set up and programming of machine and process controllers
AU628264B2 (en) 1990-08-14 1992-09-10 Oracle International Corporation Methods and apparatus for providing a client interface to an object-oriented invocation of an application
US5151987A (en) 1990-10-23 1992-09-29 International Business Machines Corporation Recovery objects in an object oriented computing environment
US5119475A (en) 1991-03-13 1992-06-02 Schlumberger Technology Corporation Object-oriented framework for menu definition
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5212793A (en) 1991-09-04 1993-05-18 International Business Machines Corp. Generic initiators
AU3944793A (en) 1992-03-31 1993-11-08 Aggregate Computing, Inc. An integrated remote execution system for a heterogenous computer network environment
JP3613401B2 (ja) 1992-07-06 2005-01-26 マイクロソフト コーポレーション オブジェクトの名称を付けて結び付ける方法及びシステム
US5307490A (en) 1992-08-28 1994-04-26 Tandem Computers, Inc. Method and system for implementing remote procedure calls in a distributed computer system
EP0669020B1 (en) 1992-11-13 1997-04-02 Microsoft Corporation Methods for marshalling interface pointers for remote procedure calls
WO1994014115A2 (en) 1992-12-01 1994-06-23 Microsoft Corporation A method and system for in-place interaction with embedded objects
DE69327448T2 (de) 1992-12-21 2004-03-04 Sun Microsystems, Inc., Mountain View Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
US5315703A (en) 1992-12-23 1994-05-24 Taligent, Inc. Object-oriented notification framework system
DE69429686T2 (de) 1993-02-25 2003-04-30 Sun Microsystems, Inc. Transaktionsverwaltung in objektorientiertem System
US5574862A (en) 1993-04-14 1996-11-12 Radius Inc. Multiprocessing system with distributed input/output management
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
US5519867A (en) 1993-07-19 1996-05-21 Taligent, Inc. Object-oriented multitasking system
US5577252A (en) 1993-07-28 1996-11-19 Sun Microsystems, Inc. Methods and apparatus for implementing secure name servers in an object-oriented system
CA2128387C (en) 1993-08-23 1999-12-28 Daniel F. Hurley Method and apparatus for configuring computer programs from available subprograms
CA2107299C (en) 1993-09-29 1997-02-25 Mehrad Yasrebi High performance machine for switched communications in a heterogenous data processing network gateway
US5455953A (en) 1993-11-03 1995-10-03 Wang Laboratories, Inc. Authorization system for obtaining in single step both identification and access rights of client to server directly from encrypted authorization ticket
US5517645A (en) 1993-11-05 1996-05-14 Microsoft Corporation Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a component manager
US5742848A (en) 1993-11-16 1998-04-21 Microsoft Corp. System for passing messages between source object and target object utilizing generic code in source object to invoke any member function of target object by executing the same instructions
US5485617A (en) 1993-12-13 1996-01-16 Microsoft Corporation Method and system for dynamically generating object connections
US5481715A (en) 1993-12-15 1996-01-02 Sun Microsystems, Inc. Method and apparatus for delegated communications in a computer system using trusted deputies
US6330582B1 (en) 1994-03-21 2001-12-11 International Business Machines Corporation Apparatus and method enabling a client to control transaction message traffic between server and client processes
US5675796A (en) 1994-04-08 1997-10-07 Microsoft Corporation Concurrency management component for use by a computer program during the transfer of a message
US5625775A (en) 1994-06-13 1997-04-29 International Business Machines Corporation Modem communication interface in a data processing system
US5504898A (en) 1994-06-20 1996-04-02 Candle Distributed Solutions, Inc. Threaded environment for AS/400
US5687370A (en) 1995-01-31 1997-11-11 Next Software, Inc. Transparent local and distributed memory management system
US5822585A (en) 1995-02-21 1998-10-13 Compuware Corporation System and method for cooperative processing using object-oriented framework
US5907675A (en) 1995-03-22 1999-05-25 Sun Microsystems, Inc. Methods and apparatus for managing deactivation and shutdown of a server
US5802291A (en) 1995-03-30 1998-09-01 Sun Microsystems, Inc. System and method to control and administer distributed object servers using first class distributed objects
US5689708A (en) 1995-03-31 1997-11-18 Showcase Corporation Client/server computer systems having control of client-based application programs, and application-program control means therefor
US5797015A (en) 1995-04-18 1998-08-18 Pitney Bowes Inc. Method of customizing application software in inserter systems
US5889957A (en) 1995-06-07 1999-03-30 Tandem Computers Incorporated Method and apparatus for context sensitive pathsend
US5764958A (en) 1995-11-30 1998-06-09 International Business Machines Corporation Method and apparatus for creating dynamic roles with a system object model
US5838910A (en) 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US5857201A (en) 1996-06-18 1999-01-05 Wright Strategies, Inc. Enterprise connectivity to handheld devices
US6253252B1 (en) 1996-07-11 2001-06-26 Andrew Schofield Method and apparatus for asynchronously calling and implementing objects
US5864669A (en) 1996-07-11 1999-01-26 Microsoft Corporation Method and system for accessing a particular instantiation of a server process
US5790789A (en) 1996-08-02 1998-08-04 Suarez; Larry Method and architecture for the creation, control and deployment of services within a distributed computer environment
US5884316A (en) 1996-11-19 1999-03-16 Microsoft Corporation Implicit session context system with object state cache
US5889942A (en) 1996-12-18 1999-03-30 Orenshteyn; Alexander S. Secured system for accessing application services from a remote station
US5913061A (en) * 1997-01-08 1999-06-15 Crossroads Software, Inc. Modular application collaboration
US6094688A (en) * 1997-01-08 2000-07-25 Crossworlds Software, Inc. Modular application collaboration including filtering at the source and proxy execution of compensating transactions to conserve server resources
US5933593A (en) 1997-01-22 1999-08-03 Oracle Corporation Method for writing modified data from a main memory of a computer back to a database
US5958010A (en) 1997-03-20 1999-09-28 Firstsense Software, Inc. Systems and methods for monitoring distributed applications including an interface running in an operating system kernel
US5857197A (en) 1997-03-20 1999-01-05 Thought Inc. System and method for accessing data stores as objects
US6105147A (en) 1997-04-16 2000-08-15 Compaq Computer Corporation Using process pairs as transaction-coordinated resource managers
US6026428A (en) 1997-08-13 2000-02-15 International Business Machines Corporation Object oriented thread context manager, method and computer program product for object oriented thread context management
US6061796A (en) 1997-08-26 2000-05-09 V-One Corporation Multi-access virtual private network
US6134594A (en) 1997-10-28 2000-10-17 Microsoft Corporation Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects
US5958004A (en) 1997-10-28 1999-09-28 Microsoft Corporation Disabling and enabling transaction committal in transactional application components

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10500507A (ja) * 1994-05-13 1998-01-13 アップル コンピュータ インコーポレイテッド オブジェクト指向メッセージフィルタリングのシステム及び方法
JPH08123699A (ja) * 1994-10-26 1996-05-17 Hitachi Ltd 並行処理方法、並行処理システム及び並行処理用プログラムの変換ツール
JPH08212180A (ja) * 1995-02-08 1996-08-20 Oki Electric Ind Co Ltd プロセス間通信処理装置
JPH0916417A (ja) * 1995-06-27 1997-01-17 Hitachi Ltd メッセージ通信方法およびメッセージ通信システム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110124733A (ko) * 2010-05-11 2011-11-17 컴퓨터 어소시에이츠 싱크, 인코포레이티드 동적 인스트루먼테이션을 통한 커스텀 코드의 진단을 스트림라인하기위한 메소드 콜의 검출
KR101705265B1 (ko) 2010-05-11 2017-02-22 씨에이, 인크. 동적 인스트루먼테이션을 통한 커스텀 코드의 진단을 스트림라인하기위한 메소드 콜의 검출
US10831885B2 (en) 2016-10-31 2020-11-10 Soliton Systems K.K. Program behavior monitoring control apparatus, distributed object creation management apparatus, recording medium, and program behavior monitoring system
WO2024186662A1 (en) * 2023-03-03 2024-09-12 Snap Inc. Asynchronous task framework

Also Published As

Publication number Publication date
EP1025493A1 (en) 2000-08-09
DE69936627T2 (de) 2008-05-21
JP4528742B2 (ja) 2010-08-18
WO2000010080A1 (en) 2000-02-24
DE69936627D1 (de) 2007-09-06
EP1025493B1 (en) 2007-07-25
US6425017B1 (en) 2002-07-23
JP2002522843A (ja) 2002-07-23
WO2000010080B1 (en) 2000-05-04

Similar Documents

Publication Publication Date Title
JP4528742B2 (ja) 分散コンポーネントアプリケーションでの待機メソッド呼び出し方法
US7634777B2 (en) Queued component interface passing for results outflow from queued method invocations
US7912895B2 (en) System and method for managing service interactions
US5958004A (en) Disabling and enabling transaction committal in transactional application components
Vinoski Advanced message queuing protocol
US6378001B1 (en) Collaborative framework with shared objects
US5890161A (en) Automatic transaction processing of component-based server applications
US6157927A (en) Methods and apparatus for enabling a component in a first transaction processing environment to access a resource in another environment that is under the control of an Xatmi complaint transaction manager
US5941945A (en) Interest-based collaborative framework
US6192419B1 (en) Collaborative framework for disparate application programs
US8065690B2 (en) Method and system for event-based remote procedure call implementation in a distributed computing system
US7082604B2 (en) Method and apparatus for breaking down computing tasks across a network of heterogeneous computer for parallel execution by utilizing autonomous mobile agents
US7689660B2 (en) Application server architecture
JP4690437B2 (ja) ネットワークアプリケーションにおける通信方法、通信装置及びそのためのプログラム
US20020004848A1 (en) System and method of providing an asynchronous interface between a client system and an enterprise javabeans-enabled server
US20050149953A1 (en) Component self-deactivation while client holds a returned reference
JP2000029707A (ja) 高速なロ―カルcorbaオブジェクトレファレンスのための方法及び装置
US7266822B1 (en) System and method for controlling and managing computer farms
JPH11259301A (ja) C++における例外の遅延投入のための方法及び装置
Sunyaev et al. Middleware
Urban et al. An Event Processing System for Rule-Based Component Integration.
Stal Effective Architectures for Distributed Object Computing
Liebig et al. Advanced transactions
Janson et al. CORBA vs. DCOM
Stal et al. Efficient Architectures for object-oriented component-based Middleware

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060817

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060817

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090918

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100601

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100607

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130611

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees