2012-01-06 34 views
0

我有幾個(小尺寸)表,保存在我僅用於讀取的表存儲器中。 當我的服務開始時,我想讀取所有表格,將數據保存在數據結構(即列表)中,並從那裏讀取該列表。 有沒有辦法做到這一點,或者我每次需要數據時都必須從表格存儲讀取數據? 如果有辦法,應該在哪裏聲明List,以及它應該在哪裏被初始化?在Windows Azure中保存WCF服務的數據 - 非常基本

謝謝。

回答

1

Azure緩存可能是最好的路線,但是有明顯的成本。

您可以將WCF服務聲明爲單例並將數據存儲爲靜態屬性嗎?

+0

你不需要單身來將數據存儲在靜態屬性中。只需要有一個靜態構造函數(a.k.a.類型初始值設定項)來填充靜態屬性,並且永遠不會改回它。那麼它有多少個實例並不重要,你仍然會擁有該類型的靜態屬性並使用它。 – astaykov 2012-01-06 20:51:33

+0

使用了一個靜態屬性。似乎工作得很好:)謝謝astaykov – 2012-01-30 15:10:23

0

如果列表不太大,可以使用Windows Azure緩存組件http://www.windowsazure.com/en-us/home/tour/caching/。在服務的初始化過程中,從表格中讀取信息並將其存儲在那裏。你也在問列表應該在哪裏聲明和初始化。您是否還在Windows Azure上託管您的服務?這是IIS上的Web服務runnig還是Windows服務?您是否使用WCF公開您的服務?

0

我看到其他人建議靜態屬性(好選擇)和Azure Chache。無論如何,如果數據不經常更新,那麼緩存數據並不是每次都從表存儲讀取數據。

我想給我的兩分錢:

如果數據足夠小,我不會使用Azure的Cahce(1MB足夠小,對我來說)。靜態屬性可以完成這項工作。但是,.NET 4.0也有一些新的特性,並且在大多數程序視圖中顯然缺少。這是System.Runtime.Caching命名空間。我還沒有先驗地使用它,但它似乎是一個很好的小本地緩存。您可以使用MemoryCache對象並將數據存儲在內存中。當然,像其他類型的chache一樣,在一個屬性的getter中,檢查數據是否存在於chache中。如果存在 - 返回。如果不存在 - 從表中檢索,存儲在chache中,然後返回。