XA分散トランザクションを実装するための優れたC++フレームワークはありますか?
「良い」という用語は、使いやすく、シンプルで(「簡単」を意味するものではありません)、適切に構成されていることを意味します。
調査上の理由により、現時点では、X /OpenXA仕様に従って個人的な実装を進めています。
前もって感謝します。
このリンクにはいくつかのファンアウトがありますが、ある程度成熟したオープンソースまたは無料のトランザクションモニターは知りません. 現在商用化されているのは、BEA の Tuxedo、 Tibco のEnterprise Message Service (実際には IBM の MQ のようなトランザクション メッセージ キュー マネージャ)、および Transarc のEncina (現在は IBM が所有) です。これらのシステムはすべて非常に高価です。
独自のソフトウェアを作成したい場合 (そして、オープンソース ソフトウェア空間の空白を埋めることで自分の名前を付けたい場合) は、Gray と Reuterのコピーを入手してください。これは、トランザクション処理システム アーキテクチャに関する決定的な著作であり、この分野で最も優れた 2 人の専門家によって書かれています。
興味深いことに、彼らは約 10,000 行の C で動作する TP モニターを実装できると主張しています。これは実際には非常に理にかなっているように思えます。時々、私は試してみたくなりました。
基本的に、デーモン プロセスとして実行される分散トランザクション コーディネーターを作成する必要があります。そこからリソース マネージャー プロトコルを機能させる必要があるため、これをプロトタイプとして開始するのがおそらく良いスタートです。トランザクションを個別にロールバックまたはコミットできるようになれば、TM-RM インターフェースの基礎ができたことになります。
仕様で定義されている XA API は、トランザクション マネージャーを制御するための API です。厳密に言えば、この種の分散トランザクションを使用するために 3 層アーキテクチャを作成する必要はありませんが、TP モニターがないと意味がありません。フロントエンドから中間層への通信方法は、読者の課題として残しておいてください。おそらく、既存の ORB を使用することをお勧めします。その中には、いくつかの優れたオープンソースの実装が利用可能です。
DTC とアプリ サーバーを別々のプロセスにするかどうかによっては (安定性のためには望ましいかもしれませんが、厳密には必要ではありません)、DTC サーバーのベースとして ACE を使用することもできます。
高性能な中間層サーバーを作成したい場合は、Douglas Schmidt のACE フレームワークを調べてください。これには TAO と呼ばれる ORB が付属しており、好みに応じて多かれ少なかれ任意のスレッド モデルを使用できるほど柔軟です。これを使用することは、それを学習することと、独自に記述してすべての同期と並行性の問題をデバッグすることとの間のトレードオフです。