Ich implementiere einen Cache in einer Klassenbibliothek, die ich in einer asp.net-Anwendung verwende.Cache in einer Klassenbibliothek für die Verwendung in einer asp.net-Anwendung ordnungsgemäß implementieren
Ich habe mein Cache-Objekt als Singleton-Muster mit einer statischen Methode erstellt, um den Cache zu aktualisieren, der wirklich nur eine Elementvariable/-Eigenschaft mit einer Sammlung von Daten lädt, die ich im Cache speichern muss. Habe ich es eine schöne Art und Weise war zu gehen, da ich nur durch meine Daten zugreifen kann
MyCacheObject.Instance.MyDataCollection
Aufruf Ich bin ein neues Cache-Objekt erstellt eine ziemlich große Menge an Daten, die von einem gewissen Schlüssel aufgeteilt zu speichern. Was ich sage ist, dass ich einen neuen Cache erstelle, aber dieser lädt nicht alle Daten auf einmal, sondern speichert eine Sammlung für jeden Schlüssel, auf den zugegriffen wird.
MyOtherCacheObject.Instance.MyOtherDataCollection(indexkey)
Diesmal wurde die Frage nach Garbage Collection aufgeworfen. Da ich eine riesige Menge an Daten speichere, wäre es keine Verschwendung, wenn es plötzlich gc'te? Da es nur ein Singleton-Muster ist, gibt es nichts, was sicherstellt, dass Daten im Cache verbleiben.
Also meine Frage ist - Was ist Best Practice für die Implementierung eines Cache, um diese Situation zu behandeln? Ich mag wirklich keine große komplexe Lösung, und ich weiß, dass es in System.Web Caching gibt, aber das scheint ein bisschen "aus", da dies nur eine Klassenbibliothek ist, oder was denkst du?
Ich mag was du bekommst (obwohl ich einen langen Weg gehen würde, um IoC zu vermeiden). Sie bringen einige gute Ideen auf, mit denen ich jedoch laufen kann. Danke –
Sie könnten auch eine Unterstützungsvariable hinzufügen und eine Sperre für diese Variable ausführen, wenn der Satz ausgeführt wird. Mein Bauchgefühl sagt, dass es einige Threading-Probleme verhindern könnte. –