2010-10-14 205 views
3

我需要開發一個專用的緩存服務(WCF服務或.Net遠程服務或其他實現)來從數據庫(SQL Server 2005)緩存數據(監測.net3.5延遲測量應用程序的數據),它可以然後被2-3個窗口服務(.net 3.5 WCf服務)使用,以便它們不需要重複調​​用數據庫。因此,基本上它是這些服務和數據庫之間的服務層的附加級別,以降低調用數據庫的性能損失。數據庫中的數據量很大且非常動態(我們希望緩存的數據在白天在數據庫中連續插入)。每個服務窗口服務都依賴於另一個服務(一個服務是從Db中的一個表中檢索數據,並將數據合併到DB中的另一個表中,然後由另一個服務使用)。我們有以下要求:如何在.net 3.5/4.0的專用緩存服務中實現緩存?

  1. 可能有推或從數據庫和服務推或檢索數據 到/拉模型 。
  2. 緩存必須通過 增量減少總 衝擊到DB和負載數據,而不是完全
  3. 重裝 數據的高速緩存數據是否在DB中的源數據已經改變必須被更新。 Sql緩存過期策略必須定義爲 。
  4. 應該有異步方法調用從DB和 緩存更新數據檢索,以儘量減少等待時間
  5. 緩存必須支持並行請求到一個單一的數據庫
  6. CPU和內存使用率應該在最佳水平保持它確實是這樣 不會對其他 服務產生負面影響。

我們沒有集羣或分佈式環境,也不是一個高度可擴展的解決方案。

我想知道什麼是實現此基礎上可避免使它過於複雜的多種技術的最佳途徑:

  1. .Net框架緩存
  2. 一致性緩存
  3. 速度
  4. 基於休息的服務WCF

任何建議和指導將是非常寶貴的即

問候, KK

+0

不好意思看到這個問題基本上去了墳場。 – 2011-03-21 15:41:38

回答

0

如果應用程序服務器在Windows Server 2008上運行,那麼你可以使用AppFrabric做緩存。

+0

原來的問題已經提到過 - AppFabric緩存的名字是Velocity。 – 2010-10-14 08:46:44

2

這聽起來很優雅,但優雅並不一定是好事。讓我擔心的不是使用緩存,而是試圖解決數據庫之外的固有數據庫問題 - 並不是每個公司都是微軟/甲骨文/ ......並且有足夠的人力來建立一個輝煌的數據庫。我相信你在數據庫性能方面存在問題,並且提出緩存作爲解決方案。但它不是一個純粹的緩存,它需要處理數據一致性和對數據的更改以及簡單的讀取,並且您正試圖處理經常發生變化的數據,因此不適合緩存。國際海事組織,這是一場災難。必須在另一個數據庫之前實現所有的數據庫功能,這是不對的。

簡化數據庫並取消規範。如果你仍然需要緩存,只需在你的項目中引用它,就可以在ASP.NET之外使用ASP.NET緩存;它擁有豐富的API,可滿足您的任何需求。

+0

+1非常好的答案。 – 2010-10-14 09:20:59