使用HttpContext.Items的开销很大

时间:2011-11-24 09:09:18

标签: c# asp.net .net

我有一些代码如下

var MyObjectInstance =  httpContext.Items[key] as MyObject

此代码中有什么开销。是否需要反序列化对象以及执行转换。减少这些呼叫的数量是否有显着的性能优势?

3 个答案:

答案 0 :(得分:5)

HttpContext.Items确实返回HashTable(内存中的字典) - 因此httpContext.Items[key] as MyObject之类的调用基本上必须

  1. 在字典中查找所述密钥
  2. 投射对象
  3. 没有反序列化

    绩效福利将是一个相对的术语 - 这样的呼叫多少次?这将是一个非常快速的通话,除非你在短时间内拨打数千个电话,我不会太担心它。

答案 1 :(得分:0)

HttpContext.Items(IDictionary)集合非常有用,特别是如果我们想要在服务器端存储对象。看一些有趣的文章 - 3 hot uses for HttpContext.Current.Items they wont tell you about.When can we use HttpContext.Current.Items to stores data in ASP.NET?

答案 2 :(得分:-2)

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

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

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

本文可能有所帮助:http://msdn.microsoft.com/en-us/magazine/cc163730.aspx