Locked History Actions

Diff for "GWT/GWTP/RCP"

Differences between revisions 1 and 2
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;
  }
}