2011-05-03 223 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可能不會更小,所以我建議考慮它(或條紋)。