IO调用服务

1、使用using(每次自动释放)

  1. for (var i = ; i < ; i++)
  2. {
  3. var watch = new Stopwatch();
  4. watch.Start();
  5. using (var client = new StreamServiceClient())
  6. {
  7. var result = client.Upload(new StreamRequest
  8. {
  9. Bytes = data,
  10. FileExt = ext,
  11. Passport = ""
  12. });
  13. if (!string.IsNullOrEmpty(result.Msg))
  14. MessageBox.Show(result.Msg);
  15. }
  16. watch.Stop();
  17. this.richTextBox1.AppendText(string.Format("第{0}次:耗时:{1}\r\n\r\n", i, watch.ElapsedMilliseconds));
  18. }

耗时:

2、重用wcf通信通道

  1. for (var i = ; i < ; i++)
  2. {
  3. var watch = new Stopwatch();
  4. watch.Start();
  5. var client = new StreamServiceClient();
  6. {
  7. var result = client.Upload(new StreamRequest
  8. {
  9. Bytes = data,
  10. FileExt = ext,
  11. Passport = ""
  12. });
  13. if (!string.IsNullOrEmpty(result.Msg))
  14. MessageBox.Show(result.Msg);
  15. }
  16. watch.Stop();
  17. this.richTextBox1.AppendText(string.Format("第{0}次:耗时:{1}\r\n\r\n", i, watch.ElapsedMilliseconds));
  18. }

耗时:

3、自定义wcf通道

先创建一个channel,如下:

  1. /// <summary>
  2. /// IO服务通道
  3. /// by:jgl
  4. /// date:15-10-10
  5. /// </summary>
  6. public sealed class EmpIOChannelFacotry
  7. {
  8. private static readonly object LockObject = new object();
  9. private static StreamServiceClient client;
  10.  
  11. public static StreamServiceClient Channel
  12. {
  13. get
  14. {
  15. lock (LockObject)
  16. {
  17. var locaClient = client;
  18. if (locaClient != null && locaClient.State != CommunicationState.Faulted) return locaClient;
  19. client = new StreamServiceClient();
  20. return client;
  21. }
  22. }
  23. set
  24. {
  25. lock (LockObject)
  26. {
  27. if (client == null) return;
  28. if (client.State != CommunicationState.Opened)
  29. client.Abort();
  30. client.Close();
  31. client = value;
  32. }
  33. }
  34. }
  35. }

耗时:

此文章属于个人记录,我是wcf的菜鸟,希望大家多多批评与指点。

请问各位还有其他办法能够提供wcf客户端调用的办法吗?

客户端调用wcf服务,如何提高调用性能的更多相关文章

  1. 学习之路十四:客户端调用WCF服务的几种方法小议

    最近项目中接触了一点WCF的知识,也就是怎么调用WCF服务,上网查了一些资料,很快就搞出来,可是不符合头的要求,主要有以下几个方面: ①WCF的地址会变动,地址虽变,但是里面的逻辑不变! ②不要引用W ...

  2. Silverlight客户端调用WCF服务难题解疑

    一:解决办法 Silverlight客户端调用WCF服务在实际使用中经常会出现的问题就是无法直接应用类文件和配置文件.微软针对这一情况已经给出了解决办法.WCF开发框架可以帮助我们实现可靠性较高的跨平 ...

  3. WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理

    原文:WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理 在前面一片文章(服务代理不能得到及时关闭会有什么后果?)中,我们谈到及时关闭服务代理(Service Proxy)在一个高并发环境 ...

  4. wcf第三方客户端与wcf服务之间调用入门

    Wcf服务与我们的客户端如何建立联系的呢.本文简单记录一下 1.创建我们的wcf服务程序. 第一个wcf服务库是创建我们的wcf库,运行时会单独来托管我们的程序,而非托管在iis下. 第二个wcf服务 ...

  5. 完全使用接口方式调用WCF 服务

    客户端调用WCF服务可以通过添加服务引用的方式添加,这种方式使用起来比较简单,适合小项目使用.服务端与服务端的耦合较深,而且添加服务引用的方式生成一大堆臃肿的文件.本例探讨一种使用接口的方式使用WCF ...

  6. 实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法

    废话不多说,直接讲解实现步骤 一.首先我们需定义支持WEB HTTP方法调用的WCF服务契约及实现服务契约类(重点关注各attribute),代码如下: //IAddService.cs namesp ...

  7. .NET Core 调用WCF 服务

    .NET Core 和ASP.NET Core 已经可以调用WCF 服务. 环境要求: VS2015 Update 2 +VS2015 Tooling + .NET Core SDK 下载地址: ht ...

  8. [转]学习 WCF (6)--学习调用WCF服务的各种方法

    转自:http://www.cnblogs.com/gaoweipeng/archive/2009/07/26/1528263.html 作者这篇博文写得很全面. 根据不同的情况,我们可以用不同的方法 ...

  9. WPF异步调用WCF服务

    wpf调用wcf时,第一次访问总耗时到达几秒,影响界面的用户体验,因此在wpf加载界面和加载数据时采用异步加载,即异步访问wcf服务, 由于是否采用异步加载和服务端无关,仅仅由客户端自己根据需要来选择 ...

  10. WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]

    原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...

随机推荐

  1. 【Mysql】修改mysql的字符集和默认存储引擎,解决数据入库乱码问题

    背景 在使用Python + Testlink做自动化的过程中,遇到了数据入库出现乱码的情况,后来通过修改字符集的方式解决了这个问题.下面的内容主要来自于一篇相关博文,博主做了细微的调整, 原文链接: ...

  2. 在x86为arm 编译 httpd 2.2.31

    这个版本的httpd 已经自带 apr apr-util pcre , 不用额外下载源代码 1) 编写环境变量脚本,并执行 cross-env.sh : export ARMROOTFS=/h1roo ...

  3. MyBatis Generator去掉生成的注解

    是不是很讨厌mybatis Generator帮我们生成代码的时候在Mapper和mapper.xml文件中生成的一大堆注解?今天在看MyBatis Generator代码的时候发现,原来mybati ...

  4. easyui panel自适应浏览器宽度

    一.目标效果: 当浏览器窗口大小改变时.panel宽度始终为浏览器宽度的50%,panel高度则根据其中内容的多少而变化,横向竖向滚动条皆不出现.且不需要重新刷新浏览器或者其他js代码 兼容:chro ...

  5. 用django发送异步邮件

    太阳底下没有新鲜事,github是一个神奇的地方,你有什么想法,需求,点子.其实别人早就想到,而且也已经做到. 所以不要高估自己,有什么想法还是GITHUB一下,免得成了井底之娃. 这几天一直在研究p ...

  6. mybatis单笔批量保存

    在上一篇写了接口调用解析返回的xml,并赋值到实体.这一篇主要介绍,如何保存实体数据. 一,xml样例 <?xml version="1.0" encoding=" ...

  7. CF1082G:G. Petya and Graph(裸的最大闭合权图)

    Petya has a simple graph (that is, a graph without loops or multiple edges) consisting of n n vertic ...

  8. 关于const 和指针

    这个很久之前就很困扰的问题,现在再理一下: 1,指向const对象的指针 >C++强制要求指向const对象的指针也必须具有const特性!!!也就是不能把一个const对象的地址赋给一个非co ...

  9. 关于mybatis中一级缓存和二级缓存的简单介绍

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  10. 【转】Linux下的文本dos格式转Unix格式,去除^M符号

    原文网址:http://blog.csdn.net/kobejayandy/article/details/13291525 问:我在Windows中通过FTP传一个文本文件到Linux中,但是打开文 ...