Como passar um Array contendo Nomes de Classes para o servidor de aplicação ?
Olá Consultores,
Gostaria de saber como passar um Array contendo nomes de classes para a minha aplicação servidora?
E como instanciar estas classes através dos nomes que foram passados pelo array?
Ex:
- Na aplicação cliente teríamos:
Conexao.AppServer.CRIAR_INSTANCIAS([Classe 1,Classe 2,Classe 3...Classe N]);
- Na aplicação servidora:
a função teria que receber o array contendo os nomes das classes e criar as instâncias correspondentes.
Atenciosamente,
Alexandre Amaral.
P.S.: Utilizo Delphi 7 + BSS
Alexandre Neto
Curtidas 0
Respostas
Rodrigo Mourão
05/01/2009
Olá Alexandre, como vai ???
Observando a sua dúvida não vi muito sentido em realizar esta operação. Não que ela não tenha sentido mas é que sem saber a real intenção ou o real motivo fica meio obscuro.
Digo isto pois você diz que quer aprender a instanciar a classe no servidor pelo nome, isso é relativamente simples através de RegisterClass porém e os valores para as propriedades.
Assim peço se possível que você me descreva a necessidade de fazer isso, como são estas classes (persistente, transiente). Com isso, dependendo da situação podemos ver uma solução mais viável pois eu trabalho com Objetos em Servidores de Aplicação e usando CDS mesmo, é uma técnica que me atende ou então utilizar COM+.
Fico no aguardo !!
Abs !!
Observando a sua dúvida não vi muito sentido em realizar esta operação. Não que ela não tenha sentido mas é que sem saber a real intenção ou o real motivo fica meio obscuro.
Digo isto pois você diz que quer aprender a instanciar a classe no servidor pelo nome, isso é relativamente simples através de RegisterClass porém e os valores para as propriedades.
Assim peço se possível que você me descreva a necessidade de fazer isso, como são estas classes (persistente, transiente). Com isso, dependendo da situação podemos ver uma solução mais viável pois eu trabalho com Objetos em Servidores de Aplicação e usando CDS mesmo, é uma técnica que me atende ou então utilizar COM+.
Fico no aguardo !!
Abs !!
GOSTEI 0
Alexandre Neto
05/01/2009
Olá Rodrigo,
É o seguinte, não quero trabalhar com CDS, então eu faço uso do seguinte expediente:
Eu serializo minhas classes (TPessoa, TPedido, etc) com suas propriedades devidamente preenchidas e envio para o servidor, lá existe uma função que recebe essas classes, deserializa e aplica a persistência. Isto já está funcionando bem.
Qual a razão da minha dúvida? Gostaria de criar uma função genérica que recebesse uma lista contendo os nomes das classes e fizesse o procedimento necessário (instanciasse as classes e aplicasse a persistência através do DAO). Para não ter que criar várias funções.
[]s
Alexandre Amaral.
GOSTEI 0
Rodrigo Mourão
05/01/2009
Olá,
Bem posso até gravar um vídeo lhe mostrando como instanciar uma classe a partir de uma string. Porém na função vc vai passar o nome das classes, no servidor instanciar, mas os valores como serão passados para a classe ??
Por que não trabalha com automação, utilizando create remote, acho isso mais viável.
De qualquer forma posso gravar esta vídeo mostrando como isntanciar a classe a partir da string porém porém todas as classes que farão parte do processo terão que ser registradas.
Abs !!!
Bem posso até gravar um vídeo lhe mostrando como instanciar uma classe a partir de uma string. Porém na função vc vai passar o nome das classes, no servidor instanciar, mas os valores como serão passados para a classe ??
Por que não trabalha com automação, utilizando create remote, acho isso mais viável.
De qualquer forma posso gravar esta vídeo mostrando como isntanciar a classe a partir da string porém porém todas as classes que farão parte do processo terão que ser registradas.
Abs !!!
GOSTEI 0
Alexandre Neto
05/01/2009
Olá Rodrigo,
Os valores são passados para as classes através da função de Deserialização.
Ex.:
Deserializa( MinhaClasse1, serie);
Deserializa( MinhaClasse2, serie);
Deserializa( MinhaClasseN, serie);
Mas como seria esse RemoteCreate? Não conheço.
[]s
Alexandre Amaral.
GOSTEI 0
Alexandre Neto
05/01/2009
Só complementando a resposta anterior...
Na aplicação cliente, eu passo o array contendo os nomes das classes utilizadas e uma string contendo a serialização destas classes.
Ex.:
Conexao.AppServer.Gravar( [ Classe1,Classe2,ClasseN ], serie );
Então a função no servidor criará as classes e preencherá as propriedades através da deserialização.
[]s
Alexandre Amaral.
GOSTEI 0
Rodrigo Mourão
05/01/2009
Olá Alexandre !!
Bem o create remote é um tipo de construtor presentes em Objetos que suportam automação, ou seja, objetos COM.
Um COMObject e um objeto que pode ser acessado remotamente. O Remote Data Module e um exemplo disso.
Bem mas isso e outro assunto, vamos por parte. Neste chamado aqui eu vou postar um exemplo de como registrar classes no SO e criá-las através do nome delas.
Se você preferir pode abrir um chamado pedindo uma explicação sobre objetos COM, teria o enorme prazer de gravar uma vídeo com isso.
ABS !!!
Bem o create remote é um tipo de construtor presentes em Objetos que suportam automação, ou seja, objetos COM.
Um COMObject e um objeto que pode ser acessado remotamente. O Remote Data Module e um exemplo disso.
Bem mas isso e outro assunto, vamos por parte. Neste chamado aqui eu vou postar um exemplo de como registrar classes no SO e criá-las através do nome delas.
Se você preferir pode abrir um chamado pedindo uma explicação sobre objetos COM, teria o enorme prazer de gravar uma vídeo com isso.
ABS !!!
GOSTEI 0
Alexandre Neto
05/01/2009
Blz Rodrigo,
estou no aguardo pelo vídeo.
[]s
Alexandre Amaral.
GOSTEI 0
Alexandre Neto
05/01/2009
Olá Rodrigo,
vamos deixar essa questão do create remote para um outro chamado mesmo.
Minha necessidade é passar o array com os nomes das classes por parâmetro para o servidor de aplicação e criar as instâncias através dos nomes das classes.
aguardo vídeo/exemplo de como implementar isso.
[]s
Alexandre Amaral.
GOSTEI 0
Rodrigo Mourão
05/01/2009
Olá Segue video com demostração !!
http://video.devmedia.com.br/naoexclusivos/RodrigoMourao/Consultoria/chamado1644.zip
Abs !!!
http://video.devmedia.com.br/naoexclusivos/RodrigoMourao/Consultoria/chamado1644.zip
Abs !!!
GOSTEI 0
Alexandre Neto
05/01/2009
Olá Rodrigo,
Seu vídeo atendeu plenamente e esclaresceu minhas dúvidas de forma bastante satisfatória.
Podemos considerar este chamado finalizado.
Obrigado pela atenção.
[]s
Alexandre Amaral.
p.s.: quanto a abrir aquele outro chamado com relação ao Create remote, pode ser feito direcionado a você?
GOSTEI 0
Rodrigo Mourão
05/01/2009
Olá Alexandre, eu que agradeço a confiança depositada em nós e peço desculpas pela demora em responder !!
abs !!!
abs !!!
GOSTEI 0