2011-09-05 34 views
5

Trong ứng dụng web của tôi, tôi có một số giá trị được tính toán trước được lưu trữ trong Page.Cache. Tại thời điểm này, tôi phải di chuyển chức năng này sang webservice.Có thể sử dụng Bộ nhớ cache trong dịch vụ web không?

Vì vậy, tôi cần giới thiệu chức năng tương tự trong dịch vụ web - tính toán giá trị trên lần gọi đầu tiên tới phương thức web và lưu trữ nó trong Cache.
Có thể đặt một số giá trị trong Bộ nhớ cache (không phải trong Ứng dụng hoặc Phiên - Tôi cần phải lọc các giá trị đó sau một khoảng thời gian) từ webservice không?

+0

'không có trong Ứng dụng hoặc Phiên' mà bạn muốn sử dụng bộ nhớ cache nào, một bộ nhớ mới? – TheCodeKing

+0

Như bạn thấy trong các câu trả lời dưới đây - có một cái gì đó như cũ, được biết đến 'Cache' :) –

+0

Đúng nếu là một câu hỏi cho bạn, cố gắng tìm ra yêu cầu của bạn là gì. Có bộ nhớ cache Thời gian chạy hoặc bạn có thể tạo bộ nhớ cache của riêng mình. Bạn cũng có thể sử dụng hết hạn gọi lại. – TheCodeKing

Trả lời

7

Bạn luôn có thể truy cập Bộ nhớ cache thông qua thuộc tính tĩnh HttpRuntime.Cache, ngay cả khi bạn không có HttpContext tại thời điểm này.

+0

Cách dễ nhất - đó là những gì tôi đang tìm kiếm. –

5

Tóm lại - có, bạn có thể sử dụng bộ nhớ đệm trong các dịch vụ web. Bạn phải chọn cài đặt bộ nhớ cache chính xác dựa trên việc triển khai dịch vụ. Ví dụ, nếu bạn đang sử dụng các dịch vụ web ASP.NET thì bạn có thể sử dụng ASP.NET Cache - có sẵn thông qua HttpContext.Current.Cache.

Nếu bạn đang sử dụng dịch vụ web WCF thì bạn có thể cần phải sử dụng các thư viện khác (BTW, dịch vụ web ASP.NET đã lỗi thời, vì vậy tôi sẽ đề xuất dịch vụ web WCF). Nếu WCF dịch vụ được đánh dấu là ASP.NET tương thích thì cơ sở hạ tầng ASP.NET và bộ nhớ cache của nó sẽ có sẵn. Nhưng bạn có sự lựa chọn để lưu trữ các dịch vụ WCF với sự tích hợp ASP.NET và trong trường hợp này, bạn có thể cần phải xem xét API bộ nhớ đệm khác nhau - ví dụ: System.Runtime.Caching nếu bạn đang sử dụng .NET 4 (xem quick tutorial để sử dụng trong bộ nhớ cache) nếu không bạn có thể thử Caching Application Block.

2

Bạn sẽ có thể sử dụng:

HttpContext.Current.Cache.Insert(strName, objItem, null, 
    DateTime.Now.AddMinutes(intMinutes), Cache.NoSlidingExpiration) 

để cache mục cho một khoảng thời gian xác định.

1

Tham khảo XML Web Service Caching Strategies

Nó có vẻ là một chút cũ nhưng tốt bài viết. Tôi hy vọng bạn sẽ có thể tìm thấy những gì bạn đang tìm kiếm.

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