使用另一种方式实现会话功能

有的时候时候并不一定要使用SESSION,或不能使用WEB的SESSION,有的时候考虑自己来定义会话操作。可以用自己的代码来会话的操作。我也读了System.Web.SessionState的InProcess实现代码,如果按它的原理来的话。将会有很大的工作量。

那好吧,我们还有两个可选的方案,一个是 System.Web.Cache , 一个是 System.Runtime.Cache , MSDN也说了两个功能相似,Runtime的出现是为了可以脱离对于System.Web的依赖。 写个控制台类的程序那还是用System.Runtime吧。

 

下面是一个测试代码。

 

static void Main(string[] args)
      {

          MemoryCache mc = new MemoryCache("mycache");
          CacheItemPolicy policy = new CacheItemPolicy();

          policy.RemovedCallback = (x) =>
          {

              Console.WriteLine(x.CacheItem.Key + "removed");
          };

          policy.SlidingExpiration = new TimeSpan(0, 0, 3);

          var i = 0;
          while (true)
          {
              i++;

              mc.AddOrGetExisting(new CacheItem("mykey" + i, "value" + i), policy);

              Console.WriteLine(i + "=>" + mc.GetCount());

          }

         

      }

 

如果MemoryCache不满足要求的时候,可以考虑通过扩展 ObjectCache 加入自己想要的东西。(实际上MC就已经够用了)

 

 

上面的代码写的3秒过期,不会在整3秒的时候过期,大概5秒后才开始清理,这点看一下源代码就知道了。

 

另外,执行清理操作是一个占用CPU的操作,所以可以看到在运行的时候,如下

 

时间: 2024-08-10 02:09:53

使用另一种方式实现会话功能的相关文章

C#中关于增强类功能的几种方式

C#中关于增强类功能的几种方式 本文主要讲解如何利用C#语言自身的特性来对一个类的功能进行丰富与增强,便于拓展现有项目的一些功能. 拓展方法 扩展方法被定义为静态方法,通过实例方法语法进行调用.方法的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀.仅当使用 using 指令将命名空间显式导入到源代码中之后,扩展方法才可使用. namespace Extensions { public static class StringExtension { public stati

高逼格的实现WiFi共享,不安装第三方wifi共享软件,两种方式实现开启wifi的功能

作为一枚程序员,不会点高逼格的doc命令,那么都有点感觉对不起自己的行业了,好了废话就到这里了 第一种方式: 首先使用cmd命令:window键+R 然后输入cmd回车 第一种方式: 第一步: 设置wifi: ssid是wifi名称key是无线密码 netsh wlan set hostednetwork mode=allow ssid=name key=00000000 第二步 启动wifi: netsh wlan start hostednetwork 第三步: 关闭wifi: netsh

iOS开发小功能之十一:线程间的通信(3种方式)

三种方法都是通过touchesBegin监听屏幕的触摸实现 一.performSelector方式 1 #import "ViewController.h" 2 @interface ViewController () 3 @property (weak, nonatomic) IBOutlet UIImageView *imageView; 4 @end 5 @implementation ViewController 6 - (void)touchesBegan:(NSSet<

自学iOS开发小功能之三:弹框的两种方式(iOS8.3之后新的方式,之前的已经弃用)

1.弹框出现在屏幕中间位置 UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"是否退出" preferredStyle: UIAlertControllerStyleAlert]; [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActio

Centos7.3 下SQL Server 备份及还原的两种方式

Centos7.3 下SQL Server 备份及还原的两种方式 我们前面两篇文章介绍了Centos7.3下SQL Server的安装配置及使用Powershell的管理介绍,今天我们接着介绍如何实现Centos7.3 下SQL Server  备份及还原,有两种方式:1.使用SSMS备份及还原,该方式最为简单也最方便操作的方式,2.使用Linux下SQL Server自带功能命令备份,具体见下: 我们上一篇中创建了一个测试数据库,我们接着拿这个数据库进行测试,我们首先使用第一种方式,使用SSM

发送邮件的三种方式:Send Mail Message

发送邮件的三种方式: 1.VBS 执行vbs脚本文件的程序为: system32文件下的 NameSpace = "http://schemas.microsoft.com/cdo/configuration/" Set Email = createObject("CDO.Message") Email.From = "xxx" '發送者 Email.To = "xxx;xxx" '收件地址 Email.Subject = &

赢得企业客户服务系统创新的6种方式

二次营销是在激烈的市场竞争环境下的一种竞争导向型战略,倡导经营客户,降低营销成本.企业构建客户服务系统,旨在提升企业在处理客户服务中的快速反应能力,通过提升客户满意度.客户忠诚度来达到二次营销效果,这就要求公司必须有较强的客户服务管理能力. 客户服务应答 远程服务系统结合了人工在线客服以及智能机器人应答两种方式,人工在线客服包括了嵌入企业网站.软件产品中的在线客服以及接入到移动端微信公众号.APP的在线客服:基于知识库的智能机器人应答,可帮助企业建立自助答疑系统,根据实际服务需求自定义建立知识库

多种方式实现文件下载功能

(1)使用 NSURLConnection 直接方式 (2)使用 NSURLConnection 代理方式 (3)使用 NSURLSession 直接方式 (4)使用 NSURLSession 代理方式 (5)使用 AFNetworking 方式 附加功能: 使用 AFNetworking 中的 AFNetworkReachabilityManager 相关操作来检查网络情况: AFNetworkReachabilityStatusReachableViaWiFi:Wi-Fi 网络下 AFNet

apache两种方案三种方式实现反向代理tomcat

目录 1.概述 2.方案一:以proxy_module方式反向代理 3.方案二:以mod_jk方式反向代理 4.总结 1.概述 在前一博客(http://zhaochj.blog.51cto.com/368705/1639740)中实现了tomcat的在standalone模式下的部署,这样tomcat就身兼职两职,一方向要对http的请求作出响应,又要处理JSP程序,而处理http请求不是tomcat的强项,所以这样的请求就交给httpd.nginx这样的的专业处理http请求的套件来处理,而