科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件ASP.NET保持用户状态的九种选择(上)

ASP.NET保持用户状态的九种选择(上)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

ASP.NET为保持用户请求之间的数据提供了多种不同的途径,决定什么时候使用它们有时却很困难

作者:陶刚编译 来源:yesky 2007年11月8日

关键字: Windows

  • 评论
  • 分享微博
  • 分享邮件
Sessions

  Sessions数据对于特定的用户是特定的。它的生存期是用户持续请求的时间加上后来一段时间(一般是20分钟)。Sessions可以保持或大或小的数据量,但是如果应用程序用于成百上千的用户,那么总共的存储应该保持最小。

  不幸的是在传统的ASP中Sessions对象的名声很不好,因为它把应用程序约束到特定的计算机上,阻碍了用户分组和Web范围的可伸缩性。在ASP.NET中几乎没有这些问题,因为改变Sessions保存的位置很简单。在默认情况下(性能最好的情况),Sessions数据仍然保存在本地Web服务器的内存中,但是ASP.NET支持使用外部状态服务器或数据库管理Sessions数据。

  使用Sessions对象很简单,并且它的语法与传统ASP相同。但是Sessions对象是保存用户数据的方法中效率很低的一种,因为即使用户停止使用应用程序后它仍然保持在内存中一段时间。这对于非常繁忙的站点的可伸缩性有严重的影响。其它的选择允许对释放内存的更多的控制,例如Cache对象也许更适合大量的大数据值。并且在默认情况下ASP.NET Sessionss依赖于cookie,因此如果用户禁止或不支持cookie,Sessionss就不能工作,但是可以配置Sessionss支持cookie无关。对于小的数据量,Sessionss对象是保存只需要在用户当前对话中保持的特定数据的极好位置。下面的例子演示了怎样设置和从Sessionss对象中检索值:

private void btnSubmit_Click(object sender, System.EventArgs e)
{
 if(IsValid)
 {
  // 设置Sessions值
  Sessions[txtName.Text] = txtValue.Text;

  //读取和显示刚才的设置
  lblResult.Text = "The value of <b>" + txtName.Text + "</b> in the Sessions object is <b>" + Sessions[txtName.Text].ToString() + "</b>";
 }
}

  该Web窗体与Application对象中使用的几乎相同,当允许页面追踪时Sessions集合的内容也是可见的。
你需要记住的是即使没有使用,Sessionss也会有应用程序开销。把Sessionss状态设置为只读的也可以优化只需要读而不需要写数据的页面。可以使用下面两种途径之一来配置Sessionss:

<%@ Page EnableSessionsstate="false" %>
<%@ Page EnableSessionsstate="readonly" %>

  ASP.NET Sessionss可以在Web.config或Machine.config中的Sessionsstate元素中配置。下面是在 Web.config中的设置的例子:

<Sessionsstate timeout="10" cookieless="false" mode="Inproc" />

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章