我有一个ASP.net应用程序,它使用我们创建的一些常见业务对象。这些业务对象也用于其他一些Windows服务或控制台应用程序。
我遇到的问题是,如果我有一个类“foo”和一个类“bar”并且每个都有一个函数loadClient(),如果我调用foo.loadClient()和bar.loadClient(),请求将命中数据库。我认为实现某种缓存可以减少不必要的往返DB的往返。
这是一个问题。我希望缓存特定于ASP.net应用程序中的每个HTTP请求。也就是说,新请求获得全新的缓存。缓存可以在其他控制台应用程序的生命周期内存在,因为其中90%是实用程序。
我知道我可以使用System.Web.Cache但我不希望我的中间件绑定到System.Web库。
希望能够解释它。谁能指出我正确的方向? 谢谢!
答案 0 :(得分:1)
您是否在请求的生命周期内重用对象?如果没有,那么您所建模型表明每个回发也会创建一组新的对象,从而无需缓存。通常,当跨请求共享对象时,缓存具有值
就使用非特定于网络的缓存解决方案而言,我发现Microsoft缓存应用程序块非常强大且易于使用。
答案 1 :(得分:1)
我想你可以看一下Velocity项目。
http://msdn.microsoft.com/en-us/data/cc655792.aspx - 有一篇简短的文章
答案 2 :(得分:0)
如果您正在寻找进程间缓存,那很难。
但如果您不希望将中间件绑定到System.Web,那么您可以编写一个接口库,作为中间件和system.web之间的桥梁。
将来如果你想将它绑定到其他缓存管理器,那么你就可以重写桥接接口库,使你的中间件完全独立于实际的缓存管理器。
答案 3 :(得分:0)
Microsoft建议使用System.Runtime.Caching.MemoryCache代替System.Web.Caching。它可以在Abhijeet Patel建议的MS缓存应用程序块的上下文中使用。
请参阅: