ASP.NET MVC 中 HttpRuntime.Cache 的使用是否发生了变化?

发布于 2024-07-07 01:24:27 字数 625 浏览 7 评论 0 原文

因此,在准备对控制器进行单元测试时,我正在查看我的标准缓存实用程序,并想,嘿,直接访问 HttpRuntime.Cache 在 MVC 中是否被认为是有害的?

我将缓存包装在一个代理类中,该类实现了类似缓存的接口(虽然简单得多),以便我可以在测试期间模拟它。 但我想知道新框架中是否已经为我完成了这一点。 然而我找不到任何东西。

以下是我如何做到这一点的想法:

public ActionResult DoStuffLol(guid id)
{
  var model = CacheUtil.GetOrCreateAndStore(
                  "DoStuffLolModel",
                  () =>
                  {
                    /* construct model here; time consuming stuff */
                    return model;
                  });
  return View("DoStuffLol", model);
}

那么,访问缓存的旧模式是否发生了变化? 在 MVC 中是否有更好的缓存操作结果的模式?

So, I was looking over my standard cache utility when preparing to unit test a controller and thought, hey, is accessing the HttpRuntime.Cache directly considered harmful in MVC?

I wrap the cache in a proxy class that implements a cache-like interface (tho much simpler) so that I can mock it during tests. But I'm wondering if that's already done for me in the new framework. I can't find anything, however.

Here's an idea of how I do it:

public ActionResult DoStuffLol(guid id)
{
  var model = CacheUtil.GetOrCreateAndStore(
                  "DoStuffLolModel",
                  () =>
                  {
                    /* construct model here; time consuming stuff */
                    return model;
                  });
  return View("DoStuffLol", model);
}

So, has the old patterns of accessing the cache changed? Are there any better patterns for caching action results in MVC?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

煮酒 2024-07-14 01:24:27

将 OutputCache 属性添加到控制器操作中,以便告诉框架为您缓存输出。 您可以在 ScottGu 关于 ASP.NET Preview 4 的博客文章

不要将其与 Authorize 属性结合使用。

Add the OutputCache attribute to your controller action in order to tell the framework to cache the output for you. You can read more about this attribute in ScottGu's blog post on ASP.NET Preview 4.

Don't combine this with the Authorize attribute, however.

被你宠の有点坏 2024-07-14 01:24:27

不,但缓存在 3.5 中发生了变化。 3.5 包含包装类,使对 ASP.NET 中使用的许多静态类进行存根/模拟变得容易。

http://www. codethinked.com/post/2008/12/04/Using-SystemWebAbstractions-in-Your-WebForms-Apps.aspx

No, but the cache has changed in 3.5. 3.5 includes wrapper classes that make stubbing/mocking many of the static classes used in asp.net easy.

http://www.codethinked.com/post/2008/12/04/Using-SystemWebAbstractions-in-Your-WebForms-Apps.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文