我有一个相当大的 DataSnap 服务器,它将 24/7 运行,它将替代当前运行的 MIDAS (COM) 服务器。现在我面临的问题是如何更新该服务器而不必强制断开所有连接的客户端。
使用当前的 midas 服务器(顺便说一下,它没有大量的服务流量)我只是等到没有连接,然后关闭服务器应用程序并替换 exe 文件。如果在服务器“关闭”时发生新连接,作为 COM 对象,它将被操作系统“拉起”,不会给客户端带来任何问题。
新的 DataSnap 架构不再基于 COM(太棒了!),但是这样我就失去了停止服务器而不会导致新连接失败的机会。
我认为某种 TCP“代理”或“隧道”可以解决我的问题,所以我可以简单地将新的服务器 exe 放在某个地方,并让该“代理”将客户端连接重定向到新的 DS 服务器。我已经尝试过 TIdMappedPortTCP,但它不断地挂在服务器-客户端对话框的随机点上。
有任何想法吗?
编辑:出于效率原因,我在纯 TCP/IP 传输上使用 DataSnap,因此 http 代理不适合我的具体情况。