簡體   English   中英

Struts 1.x 與 Struts 2.x

[英]Struts 1.x vs Struts 2.x

我已經回顧了一些關於 SO 的 Struts 1 vs 2 問題,但似乎沒有一個從我正在看待的角度回答這個問題。

我即將開始構建一個新系統,一個非常舊的桌面應用程序的完整重新設計。 目標是使其基於 web,添加更多功能,使其更可用等(通常的重新設計原因)。

將開發該系統的團隊主要是 Java 開發人員,並且在過去 5 年中廣泛致力於 Struts 1.x。

該系統打算在未來多年使用,因此在 3-5 年內出現更好的框架時再次重新設計的想法是不可行的。 它不打算大量使用 AJAX。

我的問題是,當我的團隊對 Struts 1.x 非常有經驗時,我為什么還要費心遷移到 Struts 2。 我知道有一些改進,但我擔心讓團隊加快速度所浪費的時間、由於使用不正確而導致的返工等將遠遠超過我們從 Struts 2 中獲得的任何好處。我們喜歡 Struts 1,它做了我們想做的事需要這樣做,並且所有的設計模式、標准、最佳實踐等都已到位。

Struts 2 中是否有任何殺手級功能或我在 Struts 1 中不知道的嚴重問題會影響繼續使用 Struts 1 的決定。

如果您從頭開始構建系統,我肯定會使用 Struts 2.x 版。 對於 Struts 1.x 團隊來說,學習曲線不會很好,但您將能夠利用最新的 MVC 框架。

對我來說,Struts 2.x 將提高生產力的兩個主要特性是:

  • 內置 AJAX 支持
  • 沒有更多的 ActionForms - 如果需要,您可以直接綁定到域對象,所以這個中間步驟已經過去了。

如果您正在處理一個大型項目,您可能需要查看一個組件框架,例如 JSF 2 或 Wicket。 如果你決定繼續使用基於 Action 的框架,那么我個人認為 Stripes 是一個更高效的框架。

Struts 1.x 是 2000 年的老式技術。 為什么你甚至會考慮在一個全新的應用程序上堅持使用它?

我可以看到的最大缺點是 Struts 將您鎖定在基於 JSP 的瀏覽器 UI 中。 Struts Actions 只能在框架內重用。 如果需要,您將很難將移動設備無縫集成到該系統中。

我會開始考慮 web 服務,最好是基於 REST 的服務和 AJAX。 世界變了。 我會尋找 Struts 的替代品,例如 Spring 或 Play。 選擇一個新的 web 框架並不是什么大不了的事,但好處可能是值得的。

那些在過去五年里除了使用過時的框架外什么都沒做的員工也會感謝你。 是時候學習新技能了。

更新:如果您已經嘗試過,並且不能遲到,並且限制太多,那么我會說您已經知道答案。 來到這里希望得到什么? 我沒有看到你沒有考慮清楚的論點。

鑒於您的團隊在Struts 1.X和您的產品方面也很穩定,因此我看不到遷移到Struts的充分理由2. Ze9713Ae04A02A810D6F33D956F42794Z似乎也同意Z80791B3AE7002CBB88C2C2468C246D9.BBB88C29.DARTRESTRIND。 org/roadmap.html#migrate_s1

我想而不是問“堅持使用 Struts1 還是轉移到 Struts2?” 你最好問“堅持使用 Struts1 還是轉向基於現代動作的 MVC web 框架?”。 為什么要搬家? 因為 Struts1 很舊而且(坦率地說)很爛。 為什么不能動? 因為我們必須學習一個新的框架。 當然,你知道你的資源,你必須進行評估。 但請記住,現代基於動作的框架(Struts2、SpringMVC、Stripes)非常容易學習,如果您的團隊已經了解 Struts1,則更是如此。

我自己,我已經從 Struts 遷移到 Struts2,現在我不想回到 Struts1 編程(那些笨拙的 ActionForms。)。 我認為 Struts2 要好得多,但也必須考慮到 Struts2 也有其弱點。 項目看起來不是很健康,社區看起來也不是很活躍,Struts1 到 Struts2 的跳躍並不大,但不像版本變化那么小(“Struts2”是用詞不當),而且可能不會更小即跳轉到 SpringMVC。 所以我建議考慮它(或條紋)。

更一般地說,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 不會花費更多時間。

請具體說明您期望什么樣的差異..

在 struts2.0 中有更多的功能和優勢,在 struts2.0 中沒有表單梁,一個良好而強大的完整驗證框架,並且大多數導入到 struts2 中的每個實例都只有一個實例。孔應用的一個實例。

所以選擇是你的。 :)

主要原因是遷移到 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 僅在名稱上相似,但在底層架構方面卻大不相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM