GWT/GWTP/RCP

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

概要

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

従来型のRPC

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

実際のコード

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

ResponsePresenter内の呼び出し。dispatcherはあらかじめResponsePresenterに「注入」されているのだが、ここでは言及しない。

    dispatcher.execute(new SendTextToServer(textToServer),
        new AsyncCallback<SendTextToServerResult>() {
          @Override
          public void onFailure(Throwable caught) {
            getView().setServerResponse(
                "An error occured: " + caught.getMessage());
          }
  
          @Override
          public void onSuccess(SendTextToServerResult result) {
            getView().setServerResponse(result.getResponse());
          }
        });

コマンドパターンRPCのメリット・デメリット

何がウレシイのか?

Google I/O 2009 - Best Practices for Architecting GWT Appの8分経過あたり。

Command Pattern to make async tolerable(非同期を扱いやすくするためのコマンドパターン)

※早口で簡単に説明されているのでよくわからない点あり。

デメリット(と思われるもの)

last edited 2011-12-03 18:04:52 by ysugimura