2.5.7 バッファサイズの見積もり方法
RPC要求にクライアントスタブを使用する場合,入出力パラメタやカスタムレコードクラスと,入出力メッセージの間の変換をConnector .NETが行うため,Connector .NETのアプリケーションは直接バッファ長を意識する必要はありません。しかし,バッファプーリング機能使用時のバッファサイズとプール数を適切に設定するために,入力メッセージ長および応答メッセージ長の値を見積もっておく必要があります。
(1) .NETインタフェース定義から生成されたクライアントスタブを使用する場合
(a) データ型ごとの合計値を計算する
次に示す計算式を用いて,入力および出力で使用するデータ型ごとの合計値を計算してください。
入力メッセージ長=メソッドの入力パラメタおよび参照パラメタの最大データ長の合計+512
応答メッセージ長=メソッドの出力パラメタ,参照パラメタ,および戻り値の最大データ長の合計+512
計算式に代入する値を,次の表に示します。
パラメタのデータ型 |
メッセージ上のサイズの最大値(バイト) |
---|---|
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) データ型ごとの合計値を計算する
次に示す計算式を用いて,入力および出力で使用するデータ型ごとの合計値を計算してください。
入力メッセージ長=データ型定義の各メンバのデータ長の合計
応答メッセージ長=データ型定義の各メンバのデータ長の合計
計算式に代入する値を,次の表に示します。
データ型定義のメンバのデータ型 |
メッセージ上のサイズ(バイト) |
---|---|
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(クライアントスタブ生成コマンド(サービス定義用))」を参照してください。