网络核心2.0迁移小技巧之内存缓存问题修复解决的方法
前言
大家应该都知道,对于传统的. NET框架项目而言,系统。运行时。缓存命名空间是常用的工具了,其中内存缓存类则常被用于实现内存缓存。网络核心2.0暂时还不支持系统。运行时。缓存dll,这也就意味着内存缓存相关代码不再起作用了。
但是好消息是,我们可以使用。网络核心2.0的新应用程序接口实现内存缓存功能,简单修改代码,解决不兼容问题。下面话不多说了,来一起看看详细的介绍吧。
解决方案
1.将旧代码导入项目中,如下:
使用系统;使用系统。运行时。缓存;命名空间TestWebApp .服务{公共类内存缓存服务{静态对象缓存=内存缓存.默认;///摘要///获取缓存值////summary////param name=' key '/param////returns/returns private object GetCacheValue(string key){ if(key!=空缓存。包含(键)){返回缓存[键];}返回默认值(对象);} ///摘要///添加缓存内容////summary////param name=' key '/param///param name=' value '/param public static void SetChacheValue(字符串键,对象值){ if (key!=null){缓存项目策略=新的缓存项目策略{ SlidingExpiration=TimeSpan .从小时(1)};缓存。设置(密钥、值、策略);} } }}导入后你会发现对会提示无法找到系统。运行时。缓存命名空间,原有的代码无法直接编译使用。
2.添加对微软。扩展。缓存。内存命名空间的引用,它提供了。净核心默认实现的内存缓存类,以及全新的内存缓存应用程序接口
使用微软。扩展。缓存。内存;3.改写代码,使用新的应用程序接口实现内存缓存功能
初始化缓存对象方式改写前:
静态对象缓存缓存=内存缓存。默认;初始化缓存对象方式改写后:
静态内存缓存=新内存缓存(新内存缓存选项());读取内存缓存值方式变化:
私有对象GetCacheValue(字符串键){ if(键!=空缓存。包含(键)){返回缓存[键];}返回默认值(对象);}改写后:
私有对象GetCacheValue(字符串键){ object val=nullif (key!=空缓存TryGetValue(key,out val)){ return val;} else {返回默认值(对象);}}设定内存缓存内容方式变化:
公共静态void SetChacheValue(字符串键,对象值){ if (key!=null){缓存项目策略=新的缓存项目策略{ SlidingExpiration=TimeSpan .从小时(1)};缓存。设置(密钥、值、策略);}}修改后:
公共静态void SetChacheValue(字符串键,对象值){ if (key!=null){ 0缓存设置(键,值,新内存选项{ SlidingExpiration=TimeSpan .从小时(1)});}}结论
在使用了微软。扩展。缓存。内存下的新应用程序接口改写了旧代码后,你会发现原有的各种内存缓存超时策略全都是有对应新应用程序接口的,包括绝对扩展,滑动扩展等等。
所以我们还是可以很轻松的使用。净核心新应用程序接口简单改动下下就能重用现有绝大部分旧代码,将其迁移过来继续起作用。
迁移后的完整代码如下:
使用微软。扩展。缓存。内存;使用系统;命名空间TestMemoryCacheWebApp .服务{公共类MemoryCacheService {静态MemoryCache cache=new MemoryCache(new MemoryCacheOptions());///摘要///获取缓存值////summary////param name=' key '/param////returns/returns private object GetCacheValue(string key){ object val=null;if (key!=空缓存TryGetValue(key,out val)){ return val;} else {返回默认值(对象);} } ///摘要///添加缓存内容////summary////param name=' key '/param///param name=' value '/param public static void SetChacheValue(字符串键,对象值){ if (key!=null){ 0缓存设置(键,值,新内存选项{ SlidingExpiration=TimeSpan .从小时(1)});} } }}总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
版权声明:网络核心2.0迁移小技巧之内存缓存问题修复解决的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。