Iskra.Core.Cache
1.0.60
See the version list below for details.
dotnet add package Iskra.Core.Cache --version 1.0.60
NuGet\Install-Package Iskra.Core.Cache -Version 1.0.60
<PackageReference Include="Iskra.Core.Cache" Version="1.0.60" />
paket add Iskra.Core.Cache --version 1.0.60
#r "nuget: Iskra.Core.Cache, 1.0.60"
// Install Iskra.Core.Cache as a Cake Addin #addin nuget:?package=Iskra.Core.Cache&version=1.0.60 // Install Iskra.Core.Cache as a Cake Tool #tool nuget:?package=Iskra.Core.Cache&version=1.0.60
Iskra.Core.Cache
Обзор
Библиотека предназначена для управления распределенным кэшированием в приложениях .NET. Она предоставляет инструменты для конфигурации, хранения и извлечения данных из кэша с использованием различных стратегий истечения времени жизни.
Основные Компоненты
Конфигурация Кэша
IskraCacheOptionsPostConfigure
: Обеспечивает пост-конфигурацию опций кэша на основе конфигурационных файлов (например,appsettings.json
).ServiceCollectionExtensions.AddIskraCache
: Метод расширения для регистрации сервисов кэширования в контейнере зависимостей.
Фабрика Опций Кэша
IskraCacheOptionsFactory
: Предоставляет методы для получения настроек кэша для конкретных типов сущностей, проверяя их наличие и корректность.
Сервис Кэширования
IskraDistributedCache
: Реализует интерфейсIIskraDistributedCache
для работы с распределенным кэшем.- Методы:
GetAsync<TCacheEntity>
: Извлекает данные из кэша по ключу, десериализует их и возвращает объект типаTCacheEntity
.SetAsync<TCacheEntity>
: Сериализует объектTCacheEntity
и сохраняет его в кэше с заданными опциями истечения времени жизни.
- Методы:
Интерфейсы
IIskraCacheOptionsFactory
: Определяет методы для получения настроек кэша для конкретных типов сущностей.IIskraDistributedCache
: Определяет методы для работы с распределенным кэшем, включая получение и установку данных.
Абстракции
ICacheEntity
: Маркерный интерфейс, его должны реализовывать все сущности, которые могут быть закэшированы.
Функциональные Возможности
Конфигурируемость
- Настройки кэша определяются в конфигурационных файлах приложения.
- Поддержка различных стратегий истечения времени жизни (абсолютное и слайдинговое).
Распределенное Кэширование
- Использование распределенного кэша для хранения данных, что позволяет масштабировать приложение без потери доступности кэшированных данных.
Типобезопасность
- Методы
GetAsync
иSetAsync
параметризованы типом сущности, обеспечивая безопасность типов и упрощающую работу с данными из кэша.
- Методы
Обработка Ошибок
- Исключения
NoCacheDataException
иOptionsValidationException
предоставляют информацию о проблемах при работе с кэшем или отсутствии настроек.
- Исключения
Использование
Для использования библиотеки необходимо:
- Добавить пакет в проект.
- Зарегистрировать сервисы кэширования в контейнере зависимостей:
using Microsoft.Extensions.DependencyInjection; public class Startup { public void ConfigureServices(IServiceCollection services) { // Другие регистрации сервисов services.AddIskraCache(); } }
- Настроить опции кэша в
appsettings.json
или другом конфигурационном файле.
{
"IskraCacheOptions": {
"User": {
"Prefix": "user",
"AbsoluteExpirationRelativeToNow": "01:00:00",
"SlidingExpiration": "00:30:00"
},
"Product": {
"Prefix": "product",
"AbsoluteExpirationRelativeToNow": "02:00:00",
"SlidingExpiration": "01:00:00"
}
}
}
- Создать классы сущностей, которые будут кэшироваться:
public class User : ICacheEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Product : ICacheEntity
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
- Внедрять и использовать интерфейс
IIskraDistributedCache
для работы с кэшем.
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
[ApiController]
[Route("api/[controller]")]
public class CacheController : ControllerBase
{
private readonly IIskraDistributedCache _cache;
public CacheController(IIskraDistributedCache cache)
{
_cache = cache;
}
[HttpGet("user/{id}")]
public async Task<IActionResult> GetUser(int id)
{
var user = await _cache.GetAsync<User>(id);
if (user == null)
{
return NotFound();
}
return Ok(user);
}
[HttpPost("user")]
public async Task<IActionResult> SetUser([FromBody] User user)
{
await _cache.SetAsync(user.Id, user);
return CreatedAtAction(nameof(GetUser), new { id = user.Id }, user);
}
[HttpGet("product/{id}")]
public async Task<IActionResult> GetProduct(int id)
{
var product = await _cache.GetAsync<Product>(id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
[HttpPost("product")]
public async Task<IActionResult> SetProduct([FromBody] Product product)
{
await _cache.SetAsync(product.Id, product);
return CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product);
}
}
Заключение
Библиотека предоставляет удобный и гибкий способ управления распределенным кэшированием в приложениях .NET, обеспечивая конфигурируемость, типобезопасность и надежность работы с кэшем.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net8.0
- JetBrains.Annotations (>= 2024.3.0)
- Microsoft.Extensions.Caching.Abstractions (>= 9.0.2)
- Microsoft.Extensions.Configuration (>= 9.0.2)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.2)
- Microsoft.Extensions.Options (>= 9.0.2)
- Reo.Core.CodeConventions (>= 8.0.160)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Iskra.Core.Cache:
Package | Downloads |
---|---|
Iskra.Core.Auth
Настройка авторизации в Keycloak. |
GitHub repositories
This package is not used by any popular GitHub repositories.