zoukankan      html  css  js  c++  java
  • 使用另一种方式实现会话功能

    有的时候时候并不一定要使用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的操作,所以可以看到在运行的时候,如下

     

    image

  • 相关阅读:
    整数
    mysql-5.7.13-win32 安装
    Flex air修改外部xml文件 (转)
    JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址
    C#中&和&&的区别
    百度UEditor1.4.3编辑器和asp.net MVC 5结合
    ASP.NET MVC ajax数组,模型绑定问题。
    MEF依赖注入无法在在构造函数中使用的解决办法
    AJaxFileUpload 文件上传<pre>,json字符串为空解决方法
    C#中字符串转换为IPAdress
  • 原文地址:https://www.cnblogs.com/zbw911/p/4256583.html
Copyright © 2011-2022 走看看