特此更正一下:
标题和内容中使用到的"并发"一词不太严谨,本质上的确不是高效并发,只是通过代码尽量去模拟并发,在这里更正一下,对博友造成误导深表歉意!
下面将模拟并发的源码单独贴出来,以供大家判断一下:
public void DoHttp()
{
var backgroundWorkers = new List<BackgroundWorker>();
var models = new List<HttpModel>();
//节约时间 预先创建对象。
for (var i = 1; i <= TryCount; i++)
{
var model = new HttpModel {Id = i, Uri = ServerUri, IsGet = IsGet, JsonStr = PostDataStr};
var bw =new BackgroundWorker();
bw.DoWork += DoWork;
bw.RunWorkerCompleted += RunWorkerCompleted;
backgroundWorkers.Add(bw);
models.Add(model);
}
//统一调用
//后期优化可改为: Parallel.For
for (var i = 0; i < TryCount; i++)
{
var inModel = models[i];
inModel.BeginTime = DateTime.Now;
var bw = backgroundWorkers[i];
bw.RunWorkerAsync(inModel);
}
}
可以看到,代码中预先创建了 N个 BackgroundWorker 对象,并预先封装好了Http请求对象, 放入List 中。
之后通过for循环统一激活调用。for循环是一次激发循环的,如果希望此处更接近并发情况,可以优化下, 具体实现如下:
http://blog.csdn.net/song_qingwei/article/details/44172743
通过以上方式可以实现最基础最简单的模拟并发方法,如果需要更专业的压力测试软件还是用专业的比较好,哈哈。
好多博友发私信需要源代码,代码连接就在下面啊 0 0 博友请仔细阅读啊,我在这里再粘贴一遍,哈哈
源代码下载地址:
http://pan.baidu.com/s/1hq3fCX2
http://pan.baidu.com/s/1hq3fCX2
http://pan.baidu.com/s/1hq3fCX2
正常情况下,通过以上代码每秒中能发出的请求视设备情况而定,我本机I5处理器,4G内存的情况下,自己本机开一个Server,本机运行该客户端,是会对服务器造成一个排队情况的测试。
为了方便对自己的服务器进行一个简单的并发访问测试,自己coding了一个简单的http post/get 并发请求工具
环境是基于VS2010 c# .net4框架,所以运行该exe需要设备上安装了 .net framework 4.0 才可以,安装包大约40多M 可以自己去下载一个。
资源已上传到CSDN可以进行下载,下载地址:http://download.csdn.net/detail/songqingwei1988/7102543 / 代码 http://pan.baidu.com/s/1hq3fCX2
是免积分的,方便大家使用就好,可以无偿免费赠送源代码,但是为了避免一些麻烦,没有上传源代码。
该工具纯属个人快速乱写开发,所以有点BUG在所难免啊。请勿见笑~
源代码下载地址:
http://pan.baidu.com/s/1hq3fCX2
http://pan.baidu.com/s/1hq3fCX2
http://pan.baidu.com/s/1hq3fCX2
运行截图:
整体界面:
测试结果
源代码下载地址:
http://pan.baidu.com/s/1hq3fCX2