• ASP.NET——基础 4、NetSession


     
    1、每次请求来了,都会new一个新的实现了IHttpHandle接口的类页面的实例,进行处理。用完就GC掉,所以 不会保持上次的值。即访问者访问的是不同i的实例。
    private int i=0;
    i++;
    2、所有的访问者都访问的同一个j的实例,即可实现全局变量。
    private static int j=0;
    j++;
    3、Session原理,自己造轮子
      • 用IDictionary<string,IDictionary<string,object>>来存储素有的多个登陆用户的数据
    IDictionary<string,IDictionary<string,object>> data=new Dictionary<string,IDictionary<string,object>>();
    if(data.ContainsKey(sessionID))
    {
        return data[sessionID];
    }
    else
    {
        IDictionary<string,object> session=new Dictionary<string,object>();
        data[sessionID]=session;
        return session;
    }
    • 每次读取客户端提交来的Cookie,若发现Cookie中无SessionID:(Key),给客户端生成一个Guid,把Guid写入客户端Cookie,来标示身份。
    • 在服务端生成一个Guid对应的容器,容器里放多个Key-Value。
    • 取的时候,读客户端提交来的Cookie中的Guid,找到其在服务器对应的容器。
    4、Session有超时。(应用Ajax每隔十分钟骚扰下服务器,告诉服务器自己还活着。)需要定时销毁。
    5、ASP.NET内置有Session,内置Session的ID自动分配,只用复制与取值。在Cookie中叫做ASP.NET_SessionId。
    6、Session不能放太大的数据,格式是object
  • 相关阅读:
    docker 命令(我使用过的)
    docker 概述
    RabbitMq 概述
    spring cloud gateway
    redis-集群(codis和Cluster)
    jdbc 简单示例和优缺点
    git
    Mycat--概述
    线程池
    同步容器和并发容器
  • 原文地址:https://www.cnblogs.com/msdynax/p/2849290.html
Copyright © 2020-2023  润新知