WCF的Restful和TCP方式调用性能比较
1. 实验背景
关于WCF提供分布式访问服务,最常用的两种方式Restful方式和Tcp方式,在本地测试了一把。
结果显示,还是Rest方式,在压力测试下,性能最佳。
而且处于跨平台的考虑,和自动化测试方便,更会采用Restful方式提供服务。
2. WCF服务功能描述:
该服务为所有客户端(CS客户端或B/S浏览器端),提供实时和统一的不重复的流水号
3. 测试结果
测试1: 基于Restful 方式提供服务,客户端使用http路由请求方式访问服务:
Rest服务地址: http://xxx.xxx.xxx.xxx:6211/ITSTemplate.Study.RestAPI/SeqService/
两个Client,分别调用100000次,平均调用时间:0.59~0.61ms,性能是TCP方式的50倍(2.66/0.59)。
调用前,可以通过netstat -aon|findstr "6211", Restful还没有客户端调用实例。
调用中,可以通过netstat -aon|findstr "6211", Restful有2个客户端调用实例。
调用完毕,最后一次调用完毕,大概1分钟左右,WCF会自动释放服务端建立的6211端口实例,可以看见每次平均调用的时间为: 0.59~0.61 毫秒
测试2: 基于TCP 方式提供服务,客户端使用接口Libary引用类库方式访问服务:
TCP服务地址: net.tcp://xxx.xxx.xxx.xxx:6212/ITSTemplate.Study.RestAPI/SeqService/
两个Client,分别调用100000次,平均调用时间: 2.66 s
调用前,可以通过netstat -aon|findstr "6212", TCP还没有客户端调用实例。
调用中,可以通过netstat -aon|findstr "6212", TCPl有2个客户端调用实例。
调用完毕,最后一次调用完毕,大概1分钟左右,WCF会自动释放服务端建立的6211端口实例,可以看见每次平均调用的时间为: 2.66 毫秒
总结:下一节,我将测试在远程云服务器,测试REST的并发性能; 设置REST的响应超时时间为1秒。
并且通过MQ方式,尽可能解决服务器对并发请求的处理能力,对客户端的业务请求做:异步请求和异步响应。
WCF的Restful和TCP方式调用性能比较的更多相关文章
- 以WCF安全认证方式调用通用权限管理系统获取基础信息资料
在B/S开发中,涉及到获取系统基础资料的问题,因为是在不同平台下的开发,采用了WCF方式获取. 下面是一个调用通用权限管理系统(吉日嘎拉)基础信息资料的一个demo供参考 调用原理图: web.con ...
- 关于C#调用非托管动态库方式的性能疑问
最近的项目中,因为一些原因,需要C#调用非托管(这里为C++)的动态库.网上喜闻乐见的方式是采用静态(DllImport)方式进行调用.偶然在园子里看到可以用动态(LoadLibrary,GetPro ...
- (转)将wcf 以webservice的方式调用
将wcf 以webservice的方式调用 问题:a公司使用wcf 发布服务(.net Framework 3.0 or 3.5),b公司需要使用a公司发布的服务 ,但b公司目前阶段只使用.net F ...
- WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]
原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...
- WCF配置后支持通过URL进行http方式调用
最近遇到一个小型项目,主要就是通过手机写入NFC信息,思考许久后决定就写一个简单的CS程序来搞定这个问题,可是当涉及到手机和PC通信的时候首先考虑到的就是IIS,同时因为数据库是SQLite,思前想后 ...
- Post方式调用wcf服务
我们平常在PC端调用WCF服务,只要知道WCF服务的地址,客户端直接添加引用服务就可以使用了,殊不知还有其他方式,其实,我们也可以 通过HTTP POST的方式调用WCF服务,这样就不用添加引用了,在 ...
- WCF如何通过契约加编码方式调用
WCF采用基于契约的服务调用方法,通过System.ServiceModel.ChannelFactory<TChannel>直接创建服务代理对象. 创建服务代理 public stati ...
- WCF学习之旅—TCP双工模式(二十一)
WCF学习之旅—请求与答复模式和单向模式(十九) WCF学习之旅—HTTP双工模式(二十) 五.TCP双工模式 上一篇文章中我们学习了HTTP的双工模式,我们今天就学习一下TCP的双工模式. 在一个基 ...
- WCF开发框架形成之旅---WCF的几种寄宿方式
WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者 ...
随机推荐
- Linux RAID卡优化
200 ? "200px" : this.width)!important;} --> 介绍 我们的生产服务器经常会做raid存储,但是单单做了raid就能保证性能高效和数据 ...
- 新浪计数业务之Redis
今天听一个同事说新浪使用的是Redis,于是自己将研究的过程整理出来以备后用. 我们都知道微博这玩意儿现在很火,新浪作为国内最早使用redis,并且是国内最大的redis使用者,当然备受人们关注.新浪 ...
- 如何创建一个AJAX-Enabled WCF Service
原创地址:http://www.cnblogs.com/jfzhu/p/4041638.html 转载请注明出处 前面的文章中介绍过<Step by Step 创建一个WCF Servi ...
- C# 服务程序 - 调试服务
前言:本篇文章环境是VS2015,win10.如果有任何的差别,请注意 1. 创建服务程序 1)用VC创建服务程序,叫做 MyTestWindowsService 创建完成之后,可以看到 2)添加安装 ...
- sleep和wait区别
1. sleep和wait都是用来进行线程控制,他们最大本质的区别是: sleep()不释放同步锁,wait()释放同步锁. sleep(milliseconds)可以用时 ...
- Android开发学习之路-二维码学习
这个月装逼有点少了,为什么呢,因为去考软件射鸡师了,快到儿童节了,赶紧写篇博纪念一下逝去的青春,唔,请忽略这句话. 二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这 ...
- DLL导出函数和类的定义区别 __declspec(dllexport)
DLL导出函数和类的定义区别 __declspec(dllexport) 是有区别的, 请看 : //定义头文件的使用方,是导出还是导入 #if defined(_DLL_API) #ifndef D ...
- Box Model,边距折叠,内联和块标签,CSSReset
一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三.内联与 ...
- MongoDB 文档的更新操作
在MongoDB中,更新单个doc的操作是原子性的.默认情况下,如果一个update操作更新多个doc,那么对每个doc的更新是原子性的,但是对整个update 操作而言,不是原子性的,可能存在前面的 ...
- SQL 笔记 By 华仔
-------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...