2012-08-27 57 views
1

我正在尋找一種有效的方式將ResultSet轉換爲我可以通過GWT-RPC發送的表單,該表單可以作爲GWT服務器 - 客戶端通信的一部分。 使用JSON和RequestFactory有哪些優缺點? 有人會照顧解釋他們的情況下,如果我想要使用他們如上所述?將mysql查詢結果推送到客戶端GWT

說我想在客戶端處理大部分數據庫而不僅僅是單個條目可能很重要。我一次談論數百個條目,所以我基本上認爲我需要一種有效地傳輸數據的方法。

一次不會請求一個條目會產生大的開銷嗎?

一個類似的教程將不勝感激。

回答

3

移動大塊數據通常是一個非常糟糕的主意,對於客戶端 - 服務器體系結構而言,這通常是不常見的。所以我會推薦重新設計。

GWT-RPC是面向服務的。所有的RPC框架都是。主要目的是序列化/反序列化方法調用。換句話說,與服務器和客戶端通信的是必須明確定義的消息。在GWT中,底層傳輸機制是JSON,而在SOAP中(例如)它是XML,但機制相同。

RequestFactory更加以數據爲中心。想象一下,由一個簡單的HTTP請求和URL/getCustomers觸發的servlet。該servlet只是訪問數據庫並返回結果。 RequestFactory非常類似,但提供了額外的功能。例如,RequestFactory依賴於在服務器上創建實體對象Customer,並在客戶端上創建代理對象CustomerProxy。框架處理這些對象之間的數據傳輸。更具體地說,RequestFactory可以更新各個屬性(即'字段'),並且因此可以通過僅發送狀態差異來提高效率。

一個重要的體系結構差異是GWT-RPC在更多功能級別上運行。 RequestFactory在數據級別運行。一個典型的實現可能是使用RequestFactory進行CRUD界面設置。使用GWT-RPC這樣的設計是非常錯誤的。

我建議您在做出決定之前更多地閱讀這兩個框架。但是,RequestFactory似乎是解決您的問題的最佳解決方案。

如果你只有一個用例,那麼實現你自己的servlet可能會很好。在您的GWT代碼中使用RequestBuilder從servlet請求數據。訪問數據庫,將ResultSet轉換爲JSON,在客戶端將響應轉換回JavaScriptObject並完成。這將爲您節省設置RequestFactory和所有實體,代理和定位器的工作。

1

如果您的應用程序是以數據爲中心的,並且您應該在服務器端使用JPA,則RequestFactory優先於JSON。 (例如Hibernate,Spring等)。更多的取決於你正在傳輸什麼樣的數據。

我想說一次傳輸所有數據可能不是一個正確的想法。因爲需要很長時間來序列化和反序列化。瀏覽器可能會掛起(從我的經驗)。用戶必須等待所有的數據加載完畢。

相反,您可以以塊的方式將數據傳輸到客戶端,所以當用戶編輯第一部分時,第二部分可以在後臺加載。

相關問題