系统背景
1公司有一个
这种确实是需要 部署多套的 不仅是国内国外部署;就是在国内,集群策略都是使用的
数据库也集群
数据库之间同步数据;现在最直接的方案还是定时同步;不过要选择好同步时间点。
曾就只东软一线互联网名企,9年的.NET技术研发经验,对.NET相关框架有深入研究,精通设计模式,热衷于探索解析技术原理,对业界的前沿结束有独到的见解和应用经验。现专注培养新一代C#/.Net技术精英
.NET 5中AOP
1.NET开发中的AOP Filter
2ResourceFilter扩展定制、缓存的专属定制
3ActionFilter做日志
4Filter的拓展定制,多种注册方式
1项目上线了 且正常运行
产品经理 来个新需求
不懂之前的代码-动态增加
@base.ViewBage.DateTime
视图中及时生成的代码
思考个问题
怎么解决的
1怎么做?
1停止服务器
2拉取分支更新 版本 修改代码
在生成时间之前干点什么事儿
发布编译 测试
再生产时间之后干点什么事儿
只要是修改方法内部的东西 关于这个方法的所有内容都需要测试
发布部署
记录一个日志
支持一个缓存
二、有可能会有多个地方来支持这个新功能
增加缓存 日志
测试保证能用
DateTime.Now.ToString(“yyyy-MM-dd”)
用户管理业务逻辑
菜单管理业务逻辑 商品管理业务逻辑、订单管理
开闭原则
重复代码 封装一个公用的
AOP
代码稳定-功能可以增加
ASP.NETCore 5.0 AOP的支持 Filter
1授权-Authorize
2资源
3异常Exception
4方法前后Action
5视图前后 Resut
6
public class CustomResourceFilterAttribute : Attribute
构造函数
执行到Index方法上
CustomeResourceFilterAttribute集成Attribute特性类
CustomerFilterAttribute.OnResourceExecuting
相当于CutomResourceFilterAttribute 包控制器的构造函数和Index方法包裹在内
相当于CustomResourceFilterAttribute包控制器的构造函数和Index方法包裹在内
ResourceFilter能干啥
1ResourceFilter 天生就是为了缓存而存在的;Why … 等会儿来电比较
Filters
CustomeCache
缓存是什么 临时存储 请求服务器 缓存池 临时存储 有的话
需要在业务逻辑计算机前检查缓存 如果有数据 直接取缓存返回
如果没有就去业务逻辑计算 如果没有就去逻辑计算,计算完 把数据存储到缓存
在这缓存
OnResourceExcuting(ResourceExcutingContext context)
{
//在这里做缓存检查;如果有数据-直接拉取数据
string key = context.HttpContext.Request.Path;//请求的路径
if(CacheDictionary.COntainsKey(kety))
{
object oResult = CacheDictionary[key];
//就直接返回
context.Result = (IActionResult)oResult;//短期路—只要对于context.Resylt赋值了,就不执行了 直接返回给请求方
}
}
public static Dictionary<string,object> CacheDictonary = new Diction<string,object>();
在xxxx资源之后
public void OnResourceExecuted(ResourceExectedContext context)
{
//执行执行到这里以后—一定是已经执行了Action–一定是已经得到了计算的结果
//在这里就应该把结果保存到缓存里
string key = context.HttpContext.Path;//请求路径
}
ASP.ET Core MVC
基于内存缓存同步
//ViewBag 来定于控制器时间
base.ViewBag.DateTime
public void OnResourceExceted()
继续往后 执行计算
Index
返回