因为我知道asp.net满足任何web应用程序的所有要求,但是在asp.net中创建自定义httphandler和httpmodule的基本规则是什么。在asp.net中的Httphandler和Httpmodule
编辑:例如,我想从数据库中获取图像,然后我应该使用httphandler或通常从数据库读取图像。如果httphandler那么为什么?
因为我知道asp.net满足任何web应用程序的所有要求,但是在asp.net中创建自定义httphandler和httpmodule的基本规则是什么。在asp.net中的Httphandler和Httpmodule
编辑:例如,我想从数据库中获取图像,然后我应该使用httphandler或通常从数据库读取图像。如果httphandler那么为什么?
HTTPHandlers处理请求。但HTTPModules将访问请求上的生命周期事件。您只能有一个HTTPHandler,但可以插入多个HTTPModule来检查和处理请求。
好吧,现在我们知道你想从数据库中提取图像。
是的,使用通用处理程序(.ashx)是最好的方法。
这就像是说添加|新建项目并从列表中选择通用处理程序。
通用处理程序没有整个页面生命周期,这使得它们更快更容易处理。您只需在ProcessRequest方法中提供一些代码以将图像从数据库中提取出来,然后将response.binary写入浏览器。
根据拇指规则,HttpHandlers
是您需要向浏览器,页面,图像或某些具体资源提供某些内容的时候。而HttpModules
用于响应服务器上发生的事件。即处理错误,重写URL,记录东西,检查登录cookie,过滤输入或输出流等。
首先,请记住,ASP.NET页面是一个HTTP处理程序,只是一个功能更丰富的页面。 (该System.Web.UI.Page
类实现IHttpHandler
。)
正如克里斯·莱弗利指出,通用HTTP处理程序 - 这是你创建一个类实现IHttpHandler
- 将是比使用,因为它标准的ASP.NET页面更简单,更高效不会贯穿整个页面生命周期,允许您专注于在ProcessRequest
方法中制作输出,依此类推。
但是,如果手头的任务是专门从数据库中显示图像,而不是编写自己的HTTP处理程序,则考虑使用Microsoft的GeneratedImage control。
简而言之,GeneratedImage控件是由Microsoft创建的HTTP处理程序基类,用于显示数据库图像。它很容易使用,支持缓存和一系列其他功能。为什么重新发明轮子?请参阅:Dynamically Generating and Caching Images in ASP.NET with the GeneratedImage Control。这里是文章的简介:
GeneratedImage控件是一个ASP.NET Web控件和一组类的组合,它们有助于以编程方式创建,提供,缓存和转换图像。如果将图像存储在需要从网页提供的数据库中,如果您需要即时创建图像,或者需要调整大小,添加水印或执行其他图像转换,那么GeneratedImage控件可以提供帮助。
快乐编程!
.aspx
页)
“组中的规则”?我不确定你在问什么。 – NotMe 2011-01-07 17:14:41