加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何在客户端仍然连接时更新DataSnap服务器?

发布时间:2020-12-15 10:06:43 所属栏目:大数据 来源:网络整理
导读:我们将有状态DataSnap服务器用于某些业务逻辑任务,并提供clientdataset数据. 如果我们必须更新服务器以修改业务规则,我们将新版本复制到一个新的空文件夹并注册它(取决于Delphi版本,只需启动或运行TRegSvr实用程序). 即使旧的服务器实例正在运行,我们也可以
我们将有状态DataSnap服务器用于某些业务逻辑任务,并提供clientdataset数据.

如果我们必须更新服务器以修改业务规则,我们将新版本复制到一个新的空文件夹并注册它(取决于Delphi版本,只需启动或运行TRegSvr实用程序).

即使旧的服务器实例正在运行,我们也可以这样做.但是,在注册新版本后,所有新客户端连接仍将使用当前运行的(旧)服务器实例.所有客户端必须先断开连接,然后新服务器将用于下一个客户端.

有没有办法在注册后立即将所有新客户端连接定向到新服务器?

(我知道新的或更改的方法签名也需要更改和重新启动客户端,但这个问题是关于不影响接口的内部修改)

我们正在使用Socket连接,并且所有客户端共享相同的服务器应用程序(只打开一个应用程序窗口).在早期,我们使用了远程数据模块的不同配置,这导致每个客户端有一个应用程序窗口.也许这可能是一个解决方案? (因为每个新客户端都会启动当前注册的可执行文件)

更新:Delphi XE是否为“热部署”(更新服务器)提供了一些支持?我们目前使用Delphi 2009,但如果它更容易实现“热部署”,则会升级到XE.

解决方法

您可以将appserver分成2个新服务器,一个是简单的代理对象,将所有方法(以及可选的包含状态信息)重定向到实际实现业务逻辑的第二个.您还需要在代理服务器中实现“静默重新连接”功能,以便在您决定随时更换业务应用服务器时不会干扰已连接的客户端.从来没有做过这样的设计,但希望这个想法很明确

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读