Helper extensions to register repositories behind a Redis-backed DispatchProxy, including caching attributes and DI helpers.
$ dotnet add package Simplify.Cache.Proxy.Extensions
Biblioteca reutilizável que demonstra como encapsular repositórios atrás de um DispatchProxy com Redis. O repositório agora mantém apenas dois projetos:
src/Simplify.Cache.Proxy/ → pacote multi-target (namespace Simplify.Cache.Proxy) pronto para o NuGet.tests/Simplify.Cache.Proxy.Tests/ → suíte de testes em xUnit (namespace Simplify.Cache.Proxy.Tests) que valida o comportamento público da extensão.[RedisCached] para definir TTL por repositório (mínimo de 30 min).AddRedisCacheProxy registra IConnectionMultiplexer via connection string ou factory customizada.AddRedisCachedRepository<TInterface, TImplementation>() decora a implementação concreta com um DispatchProxy que lê/escreve em Redis.RedisCachingProxy serializa com System.Text.Json e gera chaves determinísticas para expressões LINQ (ExpressionExtensions + KeyExpressionVisitor).netstandard2.0, net6.0, net7.0, net8.0) incluindo README e ícone no pacote.dotnet add package Simplify.Cache.Proxy.Extensions
services.AddRedisCacheProxy("localhost:6379");
services.AddRedisCachedRepository<ICustomerRepository, CustomerRepository>(
defaultExpiration: TimeSpan.FromMinutes(30));
[RedisCached(expirationInMinutes: 5)]
internal sealed class CustomerRepository : ICustomerRepository
{
// ...
}
dotnet restore Simplify.Cache.Proxy.sln
dotnet build Simplify.Cache.Proxy.sln -c Release
dotnet test Simplify.Cache.Proxy.sln
dotnet pack src/Simplify.Cache.Proxy/Simplify.Cache.Proxy.csproj \
-c Release -o ./artifacts
Os testes vivem em tests/Simplify.Cache.Proxy.Tests (xUnit + FluentAssertions + NSubstitute) e cobrem:
defaultExpiration).IServiceCollection e injeção de IConnectionMultiplexer.Execute dotnet test antes de qualquer PR e ao ajustar os cenários listados acima.
.github/workflows/publish-extensions.yml) continua responsável por empacotar e publicar.extensions-v* (ex.: extensions-v1.0.7) ou manualmente via GitHub Actions.dotnet pack localmente, atualize <VersionPrefix> e mantenha README/ícones sincronizados antes de publicar.git checkout -b feature/nome).dotnet build + dotnet test.git commit -am 'feat: descrição') e push.O objetivo é manter uma extensão enxuta, multi-target e bem testada para quem deseja reutilizar proxies de cache com Redis em seus próprios repositórios.