スマートクライアントではサーバーとのデータのやりとりにWebサービスを利用するのが標準です。
クライアントとWebサービス間はXMLデータが送受信されているわけですが、送信するデータが多いと
XMLのタグ情報も付加されて送信されるデータはより多くなってしまいます。

XMLと親和性の高いDataSetをパラメータにして送受信する場合、
データ型によってどこまでデータサイズを軽くできるか!?の検証です。

construct.gif

■パターンは下記の4種類
@DataSetそのまま
A.NET 2.0から新たに追加されたSOAP圧縮機能とWebサーバのHTTP圧縮の組み合わせ
BDataSetの内容をXML文字列にして、その文字列をバイト配列に変換
CBのバイト配列をさらに、.NET 2.0で追加された圧縮機能で圧縮

■テキストにして21KBのマスタデータ(22行22列)を送受信した結果
パターン データ型 圧 縮 データサイズ Bytes 対標準送信(%) 備考
(KB) 上り(C→S) 下り(S→C) 上り(C→S) 下り(S→C)
@ DataSet型 無効 21 19,263 19,277 100 100
A 有効 19,262 3,383 99.99 17.55 IISのHTTP圧縮設定が必要
B バイト配列型 無効 38,980 39,024 202.37 1,153.53 バイト型を送受信するとインターフェースが見えにくいため異なるプラットフォーム間で使いにくくなる。
C 有効 2,863 2,923 7.34 7.49

■結果
1) .NET 2.0で可能になった自動圧縮機能は、 確かに「下り」の送信比率は格段に減少させることができます。
しかしWebサーバ側のHTTP圧縮設定も必要であり、「上り」(データ更新時)では圧縮機能が働かないため
クライアントから送信される更新対象データが多いとメリットが薄い。
2) バイト型配列そのものを送信するのでは逆にデータサイズが大きくなりすぎて意味がないが、
送信するデータに対してHTTP圧縮と同じ圧縮方法であるGZip圧縮を行ったバイナリデータ(独自に組み込む必要あり)を
送受信すると「上り」「下り」共にSOAP圧縮よりもデータサイズを抑えることができる。
3) ・.NET プラットフォーム間連携のみ
・スマートクライアントからの呼び出ししかされない業務ロジック
であればこのGZip圧縮方法も選択肢に入れてよいのではないかと思います。

※Cの方法について参考にした方法・詳細はこちら