2011-11-11 3 views
25

私はasp.netで初心者だし、キャッシュのいくつかの質問がありますHttpRuntime.Cacheを使用する必要がありますか?

  1. をHttpRuntime.Cacheはseverals方法を提供し、私は自分で辞書でこれらのメソッドを実装することが可能だと思います。
  2. HttpRuntime.CacheがDictionaryよりもはるかに優れている場合、なぜ自分のキャッシュフレームワークを実装したい人がいるのでしょうか。
  3. MSエンタープライズキャッシュブロックはどうですか?

答えて

72

HttpRuntime.Cacheはseverals方法を提供し、私は自分で辞書でこれらのメソッドを実装する ことだと思います。

あなたは間違っていると思います。 HttpRuntime.Cacheは単純な辞書よりもはるかに優れています。スレッド安全性とキャッシュ有効期限ポリシーを提供します。カスタム実装を使用し、Webファームに役立つ分散キャッシュの恩恵を受ける可能性があります。ディクショナリでこれを実装することは、基本的に車輪を再発明するように、また車輪を再発明してもスリムな権利を得る機会を邪魔しなくても、おそらく冒険したくない仕事がたくさんあります。

2)HttpRuntime.Cache辞書よりもはるかに優れている場合は、なぜ一部の人々 は独自のキャッシュフレームワークを実装したいと思います。

人々はそれをしたくありません。

3)MSエンタープライズキャッシュブロックはどうですか?

これはフレームワークがあなたに提供してくれたもので実現できるシンプルなキャッシングが必要なときに必ずしも必要ない重い砲弾です。

備考:.NET 4.0では、HttpRuntime.Cacheの代わりに新しいSystem.Runtime.Caching名前空間を使用する必要があります。

だから、あなたの質問に答えるために:あなたは新しいSystem.Runtime.Caching名前空間のクラスを使用する必要があり、その場合には、.NET 4.0を使用している場合を除き、はいShould I use HttpRuntime.Cache

を。

+0

あなたの素晴らしい答えに感謝します。さらに質問があります。Consoleのような非WebアプリケーションでHttpRuntime.Cacheを使用する人がいますが、これはちょっと不思議ですね。あなたはそれを見たことがありますか? –

+2

@ Domi.Zhang、はい、私はそれを見ました。それは動作しますが、System.Webアセンブリに依存する必要があります。 Microsoftが.NET 4.0の別のアセンブリにキャッシングを外部化することを決めたのはそのためです。 –

+0

Darin、Httpruntimeキャッシュのような有効期限を欲しいのですが? System.Runtime.Caching –