2011-05-03 147 views
7

我已经回顾了几个关于SO的Struts 1 vs 2问题,但似乎没有回答我正在用它来看待这个问题。Struts 1.x vs Struts 2.x

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

将要开发该系统的团队主要是Java开发人员,并且在过去5年中广泛地从事Struts 1.x的工作。

该系统的目标是在未来的许多年内生活,所以在3 - 5年的时间里重新设计一个更好的框架出现的想法不是一种选择。它并不打算大量使用AJAX。

我的问题是,当我的团队对Struts 1.x非常有经验时,为什么我会打扰移植到Struts 2。我知道有一些改进,但我担心由于错误的使用等原因导致团队加快​​速度,返工的时间将远远超过我们从Struts 2中获得的任何好处。我们喜欢Struts 1,它能做到需要它,所有的设计模式,标准,最佳实践等都已到位。

是否有杀手使用Struts 2或严重的问题,功能我不知道在Struts 1里,将动摇留在Struts 1

+3

我会厌倦使用这样一个旧的框架来开始一个新的项目。 – 2011-05-03 16:01:59

回答

7

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

对于我的Struts 2.x中的两个主要特点,这将提高生产率:

  • 内置AJAX支持
  • 没有更多的ActionForm - 如果你想为域对象,你可以直接绑定,所以这中间步骤已经过去了。

如果这是一个很大的项目,你可能需要查看一个组件框架, JSF 2或Wicket。如果你决心继续使用基于Action的框架,那么我个人发现Stripes是一个更高效的框架。

0

更一般的决定,Struts的2.x的分层架构比较Struts 1.x.例如,在数据层,搭2.x的具有VO和DAO之间DO层..类似地,其它特征将在下面的链接提到..

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

由于您的团队有更有经验与支柱1 .x,我不认为需要更多时间将代码迁移到struts 2.x.

请具体说明ü期待什么样的区别..

0

在struts2.0中还有更多的功能和优势,在struts2.0中没有表格梁, 一个很好的和功能完整的验证框架,并且最多在struts2.0中导入每一个请求都有一个动作实例但是在sturts1.x中只有一个孔应用实例。

所以选择是你的。 :)

3

Struts 1.x是2000年的复古技术。为什么你会考虑在全新的应用程序上坚持使用它?

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

我会开始考虑Web服务,最好是基于REST的和AJAX。世界已经改变。我会研究Struts的其他选择,比如Spring或Play。选择一个新的Web框架并不是什么大不了的事,但好处可能是值得的。

那些过去五年没有做过但过时的框架工作的员工也会感谢你。新技能的时间。

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

+0

我完全理解你的观点。但是我担心的是,我参与了一个项目,那里选择了一项新技术(因为它更新,而且有x,y的好处),并且由于对框架缺乏了解,做出了不好的设计决策,项目很晚了。我不能让这个事情发生在这个项目上,所以我很想保持安全!至于Spring/Play,我很乐意使用Play(我是Play书的作者),但管理层不太可能买入框架相对年轻(我已经尝试过)。 – Codemwnci 2011-05-03 11:49:53

+1

+1为Struts 1评论。 Struts 2是一个不错的选择,就像Play一样。不过,除非你使用Spring DI/AOP,否则我没有看到使用Spring MVC的意义。 – 2011-05-03 16:00:35

+0

使用Spring MVC并不比使用Struts 1.x更糟糕。而且你不必使用所有的Spring机器从其中获益。它也可以很好地点菜。 – duffymo 2011-05-03 16:15:37

0

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

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

  1. 基于行动框架
  2. 甲强Ajax支持
  3. 拦截器的方法(框架的核心) 4从即成让API解耦这意味着纯POJO这样的单元测试将变得更容易

但我的观点很简单struts2和struts1在名称上只有相似之处,但在底层体系结构方面它们是完全不同的。

0

我想不是问“坚持Struts1还是转向Struts2?”你最好问“坚持Struts1还是转向基于MVC的现代动作框架?”。为什么要搬家?因为Struts1很老,并且(坦率地说)很糟糕。为什么不移动?因为我们必须学习一个新的框架。当然,你知道你的资源,你必须做评估。但是请记住,基于现代动作的框架(Struts2,SpringMVC,Stripes)很容易学习,如果你的团队已经知道Struts1,那么更是如此。我已经从Struts迁移到Struts2,现在我不想回到Struts1编程(那些笨拙的ActionForms!)。我认为Struts2好多了。但是我们也必须考虑到Struts2也有其弱点,这个项目看起来并不健康,而且社区看起来不太活跃。 从Struts1跳转到Struts2并不是很大,但并不像版本变化那么小(“Struts2”是一个用词不当),跳到SpringMVC可能不会更小,所以我建议考虑它(或条纹)。