O Delphi XE permite 3 tipos de Life Cycle de uma classe instanciada por uma aplicação cliente delphi:
1 - Server
2 - Session (Não funciona com clientes Rest (Stateless)
3 - Invocation
No proejto gcic-ec Web preciso usar Rest e Soap, porém existem algumas classes tais como a filial selecionada, parâmetros do sistema do usuário conectado, opções do usuário conectado, corpo da nota fiscal em edição pelo usuário conectado que devem permanecer ativas com propósito otimizar o tempo de acesso as classes que dependem destas bem como facilitar a programação no lado do cliente.
Em resumo preciso do LifeCycle = Session para cliente web. Infelizmente a equipe que escreveu o delphi não acha isso necessário.
Para resolver meu problema devo criar em meus objetos a propriedade Live Cycle = Session, Server e Invocation e dar opção ao Turbo Vision de destruir os objetos inserido nele cujo ciclo de vida chegou ao fin.
Mais para usar o Turbo Vision preciso que cada TApplication seja independente de todas as variáveis de tarefas ou seja: cada conexão terá uma instância de TApplication independente.
TApplication.Run executará os eventos existente para a sessão.
A instância de TApplication deve ser criado no método TWebModule_Main.DSAuthenticationManager1UserAuthenticate onde o nome da sessão deve ser igual a TApplication.name.
TApplication deve ter uma opção de pesquisar um objeto pelo nome da classe + nome do método visto que o servidor DataSnap trabalha desta forma.
No Servidor datasnap devo usar TDSServerClass.LifeCycle = invocation e em cada execução do método devo localizar TApplication usando a propriedade Session.SessionName em seguida localizar o método em TApplication. Se não existir deve criar uma nova instância.
1 - Server
2 - Session (Não funciona com clientes Rest (Stateless)
3 - Invocation
No proejto gcic-ec Web preciso usar Rest e Soap, porém existem algumas classes tais como a filial selecionada, parâmetros do sistema do usuário conectado, opções do usuário conectado, corpo da nota fiscal em edição pelo usuário conectado que devem permanecer ativas com propósito otimizar o tempo de acesso as classes que dependem destas bem como facilitar a programação no lado do cliente.
Em resumo preciso do LifeCycle = Session para cliente web. Infelizmente a equipe que escreveu o delphi não acha isso necessário.
Para resolver meu problema devo criar em meus objetos a propriedade Live Cycle = Session, Server e Invocation e dar opção ao Turbo Vision de destruir os objetos inserido nele cujo ciclo de vida chegou ao fin.
Mais para usar o Turbo Vision preciso que cada TApplication seja independente de todas as variáveis de tarefas ou seja: cada conexão terá uma instância de TApplication independente.
TApplication.Run executará os eventos existente para a sessão.
A instância de TApplication deve ser criado no método TWebModule_Main.DSAuthenticationManager1UserAuthenticate onde o nome da sessão deve ser igual a TApplication.name.
TApplication deve ter uma opção de pesquisar um objeto pelo nome da classe + nome do método visto que o servidor DataSnap trabalha desta forma.
No Servidor datasnap devo usar TDSServerClass.LifeCycle = invocation e em cada execução do método devo localizar TApplication usando a propriedade Session.SessionName em seguida localizar o método em TApplication. Se não existir deve criar uma nova instância.
Comentários
Postar um comentário