17.10. 新しいトランザクションプロトコル
多くのコンポーネント技術は、2 相コミットセマンティックスをベースにした ACID トランザクションをコーディネートするメカニズムを備えています。CORBA/OTS、JTS/JTA、MTS/MSDTC がその一部です。Web Services に ACID が適さない理由 での説明のとおり、ACID トランザクションはすべての Web Services トランザクションに適しているとは限りません。
Web Services に ACID が適さない理由
- 典型的な ACID トランザクションは、アプリケーションを開発およびデプロイする組織はアプリケーションの全体的なインフラストラクチャを所有すると仮定しています。このインフラストラクチャは従来イントラネットの形式を取っていました。オーナーシップは信頼できる、予測可能な方法でトランザクションが動作することを暗示しています。ACID の性質を確保するために、潜在的に寿命の長いロックは 2 相コミットの間に基礎となるデータ構造で保管することが可能です。リソースはどの期間でも使用され、トランザクションが完了すると解放されます。Web Services ではこうした仮定は有効ではなくなりました。明らかな理由としては、Web サービスを通じて公開されたデータの所有者がデータが長期間ロックされることを拒否するためです。そのようなロックを許可すると Dos 攻撃を招きます。
- すべてのアプリケーションインフラストラクチャは一般的には単一のパーティが所有しています。典型的な ACID トランザクションを使用するシステムは、トランザクション内のパーティシパントはトランザクションマネージャの指示に従い、トランザクション内の他のパーティシパントに悪影響がある一方的な決定を行うのはまれだと通常は仮定しています。トランザクションに参加する Web Services はいつでもトランザクションを辞退する決定を効果的に行うことができ、概してサービスの消費者にはこれを防ぐサービス保証の質はほとんど持っていません。
17.10.1. 疎結合システムのトランザクション
ACID プロパティを緩和する拡張トランザクションモデルは数年に渡り提案され続けてきました。WS-T は新しいトランザクションプロトコルを提供し、Web Services アーキテクチャに対してこの概念を実装します。XTS は Web Services のような疎結合アーキテクチャに特有の基礎となる 4 つの要件に対応するように作られています。その要件については Web Services の要件 で説明します。
Web Services の要件
- トランザクションに対し複数の成功する結果を処理し、操作の結果が独立も持続もできない操作に関わることができること。
- 自発的なパーティをコーディネートし、その関係が中央設計権限からの命令ではなくコントラクトで管理されている。
- パーティがライフタイムの間に停止を経験することが予想され、コーディネートした作業がそうした停止から存続できる不連続のサービス。
- 複数の通信プロトコルに対しXML を使用した相互動作。XTS は HTTP で送られる SOAP エンコーディングを使用します。