2009-01-29 32 views

Trả lời

-2

bất cứ loại bạn được lưu trữ trong bộ nhớ cache của trình ... nó phải được serializable dù

+1

nếu bộ nhớ cache trong bộ nhớ bạn không cần phải tuần tự hóa –

14

Nếu tôi là bạn, tôi sẽ không dựa trên thực tế là dịch vụ được lưu trữ trong IIS. Nếu bạn muốn lưu trữ dịch vụ WCF của bạn với một số công nghệ khác thì sao? Tôi nghĩ rằng bạn nên kiểm tra memcached đó là một giải pháp bộ nhớ đệm tổng quát hơn nhiều, và nó hoạt động tốt với .NET.

Dù sao, nếu bạn thực sự muốn sử dụng bộ nhớ cache IIS, hãy sử dụng System.Web.HttpRuntime.Cache thay vì HttpContext.Current.Cache dưới dạng HttpContext không phải lúc nào cũng khả dụng.

Ngoài ra, như cruizer nói, loại thực tế của đối tượng của bạn là hoàn toàn không thích hợp miễn là họ đang serializable (có nghĩa là, các lớp học được trang trí với [Serializable) (] thuộc tính). Bộ nhớ cache IIS chính nó không yêu cầu đối tượng serializable nhưng WCF nào.

+0

tôi đồng ý. tránh kết nối chặt chẽ dịch vụ của bạn để làm việc chỉ với IIS. – cruizer

+1

Tôi cũng đồng ý. Xin vui lòng không vài dịch vụ WCF. Nó khiến Juval Lowy khóc. –

+0

+1 cho mẹo System.Web.HttpRuntime.Cache. Tôi đã có một vấn đề với HttpContext.Current.Cache mà không nhận ra đó là nguyên nhân, cố định khi tôi chuyển sang HttpRuntime, nhờ –

2

Bạn tuần tự hóa các đối tượng của mình để truyền tải chúng, nhưng không cần phải lưu trữ các đối tượng có thể tuần tự được.

Dịch vụ của bạn gọi logic kinh doanh của bạn để xử lý các yêu cầu nhưng những gì vượt qua dây không phải là đối tượng kinh doanh của bạn nhưng hợp đồng dữ liệu của dịch vụ.

Quấn API bộ nhớ cache của bạn và tách nó khỏi Bộ đệm ẩn HttpRuntime. Như DrJokepu đã nói, hãy truy cập bộ nhớ đệm asp.net thông qua HttpRuntime.Cache nếu bạn chọn như vậy.

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