gwt-rpc vs rest ...真的是其中之一吗?

时间:2013-07-08 19:53:12

标签: gwt

我有一个使用GWT-RPC的GWT客户端来调用我的REST服务。为什么其中一些评论使GWT-RPC对抗REST,就好像你必须选择其中一个?我在客户端上使用BOTH ... GWT-RPC,它可以访问REST服务。我想使用替代和沟渠GWT-RPC。为什么?它是慢的(与我的Flex客户端相比,它可以达到相同的服务)。我查看了RestyGWT,但是它很棒的文档(讽刺)让我觉得我需要构建一个我的RestyGWT客户端可以访问的RestyGWT服务。吉兹,不,谢谢。我的服务已经完成。我真的不想碰它。所以听起来像一个可能的替代方案是从我的服务生成客户端lib并在我的GWT客户端中使用它与RequestBuilder一起处理JSON到java对象的编码/解码(并希望获得改进的性能)。如果这没有削减它,下一个选择是完全放弃GWT。

2 个答案:

答案 0 :(得分:3)

看看Errai JAX-RS构建“REST”客户端(差不多)就像使用GWT-RPC一样容易。

答案 1 :(得分:1)

GwtQuery autobeansajax,是gwt-autobeans和gwt-requestbuilder(以及其他json解决方案,如erray,resty)的轻量级客户端替代品使用REST。

它基于jquery api,但它已经在java中完全重写,充分利用了jquery简单性和gwt性能。

IMO,它是使用3方服务(xml,json,jsonp等)的最佳选择之一。它提供了一种简单的语法,以及许多功能,如promises(可在1.4.0-SNAPSHOT上获得)等。

这是一个如何使用json rest服务并将其映射到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() {

      }
    });
}