6

私はc#3.5でのキャッシュについて少し読んでいます。少し混乱しましたが、の違いを詳しく説明していただければ幸いです。

HttpContext.Current.CacheHttpRuntime.CacheSystem.Web.Caching.Cache

また、Web以外のアプリケーションで上記のいずれかを使用して読んだことはお勧めしませんが、機能します。欠点は何ですか?

4

1 に答える 1

11

System.Web.Caching.CacheWeb アプリケーションのキャッシュを実装する型です。 HttpContext.Current.Cacheは単なるラッパーでありHttpRuntime.Cache、のインスタンスにすぎませんSystem.Web.Caching.Cache

アップデート

ASP.NET アプリケーション外で HttpRuntime.Cache を使用してもよろしいですか? を参照してください。あなたの第二部のために。

更新: HttpRuntime.Cache をラップする必要があるのはなぜですか?

私の個人的な意見HttpContextは、渡される型と渡される型をIHttpHandler.ProcessPostBack公開HttpApplicationHttpContextますIHttpModule.Init。これにより、メソッド注入を使用してすべての依存関係が確実に注入されます。したがって、彼らは間接的なレベルを導入しました。

ハンドラーとモジュールは、それらがホストされている HttpRuntime を認識しない必要があります。ASP.NET ページにいる間は、this.Page.Cache代わりに使用することをお勧めします。HttpContext.Current.CacheまたはHttpRuntime.Cache、HttpContext.Current を使用すると、現在のスレッドを解決するオーバーヘッドHttpRuntime.Cacheが発生し、外部依存関係が作成されるためです。に渡される でPage.Cache初期化されますHttpContext.CacheProcessRequest

于 2012-04-25T06:17:26.103 に答える