2010-12-11 108 views
3

當用戶訪問該站點時,將在客戶端和服務器端創建一個空的購物車。當他將產品添加到SC中時,會進行RPC調用以在服務器端添加產品。我們需要做同一個客戶端來同步並更新UI。如果我們不這樣做,並切換到一個參考舊SC的視圖。用戶界面不會相應更新(空SC,而其中有一個產品)。GWT保持同步客戶端和服務器型號

解決方案1 ​​

RPC調用返回更新SC和做clientSC = returnedSC。這不是非常有效,因爲通過電線傳輸大量數據。

溶液2

RPC調用返回時添加的產品和在客戶端側,調用一個方法addProduct,該產品添加到列表中,而不是在數據存儲中存儲它的(如在服務器端) 。

溶液3

同溶液2,但使用一個事件以通知有一個SC的參考演示者(I使用MVP模式)。

哪一個是最好的,更一般的什麼是保持客戶端和服務器模型同步的最佳實踐?

回答

4

使用RequestFactory,它與gwt 2.1一起提供。

http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html

RequestFactory可以很容易地 同時實現 客戶端和服務器上的數據訪問層。它允許您以 以數據爲中心的方式構建您的服務器端代碼,並提供比GWT-RPC更高的 抽象層次,面向服務而不是面向數據的 。在客戶端, RequestFactory跟蹤對象 的已修改和僅發送 更改服務器,這在非常輕量級的網絡負載結果 。 此外,RequestFactory提供了一個 自動 批處理和緩存請求在 未來的堅實基礎。

RequestFactory使用其自己的服務程序, RequestFactoryServlet,並實現 它自己的協議客戶端和服務器之間的數據交換 。它不是 設計用於通用服務 像GWT-RPC,而是爲 面向數據的服務,我們將很快看到 。 RequestFactory不使用 GWT-RPC,並且不打算替換 它。它專門爲 而設計,在客戶端和服務器上都實現了一個 持久層。