首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IsReusable在http处理程序接口中的意义

IsReusable在http处理程序接口中的意义
EN

Stack Overflow用户
提问于 2009-02-11 23:14:17
回答 3查看 24.5K关注 0票数 132

在编写http处理程序/模块时,需要实现一个名为- bool IsReusable的接口成员。

这位成员的意义是什么?如果我将其设置为false (或true),这对web应用程序的其余部分意味着什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-11 23:21:01

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

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

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

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

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

票数 153
EN

Stack Overflow用户

发布于 2009-02-11 23:34:47

根据AnthonyWJones的回答,如果您的HTTP处理程序为IsReusable返回true,那么您应该确保它是完全线程安全的。

文档中没有任何内容表明可重用的处理程序不能同时重用,尽管当前的Microsoft实现似乎只是连续重用它们。但是,至少在理论上,单个处理程序实例可以被多个请求同时重用,因此您不应该依赖任何可能被其他并发线程修改的数据。

票数 47
EN

Stack Overflow用户

发布于 2010-12-11 01:21:41

如果您没有在该实例中存储任何状态(即:您没有任何字段(也称为“类变量”)),那么重用它应该是安全的。

默认情况下,为了安全起见,它是false。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/539302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档