2011-09-07 81 views
1

我是GWT新手。我使用eclipse來創建一個簡單的應用程序。瞭解了基本知識後,如何在開發模式和生產模式下運行項目,但有一件事我無法理解。在谷歌他們給了一個示例生成項目,當我完成了,我看到一個更多的教程稱爲RPC在GWT。在這裏,他們改變了以前的代碼並實施了新的代碼。 在GWT中,所有東西都轉換成javascript,但是當我們使用RPC時,RPC(服務器)代碼將在服務器上以java字節格式。我的問題是爲什麼我們必須實施RPC?有什麼需要使用RPC?GWT中需要RPC嗎?

回答

1

那麼想象一下,你要調用在服務器端實現的操作,比如登錄的用戶。

服務器上有一個註冊用戶數據庫。 clinet(瀏覽器中的JavaScript代碼)必須將用戶的名稱和密碼發送到服務器。然後,服務器(java代碼)聯繫數據庫並對用戶進行身份驗證,並將真或假返回給客戶端。通過這種方式,您可以從客戶端遠程調用服務器上的操作(登錄過程),並獲得響應。因此名稱RPC。

這裏的關鍵是瞭解客戶端服務器端。在客戶端你有JavaScript,但用java腳本你不能訪問數據庫。另外,您沒有每個客戶端(瀏覽器)上的所有註冊用戶的數據庫。所以你有包含數據庫的服務器端以及連接到這個數據庫的java代碼。每個客戶端只是告訴服務器通過RPC進行相應的操作,並將結果返回。

+0

所以我們可以說RPC也是一種Ajax的工作原理? – Arung

+1

是的。實際上GWT也是一個AJAX框架。但是,使用熟悉的java編寫可在客戶端瀏覽器上運行的代碼,並且可以輕鬆地使用java的所有慣例,如類型safty。這就是爲什麼您使用Async Interface來進行服務的原因。然後GWT將這個Java轉換爲java腳本。這是Async RPC調用的後面有一個XmlHttpRequest。 – zardosht

3

需要使用RPC是讓您的客戶端通過異步調用與服務器進行通信。 RPC以某種方式抽象此調用,以便在服務器上調用方法類似於在普通對象上調用方法。因此,調用本地方法並調用「遠程」方法變得基本相同。

(當然,你也可以寫一個永遠不會調用服務器端代碼。)