GWT 保持同步客户端和服务器模型

Posted

技术标签:

【中文标题】GWT 保持同步客户端和服务器模型【英文标题】:GWT Keep in sync client and server model 【发布时间】:2010-12-11 00:27:29 【问题描述】:

当用户访问该站点时,会在客户端和服务器端创建一个空的购物车。当他将产品添加到 SC 中时,会执行 RPC 调用以在服务器端添加产品。我们需要做同样的客户端来同步和更新 UI。如果我们不这样做并切换到引用旧 SC 的视图。 UI 不会相应更新(SC 为空,而其中只有一个产品)。

解决方案 1

RPC 调用返回更新后的 SC 并执行clientSC = returnedSC。这不是很有效,因为要通过网络传输大量数据。

解决方案 2

RPC 调用返回添加的产品,并在客户端调用方法addProduct 将产品添加到列表中,而不是将其存储在数据存储中(就像在服务器端一样)。

解决方案 3

与解决方案 2 相同,但使用事件通知具有对 SC 的引用的演示者(我使用 MVP 模式)。

哪个是最好的,更一般地说,保持客户端和服务器模型同步的最佳实践是什么?

【问题讨论】:

【参考方案1】:

使用随 gwt 2.1 提供的 RequestFactory。

http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html

RequestFactory 可以很容易地 在两者上实现数据访问层 客户端和服务器。它允许您 将您的服务器端代码构建在一个 以数据为中心的方式并提供更高的 抽象级别高于 GWT-RPC, 这是面向服务而不是 面向数据的。在客户端, RequestFactory 跟踪对象 已修改且仅发送 更改服务器,结果 在非常轻量级的网络负载中。 此外,RequestFactory 提供了一个 自动化的坚实基础 请求的批处理和缓存 未来。

RequestFactory 使用自己的 servlet, RequestFactoryServlet,并实现 自己的数据交换协议 客户端和服务器之间。它不是 专为通用服务而设计 像 GWT-RPC,但更适合 我们将看到的面向数据的服务 不久。 RequestFactory 不使用 GWT-RPC 并不打算取代 它。它专为 实现持久层 客户端和服务器。

【讨论】:

以上是关于GWT 保持同步客户端和服务器模型的主要内容,如果未能解决你的问题,请参考以下文章

使 iPhone 应用程序与 GWT 应用程序保持同步

GWT(模型)接口/类

gwt 应用程序客户端的会话管理

RPC 的 GWT Servlet 模型是单线程模型,还是如何通过 GWT 实现高可用性?

gwt-syncproxy 无法连接到地址

如何在android上保持服务器和客户端之间的数据同步?