Deletions are marked like this. | Additions are marked like this. |
Line 22: | Line 22: |
SendTextToServer |
GWTPのサンプルとして生成される実際のコードを見てみる。 SendTextToServer --- コマンド:引数としては一つの文字列のみ |
Line 47: | Line 50: |
SendTextToServerResult | SendTextToServerResult --- レスポンス:返り値としても一つの文字列のみ |
コマンドパターンによるRCP
概要
コマンドパターンによるRPCは、それまでの生のRPC([GWT/RPC]])とは全く異なるものになる。 以下ではクライアントサイドから見た違いを概観する。
従来型のRPC
- 一つ以上のメソッドの定義されたRPCインターフェースを作成し、そのインターフェースのサーバプロキシを取得する。
- いずれかのメソッドを呼び出し、結果を得る。ただし、呼び出しは常に非同期なので、実際には定義インターフェースに対応する非同期インターフェースを使うことになる。
コマンドパターンによるRPC
RPCの一つのメソッド呼び出しを一つのオブジェクトとして実現する(SendTextToServer)。つまり、クラス名で「メソッド」を表し、そのコンストラクタパラメータとして「メソッド引数」を実現する。
呼び出しの結果値は別のオブジェクト(SendTextToServerResult)として実現する。
サーバ呼び出し機構(AsyncDispatch)のexecute引数として、呼び出しオブジェクトを指定し(SendTextToServer)、結果を得る。もちろん非同期なので、コールバックの結果としてSendTextToServerResultが与えられる。
実際のコード
GWTPのサンプルとして生成される実際のコードを見てみる。
SendTextToServer --- コマンド:引数としては一つの文字列のみ
import com.gwtplatform.dispatch.shared.UnsecuredActionImpl; import com.cm55.gwtp.shared.SendTextToServerResult; public class SendTextToServer extends UnsecuredActionImpl<SendTextToServerResult> { private String textToServer; @SuppressWarnings("unused") private SendTextToServer() { // For serialization only } public SendTextToServer(String textToServer) { this.textToServer = textToServer; } public String getTextToServer() { return textToServer; } }
SendTextToServerResult --- レスポンス:返り値としても一つの文字列のみ
import com.gwtplatform.dispatch.shared.Result; public class SendTextToServerResult implements Result { private String response; @SuppressWarnings("unused") private SendTextToServerResult() { // For serialization only } public SendTextToServerResult(String response) { this.response = response; } public String getResponse() { return response; } }