您的缓存方法将基于您的实现。根据您上面的描述,您的服务是一个简单的包装器。这个包装器调用一个(我假设通过线程)执行实际过程的类库。
通过这种设计,我建议在类库中实现您的“缓存服务”。尽管您的库中的类正在执行然后被处置,但没有理由说明您的类库在库中的其他类完成后不能保留对缓存的引用。
就个人而言,因为类库需要缓存对象,所以我看不出服务需要访问这些对象的任何原因。此外,通过在类库中维护缓存,您可以“隐藏”缓存对象。最后,另一个很大的好处是调试和错误修复会更容易。由于您可以在任何其他应用程序中运行类库,因此您不必在 Windows 服务中进行调试,这本身就非常具有挑战性。
我认为真正的问题是你应该使用什么样的缓存,这对消耗的总内存有很大的影响。现在这是一个不同的问题。
对于缓存,您有许多实现选项。最常见的内存缓存是使用MemoryCache
.Net 框架的一部分功能完成的。这支持表达式策略和类似于 ASP.Net Web 实现的完整缓存包装器。
内存缓存的 MSDN:http: //msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx
最后,在我看来,我可能会使用 Singletons 或通过 DependencyInjection 将您的缓存系统包装到另一个类中以维护缓存的对象。
希望这可以帮助。
尼科