HTTPHandler与.aspx

时间:2010-08-17 21:32:04

标签: .net asp.net httphandler

使用HTTPHandler与.aspx有什么好处?它是否具有相同的功能,重量更轻,速度更快?

有哪些缺点?

4 个答案:

答案 0 :(得分:2)

Aspx使用具有复杂页面生命周期和大量附加处理的全功能Web表单。 HttpHandler纯粹而轻巧。它只有你实现的功能。

答案 1 :(得分:1)

请记住,当你的.aspx页面被编译时,它将变成一个直接或间接派生自System.Web.UI.Page的类(通过从“代码隐藏”类继承,而后者又是直接或间接地从Page继承。

Page实施IHttpHandler,因此您永远不会使用IHttpHandler

快速浏览Page成员列表,可以很好地回答这个问题。有很多事情要做,并且提供很多类(即.aspx文件和代码后台)。在我们考虑解析.aspx文件的方式之前,这样就可以很容易地编写包含大量“模板”代码的代码。

如果您编写自己的处理程序,您将失去所有这些。失去它会给你带来性能提升,但没有你想象的那么多,如果不使用它会花很多钱。事实上,如果你确实失去了你需要的东西,你自己的回归方法效率可能会降低。

如果编写有问题的处理程序的自然方式是从代码隐藏中的单个事件处理程序直接或间接(方法调用)发生所有事情,并且使用空的.aspx,则可能更清楚把它写成一个处理程序,在这种情况下。否则,您希望坚持使用.aspx文件。

答案 2 :(得分:0)

通过.aspx你真的是指System.Web.UI.Page的一个实例,你可以在该类的元信息中看到它是IHttpHandler的一个实现 - 换句话说(粗略地说)一个Page实例一个HttpHandler(这是重点)加上一大堆给它的行为的东西。

不同之处在于,使用Page可以充分利用它为您提供的所有功能(查看状态,控制权,生命周期等等),代价是必须承担所有这些开销而不管其他什么你需要与否,编写你自己的实现,你可以把它变得轻巧,适合你的目的,因为你必须自己编写它。

因此,当您对页面支持不感兴趣时​​,HttpHandler特别合适,因为您没有提供语义页面响应 - 提供XML,JSON,图像或HTML格式标记以外的任何内容几乎肯定是错误的有一个页面。

在实践中,我选择第三种选择 - MVC - 大多数时候:)

答案 3 :(得分:0)

根据页面/处理程序的作用,我使用普通处理程序而不是页面提高了5到15%的性能 - 它们通常是生成图像,json等,从ajax请求处理后台任务的不错选择,或者像访问图像请求的访客一样。

如果您编写了大量的html,处理程序会有点痛苦 - 构建html字符串的错误可能会超过性能优势。

使用处理程序丢失的一个重要事情是使用输出缓存声明进行简单的缓存 - 您当然可以以编程方式自行连接,但我发现aspnet通常比任何事情都更好地执行缓存管理写得很快。