.net 我们不应该在WinForms应用程序中使用System.Web.Caching.Cache类吗?

.net 我们不应该在WinForms应用程序中使用System.Web.Caching.Cache类吗?,.net,winforms,caching,.net,Winforms,Caching,我看到过几篇文章/博客文章提倡在不适用于Web的应用程序中使用System.Web.Caching.Cache,但是,其中非常明确地指出 缓存类不打算在ASP.NET应用程序之外使用。它是为在ASP.NET中为Web应用程序提供缓存而设计和测试的。在其他类型的应用程序(如控制台应用程序或Windows窗体应用程序)中,ASP.NET缓存可能无法正常工作 文档是错误的,还是我们真的不应该使用这个类?如果是后者,会出现什么问题?我们的平台是Winforms/.NET 3.5。文档是正确的,您不能在w

我看到过几篇文章/博客文章提倡在不适用于Web的应用程序中使用System.Web.Caching.Cache,但是,其中非常明确地指出

缓存类不打算在ASP.NET应用程序之外使用。它是为在ASP.NET中为Web应用程序提供缓存而设计和测试的。在其他类型的应用程序(如控制台应用程序或Windows窗体应用程序)中,ASP.NET缓存可能无法正常工作


文档是错误的,还是我们真的不应该使用这个类?如果是后者,会出现什么问题?我们的平台是Winforms/.NET 3.5。

文档是正确的,您不能在windows应用程序中使用asp.NET缓存


您不应该在ASP.NET之外使用它。然而,这里有一份关于其他备选方案的不错的白皮书:


如果应用程序不是ASP.NET应用程序,则无法自动删除过期或未使用的缓存对象。因此,如果在ASP.NET之外使用缓存对象,则不会释放为缓存对象保留的系统内存。您无法手动调用内部ASP.NET方法来清理缓存,因为这些方法被标记为内部方法,并用于内部使用。因此,您决定在外部应用程序中使用它,风险由您自己承担


Scott Hanselman在其上发布了一篇文章,以了解更多详细信息

在我看来,Scott Hanselman的文章支持在非ASP.net应用程序中使用此功能。此外,您提到的支持文章也谈到了.net 1.0和1.1。3.5版的情况会有所改变吗?它不受欢迎,它只是证明它没有看起来那么糟糕,我也不确定它是什么版本的.Net,但它只是为了提供更多信息而被收录的。对于OPKB,在这个答案中列出的文章明确地说不要在.NET1.0和1.1中使用它,但是你可以在2.0中使用它(我假设是在2.0以上)。它还建议查看P&P缓存应用程序块,但这是可选的。