GWT RPC基础知识控制流程说明

时间:2012-01-23 06:34:29

标签: gwt rpc gwt-rpc

我是GWT的新手并且能够使用GWT RPC,但在理解控制流如何在内部发生方面存在问题。如何将其转换为AJAX?

我们可以使用new()代替GWT.create(someService.class)来进行RPC调用吗? 为什么Google不仅仅使用Async版本而不是创建2个接口?

使用

时内部会发生什么
TaskService Async = GWT.create(TaskService.class);

我已经读过它选择了浏览器特定的hashname.js文件,但我不了解完整的控制流程。另外,如何使用回调对象。

有人可以通过指出要点来解释控制流程吗?

更新:@Thomas Broyer,我理解的一切......只是确认如果GWT.create()在客户端有一个.rpc文件,这有助于延迟(晚期/运行时)绑定。这是对的吗?

1 个答案:

答案 0 :(得分:4)

    在这种情况下,
  1. GWT.create()将调用GWT生成器;它将生成一个实现Async接口的类(这就是为什么你只需要声明一个接口而你自己永远不会实现它。)
    RPC Plumbing Diagram
    使用生成器(或选择特定实现,但在GWT-RPC的情况下,使用生成器)被称为deferred binding

  2. 所以,不,你不能使用new

  3. 至于为什么有2个接口,这样GWT可以检查您的服务器端代码(同步)是否与客户端代码(异步)一致。您在同步接口上调用GWT.create并返回异步的实现的原因是遗留的。我打赌他们不会那样做,他们是从头开始重新实施GWT-RPC。

  4. 生成的类将负责序列化调用(方法名称和参数)并发出AJAX请求(使用RequestBuilder);然后反序列化响应(声明的类型或异常)

  5. 因为调用是异步的,所以回调用于在服务器响应后调用代码,在反序列化发生后(因此要么用解码的对象调用onSuccess,要么{{1}用解码的异常)。
    请参阅Getting Used to Asynchronous Calls