この特集のトップページへ
>
Chapter 5:ビジネスロジック層の構築
5.5.6 トランザクション機能のまとめ
COM+のトランザクション機能は,本連載のメインテーマの1つなので,サンプルも提示しながら少々込み入った部分まで説明してきたが,いかがだっただろうか。多少は難しい部分もあったかもしれないので,トランザクション機能を使う場合のポイントをまとめておこう。ポイントになるのは,次の2つである。
- コンポーネントを適当に分割して同じトランザクションの範囲内で実行させるため,コンポーネントサービスマネージャもしくはVisual BasicによってクラスモジュールのMTSTransactionModeプロパティでトランザクションの状態を[必要](RequiresTransaction)もしくは[新しく必要](RequiresNewTransaction)に設定する
- 成功したらSetCompleteメソッドを呼び出し,失敗したらSetAbortメソッドを呼び出す
以上のポイントさえ抑えておけば,通常の開発には十分だろう。
くり返すようだが,SetCompleteメソッドやSetAbortメソッドを呼び出したときには,COMオブジェクトが非アクティブ化されるという点には注意する必要がある。すなわち,SetCompleteメソッドやSetAbortメソッドを呼び出すと,そこでCOMオブジェクトは破棄され,次回同じCOMオブジェクトを呼び出したとしても,そのCOMオブジェクトが保持していたプロパティの値はすべてクリアされていることになる。
したがって,トランザクションに対応したCOMコンポーネントを構築するときには,(1) そのCOMオブジェクトの内部にプロパティを持たないか,(2) 持つとしてもトランザクションの状態が決まった時点で破棄してもかまわないものだけに限定する,という実装にする必要がある。
Chapter 5-2 9/16 |