【问题标题】:Struts 1.x vs Struts 2.xStruts 1.x 与 Struts 2.x
【发布时间】:2011-08-17 14:24:15
【问题描述】:

我已经查看了一些关于 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 的决定。

【问题讨论】:

  • 我会厌倦使用这样一个旧框架来开始一个新项目。

标签: java struts2 struts-1


【解决方案1】:

更一般地说,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 不会花费更多时间。

请具体说明你期待什么样的差异..

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      struts2.0有更多的特点和优势,struts2.0没有form梁, 一个良好且功能强大的完整验证框架,大多数在 struts2.0 中导入,每个请求都有一个动作实例,但在 sturts1.x 中只有一个用于孔应用的动作实例。

      所以选择是你的。 :)

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

          【解决方案5】:

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

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

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

          那些在过去五年中只使用过时框架的员工也会感谢您。是时候学习新技能了。

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

          【讨论】:

          • 我完全理解你的意思。但我担心的是,我参与了选择新技术的项目(因为它是最近的,并且有 x,y 的好处)并且由于缺乏对框架的理解,做出了错误的设计决策和项目迟到了。我不能让这个项目发生这种情况,所以我很想保持安全!....至于 Spring/Play,我很想使用 Play(我是 Play 书的作者),但管理层不太可能对框架的支持相对较年轻(我已经尝试过)。
          • +1 用于 Struts 1 cmets。 Struts 2 是一个不错的选择,Play 也是如此。不过,除非您使用 Spring DI/AOP,否则我看不出使用 Spring MVC 的意义。
          • 使用 Spring MVC 并不比使用 Struts 1.x 差。而且您不必使用所有 Spring 机器即可从其中的一部分中受益。它也适用于点菜。
          • 我来这里的原因是我有 Struts1 的经验,但没有 2。我需要一个很好的理由来远离团队熟悉的东西,所以我想看看是否有有足够的理由做出改变来抵消潜在的学习曲线困难。
          【解决方案6】:

          主要的原因是使用 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 只是在名称上相似,但在底层架构上却大不相同。

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-11-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-10-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多