Мы используем серверы DataSnap с сохранением состояния для некоторых задач бизнес-логики, а также для предоставления данных набора данных клиента.
Если нам нужно обновить сервер для изменения бизнес-правила, мы копируем новую версию в новую пустую папку и регистрируем ее (в зависимости от версии Delphi, просто запустив или запустив утилиту TRegSvr).
Мы можем сделать это даже во время работы старого экземпляра сервера. Однако после регистрации новой версии все новые клиентские подключения будут по-прежнему использовать текущий (старый) экземпляр сервера . Все клиенты должны сначала отключиться, затем новый сервер будет использоваться для следующих клиентов.
Есть ли способ направлять все новые клиентские подключения на новый сервер сразу после регистрации?
(я знаю, что подписи нового или измененного метода также потребуют изменения и перезапуска клиентов, но этот вопрос касается внутренних изменений, которые не влияют на интерфейс)
Мы используем соединения Socket, и все клиенты используют одно и то же серверное приложение (открыто только одно окно приложения). В первые дни мы использовали другую конфигурацию удаленного модуля данных, что привело к одному окну приложения для каждого клиента. Может быть, это может быть решением? (потому что каждый новый клиент запускает зарегистрированный на данный момент исполняемый файл)
Обновление: предлагает ли Delphi XE некоторую поддержку для «горячего развертывания» (обновленных серверов)? В настоящее время мы используем Delphi 2009, но обновимся до XE, если он предложит более простую реализацию «горячего развертывания».