2009-04-14 52 views
6

我在一個項目中嘗試爲舊應用程序構建GUI替換。在我們真正實現功能之前,我們已經開始使用Eclipse RCP(富客戶端平臺)和GWT(Google窗口小部件工具包,一種富互聯網應用程序)進行原型開發。您對RIA和RCP GUI有什麼經驗?什麼時候使用RIA是合理的?在哪些情況下,富客戶端更適合?隨着RIA目前的可能性,繪製線越來越困難..你有什麼經驗嗎?RIA與RCP


編輯: 所有的答案都非常有趣。我想接受他們所有的人,因爲他們爲我的答案作出貢獻,我承認一個相當開放的問題。所以我爲他們每個人投票。希望賞金將在你們之間分享。

回答

7

沒有任何關於應用程序需求的細節,這對於回答這個問題是非常關鍵的。

使用GWT的重大勝利在於相對於RCP這樣的部署簡單。對於用戶來說,將他們的網頁瀏覽器指向一個URL並不容易,對於操作團隊來說,比向服務器推送代碼,反彈並每天調用代碼更容易。就功能而言,GWT短缺的大部分區域將是更豐富的數據可視化:圖表,樹/節點,網絡圖等等。這些東西可能與GWT和服務器上的一些幫助有關,但限制的DHTML開始展現,即使是像GWT這樣強大的工具包。另一方面,RCP爲您提供了Java 2D的全部功能,以便可視化您想要的任何內容。這些類型的功能對您來說可能不是必需的,但它們也是讓應用程序真正感興趣的功能,不僅僅是一些標籤,樹和數據網格控件。

我已經用Adobe Flex開發了好幾年了,發現它真的很強大,它具有或多或少與GWT類似的部署優點,但提供與RCP相同的功能。你可能也想檢查一下。

3

根據我的經驗,RIA GUI往往足夠健壯,可以將大部分信息傳達給用戶。這可能有一些例外,但現在我想不出一個好的例子。 RIA的優勢是任何人都可以通過Web瀏覽器訪問,而無需安裝胖客戶端(RCP)。除非你有一些不能通過網絡技術完成的特殊複雜顯示,否則我建議去RIA路線。

3

我們爲Eclipse開發了一個(試用項目)插件,然後它被轉換爲獨立的RCP應用程序(我們不想將它作爲插件發佈,因爲我們不希望Eclipse作爲pre -req,所以我們不得不添加一些支持代碼,使其稍微複雜一點,而不僅僅是簡單地移入RCP)使用jQuery進入RIA應用程序。儘管RCP陣營盡了最大的努力,但RIA版本花費了大約相同的時間來開發(儘管它是從頭開始的),並且在執行時看起來更加流暢。

問題的關鍵是RIA版本不需要安裝,因爲我們所有的客戶端已經擁有應用程序服務器,更新集中在服務器上,而不是每個客戶端。

RCP版本早已落後於功能。就我們而言,Eclipse作爲一個開發環境很好(對於Java,我們對其他語言沒有經驗),但是他們將IDE從GUI分離(以使RCP成爲可能)的努力並不是相當完成。另一方面,jQuery似乎是爲這類東西而定製的(可能是因爲它是爲這種東西定製的)。應用程序的開發和運行都非常好。

0

這個應用程序的性質是什麼。它應該完全在客戶端計算機上運行嗎?它是否需要訪問本地存儲的數據?您是否僅僅使用引擎仍然是傳統代碼的現有應用來重新定義GUI?

0

我的另一個重要的工作是在一個軟件設備上,她利用AJAX作爲配置設備的一種手段。配置功能豐富,與RIA非常一致。同樣,不得不在Web瀏覽器上本地安裝軟件是極其令人沮喪的。

3

豐富的互聯網應用程序是製作健壯的軟件的好方法,它可以像傳統的桌面軟件一樣工作。 RIA的一個常見問題是許多開發人員傾向於將業務邏輯放在客戶端代碼中。客戶端代碼中的業務邏輯和狀態非常不安全,因爲可以在運行時操縱客戶端代碼。此外,它是一個白盒系統,它允許黑客檢查代碼並發現弱點,例如僅在客戶端代碼中完成輸入驗證或操縱狀態。不要被混淆愚弄,因爲它只會減慢黑客的速度,但不會阻止他。比利霍夫曼寫了一本關於AJAX安全性的好書(叫做ta-daa,「Ajax安全性」),我推薦給每一位RIA開發者。

這並不意味着RIA在定義上是不好的,如果你知道你在做什麼(在客戶端代碼中沒有業務邏輯,沒有狀態,在服務器端完成輸入驗證等,你也可以編寫安全的RIA。 )。有幾個框架實現了這個安全的服務器驅動的RIA,其中一個是IT Mill toolkit(基於GWT),ICEFaces也應該是我所知道的。

1

我工作的一個組織選擇RCP,因爲他們的用戶需要在線和離線使用應用程序(當他們在路上等)時。我知道現在谷歌可能會採用這種方式,但對於大型企業來說,它的主打產品並不是真正的主流。 但是,如果您的用戶沒有必要脫機,那麼您真的可以節省在rcp應用程序和服務器之間同步用戶數據/產品更新等的麻煩,RIA將成爲這種情況下的方式。

7

即使GWT走了很長的路,它沒有給出與正確的應用程序相同的靈活性和可訪問性。

即使你使用GWT應用程序幾乎可以完成真實應用程序的所有工作,但許多因素都表明RCP將是最好的工具。

  • 重複勞動
  • 大量輸入的
  • 長會議
  • 重複的任務
  • 部件的自定義編輯或演示。
  • 具有不同數據的多個窗口。
  • 常用操作快捷鍵
  • 快速響應。
  • 一個真正的菜單欄,coolbars。
  • 在任務欄中很容易找到的適當窗口。
  • 很少使用的操作的上下文菜單
  • 有限數量的用戶(或已知的基數)。
  • 廣泛或複雜的動畫或實時更新。

如果您認爲您的應用程序需要一個工作臺,並帶有多個視圖和編輯器,則會給出選擇。

RCP和工作臺是不容易的工作,但你得到很多免費的,如果應用程序會從多個開放的意見/編輯器等

如果更多的「自由」和開放的工作模式中受益應用程序是更偶然的任務,然後GWT是非常好的。

GWT真的很不錯,但它仍然是一個網絡應用程序,有時這很糟糕。我不想在網絡應用程序中完成所有工作,因爲我可能無意中按了一個鍵,失去了所有的工作和會話。 (我的鍵盤甚至在箭頭鍵旁邊有一個鍵,這似乎無法禁用)。它的強大功能幾乎可以做任何你可以在RCP中做的事情,但它仍然在網絡瀏覽器中運行,而且這可能會讓人惱火。

請記住,您可以使用java Webstart部署RCP應用程序。

1

也有可能部署一個RCP的一些RIA的好處。正在爲我們的客戶進行調查的一個解決方案(僅供其公司的員工使用)是使用通過Java servlet啓動的Java應用程序。

發現了一些好處包括:

  • 它很容易升級,很像一個RIA(只是重新部署其JAR文件,它會在下一次隨時隨地瀏覽到的網頁採摘與applet)
  • 它的外觀,感覺,行爲和執行像本地應用程序,就像一個RCP(感謝SWT)

發現了一些利弊包括:

  • 用戶的計算機必須安裝Java插件。
  • 應用程序必須在與用戶插件兼容的Java版本中開發(儘管客戶端可能需要在員工計算機上安裝最低版本)。 RetroWeaver工具可以提供幫助,雖然我沒有太多的經驗。
  • 用戶必須保持Web瀏覽器打開,否則應用程序將被終止。