Spring 网络流量和替代方案

Spring Web Flow and Alternatives

我正在使用 Spring MVC 和休眠构建一个 Web 应用程序。我正在为范围而苦苦挣扎。例如,在同一接口上创建 parent 和 children 需要在第一个 child 创建后重置 child bean。 Spring MVC 不允许从会话范围中删除 bean。同时,跨多个请求范围移动 children 是不切实际的。我需要一个对话范围。

我现在正在寻找 Spring Web Flow 作为解决方案。但是,它的文档很少,似乎完全取决于 xml 配置。这两个功能似乎都表明它是一个较旧且可能没有得到很好支持的项目。

任何人都可以建议我是否应该花时间学习 Spring Web Flow,或者建议与 Spring MVC 相关的替代解决方案。

Spring Web Flow 似乎得到了维护,但未在积极开发中。我看到 a handful of commits,主要是更新依赖版本和修复错误。

你是正确的,流的配置是 XML-only,我认为这是这个老化的 Spring 项目的最大缺点。我搜索了 DSL 或动态构建器,但没有找到任何东西。

话虽如此,我会试一试。简单的流程——甚至是动态和继承的流程——都是可能的。此外,支持表单和 POST-Redirect-GET 模式实现可能对您有用。当您使用浏览器后退按钮时,最后一种技术可以防止重新提交表单。

我现在已经在这上面花了一些时间。

我认为 xml 而不是注释的原因是设计。一旦有了头脑,流程配置就很简单,开发速度非常快。

是的,好像是维护模式,但是设​​计扎实可靠,开发效率也很高。学习曲线有点陡峭,特别是如果集成到现存的网络应用程序中,但我在大约三天内起床 运行。

Webflow 自己的文档不是很好,但是链接的教程 here 非常好。

更新

5 个月后,我建立了一个完整的评估系统(即 test/exam 系统)。我的背景是 IT,我的心理学 Ph.d。

我构建的系统已经过全面测试和压力测试。

webflow的优势

  1. 一个人可以在同一个会话中开始测试、放弃和重新开始,没有任何问题,因为 flowState 会处理所有事情
  2. 用户可以完全控制何时可以使用后退按钮以及用户可以返回多远。在非法使用后退按钮后返回状态非常简单且用户友好。
  3. 压测表现优秀
  4. 配置简单。我几乎没有花时间处理与 Webflow 相关的设计或错误问题。
  5. 从更高层次的设计角度来看,没有无法实现的业务角度所需的用例。

缺点

由于所有对象在网页上呈现之前都已序列化,因此如果将对象从 flowState bean 中取出,则必须非常小心缓存对象的方式。

自从看到 "primefaces" 之后,我自己就一直在看 webflow(过去一天,大约 16 小时)。

Webflow 提供各种类型的状态和到这些状态的转换。状态可以有与之关联的视图(HTML 页面或 JSP 页面 -> primefaces 出现在此处)。每个 JSP 页面都是模板,例如 PHP 仅使用 java 和 xhtml。使用 primefaces 组件,客户端和服务器之间的交互 ​​"seems" 几乎是自动化的(快速开发的优势)。 Webflow 还提供流变量,这是一个 java 数据对象。流变量可以在整个流中都有生命周期,并由视图和模板使用。 Webflow 允许您控制所有状态之间的转换。

然而,我认为这是我停止研究的地方。首先,如果需要在客户端构建流量控制,webflow 相对于使用 AngularJS 和 Spring MVC (@RequestMapping) 的良好客户端 Web 应用程序的优势是什么。如果您想要一个在会话的整个生命周期内都存在的变量,请创建一个 javascript 变量,但是如果该变量只需要存在于服务器上并且您想使用模板,那么 webflow 似乎是一个理想的选择选择。

如果您需要一个有状态的网络应用程序,那么检查 Spring HATEOAS 类型概念(将状态作为参数传递给客户端)可能是个好主意,该参数指的是有限的时间可用性变量。编码更少,似乎更符合互联网模型。