2009-01-24 4 views
5

Tôi đến từ thế giới LAMP, nơi mà tâm trạng "cache everything" là phổ biến. Tất cả mọi thứ được đặt trong memcache.Làm thế nào để thiết kế một trang web ASP.NET MVC cho bộ nhớ đệm với Velocity?

Tôi đang bắt đầu một dự án mới với ASP.NET MVC và SQL Server. Tôi có thể sẽ đi với LINQ to SQL hoặc có thể Entity Framework. Có quyết định thiết kế nào tôi cần phải thực hiện ngay bây giờ để lưu vào bộ nhớ đệm hay là đủ dễ dàng để bắt đầu sử dụng Vận tốc nếu điều đó trở nên cần thiết? Rõ ràng, tôi đang nói về bộ nhớ cache Velocity của Microsoft chứ không phải là công cụ mẫu Apache Velocity.

Tôi hy vọng rằng tôi có thể bỏ qua bộ nhớ đệm cho thời điểm này, vì học C#, ASP.NET MVC, LINQ, IIS, SQL Server và trở nên thành thạo trong VS là giữ cho đĩa của tôi đầy.

Trả lời

1

@dswatic: Rất cám ơn. Có vẻ như tôi có thể thêm bộ nhớ đệm sau đó với mức độ đau tối thiểu. Đây là một cảnh báo quan trọng từ trang web đó mặc dù:

"Nếu bạn sử dụng Trình thiết kế quan hệ đối tượng để tạo các lớp LINQ to SQL thì lớp LINQ to SQL của bạn sẽ không được tuần tự hóa. Để khắc phục sự cố này, tôi đã xây dựng LINQ của mình Các lớp SQL bằng tay. "

Chỉ các đối tượng có thể tuần tự mới có thể được lưu trong bộ nhớ cache bằng Tốc độ.

Xin cảm ơn một lần nữa.

+0

Đây là một thư viện lớn một ai đó đã viết thư cho serialize LINQ http://69.10.233.10/KB/linq/linqsqlserialization.aspx cảnh báo Tuy nhiên công bằng nếu bạn sử dụng Lết hoặc lười biếng tải các tính năng của LINQ này không thể được serialized. – dswatik

3

dswatik cung cấp liên kết tuyệt vời về cách sử dụng.

Tôi muốn đề xuất thêm chức năng này ở đâu đó trong lớp Kho lưu trữ/Dịch vụ của bạn để giảm gánh nặng của ứng dụng và duy trì nguyên tắc DRY.

1

Câu trả lời được chọn là dành cho Tốc độ CTP1. Đây là liên kết MSDN cho Velocity Programming Guide mới nhất.

Đối với câu hỏi khác của bạn về các quyết định thiết kế, đề xuất của Chad Moran đưa thông tin lên lớp lưu trữ là rất tốt. Sau đó, tôi sẽ xem xét thêm hỗ trợ cho bộ nhớ đệm LINQ bằng cách sử dụng kỹ thuật tương tự như mô tả ở đây: http://petemontgomery.wordpress.com/2008/08/07/caching-the-results-of-linq-queries/

Bạn rõ ràng phải viết một triển khai sử dụng Velocity thay vì ASP.NET Cache ... nhưng thực sự , trừ khi bạn có số liệu thống kê để chứng minh rằng bạn cần một cái gì đó như Velocity, bạn có thể có thể dính với bộ nhớ cache thường xuyên cho đến khi nó trở thành một vấn đề. Nếu bạn nghe một số cuộc đàm phán mà Joel Spolsky đã đưa ra liên quan đến stackoverflow, bạn sẽ thấy rằng hai hộp (một với iis, và một với máy chủ sql) có thể xử lý một khối lượng cao rất.