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