【问题标题】:Session state vs Application State会话状态与应用程序状态
【发布时间】:2019-02-14 00:24:00
【问题描述】:

我目前正在通过他们的 HTML5 MTA 课程研究 .Net。我的书对会话与应用程序状态有以下解释:

状态管理是在多个过程中维护网页信息的过程 对相同或不同网页的请求。当用户第一次请求访问 应用程序,会话状态被创建。当用户关闭会话时,状态结束。

这让我很困惑,因为他们似乎在说同样的话。
对应用程序的请求 = 会话状态
网页请求 = 应用程序状态
网页不是应用程序吗?

然后它将持久状态信息描述为:

持久状态信息是应用程序在会话结束后需要的数据。许多 Web 应用程序需要存储数据(使其持久化),以便用户可以在他们需要的地方获取数据 当他们返回网站时停止。

“会话结束后应用程序需要的数据” - 您刚刚告诉我会话状态在应用程序状态之前出现?
我很困惑,谁能帮我解释一下这两个概念?

【问题讨论】:

    标签: .net html


    【解决方案1】:

    这其实不限于.net。

    1. 应用程序状态是应用程序运行时在 RAM 中的状态。对于某些服务器端语言,应用程序仅针对一个请求运行,而对于其他语言,它一直运行到相应的服务器进程停止为止。在后一种情况下,应用程序状态由许多用户共享。
    2. 会话状态与特定用户相关联。在大多数情况下,它存储在文件系统或数据库中,并通过存储在会话 cookie 中的密钥进行检索。使用此密钥,应用程序可以检索会话数据并对其进行操作。当用户关闭浏览器时,会话cookie 被删除,因此无法再检索会话数据。我们称之为会话结束。必须通过其他方式定期清除实际数据,例如 cron 脚本。
    3. 持久数据是使用或多或少已知的密钥存储在数据库或文件系统中的数据。例如用户名或页面 ID。

    【讨论】:

      【解决方案2】:

      “应用程序状态”=应用程序的状态,对所有用户都是一样的。

      “会话状态” = 特定于该特定用户会话的状态。每个用户都有单独的会话状态。

      【讨论】:

        【解决方案3】:

        应用程序状态是特定于应用程序的数据。它存储在服务器中,因此可以轻松访问并有助于快速检索。当您有一个变量需要全局访问并在应用程序的整个生命周期内都存在时,使用此选项。

        会话状态用于维护特定于用户的数据。它存储在服务器或数据库中。这是单个用户全局变量。

        【讨论】:

          猜你喜欢
          • 2011-06-09
          • 1970-01-01
          • 1970-01-01
          • 2019-10-28
          • 2013-07-21
          • 2017-01-10
          • 2013-06-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多