Я переношу некоторый код из .NET 4.6 в .NET Core и столкнулся с некоторыми проблемами с MemoryCache. Код 4.6 использует MemoryCache.Default для создания экземпляра кеша, но, похоже, это недоступно в .NET Core. Есть ли какой-либо эквивалент этому в .NET Core, или мне лучше создать свой собственный MemoryCache как синглтон и внедрить его через IOC?
MemoryCache.Default недоступен в .NET Core?
Ответы (2)
System.Runtime.Caching.MemoryCache и Microsoft.Extensions.Caching.Memory.MemoryCache — совершенно разные реализации.
Они похожи, но имеют разные наборы проблем/оговорок.
System.Runtime.Caching.MemoryCache является более старой версией (4.6) и основан на ObjectCache и обычно используется через MemoryCache.Default, как вы описали. На самом деле его можно использовать в .Net Core через библиотеку NuGet в стандартном формате .Net. 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.cs https://www.nuget.org/packages/Microsoft.Extensions.Caching.Memory/
Как правило, вы должны использовать синглтон 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
services.AddMemoryCache();
относительно синглтона IMemoryCache
?
- person user247702; 10.07.2018