Tho*_*och 5 rest continuations http session-state spring-webflow
我正在阅读Pro Spring MVC一书中的Spring Web Flow一章。不幸的是,没有明确的信息,流执行过程中的状态将保留在那里。我假设它已保存在JVM Heap中并与会话关联。
现在,HTTP是一种无状态协议(REST ...),我想使用Spring Web Flow而不在服务器上保存状态(除了一个也是唯一一个可以对会话进行身份验证的状态)。
一种策略是在流程的每个HTTP请求(隐藏输入)中发送整个流程的所有参数,从而累积所有必要的参数,直到流程完成。
可以通过已验证参数上的签名来避免重新验证参数的开销。
您知道吗,是否可以通过这种方式使用Spring Web Flow?有人做过吗?
更新:为什么?
持久状态不仅违反了HTTP作为无状态协议的原则,而且还存在一些实际问题:
我尚未查看Web Flow的详细信息,但我相信人们可能具有相同的编程经验,并且仍将所有信息保留在请求参数中。
更新:现在,我了解到我所请求的流处理样式具有一个名称:Continuations。术语“延续”在函数式编程中更为常见,但将其适应HTTP交互显然并不罕见。
您可能有兴趣检查我的 bean flow FSM 项目(restflow): https://github.com/alfonso-presa/restflow
虽然它不使用 Spring WebFlow,但我认为它可能有助于回答问题的实质,因为它允许实现无状态服务器编排流。我开始这个项目是因为我想用 Spring WebFlow 做几乎与你相同的事情,但我发现这是不可能的,因为状态存储在会话中(而且 REST/json 序列化也没有内置)。
它的主要目的是创建一个状态机(就像 WebFlow 所做的那样),但将其状态存储在 bean 中,您可以将其保存在分布式存储中,或者轻松签名或加密并发送回客户端作为下一个请求的延续。
希望对你有帮助。
编辑:我在这里创建了一个展示项目:https ://github.com/alfonso-presa/restflow-spring-web-sample
归档时间: |
|
查看次数: |
1680 次 |
最近记录: |