Microsoft Transaction ServerMTS)は、他のアプリケーションに容易にトランザクションを実装しサポートするサービスコンポーネントである。

アーキテクチャ

編集

MTSアーキテクチャは以下の要素から構成される。

MTS実行部の制御下で動作するCOMコンポーネントをMTSコンポーネントと呼ぶ。MTSコンポーネントは全てDLLとして開発され、1つ以上のCOMコンポーネントとして実装される。これらのコンポーネントがMTS実行部の管理下で展開され実行される。通常のCOMコンポーネントと同様、IClassFactory を実装したオブジェクトは、そのコンポーネントの新たなインスタンスを生成する Factory オブジェクトとして機能する。

MTSはFactoryラッパーオブジェクトとObjectラッパーを実際のMTSコンポーネントとそのクライアントの間に挿入する。従って、クライアントがMTSコンポーネントを呼び出すと、ラッパー(Factory と Object)が常にそれを横取りし、独自のインスタンス管理アルゴリズム Just In Time Activation (JITA) を呼び出しに注入する。そしてラッパーが実際のMTSコンポーネントを呼び出す。

さらに、コンポーネントの展開属性の情報に基づき、それらラッパーオブジェクト内でトランザクションロジックとセキュリティチェックも行われる。

MTSコンポーネントそれぞれに対応して、IObjectContext インタフェースを実装した Context オブジェクトが存在する。Context オブジェクトは、トランザクションに関する情報、セキュリティ情報、展開情報など、そのコンポーネントに固有の情報を保持する。MTSコンポーネントは IObjectContext インタフェースを通して Context オブジェクトを呼び出す。

MTSでは、クライアントからの呼び出しがコンテナに到達して初めて中間層の実際のMTSコンポーネントが生成される。コンポーネントは常に動作しているわけではないので、システムリソースを浪費しない(ただし、ラッパーとスケルトンは常に動作している)。

クライアントからの呼び出しが来ると、即座にMTSラッパープロセスがJITAというインスタンス管理アルゴリズムを起動する。実際のMTSコンポーネントは「ジャストインタイム」方式で生成され、ラッパーからの要求を処理する。そして応答をクライアントに返し、クライアントが SetComplete()/SetAbort() を呼び出すか、トランザクションが完了するか、クライアントがコンポーネントの Release() を呼び出したとき、実際のMTSコンポーネントが破壊される。つまりMTSはステートレスなコンポーネントモデルである。

サーバ上でクライアントが典型的なMTSコンポーネントのサービスを要求したとき、以下のように動作する。

  1. データベースのコネクションを確立する。
  2. コンポーネントの状態を Shared Property Manager または既存のオブジェクトかクライアントから読み取る。
  3. ビジネスロジックを実行する。
  4. コンポーネントの変化した状態を書き込み、必要ならデータベースに書き戻す。
  5. データベースのコネクションをクローズし解放する。

従って、高レイテンシのリソースを非同期リソースプールとして実装でき、その際にこのミドルウェアサーバで与えられるステートレスなJITアクティベーションを利用すべきである。

外部リンク

編集

📚 Artikel Terkait di Wikipedia

ワーナー・ヴォゲルス

Werner Vogels”. Queue. 4 (4): 14. doi:10.1145/1142055.1142065. ^ Canny, J. (2006). “The Future of Human-Computer Interaction”. Queue. ACM. 4 (6): 24–32

Microsoft Azure

Web App for Containers Azure Communication Services Azure Storage (Blob / Queue / Table / Files / Disk / Archive) Avere vFXT for Azure Azure Backup Azure

Amazon Web Services

といった様々な分野の様々なサービスを組合せることで、ユーザーが求める IT インフラストラクチャを速やかに構築することが可能。2004年の Amazon Simple Queue Service(SQS)の提供開始から始まり、現在のサービス数は200を超える。最も有名なサービスとしては AWS のサービス提供開始と共にリリースされた

IBM MQ

IBM MQ の機能を利用する方法はいくつもある。IBM がサポートする API として以下のものがある。 IBM Message Queue Interface (MQI) : C言語、COBOL、PL/I、Java Java 向けには J2EE で標準化された JMS もある。 C/C++

プロダクトマネジメント

idea of a "brand man" Ellen Chisa. (2014). Evolution of the Product Manager. acm queue. ^ "Brand Men memo" として知られる ^ "the brand men ... take ... a very heavy

Kubernetes

google.com/pubs/pub43438.html.  ^ “Borg, Omega, and Kubernetes - ACM Queue”. queue.acm.org. 2016年7月9日時点のオリジナルよりアーカイブ。2016年6月27日閲覧。 ^ “Early Stage Startup

Java Platform, Standard Edition

java.lang.ref もまた参照型が変わるオブジェクトを保持するために上記で検討された各々のアプリケーションが使われるクラスReferenceQueueを定義する。 Referenceが生成されるとき、それは任意にリファレンスキューに登録される。アプリケーションは到達可能性状態の変化した参照を得るためのリファレンスキューを監視する。

MDaemon

HashCash, Holding Queue for Errors, Inline Virus Scanning Kaspersky AntiVirus Engine, Multiple LDAP Configurations for Gateway Domains, Queue Management System