分散トランザクション処理機能 TP1/Connector for .NET Framework 使用の手引
![[目次]](FIGURE/CONTENT.GIF)
![[用語]](FIGURE/GLOSS.GIF)
![[索引]](FIGURE/INDEX.GIF)
![[前へ]](FIGURE/FRONT.GIF)
3.4.3 インデクスドレコードとバッファプーリング機能を使用する場合のメソッド発行手順
インデクスドレコードとバッファプーリング機能を使用してRPC要求をする場合のメソッド発行手順を次に示します。
- TP1ConnectionManagerクラスのインスタンスを生成または取り出します。
プロパティを特定のプロファイルから読み込む場合は,コンストラクタの引数にプロファイルIDを指定します。インスタンスの生成はアプリケーションごとに行うことを推奨します。
- TP1ConnectionManagerクラスのGetConnectionメソッドでTP1Connectionオブジェクトを取得します。
コネクションプールに使用できるコネクションがあった場合は,この時点でコネクションプールからコネクションを取り出した状態になります。
- RpcInfoクラスのインスタンスを生成します。
- RpcInfoオブジェクトにサービス名,サービスグループ名,タイムアウト値,RPC形態フラグなどを設定します。
- TP1ConnectionManagerクラスのCreateIndexedRecordメソッドを発行して,入力用インデクスドレコードを生成します。
- TP1ConnectionManagerクラスのGetMessageBufferメソッドに入力データサイズを指定して発行して,入力データ用のMessageBuffer実装オブジェクトを取得します。
バッファプールに使用できるバッファがあった場合は,この時点でバッファプールからバッファを取り出した状態になります。
- MessageBuffer実装オブジェクトが保持しているバッファに入力データを設定します。
- 入力用インデクスドレコードに入力データを設定したバッファを設定します。
- TP1ConnectionManagerクラスのCreateIndexedRecordメソッドを発行して,出力用インデクスドレコードを生成します。
- TP1ConnectionManagerクラスのGetMessageBufferメソッドに出力データサイズを指定して発行し,出力データ用のMessageBuffer実装オブジェクトを取得して,出力用インデクスドレコードに設定します。
バッファプールに使用可能なバッファがあった場合は,この時点でバッファプールからバッファを取り出した状態になります。
- TP1ConnectionクラスのExecuteメソッドを発行してRPC要求を行います(何度でも発行できます)。
再度RPC要求を行う場合は,4.〜11.のどれかから行います。
各オブジェクトは複数回のRPC要求で再利用できます。
- 出力用IndexedRecordからデータを取り出します。
- 入力用MessageBuffer実装オブジェクトのReleaseMessageBufferメソッドを発行して,入力用メッセージバッファをバッファプールに戻します。
- 出力用MessageBuffer実装オブジェクトのReleaseMessageBufferメソッドを発行して,出力用メッセージバッファをバッファプールに戻します。
- TP1ConnectionクラスのDisposeメソッドを発行して,コネクションをコネクションプールに戻します。
複数のTP1Connectionオブジェクトを使う場合は,それぞれのインスタンスが不要になった時点でDisposeメソッドを発行します。
- 注意
- ASP.NET Webアプリケーションで使用する場合,MessageBufferクラスのReleaseMessageBufferメソッド,およびTP1ConnectionクラスのDisposeメソッドを,次の時点で必ず発行してください。
- 各UIイベントハンドラの終了時
- Webサービスメソッドの終了時
- これらのメソッドを適切に発行しないと,メモリリークの原因となります。
- また,TP1ConnectionManagerクラスは,ASP.NETではアプリケーション状態,またはアプリケーションインスタンスに保持することを推奨します。各UIイベントハンドラやWebサービスメソッドごとに生成や削除を繰り返した場合,性能劣化やメモリ使用効率低下の原因となります。
All Rights Reserved. Copyright (C) 2006, 2009, Hitachi, Ltd.