您的緩存方法將基於您的實現。從你上面描述的你的服務是一個簡單的包裝。這個包裝器調用了一個(我通過線程假設)類庫來完成實際的過程。
有了這個設計,我會建議在類庫中實現你的「緩存服務」。儘管庫中的類正在被執行並被處置掉,但在庫的其他類完成之後,您的類庫無法保持對緩存的引用。
就個人而言,因爲類庫需要緩存的對象,我沒有看到任何理由爲什麼服務需要訪問這些對象。另外通過維護你的類庫中的緩存可以讓你「隱藏」你的緩存對象。最後,另一個重大的積極因素是調試和修復bug會容易得多。由於您可以在任何其他應用程序中運行類庫,因此您不必在Windows服務中進行調試,這本身可能頗具挑戰性。
我認爲真正的問題是你應該使用什麼類型的緩存,這對正在使用的內存總量有很大的影響。現在這是一個不同的問題。
對於緩存,您有許多實施選項。最常見的內存緩存是使用.Net框架的一部分MemoryCache
功能完成的。這支持expreration策略,以及類似於ASP.Net web實現的完整緩存包裝器。
MSDN的內存緩存:http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx
在我看來,最終我可能會換你的緩存系統進入使用singleton或通過DependencyInjection保持高速緩存的對象的類。
希望這會有所幫助。
Nico
非常感謝您的回覆。我不能指望任何更簡潔的東西! – Cranialsurge