如何将DataSnap客户端连接到各种DS服务器?

时间:2012-08-06 07:47:51

标签: delphi indy datasnap

我有一个非常大的DataSnap服务器,它将全天候运行,它将取代当前运行的MIDAS(COM)服务器。现在我面临的问题是如何更新该服务器而不必强行断开所有连接的客户端。

使用当前的midas服务器(顺便说一下,没有巨大的流量来服务)我只是等到没有连接,然后关闭服务器应用程序并替换exe文件。如果在服务器“关闭”时发生了新的连接,那么它就是一个COM对象,它将被操作系统“拉出”,给客户端带来任何问题。

新的DataSnap架构不再基于COM(太棒了!),但这样我就失去了停止服务器而不会导致新连接失败的机会。

我认为某种TCP“代理”或“隧道”可以解决我的问题,所以我可以简单地在某处放置一个新的服务器exe并让“代理”将客户端连接重定向到新的DS服务器。我已经尝试过TIdMappedPortTCP,但它在服务器 - 客户端对话框的随机点上不断挂起。

有什么想法吗?

编辑:出于效率原因,我在纯TCP / IP传输上使用DataSnap,因此http代理不适合我的特定情况。

1 个答案:

答案 0 :(得分:1)

也许你应该看一下命名服务的等价物?可以像您调用方法的Datasnap服务器一样简单,并返回“主”服务器的IP地址。然后,当您想要删除服务器进行维护时,您可以更改命名服务器分发的IP地址,这样新客户端就会被路由到它。备份主服务器后,可以更改IP。

你仍然有引导问题(即,他们如何找到命名服务器的IP),但这可以像在客户端上的配置文件中有几个IP地址一样简单,如果第一个失败了回到第二个。