何が最も簡単な方法の追加圧縮WCFにSilverlight?
-
08-06-2019 - |
質問
いsilverlight2beta2にアプリをアクセス、WCFサービス)このため、現在を使用することはできますかbasicHttpます。のwebserviceを返しまかなり大量のXMLデータです。このような無駄ながら、帯域幅の使用量としての立場からの対応がzip形式で圧縮が小さい効果を明確にする必要がある5(実際に貼り付けの対応にtxtファイルをzip形式で圧縮とても感じが良かったです。.
の請求は、"Accept-Encoding:gzip、deflate"-、本当にありがとういのは、WCFサービスgzip(その他を圧縮)に対応?
かったこ リンク たくなったら、迷うことなくそう少し複雑な機能が果たすべき役割、これまでのout-of-the-boxぁ.
OKをしたいのソリューションシステム。IO.圧縮とその答えとはいえない"う"のIIS7動的圧縮します。もので:
動的圧縮にIIS7 た ワal。ただ、Nikhilのウェブ-デベロッパーのヘルパーのインターフェイスの家なかった。私の推測であることからSL手のウェブサービスの呼び出しをブラウザのブラウザの取扱い"のカバー"とNikhilのツールを見ると、圧縮されます。この事実を確認することをフィドラーズ状況を監視する外部交通のブラウザ用です。にフィドラーズに対応した、実際には、gzip圧縮!!
その他の問題とする。IO.圧縮解システム変数に制御されます。IO.圧縮に存在しないSilverlight CLR.
なので私の目からみると、最も簡単な方法をWCF圧縮Silverlightする動的圧縮にIIS7書きできます。
解決
ご利用の場合IIS7これらを実現するために、、 圧縮モジュール.この構成することを可能にす圧縮のためにHTTP要求をサーバーです。
他のヒント
WS-圧縮(コンプレッションのためのWCF構成することを可能にす圧縮します。
見 WS-圧縮(コンプレッションのためのWCF によるパブロ-M.Cibraro
また、Microsofts GZipエンコーダのサンプル る"を作成しエンコーダのチャンネルを使用します。IO.圧縮。GZipStreamクラスの圧縮信WCFメッセージ"
こちらでお分かりになったネイティブの方のために、WCFい圧縮の際は、WCFプロジェクトです。って使用されたばかります。IO.圧縮名前空間短縮.こちらのコードを使用した
public static class CompressedSerializer
{
/// <summary>
/// Decompresses the specified compressed data.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="compressedData">The compressed data.</param>
/// <returns></returns>
public static T Decompress<T>(byte[] compressedData) where T : class
{
T result = null;
using (MemoryStream memory = new MemoryStream())
{
memory.Write(compressedData, 0, compressedData.Length);
memory.Position = 0L;
using (GZipStream zip= new GZipStream(memory, CompressionMode.Decompress, true))
{
zip.Flush();
var formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
result = formatter.Deserialize(zip) as T;
}
}
return result;
}
/// <summary>
/// Compresses the specified data.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data">The data.</param>
/// <returns></returns>
public static byte[] Compress<T>(T data)
{
byte[] result = null;
using (MemoryStream memory = new MemoryStream())
{
using (GZipStream zip= new GZipStream(memory, CompressionMode.Compress, true))
{
var formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
formatter.Serialize(zip, data);
}
result = memory.ToArray();
}
return result;
}
}
そうしたサービスにバイト配列として入力のような
void ReceiveData(byte[] data);
行くのだった。
るものでなければならないのか注意する必要がある追加のmimeタイプ applicationHost.config
下 <httpCompression><dynamicTypes>
部門のほか、可能な圧縮のためのサイト:
<add mimeType="application/soap+msbin1" enabled="true" />
ある動的対応がない圧縮(一部)では、mimeタイプの問題です。使用フィドラーズの内容に関連する。失敗した要求追跡可能か否かを判断するにあたり、IISはもう圧縮をします。場合の圧縮が正しく設定されま NO_MATCHING_CONTENT_TYPE
の 完全な追跡 の微量出力に出力します。