• louis vuitton outlet
  • nike air max
  • ray ban uk
  • oakley sunglasses outlet
  • cheap jordan shoes
  • toms outlet
  • Cheap Oakleys Sunglasses
  • fifa coins
  • ray ban
  • cheap uggs
  • ray ban uk
  • nike air max
  • ray ban outlet
  • burberry uk
  • fut coins
  • fut 14 coins
  • fut coins
  • Christian Louboutin Outlet
  • michael kors outlet
  • coach outlet
  • louis vuitton outlet
  • fifa coins
  • ray ban
  • Custom iphone cases
  • nike
  • monster beats
  • nike outlet
  • Christian Louboutin Outlet
  • burberry outlet
  • coach outlet
  • iphone cases
  • LV
  • new balance
  • Espresso Tip: IHttpHandler and IsReusable

    Espresso Tip: IHttpHandler and IsReusable

    On December 12, 2011, in Uncategorized, by reverentgeek

    Building an HttpHandler in .NET is an efficient way to serve specific types of HTTP requests. For example, dynamic images, dynamic script libraries, secured files, and Atom feeds are good candidates for using HttpHandlers.

    When implementing the IHttpHandler interface, the read-only IsReusable property lets the server know whether or not an instance of your handler can be pooled and reused for other requests. Setting this property to true can be great for performance, but requires you to carefully consider two questions:

    1. Is the code thread safe?
    2. Does an instance of this HttpHandler have state or contextual information that would not apply or be completely wrong for another request?

    I recently failed to consider the second question when building an HttpHandler for a multitenancy Web application. In a multi-tenant application, a single instance of an application is used to serve requests for multiple environments, each of which have distinct data that should be isolated from the others. For example, a multi-tenant application could be an online project management system where each organization has projects and users that are only visible to that organization. Obviously, you wouldn’t want your super-secret, million-dollar-idea project to “magically” appear on another organization’s project list!

    In my case, the result was not as serious as that, but I did have to eat a little humble pie and roll back the application. Lesson learned. I hope this espresso-sized post helps you build better apps, and avoid the same mistake!

     
    • Daniel Fisher(lennybacon)

      Don’t do state at all in web apps. It violates the RFC spec :-)

      • Anonymous

        I should have stuck with “context” of the previous request :)

    • Pingback: The Morning Brew - Chris Alcock » The Morning Brew #1001

    • http://PauloMorgado.NET/ Paulo Morgado

      Why is thread safety an issue regarding IHttpModule.IsReusable?

      IHttpModule.IsReusable should be false when destructing the context of the previous request is more costly then creating a new instance of the handler.