0

从这个问题开始: GWT检测GAE版本更改并重新加载

我想进一步澄清一些事情。

我有一个企业应用程序(GWT 2.4 和 GAEJ 1.6.4 - 使用 GWT-RPC),我的用户通常在他们的浏览器中运行一整天,确实有些人不会每天刷新浏览器。我会定期发布新版本,因此我试图简化流程,以尽量减少对我的用户的影响。- 并非所有版本都涉及所有用户,所以我想尽量减少重启次数。

我希望有可能做到以下几点。将我的版本分类如下:1) 会导致抛出 IncompatibleRemoteServiceException 的版本和 2) 不会:即仅影响服务器或客户端但不影响 RPC 接口的版本。

然后我可以对客户端和服务器进行大量更改,而不会影响两者之间的接口。只要我不修改RPC接口,想必我可以更改服务器代码和/或客户端代码并且不会抛出异常?正确的?或者 GAE 的任何重新部署是否会导致旧客户端获得 IncompatibleRemoteServiceException ?

如果我能够做到这一点,我可以将界面破坏更改批量处理为相当罕见的版本,并通知我的用户需要重新启动。

非常感谢您的帮助。

4

1 回答 1

1

我需要一个很快的答案,所以我想我会做一些好的老式测试,看看有什么可能。希望这对使用 GWT-RPC 的生产系统的其他人有用。

目标是能够在不需要刷新所有连接的浏览器的情况下发布更新/修复。事实证明你可以做很多事情。

所以,经过我的测试,这是你能做和不能做的事情:

没问题

  1. 添加对 RemoteService 的新调用

  2. 只需更新服务器上的一些代码,例如简单的错误修复,重新部署

  3. 只需更新一些客户端(GWT)代码并重新部署(当然,任何想要新客户端功能的人都必须刷新浏览器,但其他人不受影响)

有限的问题

  1. 向现有的 RemoteService 方法添加一个参数 - 这个很有趣,该特定调用将抛出“IncompatibleRemoteServiceException”(当然),但对同一远程服务或其他远程服务(Impl's)的所有其他调用不受影响。

  2. 向 RemoteService 中的任何方法添加新类型(作为参数)——这是最有趣的,也是我进行此测试的原因。对于具有 IncompatibleRemoteServiceException 的现有客户端,它将使整个 RemoteService 过时。但是,您仍然可以使用其他 RemoteServices。- 我需要在这里做更多的测试才能完全理解,或者其他人可能知道更多?

因此,如果您知道自己在做什么,您就可以做很多事情,而无需通过更新或发布公告来打扰您的用户。

于 2012-04-14T06:47:46.833 回答