GWT RPC基本控制流说明

GWT RPC基本控制流说明,gwt,rpc,gwt-rpc,Gwt,Rpc,Gwt Rpc,我是GWT新手,能够处理GWT RPC,但在理解控制流如何在内部发生方面存在问题。如何将其转换为AJAX 我们可以使用new()而不是GWT.create(someService.class)来进行RPC调用吗? 为什么谷歌不只是使用异步版本而不是创建两个接口 当我们使用 TaskService Async = GWT.create(TaskService.class); 我已经读到它选择了特定于浏览器的hashname.js文件,但我不了解完整的控制流。以及如何使用回调对象 有人能通过指出要

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

我们可以使用
new()
而不是
GWT.create(someService.class)
来进行RPC调用吗? 为什么谷歌不只是使用异步版本而不是创建两个接口

当我们使用

TaskService Async = GWT.create(TaskService.class);
我已经读到它选择了特定于浏览器的
hashname.js
文件,但我不了解完整的控制流。以及如何使用回调对象

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

更新:@Thomas Broyer,我所了解的一切。。。只是确认在GWT.create()的情况下,客户端中有一个.rpc文件,它有助于延迟(延迟/运行时)绑定。对吗

  • GWT.create()
    在这种情况下将调用GWT生成器;它将生成一个实现异步接口的类(这就是为什么您只需要声明一个接口,而从不自己实现它)。
    请参阅。
    调用使用生成器(或选择特定实现,但在GWT-RPC的情况下使用生成器)

  • 因此,不能使用
    new

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

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

  • 因为调用是异步的,所以在反序列化发生后,回调用于在服务器响应时回调代码(因此可以使用解码对象调用
    onSuccess
    ,或者使用解码异常调用
    onFailure
    )。

  • GWT.create()
    在这种情况下将调用GWT生成器;它将生成一个实现异步接口的类(这就是为什么您只需要声明一个接口,而从不自己实现它)。
    请参阅。
    调用使用生成器(或选择特定实现,但在GWT-RPC的情况下使用生成器)

  • 因此,不能使用
    new

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

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

  • 因为调用是异步的,所以在反序列化发生后,回调用于在服务器响应时回调代码(因此可以使用解码对象调用
    onSuccess
    ,或者使用解码异常调用
    onFailure
    )。


  • 谢谢你明确的回答。你能确认一下更新吗。最好的祝愿。延迟绑定中的“延迟”意味着“在编译时,而不是在编写代码时”,而不是“在运行时”。*.gwt.rpc文件仅在服务器端(AFAIK)上使用,因为它与服务器代码(其本身独立于gwt编译)进行通信,以了解客户端是如何编译的。通过GWT-RPC.So的类在客户端中的任何类都将出现在生成的所有.cache.html文件中(因此它们都有助于延迟绑定)。那么,为什么生成的内部类(实现异步接口)会如此明确地链接到延迟绑定?在您的代码中,您
    GWT.create()
    some接口,您不会针对其实际实现进行编码;但是在编译时,
    GWT.create()
    以某种方式被解析(在本例中,调用生成器)并绑定到一个具体的实现:这是延迟绑定;您的代码没有绑定到特定的实现,实现的选择将推迟到编译时(由GWT编译器,而不是Java编译器)。
    *.gwt.rpc
    文件将告诉服务器请求中的
    xxx/12345
    实际上是
    java.util.ArrayList
    (这有点复杂,但基本上是这样工作的)OK。所以术语“延迟绑定”是一个普通概念的大术语。*.gwt.rpc这个东西现在我明白为什么现在使用它了。非常感谢你的耐心。现在,我将尝试在GWT中挖掘更多的概念谢谢你明确的回答。你能确认一下更新吗。最好的祝愿。延迟绑定中的“延迟”意味着“在编译时,而不是在编写代码时”,而不是“在运行时”。*.gwt.rpc文件仅在服务器端(AFAIK)上使用,因为它与服务器代码(其本身独立于gwt编译)进行通信,以了解客户端是如何编译的。通过GWT-RPC.So的类在客户端中的任何类都将出现在生成的所有.cache.html文件中(因此它们都有助于延迟绑定)。那么,为什么生成的内部类(实现异步接口)会如此明确地链接到延迟绑定?在您的代码中,您
    GWT.create()
    some接口,您不会针对其实际实现进行编码;B