Implementierung von HybridCache in der .NET 8-API für Entwicklungs- und Produktionsumgebungen

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Implementierung von HybridCache in der .NET 8-API für Entwicklungs- und Produktionsumgebungen

by Guest » 03 Jan 2025, 07:58

Ich arbeite derzeit an einer .NET 8-API, die den traditionellen InMemoryCache und RedisCache basierend auf dem StackExchange.Redis NuGet-Paket nutzt.
In meiner aktuellen Implementierung habe ich die Anwendung für die Verwendung eines benutzerdefinierten In-Memory eingerichtet Caching-Lösung bei Ausführung in der lokalen Entwicklungsumgebung (d. h. im DEBUG-Modus) und zur Verwendung von Azure Redis Cache mit einer benutzerdefinierten Implementierung bei Bereitstellung im Release-Modus.
Mit den neuesten Updates von .NET 9 ist mir aufgefallen, dass HybridCache jetzt verfügbar und auch mit .NET 8 kompatibel ist. Laut Dokumentation kombiniert HybridCache beide Ansätze (In-Memory und Distributed Cache) mithilfe eines zweistufigen Caching-Systems:L1: Schneller In-Memory-Cache
L2: Verteilter Cache (z. B. Redis, SQL Server usw.)
Ich interessiere mich für Nutzung von HybridCache in meiner Anwendung. Konkret möchte ich eine benutzerdefinierte Implementierung von In-Memory (L1)-Caching verwenden, während die Anwendung im DEBUG-Modus ausgeführt wird, und zur Verwendung eines verteilten Caches (Azure RedisCache) wechseln, während sie im Release-Modus ausgeführt wird.
Könnte mir das bitte jemand mitteilen? ein Codebeispiel oder eine Referenzimplementierung für dieses Szenario? Für Hinweise oder Best Practices wären wir sehr dankbar.
Hier geht der vorhandene Code:

Code: Select all

    public static IServiceCollection AddCachingService(this IServiceCollection services)
{
var isCacheEnabed = FeatureManagerService.IsFeatureEnabled(nameof(FeatureFlags.EnableCaching));
if (!isCacheEnabed)
{
services.AddSingleton();
return services;
}

#if DEBUG
services.AddSingleton();
services.AddMemoryCache();
#else
services.AddSingleton();
#endif
return services;
}
Kann mir hier jemand mit einem Codebeispiel helfen, das als Referenz für meine Implementierung dienen wird?

Top