GWT RPC机制的序列图

时间:2014-11-21 18:41:26

标签: java gwt rpc sequence-diagram

我不完全理解GWT RPC机制因此我正在寻找序列图。有人有链接吗?

GWT主页上的管道图没有描述每个细节的机制:http://www.gwtproject.org/doc/latest/DevGuideServerCommunication.html#DevGuideRemoteProcedureCalls

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我所知道的没有公布的序列图。但它实际上并没有那么大的帮助,因为它必须同时处理许多级别的抽象:

  • Javascript方面并没有真正“调用”Java端(它发送请求,这是另一回事)
  • 主要的客户端actor(异步接口的实现)永远不可见,因为它是在项目编译期间生成的。

要理解的要点是:

  • 服务器端是同步的 - 纯Servlet API,每个请求都有一个线程服务;
  • Javascript端是异步的。当您在Javascript中发送HTTP请求时,您不能等待响应,您只能提供回调。这就是为什么你不能包装在同步接口中返回值的HTTP调用。
  • 在一个完美的世界中,只有一个界面,桥接客户端和服务器端。服务器将实现接口,客户端将以某种方式获取其代理并调用它的方法。这就是同步远程处理通常如何工作的方式。由于上述原因,这是不可能的。
  • 所以我们需要两个不同的接口:一个用于客户端(异步),一个用于服务器(同步)。它们只与约定保持在一起,因为Java的类型系统无法表达它们之间的关系(方法的名称相同,参数相关,但不相同,返回类型不同)。,
  • 在编译GWT项目期间,生成实现客户端接口的类。它的实例可以调用服务器(以异步方式)。然后,服务器找到同步接口的relavant方法的实现并调用它,并发回响应(同步)。响应在javascript方面触发回调(异步)。

所以你有它。整个异步性源于XMLHttpRequest对象的工作方式。

请注意,官方维基上的图表具有误导性 - Javascript调用异步接口,而不是同步接口(如图所示)。