gpt4 book ai didi

delphi - 如何在客户端仍处于连接状态时更新 DataSnap 服务器?

转载 作者:行者123 更新时间:2023-12-03 15:08:47 66 4
gpt4 key购买 nike

我们使用有状态的 DataSnap 服务器来执行某些业务逻辑任务,并提供客户端数据集数据。

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

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

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

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

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

更新:Delphi XE 是否提供对“热部署”(更新服务器)的支持?我们目前使用 Delphi 2009,但如果 XE 能够更轻松地实现“热部署”,我们将升级到 XE。

最佳答案

您可以将您的应用程序服务器分成两个新服务器,一个是一个简单的代理对象,将所有方法(并且可选地包含状态信息,如果有)重定向到实际实现您的业务逻辑的第二个服务器。您还需要在代理服务器中实现“静默重新连接”功能,以便在您决定随时更换业务应用程序服务器时不打扰连接的客户端。我自己以前从未做过这样的设计,但希望这个想法很清楚

关于delphi - 如何在客户端仍处于连接状态时更新 DataSnap 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/944648/

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