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