gpt4 book ai didi

GWT RequestFactory 并将服务器端更改传播到客户端

转载 作者:行者123 更新时间:2023-12-01 03:57:57 26 4
gpt4 key购买 nike

我需要一些关于如何最好地使用 GWT 的 RequestFactory 处理将实体的服务器端更改传播到客户端的建议。

让我们假设我们有两个 EntityProxies,一个 PersonProxy 和一个 PersonListProxy(它有一个 List 的 getter)。假设客户端已经从服务器获取了一个 PersonList 和一个 Person。

如果客户端正在编辑这些代理之一并触发请求,则 RequestFactory 的机制(如果我正确理解了原理)将在检测到服务器代码所做的更改时触发 EntityProxyChange 事件(以便客户端可以更新其显示实体,例如)。

现在假设服务器正在此客户端请求之外更改其实体(例如,由于另一个客户端调用服务器),以便此客户端在再次获取 Person 或 PersonList 时将看到另一个版本。

我的问题是在 RequestFactory 框架内告诉客户端更改(并尽可能多地重用机器)的最佳方法是什么?我们可以假设我有办法从服务器向客户端发送简单的消息(例如 Google App Engine 的 channel API 或服务器发送的事件)。

一种想法可能是服务器通过此 channel 发送一条消息,告知具有特定 id 的 Person 或 PersonList 已更改。处理这些消息接收的客户端代码然后可以使用 RequestFactory 重新获取(例如查找)实体。然后,此更改应通过 EntityProxyChange 事件传播到客户端的其他部分。

这是要走的路吗? (并且如果客户端已经拥有实体的当前版本,例如因为服务器是愚蠢的并通知客户端客户端本身所做的更改,触发的重新获取是否只会传输一些元数据而不是整个元数据又是实体?)

添加:

再考虑一下,我想知道如何为服务器发送的事件 channel 生成 EntityProxyId。当服务器上的实体发生变化时,服务器只有服务器 id。然后它当然可以将它发送给客户端,但是客户端只知道 EntityProxyId 的。当然,我可以向每个 EntityProxy 添加一个 getId()(除了 getStableId()),但看起来这会向每个服务器响应添加冗余数据。

最佳答案

好吧,我意识到我的帖子并不能准确回答您的问题,但这只是我的经验。
实际上,只是一个问题,如何将数据从服务器传送到客户端。
几年前我面临一些任务,并为自己找到了一种让我的生活更轻松的方法。为了解释它,我想说明我的原因:

  • 您必须通过从客户端请求数据来实现完整的数据交付 - 这是请求数据的直接、自然的方式;
  • 您不想创建和支持 2 种不同的完整数据交付模型:一种是通过客户端请求,第二种是通过服务器推送;
  • 但是你需要通知客户端服务器端的一些变化;

  • 所以,现在我正在使用以下方法构建我的架构:
  • 为数据交付构建完整的经典客户端 - 服务器 API - 这样即使您的推送功能被阻止或损坏,您也可以以自然的方式加载和刷新您的应用程序。
  • 定义可能在服务器端更改并应通过推送机制传递给客户端的关键信息。
  • 创建小的推送消息构造,将仅向客户端传递有关更改的通知 - 不应以这种方式传递任何有值(value)的数据 - 只需键入已更改的数据。
  • 当客户端收到此类通知时,它所需要做的只是以已经支持的自然客户端-服务器方式从服务器获取/刷新数据。
  • 服务器逻辑不应该通过大量通知来打扰客户端 - 有时不传递更改更有效,而只是刷新所有内容。

  • 希望这可以帮助。

    关于GWT RequestFactory 并将服务器端更改传播到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15700467/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com