2013-03-08 61 views
1

我目前正試圖比較Spring3和Tapestry 5.3。自2003年以來,我一直是Tapestry的用戶,所以我傾向於有偏見,只是因爲我對Spring沒有經驗。我看到Spring被大多數編寫Java應用程序的公司廣泛採用,所以它迫使我爲我的新Web應用程序查看它。我目前的目標是構建一個非常豐富的JavaScript應用程序,只需很少的配置和大量的可用組件。我對Tapestry5最大的抱怨是它設計用於Prototype庫的事實。Spring3 vs Tapestry 5.3

有人能否給我提供Spring3的積極和消極因素,以及爲什麼一家公司會選擇通過Tapestry5構建Spring3?我搜索了谷歌,似乎我發現的唯一比較是過時的。謝謝。

+0

這實際上是同樣的問題在這裏問,http://stackoverflow.com/questions/2845271/struts-2-or-jsf/2845344#2845344,但與不同的球員。這一切仍然成立。 – 2013-03-08 14:43:03

+0

僅供參考:Tapestry(5.4)的新即將發佈的版本專注於JavaScript,因此也許值得一試。 – 2013-03-14 11:49:10

回答

9

我不得不爲我工作的公司做一個小概念驗證。我查看了Spring MVC 3和Tapestry 5.對於那些沒有使用過Tapestry的人來說,它對UI流程有着非常好的約定,例如。按下按鈕或鏈接。在Page類中的所有內容都是ThreadLocal也很好,因此您不必擔心該級別的併發性。

另一方面,我不喜歡Tapestry對Ajax的支持。它有自己的 進行Ajax操作(區等)的標籤,但它是很難做到

$.ajax({ 
    url: "tapestry_page", 
    success: function(result) { 
    // do something with json result 
    } 
}); 

因爲return types accepted by tapestry的。你說你的項目將會是JavaScript豐富的,這可能意味着很多Ajax。僅僅因爲這個原因,我會和Spring一起去。您只需使用@ResponseBody註釋您的@Controller方法即可,並且您返回的任何內容都將直接寫入響應正文。這對於直接編寫json或xml非常有用(在大多數情況下,它是使用Jackson或JAXB自動生成的)。

隨着Spring的發展,最大的積極因素是它是一個非常成熟的項目,所以您需要的任何東西,有人可能需要它並提供解決方案(並非Tapestry的情況並非如此,但存在更多文檔爲春天)。

春季的幾個負面:這是非常緊密耦合的事情Servlet的方式,doGetdoPost之類的東西表單處理並不像團結一致如同行在Tapestry's form lifecycle。如果你正在做很多同步操作,Tapestry的Page概念是非常好的,也許還有很長的路要走。

我不確定Tapestry是否已經實現了可以在不使用xml的情況下配置整個應用程序的地步,但Spring已經實現了。這可能對你有利。

我的2美分。

+0

感謝Sotirios,我非常希望看看Spring如何處理他們的ajax。 Tapestry的表單處理非常好,因爲它是我曾經工作過的唯一的東西,我不完全確定從其他框架可以期待什麼。除了一些其他地方,例如web-inf http://tapestry.apache.org/configuration.html,除了純粹的經驗之外,Tapestry大部分都可以在java中配置,對於我來說,嘗試Spring可能是最好的選擇。 – 2013-03-08 15:08:49

+0

Spring中的表單處理需要您通過請求參數(用於輸入),但您可以使用'@ RequestParam'註釋輕鬆注入這些參數。 – 2013-03-08 15:12:00

+1

說得好。自5.0.x以來,我一直在使用tapestry,並且我處理的唯一XML用於配置我的應用程序是'web.xml'文件。 – 2013-03-08 19:11:53