我最近在一個定製的編碼器插入(使用二進制編碼器來完成實際的編碼和gzip compresser壓縮字節數組)。它工作正常。現在的問題是小的消息大小實際上使字節數組膨脹。我想知道是否有辦法避免這種情況。特別是如果有一種方法,我可以應用條件壓縮和解壓縮。WCF條件壓縮
我曾嘗試做這樣的事情 - 將一個條件
if(buffer.Count <= 5000)
skip compression
但問題是,如果上的字節不壓縮的另一端解壓縮甚至會發生。我希望這是有道理的。
以下是其中的壓縮和解壓發生(從CompactMessageEncoder的代碼片段)
public override Message ReadMessage(ArraySegment<byte> buffer, BufferManager bufferManager, string contentType)
{
ArraySegment<byte> decompressedBuffer = DecompressBuffer(buffer, bufferManager);
LogWrite("Decompressed from {0} bytes to {1} bytes", buffer.Count, decompressedBuffer.Count);
Message returnMessage = _innerEncoder.ReadMessage(decompressedBuffer, bufferManager);
returnMessage.Properties.Encoder = this;
return returnMessage;
}
public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
{
var buffer = _innerEncoder.WriteMessage(message, maxMessageSize, bufferManager, messageOffset);
var compressedBuffer = CompressBuffer(buffer, bufferManager, messageOffset);
LogWrite("Compressed from {0} bytes to {1} bytes", buffer.Count, compressedBuffer.Count);
return compressedBuffer;
}
可能你的是定製頭添加到被壓縮那些郵件? HTTP://計算器。com/questions/964433/how-to-add-a-custom-header-to-every-wcf-calls – 2011-01-08 01:15:18