• IHttpHandler vs IHttpModule


    IHttpHandler vs IHttpModule

    My question is simple (although the answer will most likely not be): I'm trying to decide how to implement a server side upload handler in C# / ASP.NET.

    I've used both HttpModules (IHttpModule interface) and HttpHandlers (IHttpHandler interface) and it occurs to me that I could implement this using either mechanism. It also occurs to me that I don't understand the differences between the two.

    So my question is this: In what cases would I choose to use IHttpHandler instead of IHttpModule (and vice/versa)?

    Is one executed much higher in the pipeline? Is one much easier to configure in certain situations? Does one not work well with medium security?

    回答:

    An ASP.NET HTTP handler is the process (frequently referred to as the "endpoint") that runs in response to a request made to an ASP.NET Web application. The most common handler is an ASP.NET page handler that processes .aspx files. When users request an .aspx file, the request is processed by the page through the page handler. You can create your own HTTP handlers that render custom output to the browser.

    Typical uses for custom HTTP handlers include the following:

    • RSS feeds To create an RSS feed for a Web site, you can create a handler that emits RSS-formatted XML. You can then bind a file name extension such as .rss to the custom handler. When users send a request to your site that ends in .rss, ASP.NET calls your handler to process the request.
    • Image server If you want a Web application to serve images in a variety of sizes, you can write a custom handler to resize images and then send them to the user as the handler's response.

    An HTTP module is an assembly that is called on every request that is made to your application. HTTP modules are called as part of the ASP.NET request pipeline and have access to life-cycle events throughout the request. HTTP modules let you examine incoming and outgoing requests and take action based on the request.

    Typical uses for HTTP modules include the following:

    • Security Because you can examine incoming requests, an HTTP module can perform custom authentication or other security checks before the requested page, XML Web service, or handler is called. In Internet Information Services (IIS) 7.0 running in Integrated mode, you can extend forms authentication to all content types in an application.
    • Statistics and logging Because HTTP modules are called on every request, you can gather request statistics and log information in a centralized module, instead of in individual pages.
    • Custom headers or footers Because you can modify the outgoing response, you can insert content such as custom header information into every page or XML Web service response.

    From: http://msdn.microsoft.com/en-us/library/bb398986.aspx

    HTTP handler vs HTTP module

    HttpHandler is where the request train is headed. HttpModule is a station along the way.

    HttpHandler是目的地?
    HttpModule是火车到达目的地之前经过的站点?

    Nice. I would add that HttpContext is the train. Every station (Module) contributes to HttpContext in some way as it passes by.

    The two sentences:

    An HttpModule will execute for every request to your application, regardless of extension, and is generally used for things like security, statistics, logging, etc.

    An HttpHandler is generally associated with a specific extension, and is used for things like RSS feeds, dynamic image generation or modification, and the like.

    A little more explanation if that's not completely clear:

    The way I think about them - modules "plug in" to the request pipeline, whereas handlers "handle" a specific file extension. So, if you've got a site with a LoggingModule and a PdfHandler, both will execute for a request to http://example.com/sample.pdf, and the logging module alone will execute for a request to http://example.com/page.aspx.

    There's a pretty clear article on the difference on MSDN: HTTP Handlers and HTTP Modules Overview

  • 相关阅读:
    使用ANY、Some或All关键字
    Exists 和 Not Exists
    in和not in
    斐波那契数列 迭代与递归效率对比
    欧几里得算法
    递归
    字符长串破解密码
    对return函数的认识
    global与nonlocal关键字总结
    闭包
  • 原文地址:https://www.cnblogs.com/chucklu/p/12659551.html
Copyright © 2020-2023  润新知