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