1

Silverlightアプリケーションでキャッシング(Caching Application Block)を使用するためのパターンとプラクティスのSilverlight Integration Packをダウンロードしましたが、試してみましたが、機能しませんでした。有用な例は見つかりませんでした-誰かが例を持っていますか?簡単な使用法を示しているほんの数行のコード?Unityを使用する必要がありますか?

ありがとう!

エンタープライズライブラリ構成から取得したデフォルト構成を使用しました-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' ...
4

2 に答える 2

1

Entlib サポートのRandy Levyのおかげで、必要な答えが得られました。

コンテナを構成していないようです。サーバーを呼び出して構成を取得したくない場合は、構成を埋め込んでロードする必要があります。

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 ファイルの名前空間です (例: プロジェクトの既定の名前空間)。

于 2011-10-31T09:47:23.537 に答える
0

サンプルは次のとおりです: http://entlib.codeplex.com/releases/view/64923

Channel9 の次のビデオも参照してください: http://channel9.msdn.com/posts/Enterprise-Library-for-Silverlight-Data-Caching-demo

于 2011-10-20T17:51:54.910 に答える