v1.2.0-preview1
Pre-release🔑 Added DI Keyed Services support
Since .NET 8 we now have native support for multiple services of the same type, identified by different names, thanks to the addition of so called keyed services.
The idea is basically that we can now register services not only by type but also by specifying the name, like this:
services.AddKeyedSingleton<MyService>("foo");
services.AddKeyedSingleton<MyService>("bar");
and later is possible to resolve it by both the type and a name.
Another way is to simply mark a constructor parameter or web action with the [FromKeyedServices]
attribute, like this:
app.MapGet("/foo", ([FromKeyedServices("foo")] MyService myService) => myService.Whatever(123));
app.MapGet("/bar", ([FromKeyedServices("bar")] MyService myService) => myService.Whatever(123));
From now on, when registering a named cache, we can simply add AsKeyedService()
like this:
services.AddFusionCache("MyCache")
.AsKeyedService();
and later we'll be able to have the named cache with something like this:
app.MapGet("/foo", ([FromKeyedServices("MyCache")] IFusionCache cache) => {
cache.Set("key", 123);
});
Of course the named cache provider way is still available, like this:
app.MapGet("/foo", (IFusionCacheProvider cacheProvider) => {
var cache = cacheProvider.GetCache("foo");
cache.Set("key", 123);
});
See here for the original issue.
⚡ Add PreferSyncSerialization
option
It has been observed that in some situations async serialization and deserialization can be slower than the sync counterpart: this has nothing to do with FusionCache itself, but how serialization works in general.
So I added a new option called PreferSyncSerialization
(default: false
, fully backward compatible), that can allow the sync version to be preferred.
See here for the original issue.
🐵 Add ChaosMemoryCache
Among all the chaos-related components already available, one to work with IMemoryCache
was missing: not anymore.
✅ Better tests
Some more tests have been added.
📕 Docs
Updated some docs with the latest new things.