asp.net WebForm中的一般处理程序、aspx页面深入学习

asp.net WebForm开发方式中,我们经常使用到一般处理程序和aspx页面。虽然我们经常在用,可我们有没有好好的对这两个东西好好深入了解呢? 我们不能只局限于会使用,我们还要理解他们的原理,今天我就和大家一起来更深入的学习一般处理程序和aspx页面,文章中间如果有那部分说的不对,欢迎各位指出,谢谢!

在我们开始深入学习之前,我们先来了解一下IHttpHandler接口的定义。如下图所示

asp.net WebForm中的一般处理程序、aspx页面深入学习_第1张图片

对上面的代码简单归纳就是对Http请求进行处理的,任何实现了该接口的类都可以对Http请求进行处理(调用各自的ProcessRequest()方式)。

那aspx页面继承自后台代码,后台代码有继承自Page类,所以aspx页面具有处理Http请求的能力,同样是一般处理程序,它也实现了IHttpHandler接口,也可以对Http请求进行处理。

我们还需要对asp.net的管道模型有所了解。

asp.net的管道有23个步骤,19个事件。用户的请求会通过管道流通,最终得到需要的内容。那一般处理程序和aspx页面在这个管道中的作用是什么呢?

在第7和第8个事件之间,会根据请求的类型创建一般处理程序或aspx页面类。在第11和第12个事件又会根据请求的是一般处理程序和aspx页面做出不同的处理。

如果是一般处理程序会直接调用一般处理程序的ProcessRequest()方法,执行开发人员编写的代码。如果是aspx页面,也会调用页面的ProcessRequest()方法,走页面的生命周期。

OK,介绍了上面的知识,下面我们就从一下四个方面对两者进行比较。


1.功能上


相同点:

(1)都实现了接口,都可以进行用户请求的操作

(2)都可以处理静态和动态页面

不同点

(1)aspx页面既可以作为页面呈现给用户,也可以对用户的请求进行处理(由此也可看出aspx的前台和后台两者之间是紧耦合的关系,而这种紧耦合是不利于项目某项内容的变更的);

(2)一般处理程序只能用来处理用户请求。


2.处理流程上


(1)一般处理程序处理动态页面的时候需要把整个页面加载到服务器,接下来替换某些内容;处理图片等内容时会直接返回响应报文。

(2)而aspx页面大多使用了服务器控件,可以通过不加载整个页面而更新页面。

(3)一般处理程序通过设置content-type设置返回的类型,可以返回静态页面,也可以返回图片,字符串等内容。一般处理程序处理静态数据比较合适,但是处理动态或页面的时候就会变的比较麻烦。他需要先把页面读取到服务器,然后再替换读取到的里面的某项数据,比较麻烦。

(4)aspx是动态服务器页面的意思,aspx页面中也可以放置服务器控件,这样后台就可以通过服务器控件的Id进行控件的更新以及读取操作,当需要更改某项内容时也不需要进行整个页面的读取操作,只需要更改某个控件的属性即可。相对于一般处理程序而言,很是方便。


3.性能上


性能上,一般处理程序要比aspx页面高一些,可以从以下两个方面得出此结论。

(1)根据管道模型可以知道,在第11和第12个事件之间,aspx页面比一般处理程序多走了一个页面生命周期。

(2)aspx页面中有特殊ViewState状态管理机制,而ViewSate的使用虽然方便,却会占有带宽,影响性能(虽然我们能够禁用某个页面的ViewState属性,但是在表单中还是会有简单的ViewState存在,并不能完全禁用)。


4.应用范围上


如果你考虑到开发效率,建议你使用aspx;

如果你考虑性能,建议你使用一般处理程序;


OK,两者的比较结束。

你可能感兴趣的:(asp.net)