ICode9

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

浅谈基于net core框架的WebApi的AOP资源Filter做资源缓存

2022-03-10 02:31:07  阅读:152  来源: 互联网

标签:WebApi core 缓存 浅谈 key context net filter


个人觉得net core框架无论是设计模式还是前后端分离,乃至AOP Filter设计来说 都是优于传统net 框架的。

讲讲底层原理和解释一下Filter框架:关于Filter方面,传统net是一律先实例化控制器再进filter,有一说一,确实不足。

而net core框架来说,先进授权filter,再进框架,再进资源filter,这就使得filter有了成为缓存的能力,core对外开放的是一个IResourceFilter接口,需要自己去实现这个接口和里面的方法。

 

 

 

 

上代码,解释一下,用字典列表代替redis实现缓存,同时在每次接口访问完成用访问的path做key,缓存结果,下次再访问时,直接给context.Result从缓存赋值,这样不会再进入控制器

public class CustomResourceFilterAttribute : Attribute, IResourceFilter
{
private static Dictionary<string, object> dictionaryCache = new Dictionary<string, object>();
public void OnResourceExecuting(ResourceExecutingContext context)
{
string key = context.HttpContext.Request.Path.ToString();
if (dictionaryCache.ContainsKey(key))
{
context.Result = dictionaryCache[key] as ObjectResult; //Result 短路器
}
Console.WriteLine("this is CustomResourceFilterAttribute.OnResourceExecuting");
}

public void OnResourceExecuted(ResourceExecutedContext context)
{
//把数据存储缓存
//Key---path;
string key = context.HttpContext.Request.Path.ToString();
ObjectResult objectResult = context.Result as ObjectResult;
dictionaryCache[key] = objectResult;
}

}

 

标签:WebApi,core,缓存,浅谈,key,context,net,filter
来源: https://www.cnblogs.com/hamster5/p/15987849.html

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

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

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

ICode9版权所有