【问题标题】:Is this stateful web service/wcf service?这是有状态的 Web 服务/wcf 服务吗?
【发布时间】:2011-09-11 00:20:40
【问题描述】:

服务层有一个登录方法,它接受用户名和密码,如果帐户有效,则返回唯一的会话 ID(一个 guid)。

在后续请求中,将传递相同的会话 id,而不是传递用户名和密码,这是有状态的还是无状态的,因为除了每个请求的身份验证之外,我不需要任何状态信息

【问题讨论】:

    标签: wcf web-services stateful


    【解决方案1】:

    客户端连接、交换数据、将其存储在某处,然后断开连接。在随后的连接中,必须将 SAME DATA 传递回服务器。这不是有状态的。

    在有状态连接中,您将连接、验证,然后简单地使用服务。服务器会“记住”您,而无需不断提醒您的会话 ID。这绝对是无国籍的。

    【讨论】:

    • 在服务器端,会话 id 将被存储,以便在后续请求时可以验证
    • 是的,但它存储在磁盘上,而不是内存中。此外,客户端需要不断提醒服务器,“嘿,又是我”。这不是有状态的。
    • 可以使用存储来伪造状态(例如 cookie)。然而,设置本身本质上是无状态的。
    • 实际上托管在 asp.net 中的 wcf 会话将默认存储在内存中的 Proc 中。
    • @LDAdams:好吧,那是我的错。好的,所以它是一个更快的存储,但它仍然需要提醒客户是谁。
    【解决方案2】:

    我会说它可以被认为是有状态的。服务器正在存储有关您的会话的信息,包括客户端活动(超时等)。我还可以看到这种争论,尤其是在 Java 世界中,无状态和有状态 Bean 的定义更加明确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 2012-11-08
      • 2011-08-28
      • 2015-03-20
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      相关资源
      最近更新 更多