我需要一些建议,说明如何使用GWT的RequestFactory最好地处理服务器端实体向客户端的传播。
让我们假设我们有两个EntityProxies,一个PersonProxy和一个PersonListProxy(它有一个List的getter)。假设客户端从服务器获取了PersonList和Person。
如果客户端正在编辑其中一个代理并触发请求,则RequestFactory的机制(如果我已正确理解原则)将触发EntityProxyChange事件,如果它检测到服务器代码所做的更改(以便客户端可以例如,更新其实体的显示。
现在假设服务器正在更改其客户端请求之外的实体(例如,由于另一个客户端调用服务器),因此如果客户端再次获取Person或PersonList,则会看到另一个版本。
我的问题是RequestFactory框架内部告诉客户端更改(以及尽可能多地重用机器)的最佳方法是什么?我们可以假设我有办法从服务器向客户端发送简单的消息(例如Google App Engine的渠道API或服务器发送的事件)。
一个想法可能是服务器通过此通道发送一条消息,告知具有特定ID的Person或PersonList已更改。然后,处理这些消息的接收的客户端代码可以使用RequestFactory来重新获取(例如,查找)该实体。然后,应通过EntityProxyChange事件将此更改传播到客户端的其他部分。
这是要走的路吗? (如果客户端已经拥有当前版本的实体,例如因为服务器很笨并且通知客户端客户端自己做出的更改,那么触发的重新获取只会传输一些元数据,而不是整个实体再次?)
增加:
想一想,我想知道如何为服务器发送的事件通道生成EntityProxyId。当服务器上的实体发生更改时,服务器仅具有服务器标识。然后它可以将它发送给客户端,但客户端只知道EntityProxyId。当然,我可以为每个EntityProxy添加一个getId()(除了getStableId()),但看起来好像这会为每个服务器响应添加冗余数据。
答案 0 :(得分:2)
嗯,我意识到我的帖子不是你问题的准确答案,但这只是我的经验。 实际上,如何将数据从服务器传递到客户端只是一个问题。 几年前我遇到了一些任务,为自己找到了让生活更轻松的方法。为了解释它,我想说明我的理由:
所以,现在我正在使用以下方法构建我的架构:
希望这有帮助。