Data for Silverlight
クライアント側でのデータの圧縮解除

クライアント側でデータを圧縮解除するには、C1.Zip ライブラリ(Silverlight バージョン)への参照を追加して MasterDetail プロジェクトを変更し、次のように MainPage.xaml.cs ファイルの svc_GetDataCompleted メソッドを変更します。

コードのコピー
void svc_GetDataCompleted(object sender, GetDataCompletedEventArgs e)
{
  // エラーを処理します
  if (e.Error != null)
  {
    _tbStatus.Text = "データのダウンロードに失敗しました。";
    return;
  }
 
  // サーバーからのデータストリームを解析します(DataSet は XML)
  _tbStatus.Text = string.Format(
    "データ取得中:{0:n0} KB", e.Result.Length / 1024);
  var ms = new MemoryStream(e.Result);
  _ds = new DataSet();
  using (var zr = new C1.C1Zip.C1ZStreamReader(ms))
    _ds.ReadXml(zr);
  //_ds.ReadXml(ms);
 
  // データを取得し、コントロールをデータに連結します
  BindData();
}

ここでは、圧縮されたストリームから DataSet を直接読み込むのではなく、データを自動的に圧縮解除する C1ZStreamReader を使って読み込みます。

メモ:圧縮しない場合、このアプリケーションは起動時に約 150k バイトのデータを転送します。これらの小さな変更を加えた後は、初期のデータ転送は 50 KB 未満に減少します。この2つの小さな変更により、転送されるデータ量は 2/3 ほど減少します。これにより、ネットワークトラフィックが減少し、アプリケーションがデータを初期化して表示するまでの時間が短縮されます。

関連トピック

 

 


Copyright © GrapeCity inc. All rights reserved.