1

Web 应用程序可以通过哪三种方式为用户提供有状态的体验?(使用 http)我知道 Sessions 和 Cookies 是其中的两种,但不知道第三种(数据库??)

是的,讲座中的一个问题。

4

5 回答 5

7

实际上只有两种方法

  • 识别每个请求背后的用户,并将此识别与会话上下文(存储在内存中、数据库中、任何地方)相关联,这就是会话 ID 或 cookie(用于 ID 目的)的来源。
  • 管理 100% 的上下文由客户端传回(将上下文嵌入客户端将使用的 url 或表单中;ViewState 以这种方式工作 (*)。此外,Cookie 也可以用于存储此类语境。

上下文数据在请求之间的持久化方式,对于基于识别用户的系统,提供身份的方式,提供了上面列出的两种方法的许多变化。例如:

  • 数据库中的上下文,
  • 记忆中的语境
  • 文件中的上下文
  • 在 ViewState 中传递的上下文 (*)
  • 语境 ...,
  • 存储在 cookie 中的上下文
  • 来自 SessionID 的 ID 在 URL/Form 上传递
  • 来自 Cookie 的 ID

(*) 编辑:我最初将 ViewState 标记为会话 ID 传递设备,但正如 erikkallen 所指出的,ViewState 的默认用途是传递上下文信息,而不是 ID。

然而,最终,这一切都取决于上下文是存储在服务器端还是随每个请求往返于客户端。

于 2009-10-22T01:30:27.563 回答
0

不止三个。

  • 会话状态
  • 查看状态
  • 饼干
  • 数据库
  • 缓存
  • 将数据写入文件

基本上任何可用于跨 Web 请求持久化数据的东西都可用于存储状态。

于 2009-10-22T01:29:16.643 回答
0

查询字符串是最常用的方法之一。例如

http://www.site.com/products/index.aspx?productId=3&page=2&showInactive=n

于 2009-10-22T01:37:14.057 回答
0

看起来像一个家庭作业问题。无论如何,它是模糊的.. 跟踪用户的方法?存储用户数据的方法?

可以使用 cookie、url 令牌或隐藏字段(在表单的情况下)进行跟踪。

存储数据可以通过很多不同的方式完成。

最常见的场景是将会话 ID 存储在 cookie 中,并使用该 ID 检索用户的会话。

于 2009-10-22T01:38:31.450 回答
0

AJAX 是使无状态 Web 应用程序显示为有状态的第三个部分。

它仍在幕后提交请求,但对用户而言 - 屏幕不会刷新或看起来像网站。

您可以拥有一个数据库驱动的网站,但它不会是有状态的。

于 2009-10-22T01:53:10.323 回答