2011-11-24 48 views

回答

4

HttpContext.Items真的返回一个HashTable(内存字典) - 这样称呼,如httpContext.Items[key] as MyObject将基本上已经到

  1. 字典中查找了上述关键
  2. 把对象

没有反序列化

性能好处将是一个相对术语 - 有多少这样的电话打了几次?这将是一个非常快速的通话,除非您在短时间内拨打数千个电话,我不会太担心。

+0

感谢您的信息。有趣。对于一个网站数量很大的每个请求,它都会被多次调用。我只是在考虑一些重构,以确保每次请求只能调用一次。只是试图决定它是否值得。 –

+0

@ Mark909,它取决于它被调用的地方?例如,如果页面代码重复调用它,则可以将该值缓存在变量中。用户控件可以从页面访问它。您需要通过比较您的平均请求响应时间与此次通话的时间(我相信这将在几微秒范围内)做出决定。 – VinayC

+0

它从PerWebRequest上的Castle实例化对象中调用,所以我可以将它作为变量存储在此对象中,而不是每次都从httpContext读取它。 –

-2

HttpContext非常大,因此应该避免。在侧面说明它是密封的,因此不能被单元测试和嘲笑。

var MyObjectInstance = httpContext.Items[key] = new MyObject(); 

项是一个哈希表对象,它包含键和值对,因此速度相对较快。

这篇文章可以帮助:http://msdn.microsoft.com/en-us/magazine/cc163730.aspx

+0

感谢downvote没有评论! –