2011-08-02 43 views
2

我開始將演示交易應用程序的前端重寫爲富Web客戶端(當前實現在Silverlight中 - 您可以看到它here)。我正在考慮重寫兩個選項:使用jQuery standalonne與服務器端表示框架的Web應用程序

  1. 獨立的基於JavaScript客戶端使用框架如jQuery UI
  2. 使用客戶端框架如jQuery UI加一個服務器端框架,如
  3. 混合型客戶端ASP.NET MVC3,JSF,GWT等。

您對每種方法的優缺點有何看法?我主要在尋找能夠應用良好的架構原則(如MVC和事件)來創建易於理解和維護的乾淨模塊化設計。

編輯:看看回復,我想澄清一下,存在執行大量業務邏輯的服務器組件(請參閱此architecture diagram)。客戶端只需使用基於JSON的服務將其命令和查詢發送到服務器。在這方面,客戶真的很輕,只專注於用戶交互和呈現。

那麼我真的後:

a)關於使用什麼框架,接近1和2,實現了爲什麼一個方法是有效好過清潔模塊化設計

B)意見指導其他

例如,我會傾向於#1,前提是JavaScript框架的組合足以輕鬆創建健壯的表示層。換句話說,如果我要投資一個JavaScript重型客戶端,爲什麼在服務器端框架中引入額外的依賴關係 - 這是否真的讓我的工作更容易? (假設有任何一種學習曲線)

回答

2

GWT是客戶端。它可以替代jQuery,如果你使用它與gwtQuery。

技術的選擇實際上取決於許多因素(您在此未提及),但主要依賴於您已知的內容。我個人喜歡:

  1. GWT和gwtQuery客戶端,主要是因爲我知道他們。客戶端將是pure-ajax,所有業務邏輯都在服務器上完成。

  2. REST服務器,執行業務邏輯並向客戶端提供(呈現)數據。有很多REST技術,我個人知道Resteasy,所以我會使用它。

更新:

在1與2的方法:方法1,主要用於複雜的Web應用程序(也稱爲Gmail中),其中網頁是不是重新加載,所有的交互是通過做DOM操作和AJAX調用。它給你更好的響應能力(頁面不重載)和更好的加載時間(因爲幾乎沒有HTML傳輸,只有JSON數據)。如果你想擁有豐富的用戶界面體驗,無論如何你都需要在客戶端使用一些JS,所以你永遠不會完全擺脫這一部分。

缺點是你需要知道JS。當代碼庫增長時,JS代碼也會有可維護性問題。不過,如果你使用GWT,所有這些都可以減輕:java是靜態類型的,編譯成最小尺寸的JS,並且抽象瀏覽器的怪癖(提供抽象的DOM訪問)。另外它還有很棒的IDE支持(Eclipse和IDEA),GUI builder(如果你需要的話),模塊化(MVP),很棒的文檔,噸庫和我最喜歡的gwtQuery(jQuery的一個克隆)。

所以,我個人的選擇仍然是方法1.以GWT作爲技術主要是因爲我已經知道這項技術。

+0

謝謝彼得。請參閱我的編輯以獲取更多說明。過去我曾經使用過多個表示框架(JSF,Seam,Spring MVC),但是根據這個用例和不斷變化的技術,無論如何都會有一個學習曲線。 (順便說一句,不知道爲什麼有人已經低估了你的迴應 - 這對我來說似乎是完全合理的) – Naresh

+0

+1因爲這個答案是絕對正確的,在點上並且沒有任何價值可能是downvote – Semyazas

2

這取決於需要完成多少計算。由於這是一個承諾執行0秒的交易應用程序,因此您無法真正依賴於客戶端瀏覽器在沒有掛起或凍結的情況下執行所有腳本。當然,這不是唯一的問題,因爲混合解決方案也可能會發生這種情況,但是執行客戶端代碼的代碼要少得多,這可以讓您關注所需的資源。

關於維護的話題:客戶端執行的JS可能不像MVC應用程序那樣容易維護。保持代碼的可讀性和可維護性僅僅是個人或團隊紀律的問題。

如果建築的原則是你的決定是一個大問題,我會去每一次的混合解決方案。由於更新問題

更新:

在已經處理的邏輯,在客戶端只需要做更新和DOM操作的情況下,我可能會根據情況決定在服務器端架構或個人喜好。這取決於長期目標。如果你想堅持一個架構,你可以使用ASP.NET,它提供了各種支持AJAX的控件/對象。

個人而言,我會使用jQuery的AJAX功能,僅僅是因爲我知道它的工作原理,到目前爲止完美的我JSON對象(在我們的內聯網,我們正在使用它的ASP。NET後端),因爲jQuery在客戶端上非常輕量級。縮小版本在字節中的權重並不重要,並且已針對性能和跨瀏覽器不兼容性進行了優化。使用asp,您仍然必須自己尋找跨瀏覽器的交易斷路器,而不是專注於手頭的任務,客戶端本身

+0

Seamyazas,請參閱編輯我的問題以獲取更多解釋。性能不是客戶的主要關注點 - 這是服務器的責任。另外我知道MVC也可以在客戶端完成(框架如backbone.js和JavaScriptMVC) - 我只是沒有投入任何時間。這個問題真的是 - 我應該嗎?或者我應該投資於除JavaScript之外的服務器端框架。 – Naresh

+0

我已經更新了我的答案 – Semyazas

相關問題