首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于web中会话状态的HTTPSession?

用于web中会话状态的HTTPSession?
EN

Software Engineering用户
提问于 2020-10-18 12:08:49
回答 1查看 232关注 0票数 0

我们正在构建一套web。web由客户端调用&可以相互调用。

对于用户会话,这些API需要状态(例如,购物篮类型的东西)。状态可能很大(超过8k),因此看起来不适合客户机。

目前,状态由与数据库交互的应用程序代码直接管理,以存储和检索会话状态。管家的工作每天都会清理数据库。不使用HTTPSession。

我们正在考虑转移到会话关联,以减少数据库IO。我们仍然会在节点失败的情况下编写,但是它消除了读取的需要。

如果我们转移到会话亲和力,我是否正确地说,使用HTTPSession作为我们的内存会话状态是有意义的,这样web容器就可以管理生命周期了吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2020-10-18 15:42:45

当人们谈论“无状态API”时,并不意味着请求不会对服务器状态产生任何影响--毕竟,"REST“中的"S”表示“状态”,但请求的含义不会因状态而改变。这是通过使每个有状态对象成为API的显式部分来实现的。

因此,有状态API可能有一个动词“将项添加到我的购物篮”,其意义完全取决于将请求与以前的“创建篮”请求匹配。在无状态API中,您可能会说“将项添加到购物篮42",其中标识符"42”已被客户端从“创建篮”响应中记住。

REST更进一步说,对象应该是中心概念,而不是对这些对象产生副作用的行为。因此,GET /basket/42可能返回该篮子的当前内容,POST /basket/42/items可能会向其添加一个产品,而DELETE /basket/42/items/13可能会删除一个产品。

这之所以有用,是因为它使客户端在如何使用API方面具有更大的灵活性,而API在其提供的特性方面更灵活。例如,客户端可能希望维护两个单独的篮子,但是基于一组搜索结果;或者API可能提供克隆篮子的能力,或者合并两个篮子来同时支付费用。

因此,与其进一步使用服务器软件处理的透明“会话”,我建议您开始考虑每个服务的会话标识符代表哪些有状态对象。

即使您不重新设计服务以使这些对象显式化,也可以重新构建您的体系结构决策:

  • 该对象的适当生存期是多少?
  • 这个对象读一次和写了多久一次?
  • 如果该对象由于服务器故障而丢失,将产生什么后果?
  • 你需要这个物体的中心可观测性吗?

所有这些都需要询问是否使用HTTPSession,因为您需要配置它存储数据的位置、存储时间等等。自动化的主要内容是API中最不相关的:如何使无状态web浏览器在没有自定义客户端代码的情况下充当有状态客户端。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/418072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档