1

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

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

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

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

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

4

4 回答 4

1

您是否在请求的生命周期内重用对象?如果不是,那么您的模型建议每个回发还将创建一组新的对象,实际上消除了对缓存的需要。通常,当对象在请求之间共享时,缓存具有价值

至于使用非特定于 Web 的缓存解决方案,我发现 Microsoft 缓存应用程序块非常强大且易于使用。

于 2009-09-25T06:23:27.720 回答
1

我认为您可以在 Velocity 项目中获得战利品。

http://msdn.microsoft.com/en-us/data/cc655792.aspx - 有一篇简短的文章

于 2009-09-25T08:12:49.183 回答
0

如果您正在寻找进程间缓存,那么这很困难。

但是,如果您不希望您的中间件与 System.Web 绑定,那么您可以编写一个接口库来充当中间件和 system.web 之间的桥梁。

将来如果你想将它绑定到其他缓存管理器,那么你可以重写你的桥接口库,让你的中间件完全独立于实际的缓存管理器。

于 2009-09-25T06:19:55.980 回答
0

Microsoft 推荐使用 System.Runtime.Caching.MemoryCache 代替 System.Web.Caching。它可以在 Abhijeet Patel 建议的 MS 缓存应用程序块的上下文中使用。

看:

于 2016-01-28T16:48:19.407 回答