1

我已經下載了模式&做法Silverlight Integration Pack在我的Silverlight應用程序中使用緩存(緩存應用程序塊),但我嘗試過並嘗試過,但沒有得到它的工作。 我沒有找到任何有用的例子 - 有沒有人有一個例子?只是顯示簡單用法的幾行代碼? 我需要使用統一嗎?在Silverlight中使用企業庫緩存應用程序塊

謝謝!

我使用的是從企業庫配置有一個默認配置 - 這是我導出爲XAML工具:

<el:CachingSettings DefaultCache="In-Memory Cache" x:Key="cachingSilverlightConfiguration"> 
    <el:CachingSettings.Caches> 
    <el:InMemoryCacheData ExpirationPollingInterval="00:02:00" Name="In-Memory Cache" /> 
    </el:CachingSettings.Caches> 
</el:CachingSettings> 

,當我嘗試用下面的代碼來訪問它:

ObjectCache cache = EnterpriseLibraryContainer.Current.GetInstance<ObjectCache>("In-Memory Cache"); 

然後,我得到一個異常:

{System.IO.FileNotFoundException: The system cannot find the file specified. File name: 'System.Xml.Linq, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' ... 
+0

你能提供你嘗試過的代碼和配置設置嗎? –

+0

我已經添加了一些代碼給我試圖使用的帖子。但我不確定代碼是否正確,因爲我找不到一個令人討厭的例子。 – Gerwald

回答

1

由於Randy Levy從Entlib支持,我the answer I needed, there

看起來你還沒有配置容器。如果您不想調用服務器來檢索配置,那麼您需要嵌入並加載配置。

string stringWithXAMLConfiguration = @"<?xml version=""1.0"" encoding=""utf-8""?> 
<el:ConfigurationDictionary xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" 
       xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" 
       xmlns:el=""http://schemas.microsoft.com/practices/2011/entlib""> 
<el:CachingSettings DefaultCache=""In-Memory Cache"" x:Key=""cachingSilverlightConfiguration""> 
    <el:CachingSettings.Caches> 
     <el:InMemoryCacheData ExpirationPollingInterval=""00:02:00"" Name=""In-Memory Cache"" /> 
     <el:IsolatedStorageCacheData MaxSizeInKilobytes=""5120"" PercentOfQuotaUsedBeforeScavenging=""50"" PercentOfQuotaUsedAfterScavenging=""20"" ExpirationPollingInterval=""00:01:00"" Name=""Isolated Storage Cache"" /> 
    </el:CachingSettings.Caches> 
</el:CachingSettings> 
</el:ConfigurationDictionary>"; 

var configDictionary = (IDictionary)XamlReader.Load(stringWithXAMLConfiguration); 
var configSource = DictionaryConfigurationSource.FromDictionary(configDictionary); 
EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(configSource); 

或者,如果你不想在代碼串,但更喜歡在一個XAML文件,然後確保XAML文件的(如cacheConfig.xaml)生成操作嵌入的資源,然後你可以使用下面的代碼:以上

string xaml; 
using (Stream s = this.GetType().Assembly.GetManifestResourceStream("SilverlightApplicationCache.cacheConfig.xaml")) 
    using (StreamReader sr = new StreamReader(s)) 
     xaml = sr.ReadToEnd(); 

var configDictionary = (IDictionary)XamlReader.Load(xaml); 
var configSource = DictionaryConfigurationSource.FromDictionary(configDictionary); 
EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(configSource); 

SilverlightApplicationCache是XAML文件(例如,該項目的默認命名空間。)的命名空間。

0
+0

感謝您的鏈接,但我已經知道他們兩個。 StockTrader RI是一個巨大的應用程序,顯示完整企業庫的使用情況。 channel9視頻側重於展示不同的szenarios並講述大局。不幸的是,它們都對EntLib初學者沒用。 – Gerwald

+0

在RI以外的地方,您可能會發現使用帶有必要代碼片段的ObjectCache的逐步說明更加平易近人。它們位於文檔集中的「在應用程序中實施緩存」​​部分 - http://entlib.codeplex.com/releases/view/64239#DownloadId=241925。 –

+0

謝謝 - 這是一個非常好的資源。經過漫長的搜索之後,我認爲這是一場蕭條。唯一的問題是,它不像他們描述的那樣工作。總結它: 1.)使用嚮導創建一個配置。 2.)將其添加到您的SL解決方案,並將構建操作設置爲「content」 3.)從容器中恢復緩存。 - >這不起作用。 – Gerwald

相關問題