1

GWT-RPC を使用して REST サービスを呼び出す GWT クライアントがあります。これらのコメントのいくつかは、GWT-RPC を REST と比較して、どちらかを選択する必要があるかのようにしているのはなぜでしょうか? 私は両方を使用しています...クライアントでGWT-RPCがRESTサービスにヒットします。代替手段を使用して、GWT-RPC を廃止したいと考えています。なんで?それは遅いです(同じサービスにヒットする私のFlexクライアントと比較して)。私は RestyGWT をチェックアウトしましたが、それはすばらしいドキュメント (皮肉) で、RestyGWT クライアントがヒットできる RestyGWT SERVICE を構築する必要があるように思えます。そうねえ、いいえ、ありがとう。私のサービスは完了しました。本当は触りたくない。したがって、考えられる代替手段の 1 つは、私のサービスからクライアント ライブラリを生成し、それを RequestBuilder と共に GWT クライアントで使用して、JSON から Java オブジェクトへのエンコード/デコードを処理することです (うまくいけば、パフォーマンスが向上します)。それで駄目なら、

4

2 に答える 2

4

Errai JAX-RSを見て、「REST」クライアントを (ほぼ) GWT-RPC と同じくらい簡単に構築してください。

于 2013-07-08T22:12:29.013 に答える
1

GwtQuery autobeansおよびajaxは、REST を使用するための gwt -autobeansおよび gwt-requestbuilder (および erray、resty などの他の json ソリューション) に代わる軽量のクライアントです。

jquery api に基づいていますが、jquery のシンプルさと gwt のパフォーマンスを利用して、Java で完全に書き直されています。

IMO、サードパーティ サービス (xml、json、jsonp など) を使用するための最良のオプションの 1 つです。簡単な構文と、promise (1.4.0-SNAPSHOT で利用可能) などの多くの機能を提供します

これは、json レスト サービスを使用して Java Bean にマップする方法の例です。ご覧のとおりシンプルで、パフォーマンスは非常に優れています。

// Let GQuery generator wrap json to java
// there is a generator for xml services as well.
public static interface MyBean extends JsonBuilder {
  long getId();
  String[] getTags();
  String getTitle();
}

public void onModuleLoad() {
  // Configure a JSON Ajax request
  Settings rq = Ajax.createSettings()
    .setUrl("rest_service.js")
    .setType("post") // options: get post put delete head
    .setDataType("json") // send and read json data
    .setData($$("foo: bar")); // Your JavaScriptObject

  // last GQuery Ajax returns a chainable Promise which makes the code more
  // readable instead of dealing with callback parameters
  Ajax.ajax(rq)
    .done(new Function() {
      public void f() {
        // You can inspect arguments with this
        System.out.println(dumpArguments());

        // Create the bean, and wrap the json object read
        MyBean b = GWT.create(MyBean.class);
        b.load(arguments(0));

        // toString in JsonBuilder returns the json string
        System.out.println(b.toString());
      }
    })
    .fail(new Function() {
      public void f() {

      }
    });
}
于 2013-07-10T16:24:25.383 に答える