2012-04-25 19 views
5

Tôi đã đọc một chút về bộ nhớ đệm trong C# 3.5. Có một chút bối rối và sẽ đánh giá cao làm rõ về việc xây dựng sự khác biệt giữaHttpContext.Current.Cache vs. HttpRuntime.Cache

HttpContext.Current.Cache vs HttpRuntime.Cache vs System.Web.Caching.Cache

Cũng là những gì, tôi đã đọc sử dụng bất kỳ ở trên trong ứng dụng phi web không được khuyến khích nhưng nó hoạt động. Những hạn chế là gì?

Trả lời

11

System.Web.Caching.Cache là loại triển khai bộ nhớ cache cho ứng dụng web. HttpContext.Current.Cache chỉ là một wrapper và trở HttpRuntime.Cache đó là gì, nhưng thể hiện của System.Web.Caching.Cache.

Cập nhật

Tham khảo Is it OK to use HttpRuntime.Cache outside ASP.NET applications? cho phần thứ hai của bạn.

Cập nhật: Tại sao HttpRuntime.Cache cần được gói?

Trong Ý kiến ​​cá nhân của tôi, HttpContext là loại mà được thông qua để IHttpHandler.ProcessPostBackHttpApplication lộ HttpContext định được thông qua IHttpModule.Init. Điều này sẽ đảm bảo tất cả các phụ thuộc được tiêm bằng cách sử dụng phương pháp tiêm. Do đó họ đã giới thiệu một mức độ vô đạo đức.

Trình xử lý và Mô-đun sẽ không biết gì về HttpRuntime mà chúng được lưu trữ trên đó. Trong khi bạn đang ở trong một trang ASP.NET, bạn nên sử dụng this.Page.Cache thay vì HttpContext.Current.Cache hoặc HttpRuntime.Cache khi sử dụng HttpContext.Current sẽ liên quan đến chi phí giải quyết luồng hiện tại và HttpRuntime.Cache sẽ tạo phụ thuộc bên ngoài. Page.Cache được khởi tạo với số HttpContext.Cache được chuyển đến ProcessRequest

+1

Tại sao 'HttpRuntime.Cache' cần được bao bọc? –

+0

Đã cập nhật câu trả lời của tôi – Ramesh

Các vấn đề liên quan