gpt4 book ai didi

c# - IHttpHandler.IsReusable 有什么用?

转载 作者:IT王子 更新时间:2023-10-29 03:35:45 26 4
gpt4 key购买 nike

我正在编写一个 IHttpHandler,我需要实现一个 IsReusable 属性。当我查看 MSDN documentation它说:

Gets a value indicating whether another request can use the IHttpHandler instance.

这不是很有帮助。 我应该在哪些情况下使用可重用处理程序,在哪些情况下不应重用?

跟进问题:

  1. 什么是重用?
  2. Reusable = true 时,我可以维护状态(即类变量)吗??

最佳答案

此属性指示是否可以使用同一个 IHttpHandler 实例处理多个请求。默认情况下,在请求管道的末尾,放置在 HttpApplication 的 handlerRecycleList 中的所有 http 处理程序都设置为 null。如果处理程序是可重用的,则不会将其设置为 null,并且该实例将在下一个请求中重用。

主要的好处是性能,因为要垃圾收集的对象会更少。
可重用处理程序最重要的痛点是它必须是线程安全的。这不是微不足道的,需要一些努力。

如果您只使用托管资源,我个人建议您保留默认值(不可重用),因为垃圾收集器应该可以轻松处理它们。与引入难以发现的线程错误的风险相比,可重用处理程序带来的性能提升通常可以忽略不计。

如果您决定重用处理程序,您应该避免在类变量中维护状态,因为如果同时访问处理程序实例,多个请求将写入/读取值。

关于c# - IHttpHandler.IsReusable 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com