人生总是面临着许多抉择许多困惑!作为一名“攻城师”或“程序猿”的我们,工作的时候更是如此。你曾经是否苦恼过在系统中使用哪种文件编写客户端请求最合适或最高效呢?aspx、ashx、asmx到底该如何选择呢?如果有过并且没有时间静下来好好思考过这些问题(我们总是这样),那么请进来我这坐坐,一起品味一下,放松心情!
     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<mean,across all concurrent requests>(服务端平均处理每个请求耗时)可以得知如下结论:
       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文档数据等使得他处理请求的能力远不如前者。

人生的抉择—aspx、ashx、asmx文件处理请求效率比较的更多相关文章

  1. ascx aspx ashx asmx 文件的作用

    ascx aspx ashx asmx 文件的作用 ascx: Ascx 是给予Web的用户控件(UserControl),一般是用来重用的,不能直接被访问只能插入aspx页面呈现.头部文件<% ...

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

    人生总是面临着许多抉择许多困惑!作为一名“攻城师”或“程序猿”的我们,工作的时候更是如此.你曾经是否苦恼过在系统中使用哪种文件编写客户端请求最合适或最高效呢?aspx.ashx.asmx到底该如何选择 ...

  3. Jquery Ajax处理,服务端三种页面aspx,ashx,asmx的比较

    常规的Jquery Ajax 验证登录,主要有3种服务端页面相应 ,也就是 aspx,ashx,asmx即webserivice . 下面分别用3种方式来(aspx,ashx,asmx)做服务端来处理 ...

  4. aspx文件、aspx.cs文件、aspx.designer.cs文件之讲解

    .aspx文件:(页面)书写页面代码.存储的是页面design代码.只是放各个控件的代码,处理代码一般放在.cs文件中. .aspx.cs文件:(代码隐藏页)书写类代码.存储的是程序代码.一般存放与数 ...

  5. C#下丢掉.asmx文件的WebService的实现

    C#下丢掉.asmx文件的WebService的实现 我在用.net实现Webservice的时候发现需要一个没有任何用处的.asmx文件,但是却没法删除,这两天我实现一个通过接口时想实现dll直接部 ...

  6. 为何没有.aspx.designer.cs文件?

    designer.cs 是窗体设计器生成的代码文件,作用是对窗体上的控件做初始化工作(在函数InitializeComponent()中)VS2003以前都把这部分代码放到窗体的cs文件中,由于这部分 ...

  7. php 如何利用 soap调用.Net的WebService asmx文件

    原文:php 如何利用 soap调用.Net的WebService asmx文件 最近,帮一个同行测试用.net写的WebService接口,C#调用通过,现在需要测试一下php版本对它的调用,经过各 ...

  8. java中多种写文件方式的效率对比实验

    一.实验背景 最近在考虑一个问题:“如果快速地向文件中写入数据”,java提供了多种文件写入的方式,效率上各有异同,基本上可以分为如下三大类:字节流输出.字符流输出.内存文件映射输出.前两种又可以分为 ...

  9. 过滤器会拦截 前端页面加载 js文件的请求

    学艺不精啊.....之前就总结过博客: JAVA中解决Filter过滤掉css,js,图片文件等问题 结果现在又犯了老错误~ 情况如下: index.jsp 页面的验证码输入栏绑定了异步验证(jQur ...

随机推荐

  1. 视频: 千重浪Linux系统调试技术培训 03-01_Basic-CPU-Register

    免费轻松学习Linux系统调试技术 欢迎收看本工作室放到优酷上播放的免费教学视频. 清晰! 完整!  无病毒! 请点击:http://v.youku.com/v_show/id_XNjM1OTQ3Mj ...

  2. django控制admin的model显示列表

    class goods(models.Model):    name = models.CharField(max_length=300)    price = models.IntegerField ...

  3. JAVA 正则表达式 (超详细)

    (PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的Java JDK 1.40版本中 ...

  4. Python 结巴分词模块

    原文链接:http://www.gowhich.com/blog/147?utm_source=tuicool&utm_medium=referral PS:结巴分词支持Python3 源码下 ...

  5. 小学生玩ACM----优先队列

    思来想去,本人还是觉得,这个优先队列啊,不学不行,怎么说咧?虽说有时候我可以模仿它的功能,但是有的题目会坑的我大放血,况且多学会用一个小东东总不会伤身的撒,何况我是永举不垂的,哦耶,嘿嘿 优先队列嘛就 ...

  6. C++标准转换运算符const_cast

    前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针和引用上的转换问题,没有做详细地讲述.C++相比于C是一门面向对象的语言,面向对象最大的特点之一就是具有“多态性(Polymor ...

  7. LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡

    前言 首先声明下,由于这两天找资料,看了不少博客 ,但是出于不细心,参考者的博客地址没有记录下来,所有文中要是出现了与大家博客相同的地方,那么请大家在评论区说明并附上博客地址,我好引用进来:这里表示抱 ...

  8. 如何在 PHP 中处理 Protocol Buffers 数据

    Protocol Buffers是谷歌定义的一种跨语言.跨平台.可扩展的数据传输及存储的协议,因为将字段协议分别放在传输两端,传输数据中只包含数据本身,不需要包含字段说明,所以传输数据量小,解析效率高 ...

  9. c语言函数传递数组

    1.传递数组,打印不出来 #include <stdio.h> void solve() { printf(]); } int main() { int i; ;i<n;i++) { ...

  10. css笔记19:浮动的案例

    案例一: 1. 首先是01.html文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...