HTTP处理程序HTTP VS模块HTTP处理程序HTTP VS模块(HTTP handler vs

2019-05-12 19:48发布

在不到2句两之间的差异有人能解释一下吗? 是的,我知道,谷歌能提供数百​​个答案,但没有一个在2个语句清楚:)

Answer 1:

HttpHandler的是在请求火车前往。 HTTP模块是沿途车站。



Answer 2:

就两句话:

一个HttpModule将执行的每个请求您的应用程序,无论扩展的,并且通常用于诸如安全,统计,日志等。

一个HttpHandler通常具有特定扩展名相关联,并且可用于改变如RSS Feed,动态图像生成或修改,等等。

多一点的解释,如果这不是完全清楚:

我想他们的方式 - 模块“插入”到请求管道,而处理程序“处理”一个特定的文件扩展名。 所以,如果你已经有了一个LoggingModule和PdfHandler一个网站,都将执行了一个请求http://example.com/sample.pdf ,并单独记录模块将用于执行一个请求HTTP:// example.com/page.aspx 。

有一个在MSDN上的差异很明显文章: HTTP处理程序和HTTP模块概述



Answer 3:

的HttpHandler和HTTP模块的主要和共同的目标是ASP.NET请求到达IIS服务器之前注入预处理逻辑。

ASP.NET提供在请求管道注入逻辑的两种方式;

  1. HTTP处理程序:HTTP处理程序帮助我们根据请求的文件名的扩展注入预处理逻辑。 ASP.NET使用HTTP处理程序实现了很多自己的functionality.For例如,ASP.NET使用处理程序处理的.aspx,和的.asmx文件的trace.axd。

例如:RSS提要:要创建一个网站的RSS源,您可以创建发出RSS格式的XML的处理程序。 因此,当用户发送到您的网站中的.rss结尾的请求,ASP.NET调用处理程序来处理请求。

有参与创建处理程序1.实现IHttpHandler接口三个步骤。 在web.config中或machine.config文件2.注册处理程序。 3.地图文件扩展名(* .arshad)在IIS到aspnet_isapi.dll。

IHttpHandler接口具有ProcessRequest方法和IsReusable属性需要被实施。 的ProcessRequest:在这种方法中,你写的生产处理程序的输出的代码。 IsResuable:这个属性告诉这个处理程序是否可以重复使用与否。

你可以注册在这样的web.config文件中的处理程序

<httpHandlers>
   <add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>

注意:在这里我们处理与扩展艾尔沙德任何文件名。

  1. HTTP模块:HTTP模块是基于事件的处理器的请求到达IIS服务器之前注入预处理逻辑。 ASP.NET使用HTTP模块来实现大量的自己的功能,例如身份验证和授权,会话管理和输出缓存等。

ASP.NET引擎发出大量的事件为请求passess通过请求管道。 其中有些事件是AuthenticateRequest,的AuthorizeRequest,的BeginRequest,EndRequest。 通过使用HTTP模块,你可以写在这些事件的逻辑。 这些逻辑得到执行的事件触发和请求之前到达IIS。

有参与创建模块的两个步骤,1.实施IHttpModule的接口2.在web.config中或machine.config文件注册模块

例如:安全性:使用HTTP模块,可以请求到达IIS之前执行自定义身份验证或其他安全检查。



Answer 4:

HTTP处理程序是响应于到ASP.NET Web应用程序做出的请求运行的过程。 HTTP模块让您检查传入和传出请求,并根据请求采取行动。



Answer 5:

HttpHandler的负责通过扩展处理HTTP请求,而HTTP模块是响应应用程序生命周期事件。



Answer 6:

好的文章aboute它的HttpModule-和HttpHandlers的

参考:INFO:ASP.NET HTTP模块和HTTP处理程序概述

“模块是之前和之后的处理程序执行调用。 模块使开发人员能够拦截,参与或修改每个单独的请求。 处理程序用于处理各个端点的请求。 处理程序使ASP.NET框架在应用程序中处理单个HTTP URL或URL扩展组。 不同于模块,只有一个处理程序用于处理请求”。



Answer 7:

HTTP处理程序是这里居然编译基于设置完成。 例如,如果页面扩展的.aspx那么它会通过system.web.Ui.Pagahandlefactory编译。 一旦编译在HTTP请求处理做会虽然HTTP模块和IIS。



文章来源: HTTP handler vs HTTP module