与使用.aspx相比,使用HTTPHandler有哪些优势?它是否具有相同的功能,它是否更轻、更快?
它有哪些缺点?
发布于 2010-08-18 05:35:29
Aspx使用功能强大的Web表单,具有复杂的页面生命周期和大量额外的处理。HttpHandler是纯粹和轻量级的。它只有你实现的功能。
发布于 2010-08-18 05:55:06
请记住,在编译.aspx页面时,它将被直接或间接地转换为从System.Web.UI.Page派生的类(通过继承“代码隐藏”类,而后者又直接或间接地继承自Page )。
Page实现了IHttpHandler,因此您永远不会不使用IHttpHandler。
快速浏览一下Page的成员列表,就能很好地回答这个问题。现在发生了很多事情,并且提供了很多派生类(即.aspx文件和后面的代码)。这是在我们考虑如何解析.aspx文件以使编写包含大量“模板”代码的代码变得非常容易之前。
如果您编写自己的处理程序,您将失去所有这些。失去它会给你带来性能提升,但并不像你想象的那样多,如果不使用它,不会花很多钱。事实上,如果你确实丢失了你需要的东西,你自己找回它的方法很可能效率较低。
如果编写有问题的处理程序的自然方法是让代码隐藏中的单个事件处理程序直接或间接(方法调用)发生所有事情,并且使用一个空的.aspx,那么将其编写为处理程序可能更清楚,在这种情况下是这样做的。否则,您将继续使用.aspx文件。
发布于 2010-08-18 05:51:30
说到.aspx,您实际上是指System.Web.UI.Page的一个实例,正如您在该类的元信息中看到的那样,它是IHttpHandler的一个实现-换句话说(粗略地说),一个页面实例是一个HttpHandler (这就是重点)加上一大堆赋予它页面行为的东西。
因此,不同之处在于,使用Page可以利用它提供的所有功能(视图状态、可控性、生命周期等)。代价是必须拥有所有的开销,无论您是否需要它,而不是编写您自己的实现,在这种实现中,您可以让它变得轻量级,适合您选择的目的,代价是必须自己编写所有这些实现。
因此,如果您对页面支持不感兴趣,因为您不是在传递语义页面响应,那么HttpHandler尤其适合-几乎可以肯定的是,使用页面传递XML、图像或任何东西都是错误的。
在实践中,我选择了第三个选项- MVC -大多数情况下:)
https://stackoverflow.com/questions/3507138
复制相似问题