问题标签 [stateful]

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 投票
1 回答
1007 浏览

service - 网络服务状态

我有两个 wcf 服务,它们使用 http 绑定在 IIS 中托管相同的接口。两者都只有三种方法:

  1. OpenFile(userid)它创建或打开 userid.txt。

  2. Write(userid, X)它将 X 写入文件

  3. Close(userid)关闭文件

InstanceContextMode =InstanceContextMode.PerSession用于服务 B。

服务一:

  • 它是无状态的(服务在技术上不需要记住用户 ID,它由客户端跟踪)还是有状态的(服务操作就像一个状态机。客户端必须以特定的顺序调用方法)?

  • 如果使用 HTTPS 绑定,它是有状态的吗?

服务乙:

  • 它是无状态的、有状态的(因为使用了 IIS 会话)吗?

我想一个更普遍的问题是 Web 服务的状态是否取决于它的设计和实现方式或托管方式?是否有一个“清单”,我可以通过它来确定我的 Web 服务是归类为无状态还是有状态?

谢谢

0 投票
8 回答
135667 浏览

terminology - 无状态与有状态

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

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

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

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

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

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

0 投票
2 回答
11641 浏览

c# - WCF 服务默认是无状态的吗?

我有一个简单的 WCF 服务,它允许客户端/消费者应用程序通过提供用户名和密码来登录。如果用户名和密码都正确,WCF 服务会为客户端提供一个 GUID。GUID 和用户名随后作为键/值对存储在 WCF 服务中。从这里开始,客户端将其 GUID 与每个请求一起发送,作为识别手段。

由于我将键/值对存储在 Dictionary/Hashmap 中,因此这种方法仅在 WCF 服务是有状态的情况下才有效。问题是,它们在默认情况下是有状态的,还是我必须做些什么才能让它们以这种方式表现?

0 投票
1 回答
228 浏览

asp.net - IOC 容器和 Web 应用程序

我已经开始研究这个 .NET Web 应用程序,它有一个 IOC 容器(Windsor)来创建业务管理器,并将它们保存在内存中,直到 IIS 回收它们。基本上,这些业务经理有自己的状态,其内容是从 Application_Start 触发的后台线程修改的数据。这不是我期望 Web 应用程序工作的方式(对于每个请求,它应该是无状态的并且每个线程),我不太确定这个实现是否可持续/可扩展。有没有人以这种方式尝试过这些事情,如果是的话,你看到的后果/优点是什么?

0 投票
2 回答
578 浏览

wcf - 这是有状态的 Web 服务/wcf 服务吗?

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

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

0 投票
1 回答
5041 浏览

extjs - Extjs 4 FiltersFeature vs 状态网格

我有一个带有过滤器的列的网格。列定义:

这是过滤器功能定义

问题是:当我尝试保存网格状态时,过滤器不起作用:当我将此代码添加到网格时:

我刷新页面,一切正常,因为我的 cookie 中没有状态。但是当我第二次刷新页面时 - 来自 cookie 和过滤器的状态加载不起作用。如果我删除 stateful: true 并刷新页面,过滤器工作正常。有什么建议么?我还注意到,extjs 站点中的所有示例都仅带有过滤器或带有状态网格,但没有一个示例同时具有这两者。

更新:最有用的方法是制作我自己的方法来保存我需要的元素状态并恢复它。

0 投票
2 回答
2819 浏览

python - 是否可以制作一个上下文敏感的 python 上下文管理器来保存、修改和恢复状态?

我有一对 python 函数,它们当前在两个值之间翻转一个全局变量。我想把它们变成上下文管理器,这样我就可以将它们用作with块,在块内设置变量,但在之后恢复它。这是所需的行为:

这样的嵌合体可能吗?

更新:为了清楚起见,这里是仅上下文管理器的实现:

使用关键字调用这些 w/oa 会返回一个生成器。有没有办法通过普通函数调用和巧克力上下文管理器来获得模式翻转行为?

0 投票
2 回答
3004 浏览

jakarta-ee - 来自不同客户端的 EJB3 有状态并发调用

我有一个调用远程有状态 ejb 的富客户端 swing 应用程序。我正在使用 JBoss 6.0。

我已经将客户端部署在两台不同的机器上,即不同的 ip 地址、jvms 等。

有状态的有以下代码:

客户端有以下代码:

然后,当我运行第一个客户端时,ejb 执行 println 命令并开始执行循环(如预期的那样)。但是,当我在另一台机器上运行第二个客户端时,在第一个方法调用完成之前,ejb 不会打印任何内容。换句话说,有状态 bean 似乎无法处理并发调用,即使来自不同的客户端也是如此。

如果我们查看 println 命令,我们可以看到:

当服务器完成第一次调用的执行时,第二次调用会打印输出:

我可以注意到有状态的两个不同实例(正如预期的那样,每个客户端一个实例),它们在不同的线程中运行。

当我使用无状态而不是有状态时,它可以工作。但是,在我的应用程序中,我需要保留一些来自客户端的数据,而有状态的似乎更合适。

0 投票
2 回答
5781 浏览

gridview - extjs 有状态网格删除排序

我有状态网格的问题。我不想保存排序状态,但我确实想保存所有其他选项(列位置、列宽、分组等)

现在我已经用 stateEvents 选项尝试了这个,但是当偶数触发时它会保存整个网格状态。

是否有任何选项可以将排序状态排除在保存之外?

部分网格配置:

0 投票
1 回答
1376 浏览

ejb - 使用 EJB 3.1 Singleton Bean 作为多个远程有状态会话 Bean 的客户端

我对 EJB 3.1 非常陌生,正在尝试解决服务器端问题;也许有人可以提供一些指导。

我有一个状态机,它代表我的应用程序中多个用户的共享状态。我正在尝试将此状态机建模为有状态会话 Bean;由于这个状态机代表了多个用户,我引入了一个单例会话 bean,它是状态机的实际客户端,所有用户最终都成为单例 bean 的“客户端”。当我想在应用程序的整个生命周期中对多个 StateMachine 进行生命周期时,我的问题就出现了。

我希望我的 Singleton bean(“管理器”)处理客户端请求并分发到适当的 StateMachine - 我将如何访问该 Stateful bean 的特定实例?为了进一步增加复杂性,我尝试远程访问这些 StateMachine bean(如果它是本地的,我只需将这些东西的实例创建为 Manager 的成员)。

无论如何,我希望这很清楚。我觉得我错过了 EJB 设计的一些基本点;你们都会告诉我是不是这样。