我们将有状态的 DataSnap 服务器用于一些业务逻辑任务,并提供客户端数据集数据。
如果我们必须更新服务器来修改业务规则,我们将新版本复制到一个新的空文件夹并注册它(取决于 Delphi 版本,只需启动或运行 TRegSvr 实用程序)。
即使旧服务器实例正在运行,我们也可以这样做。但是,注册新版本后,所有新的客户端连接仍将使用当前正在运行的(旧)服务器实例。所有客户端都必须先断开连接,然后新服务器将用于下一个客户端。
有没有办法在注册后立即将所有新客户端连接定向到新服务器?
(我知道新的或更改的方法签名也需要更改并重新启动客户端,但这个问题是关于不影响界面的内部修改)
我们使用的是 Socket 连接,所有客户端共享同一个服务器应用程序(只打开一个应用程序窗口)。在早期,我们使用了远程数据模块的不同配置,这导致每个客户端有一个应用程序窗口。也许这可能是一个解决方案?(因为每个新客户端都会启动当前注册的可执行文件)
更新:Delphi XE 是否为“热部署”(更新的服务器)提供一些支持?我们目前使用 Delphi 2009,但如果它提供更轻松的“热部署”实施,我们将升级到 XE。