4.5.4 サービス定義から生成したクライアントスタブを使用する場合のデータ長の見積もり

サービス定義から生成したクライアントスタブを使用する場合,Extension .NETがカスタムレコードと,送受信メッセージの間の変換をします。ただし,送受信メッセージがRPCメッセージの最大長を超えないように,要求メッセージ長および応答メッセージ長の値を見積もっておく必要があります。

要求メッセージ長および応答メッセージ長の見積もり式を次に示します

要求メッセージ長=データ型定義の各メンバのデータ長の合計値

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

データ長の合計値には,データ型ごとのデータ長を合計した値を代入してください。各データ型のデータ長を次の表に示します。

表4-7 各データ型のデータ長

データ型データ長(バイト)
char1
short2
int4
long4
char[a]1×a
byte[a]1×a
short[a]2×a
int[a]4×a
long[a]4×a
char[a][ba×b
struct構造体の各メンバのサイズの合計
struct[a]構造体の各メンバのサイズの合計×a
(凡例)
a,b:配列の要素数

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

要求メッセージ長および応答メッセージ長の見積もりが完了したら,カスタムレコードクラスのprivate constフィールドの_lengthを参照して,見積もり後のメッセージ長を確認します。ただし,可変長構造体配列を使用している場合,この方法では確認できません。可変長構造体配列を使用している場合は,spp2cstubコマンドに-bオプションを指定してコマンドを実行し,標準出力に出力されたバッファサイズを参照して,メッセージ長を確認してください。