即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

aspx、ashx、asmx文件处理请求效率比较

编程语言 my98800 12℃ 0评论
    aspx文件也就是普通的页面文件,ashx就是一般处理程序,他没有页面部分,asmx文件也就是轻量级的WebService。假如我们需要一个处理某个请求然后返回一个结果的程序,那么你会选择什么样的文件来编码呢?总的来说,这三种文件各有各的好处,我现在就从客户端发起一个get请求,服务端返回一个“Hello World”字符串作为本次请求的结果,这三种文件处理效率上做个比较分析。
     我们实验的准备环境是,IIS7.5,三种文件只是简单的返回一个“Hello World”字符串,不要多写别的代码,aspx文件就采用直接写在页面上,也不要指定什么后台处理类了,同时也去掉多余的HTML代码。如图:
 
 
      通过apache轻量级的测试工具ab,模拟10个并发用户共请求1000次分别得出出结果如图:
      1、aspx
 
     2、ashx
 
     3、asmx
      通过观察三者中的Requests per second(服务器每秒处理请求数)以及Time per request(服务端平均处理每个请求耗时)可以得知如下结论:
       aspx与ashx处理效率差不多,但ashx仍是首选。asmx处理效率非常低下只有前者的1/3,故在高性能环境下慎用。
道理
1、为啥ashx是首选?
   ashx比较轻量级,没有aspx实现的复杂,他只是一个简单服务端处理请求程序,而aspx框架需要处理更多的额外的东西,加上aspx属于动态编译,首次访问速度会非常慢,本次试验已经去掉了这个阶段,另外通过上面分析数据可知,即使我去掉了多余的内容,其实际传输内容也比ashx多,关于aspx页面默认Session加锁,导致同一个用户一次只能处理一个任务的问题,我也测试过关闭Session的情况下,得到的结果是一样的,这个原因是因为本次测试处理时间很短,所以可以忽略不计对Session加锁带来的延时问题。实际情况下,不需要Session就关闭之,可以提高单个用户的并发量。但两者处理效率总体来说非常接近,大家可以根据自己的需要抉择。
2、为啥asmx效率介么低?
   这是一个SOA范畴的程序,遵守一些SOA的标准协议,服务端收到请求后返回的结果不能直接返回,还需要使用标准的SOAP协议组织好数据,类似一个XML文档结构的返回流,从分析结果图中也可以看出来,他返回的数据量比前者高出一位数,总之基于序列化和多余的XML文档数据等使得他处理请求的能力远不如前者。

转载请注明:CodingBlog » aspx、ashx、asmx文件处理请求效率比较

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情