ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

我可以在NET MVC控制器中使用静态缓存帮助器方法吗?

2019-12-10 02:07:20  阅读:204  来源: 互联网

标签:caching c asp-net-mvc


我意识到有几篇关于在哪里添加缓存检查/更新以及控制器,模型和缓存代码之间关注点分离的文章.

我尝试过两个很棒的例子,但是它们是MVC的新手,我想知道哪一个最干净,最适合MVC方法论?我知道您需要考虑DI和单元测试.

示例1(带委托的Helper方法)

…在控制器中

var myObject = CacheDataHelper.Get(thisID, () =>
WebServiceServiceWrapper.GetMyObjectBythisID(thisID));

控制器中的示例2(检查模型类中的缓存)

var myObject =   WebServiceServiceWrapper.GetMyObjectBythisID(thisID));

然后在模型课上…………..

if (!CacheDataHelper.Get(cachekey, out myObject)) {

//do some repository processing

// Add obect to cache CacheDataHelper.Add(myObject, cachekey);

}

两者都使用静态缓存帮助器类,但是第一个示例使用带有传递的委托方法的方法签名,该委托方法具有要调用的存储库方法的名称.如果数据不在缓存中,则调用该方法,并且缓存帮助器类将处理对当前缓存的添加或更新.

在第二个示例中,缓存检查是存储库方法的一部分,其中有一行额外的代码来调用缓存帮助器add方法来更新当前缓存.

由于缺乏经验和知识,我不确定哪一个最适合MVC.我喜欢使用委托方法名称调用缓存帮助器的想法,以便删除存储库中的所有缓存代码,但是我不确定在控制器中使用静态方法是否理想?

第二个示例处理了上述内容,但现在缓存检查和存储库查找之间没有分隔.也许这不是问题,因为您知道它仍然需要缓存?

解决方法:

我有一个相当大的项目,我们在其中进行示例1-缓存静态类,其中包含从控制器使用的检索委托.实际上,在我们的案例中,我们有一个服务类层来处理缓存,而控制器则引用该服务层.服务层处理数据检索,缓存,权限检查等,而控制器则主要处理将服务中的数据组合到模型中.

根据您的问题,您不一定需要静态缓存帮助器.您可以使用DI注入缓存帮助器的实例,因此可以将其模拟出来进行测试等.

标签:caching,c,asp-net-mvc
来源: https://codeday.me/bug/20191210/2098488.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有