キャッシュされたデータを複数の WCF サービス ( PerCallインスタンス モード)MemoryCache
で表示したい場合、クラスを使用することは有効なオプションですか?
次の 2 つのケースがあります。
- サービスはすべて IIS の同じアプリでホストされます
- サービスは、同じサーバー上の異なる IIS アプリケーションでホストされます
キャッシュされたデータを複数の WCF サービス ( PerCallインスタンス モード)MemoryCache
で表示したい場合、クラスを使用することは有効なオプションですか?
次の 2 つのケースがあります。
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 サービスを作成できる有効なオプションのままです。