BOOL在HTTP处理程序接口中可重用的意义

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

在编写http处理程序/模块时,有一个接口成员要实现,称为布尔IsReusable

这位议员的意义何在?如果我将其设置为false(或true),这对其他web应用程序意味着什么?

提问于
用户回答回答于

处理程序的正常入口点是ProcessRequest方法。但是,类构造函数中可能有代码,它将一些实例值合并在一起,这些值的构建成本很高。

如果指定可重用为true,则应用程序可以缓存实例并在另一个请求中重用它,只需一次又一次地调用它的ProcessRequest方法,而不必每次都重新构造它。

应用程序将实例化这些处理程序中处理当前负载所需的数量。

缺点是,如果所需实例的数量大于当前的实例,则会导致使用更多的内存。相反,它们还可以减少明显的内存使用,因为它们的实例值将在GC循环中存活,并且不需要频繁地重新分配。

另一个警告是,需要确保在ProcessRequest执行结束时,对象状态与另一个请求重用该对象的状态相同。

用户回答回答于

进一步了解anthonyWJones的答案,如果HTTP处理程序返回trueIsReusable然后,应该确保它是完全线程安全的。

文档中没有任何东西表明可重用的处理程序不能同时重用,尽管当前的Microsoft实现似乎只是连续地重用它们。

扫码关注云+社区