【问题标题】:gwt-rpc vs rest... is it really one or the other?gwt-rpc vs rest ......真的是其中之一吗?
【发布时间】:2013-07-08 19:53:12
【问题描述】:

我有一个使用 GWT-RPC 调用我的 REST 服务的 GWT 客户端。为什么其中一些 cmets 将 GWT-RPC 与 REST 相提并论,就好像您必须选择一个或另一个?我在客户端上同时使用... GWT-RPC,它会访问 REST 服务。我想使用替代方案并放弃 GWT-RPC。为什么?它很慢(与我的 Flex 客户端相比,它提供了相同的服务)。我检查了 RestyGWT,但它的文档很棒(讽刺)听起来像是我需要构建我的 RestyGWT 客户端可以访问的 RestyGWT SERVICE。哎呀,不,谢谢。我的服务完成了。我真的不想碰它。所以听起来一种可能的替代方法是从我的服务生成一个客户端库,并在我的 GWT 客户端中使用它以及 RequestBuilder 来处理 JSON 到 java 对象的编码/解码(并希望获得改进的性能)。如果这不能解决问题,下一个选择是完全放弃 GWT。

【问题讨论】:

  • 您能否提供更多关于您如何使用 GWT-RPC 与“REST”服务通信的信息?

标签: gwt


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    它基于 jquery api,但已完全用 java 重写,利用了 jquery 的简单性和 gwt 的性能。

    IMO,它是使用 3party 服务(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() {
    
          }
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2014-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      相关资源
      最近更新 更多