【问题标题】:Httphandler and Httpmodule in asp.netasp.net 中的 Httphandler 和 Httpmodule
【发布时间】:2011-06-05 10:05:25
【问题描述】:

据我所知,asp.net 满足任何 Web 应用程序的所有要求,但在 asp.net 中创建自定义 httphandler 和 httpmodule 的基本规则是什么。

编辑:例如我想从数据库中获取图像那么我应该使用 httphandler 还是通常从数据库中读取图像。如果是 httphandler 那么为什么?

【问题讨论】:

  • 《群规》在什么方面?我不确定你在问什么。
  • 请详细说明您的问题,它有点宽泛...
  • @Chris & Brian:我想从数据库中获取图像,我的架构师建议我使用 httphandler,所以我问了这个问题,决定何时在 asp 中使用自定义处理程序或模块的基本规则是什么.net
  • 关键是使用正确的工具来完成正确的工作。了解更多关于 HttpHandler 和 HttpModule 对象以了解它们的作用以及创建它们的原因对您很有帮助。一旦您知道这些工具的确切作用,您就可以选择正确的工具。对于它的价值,在我看来,你的建筑师对它们有很好的理解。我同意他的建议。
  • @Joel:你是对的。所以我发到这个论坛来增加我的理解

标签: asp.net


【解决方案1】:

好的,现在我们知道您想从数据库中提取图像。

是的,使用通用处理程序 (.ashx) 是执行此操作的最佳方式。

就像说添加 |新建项目并从列表中选择通用处理程序。

通用处理程序没有完整的页面生命周期,这使得它们更快更容易处理。您只需要在 ProcessRequest 方法中提供一些代码,即可将图像从数据库中拉出并 response.binary 写入浏览器。

【讨论】:

    【解决方案2】:

    作为一个经验法则HttpHandlers 是当您需要向浏览器、页面、图像或某些具体资源提供某些内容时。而HttpModules 用于响应服务器上发生的管道中的事件。即处理错误、重写 url、记录内容、检查登录 cookie、过滤输入或输出流等。

    【讨论】:

      【解决方案3】:

      HTTPHandlers 来处理请求。但是 HTTPModules 是访问请求上的生命周期事件。您可以只有一个 HTTPHandler,但可以插入多个 HTTPModule 来检查和处理请求。

      【讨论】:

        【解决方案4】:

        首先,请记住,ASP.NET 页面是一个 HTTP 处理程序,只是一个功能更丰富的处理程序。 (System.Web.UI.Page 类实现了IHttpHandler。)

        正如 Chris Lively 所指出的,通用 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 控件可以提供帮助.

        编程愉快!

        【讨论】:

          【解决方案5】:
          • HTTP 模块: 每次请求前后都会调用。
          • HTTP Handler:是处理请求的过程(特别是.aspx页面)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-06-01
            • 1970-01-01
            • 2014-05-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-09
            相关资源
            最近更新 更多