8

我已经回顾了一些关于 SO 的 Struts 1 vs 2 问题,但似乎没有一个从我正在看待的角度回答这个问题。

我即将开始构建一个新系统,一个非常旧的桌面应用程序的完整重新设计。目标是使其基于网络,添加更多功能,使其更可用等(通常的重新设计原因)。

将开发该系统的团队主要是 Java 开发人员,并且在过去 5 年中广泛致力于 Struts 1.x。

该系统打算在未来多年使用,因此在 3-5 年内出现更好的框架时再次重新设计的想法是不可行的。它不打算大量使用 AJAX。

我的问题是,当我的团队对 Struts 1.x 非常有经验时,我为什么还要费心迁移到 Struts 2。我知道有一些改进,但我担心让团队加快速度所浪费的时间、由于使用不正确而导致的返工等将远远超过我们从 Struts 2 中获得的任何好处。我们喜欢 Struts 1,它做了我们想做的事需要这样做,并且所有的设计模式、标准、最佳实践等都已到位。

Struts 2 中是否有任何杀手级功能或我在 Struts 1 中不知道的严重问题会影响继续使用 Struts 1 的决定。

4

7 回答 7

9

如果您从头开始构建系统,我肯定会使用 Struts 2.x 版。对于 Struts 1.x 团队来说,学习曲线不会很好,但您将能够利用最新的 MVC 框架。

对我来说,Struts 2.x 将提高生产力的两个主要特性是:

  • 内置 AJAX 支持
  • 没有更多的 ActionForms - 如果需要,您可以直接绑定到域对象,所以这个中间步骤已经过去了。

如果您正在处理一个大型项目,您可能想要查看一个组件框架,例如 JSF 2 或 Wicket。如果你决定继续使用基于 Action 的框架,那么我个人认为 Stripes 是一个更高效的框架。

于 2011-05-03T10:55:58.637 回答
4

Struts 1.x 是 2000 年的老式技术。为什么你甚至会考虑在一个全新的应用程序上坚持使用它?

我可以看到的最大缺点是 Struts 将您锁定在基于 JSP 的浏览器 UI 中。Struts Actions 只能在框架内重用。如果需要,您将很难将移动设备无缝集成到该系统中。

我会开始考虑 Web 服务,最好是基于 REST 和 AJAX。世界变了。我会寻找 Struts 的替代品,例如 Spring 或 Play。选择一个新的 Web 框架并不是什么大不了的事,但好处可能是值得的。

那些在过去五年里除了使用过时的框架外什么都没做的员工也会感谢你。是时候学习新技能了。

更新:如果您已经尝试过,并且不能迟到,并且限制太多,那么我会说您已经知道答案。来到这里希望得到什么?我没有看到你没有考虑清楚的论点。

于 2011-05-03T11:24:25.477 回答
2

鉴于您的团队在 Struts 1.x 方面经验丰富,并且您的产品也很稳定,我认为没有充分的理由迁移到 Struts 2。Apache 似乎也同意http://struts.apache。 org/roadmap.html#migrate_s1

于 2011-05-03T10:36:51.847 回答
1

我想而不是问“坚持使用 Struts1 还是转移到 Struts2?” 你最好问“坚持使用 Struts1 还是转向基于现代动作的 MVC Web 框架?”。为什么要搬家?因为 Struts1 很旧而且(坦率地说)很烂。为什么不能动?因为我们必须学习一个新的框架。当然,你知道你的资源,你必须进行评估。但请记住,现代基于动作的框架(Struts2、SpringMVC、Stripes)非常容易学习,如果您的团队已经了解 Struts1,则更是如此。

我自己,我已经从 Struts 迁移到 Struts2,现在我不想回到 Struts1 编程(那些笨拙的 ActionForms!)。我认为Struts2要好得多。但也要考虑到 Struts2 也有它的弱点,项目看起来不太健康,社区看起来也不是很活跃。从 Struts1 到 Struts2 的跳跃并不大,但也不如版本变化那么小(“Struts2”用词不当),而且跳跃到 SpringMVC 可能不会小,所以我建议考虑一下(或条纹)。

于 2011-05-04T14:41:30.433 回答
0

更一般地说,Struts 2.x 分层框架与 Struts 1.x 相比。例如在数据层中,Struts 2.x 在 VO 和 DAO 之间有 DO 层。类似地,下面的链接中提到了其他特性。

http://struts.fromdev.com/2008/08/struts-1-vs-struts-2.html ..

由于您的团队在 struts 1.x 方面有更多经验,我认为将您的代码迁移到 struts 2.x 不会花费更多时间。

请具体说明您期望什么样的差异..

于 2011-05-03T10:28:56.877 回答
0

主要原因是迁移到 struts 2.x 来代替 struts 1.x 是 struts 1.x 处于维护阶段,现在没有太多积极的开发。

现在,当一个对 struts 1.x 有很好理解的团队开始时,他们将很快获得底层系统。但在此之前让我明确一点。struts1.x 与 struts 2.x 没有相似之处,唯一的相似之处是从父母那里继承的名称。struts2 具有以下优点。

  1. 基于行动的框架
  2. 强大的 Ajax 支持
  3. 拦截器方法(框架的核心) 4 与 Serve let API 解耦,这意味着简单的 POJO,因此单元测试会容易得多

但我的观点是简单的 struts2 和 struts1 仅在名称方面相似,但在底层架构方面它们完全不同。

于 2011-05-04T04:44:04.473 回答
0

struts2.0 有更多的特性和优势,struts2.0 没有表单梁,一个良好而强大的完整验证框架,并且大多数在 struts2.0 中导入,每个请求都有一个动作实例,但仅在 sturts1.x 中孔应用的一个实例。

所以选择是你的。:)

于 2011-05-03T10:50:44.737 回答