Revision 1 as of 2011-11-27 00:18:06

Clear message
Locked History Actions

GWT/GWTP/RCP

コマンドパターンによるRCP

概要

コマンドパターンによるRPCは、それまでの生のRPC([GWT/RPC]])とは全く異なるものになる。 以下ではクライアントサイドから見た違いを概観する。

従来型のRPC

  • 一つ以上のメソッドの定義されたRPCインターフェースを作成し、そのインターフェースのサーバプロキシを取得する。
  • いずれかのメソッドを呼び出し、結果を得る。ただし、呼び出しは常に非同期なので、実際には定義インターフェースに対応する非同期インターフェースを使うことになる。

コマンドパターンによるRPC

  • RPCの一つのメソッド呼び出しを一つのオブジェクトとして実現する(SendTextToServer)。つまり、クラス名で「メソッド」を表し、そのコンストラクタパラメータとして「メソッド引数」を実現する。

  • 呼び出しの結果値は別のオブジェクト(SendTextToServerResult)として実現する。

  • サーバ呼び出し機構(AsyncDispatch)のexecute引数として、呼び出しオブジェクトを指定し(SendTextToServer)、結果を得る。もちろん非同期なので、コールバックの結果としてSendTextToServerResultが与えられる。

実際のコード

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;
  }
}