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