web-dev-qa-db-ja.com

MemoryCache.Defaultは.NETCoreでは使用できませんか?

.NET4.6から.NETCoreにコードを移植していますが、MemoryCacheでいくつかの問題が発生しました。 4.6コードはMemoryCache.Defaultを使用してキャッシュをインスタンス化していますが、これは.NETCoreでは使用できないようです。 .NET Coreにこれに相当するものはありますか、それとも自分のMemoryCacheをシングルトンとして新しくしてIOC経由で注入する必要がありますか?

13
henningst

通常、シングルトンIMemoryCacheを使用します

_IServiceProvider ConfigureServices(IServiceCollection services){ 
...
 services.AddMemoryCache(); 
...
}
_

ただし、キャッシュを作成することもできます

mycache = new MemoryCache(memoryCacheOptions)

より複雑なことを行う必要がある場合は、memoryCacheOptionsを-_IOptions<MemoryCacheOptions>_から挿入して使用できます。

_myCustomMemoryCache = new MemoryCache(memoryCacheOptions);
_

https://docs.Microsoft.com/en-us/aspnet/core/performance/caching/memory

9
Bogdan

System.Runtime.Caching.MemoryCacheとMicrosoft.Extensions.Caching.Memory.MemoryCacheは完全に異なる実装です。

それらは似ていますが、問題/警告のセットが異なります。

System.Runtime.Caching.MemoryCacheは古いバージョン(4.6)であり、ObjectCacheに基づいており、通常、説明したようにMemoryCache.Defaultを介して使用されます。実際には、.Net標準形式のNuGetライブラリを介して.NetCoreで使用できます。 https://www.nuget.org/packages/System.Runtime.Caching/

Microsoft.Extensions.Caching.Memory.MemoryCacheは新しい.NETコアバージョンであり、通常、新しいASPコアアプリケーションで使用されます。IMemoryCacheを実装し、通常、上記のようにサービスに追加されます。 @Bogdan

https://github.com/aspnet/Extensions/blob/master/src/Caching/Memory/src/MemoryCache.cshttps://www.nuget.org/packages/ Microsoft.Extensions.Caching.Memory /

2
Menace