Como posso atualizar um servidor DataSnap enquanto os clientes ainda estão conectados?

Utilizamos servidores DataSnap com estado para algumas tarefas de lógica de negócios e também para fornecer dados do conjunto de dados do client

Se precisarmos atualizar o servidor para modificar uma regra comercial, copiamos a nova versão para uma nova pasta vazia e a registramos (dependendo da versão Delphi, iniciando ou executando o utilitário TRegSvr

Podemos fazer isso mesmo enquanto a instância antiga do servidor está em execução. Contudo, Depois de registrar a nova versão, todas as novas conexões do cliente ainda usarão a instância do servidor em execução (antiga). Todos os clientes precisam se desconectar primeiro, e o novo servidor será usado para os próximos cliente

Existe uma maneira dedirecione todas as novas conexões do cliente para o novo servidor, imediatamente após o registro?

Eu sei que assinaturas de métodos novos ou alterados também exigirão uma alteração e o reinício dos clientes, mas esta pergunta é sobre modificações internas que não afetam a interface

Estamos usando conexões de soquete e todos os clientes compartilham o mesmo aplicativo de servidor (apenas uma janela de aplicativo é aberta). Nos primeiros dias, usamos uma configuração diferente do módulo de dados remoto, que resultou em uma janela de aplicativo por cliente. Talvez isso possa ser uma solução? (porque cada novo cliente inicia o executável atualmente registrado)

Update: o Delphi XE oferece, então, suporte para 'hot deploy' (de servidores atualizados)? Usamos o Delphi 2009 no momento, mas atualizamos para o XE se ele oferecer uma implementação mais fácil de 'hot deploy'.

questionAnswers(12)

yourAnswerToTheQuestion