wcf サービスでの圧縮に関する質問です。netnamedpipe バインディングを使用して、いくつかのエンティティ オブジェクトを呼び出し元のアプリケーションに送信しています。それが悪い考えであることはわかっていますが、それが私の顧客が実装したい方法です。
そのため、現在、約 45000 個のデータセット (エンティティ オブジェクト) を netnamedpipe 経由で送信する必要があります。それは本当に遅いです。送信前にデータ オブジェクトを byte[] に圧縮するクラスを実装しましたが、45000 セットの送受信にはまだ約 45 秒かかります。
私はこのように圧縮しています:
public static byte[] Compress<T>(T data)
{
byte[] result = null;
using (var memory = new MemoryStream())
{
using (var zip = new DeflateStream(memory, CompressionMode.Compress, true))
{
var formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
formatter.Serialize(zip, data);
}
result = memory.ToArray();
}
return result;
}
それを改善する方法はありますか?45 秒は長すぎます :( 主な理由は、エンティティ オブジェクトのシリアル化である可能性があります..しかし、それをスピードアップするにはどうすればよいですか?