Data for Silverlight
サーバー側でのデータの圧縮

データをクライアントに送信する前に、C1.Zip ライブラリ(ComponentOne Studio に同梱されているデスクトップバージョンです。Silverlight バージョンではありません)を使用して、ストリームを圧縮します。圧縮するには、C1.Zip ライブラリへの参照を追加して MasterDetailWeb プロジェクトを変更し、次のように DataService.asmx.cs Web サービスの GetData メソッドを変更します。

コードのコピー
[WebMethod]
public byte[] GetData(string tables)
{
  // 接続文字列を使って DataSet を作成します
  var ds = GetDataSet();
 
  // DataSet にデータをロードします
  ds.Fill(tables.Split(','));
 
  // ストリームに保存します
  var ms = new MemoryStream();
  using (var sw = new C1.C1Zip.C1ZStreamWriter(ms))
    ds.WriteXml(sw, XmlWriteMode.WriteSchema);
  //ds.WriteXml(ms, XmlWriteMode.WriteSchema);
 
  // ストリームデータを返します
  return ms.ToArray();
}

クライアントにデータを送信する前にサーバー側でデータを圧縮するために必要な作業はこれだけです。ここでは、DataSet をストリームに直接保存するのではなく、ストリームにデータを書き込む前にデータを圧縮する C1ZStreamWriter を使ってデータを保存しています。データは XML としてエンコードされるため、圧縮率は高くなります。

関連トピック

 

 


Copyright © GrapeCity inc. All rights reserved.