Session简单学习

什么是会话?
web 页面是无状态的,这就意味着每个页面新实例被创建都是要发送数据到服务器的。

大家都知道 HTTP 是一种无状态协议,它不能记忆页面上的的客户资料。 如果用户插入一些信息或转到下一页,这些数据将会丢失,并且用户将无法检索以上信息。 所以我们需要存储页面的相关信息以保存客户端必要的数据存储。

会话提供了客户端数据在服务器端内存中的保存;它可以支持包括我们自定义的对象在内的任何类型的对象的存储。 意味着对每个客户端会话数据分别存储。 看看下面的关系图。

ASP.NET 状态管理中最佳的一个功能就是会话。用户数据是安全的、 具透明度,我们可以在其中存储任何类型的对象。随之而来的是关于客户端数据存储在服务器端还是存储在客户端的性能方面争论。接下来看看web应用程序中使用会话的优缺点吧。

 

会话的优缺点?


下面是使用会话的基本优缺点。
优势:
-- 有助于在应用程序维护用户状态和数据。
-- 可以存储包括自定义的任何类型的对象 
-- 将每个客户端数据分别存储。 
-- 用户会话是安全的和具透明度的。

缺点:
-- 因为会话数据存储在服务器内存所以会加大服务器开销。
-- 所涉及的序列化和反序列化会话数据的架空。 因为在 SQL Server 和 StateServer 会话模式的情况下,我们需要在存储区之前序列化该对象。 
此外,有许多优点和缺点会话的会话类型为基础。

 

会话中值的存取

会话中值的存取与ViewState 非常类似;可以使用会话状态与 System.Web.SessionState.HttpSessionState 类进行交互,因为它提供了 Asp.Net 页的会话对象的生成

会话存储值:

 Session["UserName"] = txtUser.Text;

会话中提取值:

 if (Session["UserName"] != null)
        {
            //Retrieving UserName from Session
            lblWelcome.Text = "Welcome : " + Session["UserName"];
        }
        else
        {
         //Do Something else
        }

还可以存储某些其他对象。 以下示例显示如何将数据集存储在会话。

存储:

Session["DataSet"] = _objDataSet; 

取出数据集:

if (Session["DataSet"] != null)
        {
            //Retrieving UserName from Session
            DataSet _MyDs = (DataSet)Session["DataSet"];
        }
        else
        {
            //Do Something else
        }


SessionID

 Asp.Net 使用 120 位标识符来跟踪每个会话。 这是足够的安全和不能将反向工程。 当客户端与服务器进行通信,只用传递SessionID。当 ASP.NET 客户端发出请求时就根据SessionID检索相应的数据.

服务器为该客户端创建一个唯一的会话 ID,并存储在会话状态提供程序。

当客户端再次客从服务器请求数据时,服务器可以根据分配给客户端的的唯一的SessionID 从状态服务器检索到对应数据并完成序列化与类型转换返回数据。

 
处理流程图如下:

通信的客户端、 Web 服务器,和状态提供程序

通信的客户端、 Web 服务器,和状态提供程序

 

 会话模式和状态提供程序

以下是ASP.NET 会话模式下可用的情况下

InProc           本进程中    内存对象中

StateServer  状态服务器 Aspnet_state.exe

SQLServer    数据服务器

Custom         自定义存储

会话状态的体系结构

会话状态的体系结构

可以根据选择的会话状态提供程序来选择如何保存会话状态;ASP.NET 请求的任何信息都是基于SessionID的,

除此之外的另一个模式"Off", 如果我们选择了此选项,会话将被禁用。 若要使用会话,应该考虑该以上四种会话状态模式。

 

 

 

 

 

 

 

参考:

 ASP.NET会话状态概述

SessionID 属性

会话状态存储提供程序

Application and Session Events

State Server Session Mode 

Asp.Net Session State

Read SQL Server Mode 

Custom Mode 

ASP.NET Session Overview

ASP.NET Session State Overview

Different Session Mode

Web Farm-Load Balancing in ASP.NET

Enabling and Disabling Session Mode  

Configuring Session Modes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值