2009-01-24 82 views
5

我來自LAMP世界,那裏的「緩存一切」心態流行。一切都放在memcache中。如何設計一個ASP.NET MVC網站用於Velocity緩存?

我開始使用ASP.NET MVC和SQL Server創建一個新項目。我可能會使用LINQ to SQL或者Entity Framework。我現在需要做什麼樣的設計決策來進行緩存,還是很容易開始使用Velocity(如果必要的話)?爲了清楚起見,我正在談論微軟的Velocity緩存而不是Apache Velocity模板引擎。我希望我可以暫時忽略緩存,因爲學習C#,ASP.NET MVC,LINQ,IIS,SQL Server,並在VS中變得精通,讓我的盤子充滿。

回答

1

@dswatic一個偉大的文章:非常感謝。它看起來像我可以稍後添加緩存,但很少有痛苦。以下是該網站的一個重要警告:

「如果使用對象關係設計器生成LINQ to SQL類,那麼您的LINQ to SQL類將不可序列化。要解決此問題,我將我的LINQ構建爲手動的SQL類「。

只有可序列化的對象可以用Velocity緩存。

再次感謝。

+0

的CTP1這裏是一個偉大的圖書館有人寫連載LINQ http://69.10.233.10/KB/linq/linqsqlserialization.aspx 如果使用Let或偷懶但是公平的警告Linq的加載特性不能被序列化。 – dswatik 2009-01-25 20:59:11

3

dswatik爲如何使用它提供了一個很好的鏈接。

我建議在你的Repository/Service層的某個地方添加這個功能,以減輕應用程序的負擔並保持DRY原則。

1

所選答案適用於Velocity CTP1。這裏是最新的Velocity Programming Guide的MSDN鏈接。

至於你關於設計決策的其他問題,Chad Moran的建議是把責任放在存儲庫層上,這很好。然後,我會考慮使用類似於此處描述的技術來添加對linq緩存的支持: http://petemontgomery.wordpress.com/2008/08/07/caching-the-results-of-linq-queries/

您顯然必須編寫一個使用Velocity而不是ASP.NET緩存的實現......但真的,除非你有統計數據證明你需要類似Velocity的東西,否則你可以堅持使用常規緩存,直到它成爲問題。如果你聽Joel Spolsky關於計算器的一些談話,你會發現兩個盒子(一個用iis,另一個用sql server)可以處理很大的音量。