4.5.4 サービス定義から生成したクライアントスタブを使用する場合のデータ長の見積もり
サービス定義から生成したクライアントスタブを使用する場合,Extension .NETがカスタムレコードと,送受信メッセージの間の変換をします。ただし,送受信メッセージがRPCメッセージの最大長を超えないように,要求メッセージ長および応答メッセージ長の値を見積もっておく必要があります。
要求メッセージ長および応答メッセージ長の見積もり式を次に示します
要求メッセージ長=データ型定義の各メンバのデータ長の合計値
応答メッセージ長=データ型定義の各メンバのデータ長の合計値
データ長の合計値には,データ型ごとのデータ長を合計した値を代入してください。各データ型のデータ長を次の表に示します。
データ型 |
データ長(バイト) |
---|---|
char |
1 |
short |
2 |
int |
4 |
long |
4 |
char[a] |
1×a |
byte[a] |
1×a |
short[a] |
2×a |
int[a] |
4×a |
long[a] |
4×a |
char[a][b |
a×b |
struct |
構造体の各メンバのサイズの合計 |
struct[a] |
構造体の各メンバのサイズの合計×a |
- (凡例)
-
a,b:配列の要素数
なお,可変長構造体配列の場合,配列の最大要素数で見積もるようにしてください。
要求メッセージ長および応答メッセージ長の見積もりが完了したら,カスタムレコードクラスのprivate constフィールドの_lengthを参照して,見積もり後のメッセージ長を確認します。ただし,可変長構造体配列を使用している場合,この方法では確認できません。可変長構造体配列を使用している場合は,spp2cstubコマンドに-bオプションを指定してコマンドを実行し,標準出力に出力されたバッファサイズを参照して,メッセージ長を確認してください。