问题标签 [stateless]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
703 浏览

ajax - 坚持我的 REST 武器还是打破无国籍状态?需要建议

我写了一个 RESTful servlet,UI 开发人员希望将登录状态保存在服务器上。

他提出了一个奇怪的说法:“我还没有遇到过纯 REST 的生产 REST 实现。我见过的都是让服务器维护会话。”

我觉得这很难接受。首先,技术上存在大量纯 HTTP 页面,全都是纯 RESTful 的。其次,是的,有标记为 RESTful 的非 RESTful 实现,就像标记为“黄金”的黄铜一样。第三,仅仅因为其他人跳下桥并不意味着我应该。

背景:它是一个使用 HTTPS 和基本身份验证的 JavaScript Ajax Web 应用程序。为避免出现通常的(不可自定义的)浏览器登录弹出框,应用程序会显示一个登录屏幕,其中包含产品徽标以及名称和密码的文本框。名称和密码存储在文档中,并在每个请求的 Authorization 标头中发送。如果刷新页面,名称和密码将丢失,用户必须再次输入。这被认为是一个错误;UI 开发人员希望能够在不再次输入密码的情况下按下刷新按钮。

所以开发者想要使用cookie 或JSP 会话。Abby,最终每个 REST 实现都会在服务器上维护应用程序状态,这是真的吗?或者有什么方法可以解决这个问题并且仍然保持我的 RESTful 纯度?

0 投票
1 回答
283 浏览

java - TopLink 中的自主交易

我面临一个问题,我想在 TopLink 中实现自治事务,但我不太确定是否可能。我也研究过休眠,因为我们在那里有无状态会话......我们在 TopLink 中是否有相同的东西......请帮忙。

0 投票
1 回答
514 浏览

nhibernate - Nhibernate:批处理和无状态会话

我试图在配置文件中设置批处理值,我发现使用它有明显的好处,因为插入 25000 个条目比不进行批处理花费的时间更少。我的问题是,反指示是什么,或者使用批处理的危险是什么?正如我所看到的,我只看到设置批处理值并激活它的好处。

另一个问题是关于 StatelessSession。我也在测试这个,我注意到当我做一个 scope.Insert 时,与做一个常规会话的 scope.Save 相比,它需要更多的时间,但是当我做一个提交时,它就像闪电一样快。StatelessSession 中的插入是否有任何理由比常规会话中的保存花费更多时间?

提前致谢

0 投票
2 回答
3713 浏览

java - 用 Wicket 做一个主要是无状态的 web 应用程序很难吗?

我已经用 Wicket 工作了一两个月了,用它制作简单的 Web 应用程序并习惯了模型等等。现在我想继续前进,看看我是否可以将到目前为止所学的知识用于创建一个中型/大型 Web 应用程序。但是,我没有花太多时间思考如何使页面无状态。

如果我理解正确的话,制作无状态页面是通过将页面设为书签并确保没有将有状态组件添加到页面来实现的。

对于我正在制作的网站,我想避免“页面过期”消息,让用户通过 cookie 登录,无需登录/创建会话即可提供大量内容,并且我希望分页等功能成为无状态且可收藏。

这对于例如 PHP 来说没有问题,但在我看来,很多有用的 Wicket 组件都是有状态的。我是否要做很多工作,例如创建自己的无状态组件集,还是没什么大不了的?

我希望有人可以通过指出正确的方向来帮助我。

编辑:可以说我想写一个博客。如果用户决定阅读一篇文章 2 小时然后尝试通过例如分页进一步导航,则应该可以浏览帖子、类别等,而不必担心页面会过期。我想让用户一次保持登录一个月,但我也不完全希望将他们的会话存储一个月。

对于如何使用 Wicket 完成我刚才描述的内容,我将不胜感激。

0 投票
1 回答
278 浏览

session - 兵马俑是专业使用的吗?

今天在工作中,我和我的同事和我的老板讨论了无状态/有状态 bean(我们刚刚完成了一个使用 JSF 的项目,这是这家公司第一次有人做 JSF 相关的事情),我的老板说他不' 不太喜欢 Session 范围的 bean(甚至是对话 / KeepAlive 范围的)。他的一个论点是,如果我们有例如 4 个 Tomcat 并且有来自用户的请求,那么我们并不确定它是否会被同一个 Tomcat 每次“捕获”,问题是如果在第一次出现请求并创建会话 bean 时,它只在那个 Tomcat 上创建,其他人不知道。

他提到的解决方案之一是所谓的“粘性会话”,它强制来自给定用户的请求每次都由同一个 Tomcat 处理。根据他的第二个解决方案是将所有数据存储在“视图”中,但这意味着将整个状态存储在 POST 中,不知何故我不太喜欢这个想法。然后他提到将状态存储在数据库中,并在需要它的请求到达时查询它。我认为这会对性能造成非常大的影响,但他说这真的不是问题,因为数据库应该为此类任务做好准备。

我感兴趣的最后一个解决方案是 Terracotta 服务器,据他告诉我们,它应该为所有 Tomcat 存储会话 bean(与它同步,然后如果有请求进来,它们会在里面寻找会话 bean红陶)。看起来有点酷且可扩展,但他说他并没有真正看到它在大型专业系统中使用过,对吗?我尝试了一些关于它的信息但失败了,Terracotta 是否有问题阻止人们使用它?

0 投票
1 回答
6780 浏览

api - 如何实现无状态的 REST API

我正在开发一个 REST API,供编写移动应用程序的开发人员使用。用户将能够使用 3rd 方服务(Google、Twitter 等)来验证自己,这主要由 OAuth 处理(取决于相关服务)。我们在客户端应用程序和 API 服务器之间使用 2-legged OAuth(其中消费者密钥/秘密是特定于应用程序的,当应用程序在那里注册时,开发人员会从我们的站点获取它)。

我的问题是如何处理以无状态方式跟踪用户身份验证。我没有在每个请求中发送的用户凭据。我可以在用户登录时创建一个唯一的 session_id,然后在对 REST API 的每个请求中都需要它。我的问题还有其他解决方案吗?从无状态 REST API 的角度来看,使用唯一的 session_id 来识别用户是否会导致任何问题?

0 投票
4 回答
1134 浏览

asp.net - 有没有办法使用 ASP.NET 在用户离开页面时始终运行一些服务器端代码?

我想知道当用户在 ASP.NET 中离开页面时,是否有任何方法可以始终运行一些服务器端代码。页面 Unload 事件不好,因为如果有人单击链接,则不会调用该事件。理想情况下,即使用户关闭浏览器,我也希望代码能够运行。

我怀疑我问的是不可能的,但问也无妨

0 投票
5 回答
12990 浏览

java - Java 持久性应用程序无状态与有状态

我是 JPA 的新手,我无法理解无状态和有状态之间的用途和区别。

有什么经验吗?

问候, 海瑟姆

0 投票
8 回答
135667 浏览

terminology - 无状态与有状态

我对有一些关于编程中的无状态和有状态设计的具体信息的文章感兴趣。我很感兴趣,因为我想了解更多关于它的信息,但我真的找不到任何关于它的好文章。我在网上阅读了几十篇模糊讨论该主题的文章,或者他们在谈论 Web 服务器和会话——它们也是“有状态与无状态”的,但我对编码中的属性的无状态与有状态设计感兴趣. 示例:我听说 BL 类在设计上是无状态的,实体类(或者至少我是这么称呼它们的——比如 Person(id, name, ..))是有状态的,等等。

我认为了解它很重要,因为我相信如果我能理解它,我可以编写更好的代码(例如考虑粒度)。

无论如何,真的很短,这就是我所知道的关于有状态与无状态的:

有状态(如 WinForms):存储数据以供进一步使用,但限制了应用程序的可扩展性,因为它受 CPU 或内存限制

无状态(像 ASP.NET - 尽管 ASP 尝试使用 ViewStates 来保持状态):操作完成后,数据被传输,实例被交回线程池(非晶态)。

正如您所看到的,它的信息非常模糊和有限(并且非常关注服务器交互),所以如果您能给我提供一些更美味的信息,我将非常感激 :)

0 投票
1 回答
403 浏览

asp.net - 走向“无状态”并动态加载脚本

我想知道的是我是否从正确的角度接近这个问题。

我有一个我正在构建的 asp.net 应用程序。我正在使用 Masterpage 来查看应用程序的整体外观(您可以在下面看到代码)。

我想让菜单系统使用像 jQuery 的.load()函数这样的动态加载来加载内容。那很好,我把它记下来了。该.load()函数用于innerHTML将该内容泵入页面。如果您想在该页面上加载特定于模块的脚本和样式,这是一个问题。

我的问题是,在这样的环境中,你们如何为这些模块加载脚本?我应该在应用程序的初始加载时加载每个脚本吗?这个应用程序永远不会“那么大”,但我想确保我做对了,以防万一。

主表

内容标签内的示例模块

我的想法是在每个模块中设置一个divID 为“includeScripts”的模块,并从母版表中的方法加载这些模块,就像这样。这种方法有效(显然需要一些调整)但是如果用户继续点击模块,最终每个文件都会被加载。如果是这样的话,我不妨将它们全部加载到母版表上。

加载 MasterPage 时要运行的 JS