需要C#中的中间件缓存解决方案

时间:2009-09-25 05:57:44

标签: c# asp.net caching middleware

我有一个ASP.net应用程序,它使用我们创建的一些常见业务对象。这些业务对象也用于其他一些Windows服务或控制台应用程序。

我遇到的问题是,如果我有一个类“foo”和一个类“bar”并且每个都有一个函数loadClient(),如果我调用foo.loadClient()和bar.loadClient(),请求将命中数据库。我认为实现某种缓存可以减少不必要的往返DB的往返。

这是一个问题。我希望缓存特定于ASP.net应用程序中的每个HTTP请求。也就是说,新请求获得全新的缓存。缓存可以在其他控制台应用程序的生命周期内存在,因为其中90%是实用程序。

我知道我可以使用System.Web.Cache但我不希望我的中间件绑定到System.Web库。

希望能够解释它。谁能指出我正确的方向? 谢谢!

4 个答案:

答案 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缓存应用程序块的上下文中使用。

请参阅: