GWT RPC数据格式

| Google Web工具包(GWT)RPC调用的数据格式如何,以及如何传输IsSerializable对象。我知道Java Serializable传输某种二进制格式,但是GWT也是这种情况吗? (因为我不希望它与JavaScript兼容,或者至少需要一些其他解析)。     
已邀请:
编辑:Brian Slesinsky刚刚记录了该协议(通过反向工程代码):https://docs.google.com/document/d/1eG0YocsYYbNAtivkLtcaiEE5IOF5u4LUol8-LL0TIKU/edit 首先,GWT-RPC协议是不对称的,因此它始终针对客户端进行了优化:快速反序列化来自服务器的内容,并快速序列化要发送给它的内容。 正如您所怀疑的那样,它显然不是二进制的,而是基于文本的。客户端到服务器的协议是管道分隔的,而服务器到客户端的协议则基于JSON(前缀为“ 0”或“ 1”的前缀,用于指示请求是成功还是失败)。两者都使用可序列化类的常识来进行序列化/反序列化。例如,双方都知道X类有两个字段,一个整数和一个String,以该顺序序列化,因此他们都先写入/读取一个整数,再写入/读取一个String,而无需以编码格式指定它是哪个字段\关于。 GWT-RPC协议已版本化(随着新GWT版本的发布,它会定期更改),并使用类的哈希值和可序列化字段的名称来确保客户端和服务器都使用相同版本的类(这意味着您必须每次更改可序列化的类时,重新编译并重新部署客户端代码)。 最好的文档是代码,但是您可以在以下幻灯片中找到请求格式的概述:https://www.owasp.org/images/7/77/Attacking_Google_Web_Toolkit.ppt 与GWT-RPC相反,RequestFactory使用基于JSON的对称协议(基于AutoBean的JSON序列化),即使不使用同一代码进行编译,客户端和服务器也可以进行通信(取决于您在版本之间所做的更改) ,当然),因为它们会传递类名和属性名。     

要回复问题请先登录注册