【问题标题】:GWT Convert RPC to JSONGWT 将 RPC 转换为 JSON
【发布时间】:2012-02-24 05:40:30
【问题描述】:

我的应用程序使用 GWT-RPC 与服务器通信。有没有办法在不更改 RPC 层的情况下使用 JSON 透明地序列化我的数据?

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

我为什么需要那个?

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

【问题讨论】:

  • 这就是我完全放弃 GWT-RPC 的原因。现在我只是使用 GWT 的 AutoBean 和 Request 类,我从来没有后悔过。

标签: json gwt jsonp rpc autobean


【解决方案1】:

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

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

如果您真的需要它并且不想离开 GWT-RPC,那么替换 GWT 的序列化程序应该是可能的:这正是 deRPC (com.google.gwt.rpc) 所做的。 标准 GWT-RPC (com.google.gwt.user.rpc),但它需要做的还不止这些(即:为客户端生成序列化代码,因为在运行时没有反射)。

【讨论】:

  • 不错的项目,我试试看。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2016-02-04
    • 1970-01-01
    • 2010-09-18
    • 2023-04-05
    • 1970-01-01
    • 2012-01-17
    • 2012-06-13
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多