IO调用服务ide
一、使用using(每次自动释放)this
for (var i = 0; i < 10; i++) { var watch = new Stopwatch(); watch.Start(); using (var client = new StreamServiceClient()) { var result = client.Upload(new StreamRequest { Bytes = data, FileExt = ext, Passport = "" }); if (!string.IsNullOrEmpty(result.Msg)) MessageBox.Show(result.Msg); } watch.Stop(); this.richTextBox1.AppendText(string.Format("第{0}次:耗时:{1}\r\n\r\n", i, watch.ElapsedMilliseconds)); }
耗时:spa
二、重用wcf通讯通道pwa
for (var i = 0; i < 10; i++) { var watch = new Stopwatch(); watch.Start(); var client = new StreamServiceClient(); { var result = client.Upload(new StreamRequest { Bytes = data, FileExt = ext, Passport = "" }); if (!string.IsNullOrEmpty(result.Msg)) MessageBox.Show(result.Msg); } watch.Stop(); this.richTextBox1.AppendText(string.Format("第{0}次:耗时:{1}\r\n\r\n", i, watch.ElapsedMilliseconds)); }
耗时:3d
三、自定义wcf通道code
先建立一个channel,以下:orm
/// <summary> /// IO服务通道 /// by:jgl /// date:15-10-10 /// </summary> public sealed class EmpIOChannelFacotry { private static readonly object LockObject = new object(); private static StreamServiceClient client; public static StreamServiceClient Channel { get { lock (LockObject) { var locaClient = client; if (locaClient != null && locaClient.State != CommunicationState.Faulted) return locaClient; client = new StreamServiceClient(); return client; } } set { lock (LockObject) { if (client == null) return; if (client.State != CommunicationState.Opened) client.Abort(); client.Close(); client = value; } } } }
耗时:blog
此文章属于我的记录,我是wcf的菜鸟,但愿你们多多批评与指点。get
请问各位还有其余办法可以提供wcf客户端调用的办法吗?string