Netcache - это простая библиотека хранения кэша, дружелюбная к инъекциям зависимости.
NetCache предназначен для простой и быстрой библиотеки, которая обеспечивает почти серебряное решение с кэшированием и устойчивости для приложений .NET. Я разработал библиотеку для функциональной для всех современных приложений .NET.
Запустите следующее в консоли или установке через диспетчер пакетов Nuget в Visual Studio или Rider;
PM > Install-Package NetCacheЕсли вы хотите использовать NetCache с впрыском зависимостей, вам также следует установить следующий пакет
PM > Install-Package NetCache.DependencyInjectionВы можете начать использовать пакет, либо введя его в свою коллекцию услуг, либо создав новый экземпляр класса NetCacher.
var cacher = new NetCacher ( new NetCacherOptions ( ) ) ; // Create a new cacher with default optionsИли, с инъекцией зависимостей
services . AddNetCacher ( opts =>
{
.. .
} ) ;Во -первых, вот наш макет, который мы будем использовать в следующих примерах:
public class Mock
{
public string FirstName { get ; set ; }
public string LastName { get ; set ; }
public Mock ( string firstName , string lastName )
{
FirstName = firstName ;
LastName = lastName ;
}
} Теперь мы можем начать, чтобы установить новую запись в кэше, вы можете вызвать метод SetObject<TObj> как показано
var myObj = new Mock ( "Foo" , "Bar" ) ;
cacher . SetObject < Mock > ( "myKey" , myObj , TimeSpan . FromMinutes ( 1 ) ) ;
// Object has been cached under the key 'myKey' for 1 minute before it expires И для получения той же записи мы можем использовать метод GetRecord<TObj> , как показано ниже
var myObj = cacher . GetObject < Mock > ( "myKey" ) ;
if ( myObj is null )
{
// No object was found in the cache, it could've expired or never existed
Console . WriteLine ( "No object found!" ) ;
return ;
}
Console . WriteLine ( myObj . FirstName ) ; // FooМожет быть, сериализатор по умолчанию просто не режет его для вас, и вам нужен собственный собственный сериализатор, который дает вам специально адаптированные решения. Нет проблем, найдите ниже простой реализации пользовательского сериализатора.
public class CustomSerializer : ISerializer
{
public ReadOnlySpan < char > Serialize < TObj > ( TObj obj )
{
// ...
}
public TObj ? Deserialize < TObj > ( ReadOnlySpan < char > rawData )
{
// ...
}
}Конечно, это абсолютно ничего не делает, но он может легко предоставить вам достаточно места, чтобы построить свои собственные требования в систему сериализации. Вы можете даже ускорить производительность библиотеки (в этом случае откройте запрос на вытягивание!).
Лицензирован по лицензии MIT и в настоящее время использует эти пакеты с открытым исходным кодом: