繁体   English   中英

GWT将RPC转换为JSON

[英]GWT Convert RPC to JSON

我的应用程序使用GWT-RPC与服务器通信。 无论如何使用JSON透明地串行我的数据而不更改RPC层?

恕我直言,这可以通过更改序列化器并在UI中使用autobean codex来实现。

我为什么需要那个?

  • 我想进行跨域RPC调用
  • 我想从非GWT应用程序调用服务器端,而不在服务器端提供额外的层。

更新我偶然发现了积极维护的http://code.google.com/p/gerrit/source/browse/README?repo=gwtjsonrpc (因为它是Gerrit的一部分,这是Android团队使用的代码审查工具)

请查看http://code.google.com/p/gwt-rpc-plus/,但不再维护...

如果你真的需要它并且不想远离GWT-RPC,那么应该可以替换GWT的序列化器:这正是deRPC( com.google.gwt.rpc )所做的。 标准的GWT-RPCcom.google.gwt.user.rpc ),但它需要做更多的事情(即:为客户端生成序列化代码,因为在运行时没有反射)。

这将是一项艰巨的任务。 我认为更改序列化程序不会起作用,GWT-RPC序列化程序正在使用输入和流一样(基本上从服务器发送的数据实际上是JSON格式,但它们只能由GWT-RPC解析)。 您将不得不创建全新的生成器,它将创建用于解析和对象序列化/反序列化的代码。 在这种情况下,AutoBean框架可能非常有用。 最后,您应该能够从GWT-RPC序列化迁移到其他协议,而无需实际更改使用GWT-RPC服务的当前代码。

最大的问题是跨域消息传递。 通常你会使用JSONP,但问题是JSONP基本上只允许GET请求,如果你需要向其他服务器发送大量数据,你可能无法将所有数据都放入单个请求中。 您可以使用跨域文档消息解决此类问题(例如,您将打开iframe,它将从远程服务器加载特殊通信javascript,您将通过postMessage使用此iframe作为服务的代理),但IE7不支持此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM