2011-02-24 52 views
1

我正在Silverlight中創建一個圖形工具,它從多個文件和數據庫中讀取數據。我可以在所有用戶使用的silverlight中緩存數據嗎?

我不想一次又一次地調用數據庫。我希望在需要時檢索數據並在某處保持安全,因此如果用戶或任何其他用戶訪問同一頁面,則可以訪問數據。

我想使用應用程序狀態的asp.net緩存[「對象」],但在Silverlight?什麼是最好的方法?

回答

4

由於silverlight運行在客戶端,所以需要緩存serverside。 你可以使用WCF獲取你的數據。 東西沿着這些線路:

我在過去做的是緩存使用enterprise library使用WCF查詢:

public class YourWcfService 
{ 
    ICacheManager _cacheManager = null; 

    public YourWcfService() 
    { 
     _cacheManager = EnterpriseLibraryContainer.Current.GetInstance<ICacheManager>("Cache Manager"); 
    } 

}

您的Web方法看起來是這樣的:

[OperationContract] 
    public List<Guid> SomeWebMethod() 
    { 
     if (_cacheManager.Contains("rgal")) // data in cache? 
       result = (List<Guid>)_cacheManager.GetData("rgal"); 
      if (result == null) 
      { 

       result = FETCH FROM DATABASE HERE; 
       // cache for 120 minutes 
       _cacheManager.Add("rgal", result, CacheItemPriority.Normal, null, new AbsoluteTime(TimeSpan.FromMinutes(120))); 
      } 
        return result; 
    } 
1

Silverlight控件在每個用戶的瀏覽器/客戶端運行,因此無法爲服務器上的所有用戶緩存某些內容。

您可以緩存給定用戶會話的控件中的數據或給定用戶的隔離存儲器中的數據。但是如果不編寫相應的服務器端代碼,您無法在服務器上執行任何操作。

0

緩存是否真的有必要?你真的搗毀你的數據庫嗎?

您的數據庫是您的存儲空間。除非你有性能問題,否則這是過早的優化。

0

新的企業庫Silverlight Integration Pack爲您提供客戶端上的緩存功能。支持2種類型的數據緩存:內存和隔離存儲。您還可以靈活配置過期策略(以編程方式或通過外部配置)和配置工具支持。

注意:現在是代碼預覽,但應該在5月份發佈爲最終版本。

相關問題