Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Connector for .NET Framework 使用の手引


2.5.7 バッファサイズの見積もり方法

RPC要求にクライアントスタブを使用する場合,入出力パラメタやカスタムレコードクラスと,入出力メッセージの間の変換をConnector .NETが行うため,Connector .NETのアプリケーションは直接バッファ長を意識する必要はありません。しかし,バッファプーリング機能使用時のバッファサイズとプール数を適切に設定するために,入力メッセージ長および応答メッセージ長の値を見積もっておく必要があります。

〈この項の構成〉

(1) .NETインタフェース定義から生成されたクライアントスタブを使用する場合

(a) データ型ごとの合計値を計算する

次に示す計算式を用いて,入力および出力で使用するデータ型ごとの合計値を計算してください。

入力メッセージ長=メソッドの入力パラメタおよび参照パラメタの最大データ長の合計+512

応答メッセージ長=メソッドの出力パラメタ,参照パラメタ,および戻り値の最大データ長の合計+512

計算式に代入する値を,次の表に示します。

表2‒7 計算式に代入する値(.NETインタフェース定義)

パラメタのデータ型

メッセージ上のサイズの最大値(バイト)

System.Byte

1

System.Int16

3

System.Int32

7

System.Int64

15

System.String

格納された文字数×2+13

System.Byte[]

a+11

System.Int16[]

2×a+11

System.Int32[]

4×a+11

System.Int64[]

8×a+11

System.String[]

Σ(格納された文字数×2+13)+11

TP1ユーザ構造体

各メンバの最大長の合計+4

TP1ユーザ構造体配列

Σ(各メンバの最大長の合計+4)+11

(凡例)

a:配列の要素数

スタブによって自動的に調整されるサイズを含みます。

(b) データトレースを使用する

Client .NETのトラブルシュート機能であるデータトレースを使用して,実際に送受信されたメッセージ長を確認できます。データトレースの詳細については,マニュアル「TP1/Client for .NET Framework 使用の手引」を参照してください。

(2) サービス定義から生成されたカスタムレコードクラスを使用する場合

(a) データ型ごとの合計値を計算する

次に示す計算式を用いて,入力および出力で使用するデータ型ごとの合計値を計算してください。

入力メッセージ長=データ型定義の各メンバのデータ長の合計

応答メッセージ長=データ型定義の各メンバのデータ長の合計

計算式に代入する値を,次の表に示します。

表2‒8 計算式に代入する値(サービス定義)

データ型定義のメンバのデータ型

メッセージ上のサイズ(バイト)

char

1

short

2

int

4

long

4

char[a]

1×a

char[a][b]

a×b

short[a]

2×a

int[a]

4×a

long[a]

4×a

byte[a]

1×a

struct

構造体の各メンバのサイズの合計

struct[a]

構造体の各メンバのサイズの合計×a

(凡例)

a,b:配列の要素数

可変長構造体配列の場合,配列の最大要素数で見積もるようにしてください。

(b) カスタムレコードクラスのソースコードを確認する

カスタムレコードクラスのソースコードのprivate constフィールド_lengthを参照して,計算後のメッセージ上のサイズが確認できます。

(c) クライアントスタブ生成コマンド(サービス定義用)を実行する

カスタムレコードクラスごとに必要なバッファサイズは,クライアントスタブ生成コマンド(サービス定義用)(spp2cstub)に-bオプションを指定して実行することで確認できます。運用コマンドの詳細については,「5. 運用コマンド」の「spp2cstub(クライアントスタブ生成コマンド(サービス定義用))」を参照してください。