6

キャッシュされたデータを複数の WCF サービス ( PerCallインスタンス モード)MemoryCacheで表示したい場合、クラスを使用することは有効なオプションですか?

次の 2 つのケースがあります。

  1. サービスはすべて IIS の同じアプリでホストされます
  2. サービスは、同じサーバー上の異なる IIS アプリケーションでホストされます
4

1 に答える 1

7

1.the services are all hosted in the same app in IIS

MemoryCache.Defaultデフォルトのキャッシュ オブジェクトとして使用している場合、答えは「はい」ですMSDN
から

This property always returns a reference to the default cache instance. For typical application scenarios, only one instance of MemoryCache is required.

次のように使用できます

ObjectCache cache = MemoryCache.Default;

以下の方法で設定できるでしょうか?

<system.runtime.caching>
 <memoryCache>
  <namedCaches>
   <add name="Default" physicalMemoryLimitPercentage="20"/>
  </namedCaches>
 </memoryCache>
</system.runtime.caching>

他のサービス インスタンスから、次のようにメモリ キャッシュにアクセスできます。

List<string> cacheKeys = MemoryCache.Default.Select(kvp => kvp.Key).ToList();

foreach (string cacheKey in cacheKeys)
          MemoryCache.Default.Remove(cacheKey); 

2.the services are hosted in different IIS applications on the same server

netnamedPipeBindingこれは少しトリッキーですが、同じサーバー上にある指定されたを使用して他の Web サービスで使用できるキャッシュ専用の Web サービスを作成できる有効なオプションのままです。

于 2014-07-11T14:46:22.093 に答える