¿Cómo puedo actualizar un servidor DataSnap mientras los clientes todavía están conectados?

Usamos servidores DataSnap con estado para algunas tareas de lógica de negocios y también para proporcionar datos de datos del cliente.

Si tenemos que actualizar el servidor para modificar una regla comercial, copiamos la nueva versión en una nueva carpeta vacía y la registramos (dependiendo de la versión de Delphi, simplemente iniciando o ejecutando la utilidad TRegSvr).

Podemos hacer esto incluso mientras se ejecuta la instancia del servidor anterior. Sin embargo,después de registrar la nueva versión, todas las conexiones de cliente nuevas seguirán utilizando la instancia del servidor (antigua) actualmente en ejecución. Todos los clientes deben desconectarse primero, luego el nuevo servidor se usará para los siguientes clientes.

Hay una manera dedireccione todas las conexiones de clientes nuevos al nuevo servidor, inmediatamente después de registrarse?

(Sé que las firmas de métodos nuevos o modificados también requerirán un cambio y reinicio de los clientes, pero esta pregunta trata sobre modificaciones internas que no afectan la interfaz)

Estamos utilizando conexiones Socket, y todos los clientes comparten la misma aplicación de servidor (solo hay una ventana de aplicación abierta). En los primeros días, hemos utilizado una configuración diferente del módulo de datos remoto que resultó en una ventana de aplicación por cliente. Tal vez esto podría ser una solución? (porque cada nuevo cliente lanzará el ejecutable registrado actualmente)

Update: ¿ofrece Delphi XE, por lo tanto, soporte para 'implementación en caliente' (de servidores actualizados)? Usamos Delphi 2009 en este momento, pero actualizaríamos a XE si ofrece una implementación más fácil de 'implementación en caliente'.

Respuestas a la pregunta(12)

Su respuesta a la pregunta