2
WCF와 함께 gzipped 스트림을 보내려고합니다. 여기스트림을 gzip으로 WCF로 보냅니다.
코드 서버 측 :
static void Main(string[] args)
{
var baseAddress = new Uri("http://localhost:2016/TransferServer");
var host = new ServiceHost(typeof(TransferServer), baseAddress);
var binding = new BasicHttpBinding
{
TransferMode = TransferMode.Streamed,
MaxReceivedMessageSize = long.MaxValue,
MaxBufferSize = 65535,
};
host.AddServiceEndpoint(typeof(ITransferServer), binding, baseAddress);
var smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
host.Description.Behaviors.Add(smb);
host.Description.Behaviors.Find<ServiceDebugBehavior>().IncludeExceptionDetailInFaults = true;
host.Open();
Console.Read();
}
TransferServer 클래스 :
public class TransferServer : ITransferServer
{
public void Transfer(Stream stream)
{
using (var gz = new GZipStream(stream, CompressionMode.Decompress))
using (var fs = new FileStream("test.bin", FileMode.Create))
{
gz.CopyTo(fs);
}
}
}
클라이언트 측 : 압축
public void SendStream(Stream stream)
{
var client = new TransferServerClient(
new BasicHttpBinding {MaxReceivedMessageSize = long.MaxValue, TransferMode = TransferMode.Streamed},
new EndpointAddress(@"http://localhost:2016/TransferServer"));
client.Open();
client.TransferDump(??? gzipped stream ???);
}
GzipStream 다른 스트림으로 써야했다,하지만 난 그냥 이미 gzipped 스트림을 보내고 싶습니다.
감사