Como acessar DLL remota?
Pessoal,
imaginem uma LAN onde eu queira acessar de uma máquina uma DLL em outra máquina. Como eu poderia fazer isto?
Abraços...
Anderson Dibo
imaginem uma LAN onde eu queira acessar de uma máquina uma DLL em outra máquina. Como eu poderia fazer isto?
Abraços...
Anderson Dibo
Anddibo
Curtidas 0
Respostas
Bruno_fantin
17/11/2004
Sim...
GOSTEI 0
Gurc
17/11/2004
Sim...
Sim?? :?: Bom, hoje você pode usar o DataSnap para isso ou então fazer o download da DLL e carregá-la na memória local. Se você não tem nenhuma experiência com DataSnap e precisa disso urgentemente tente a segunda alternativa. Você pode usar os componentes do Indy para fazer o download.
Até mais,
Gustavo Royer Chaurais
GOSTEI 0
Massuda
17/11/2004
Apenas por curiosidade... o que exatamente você está querendo fazer?
Se for uma DLL que implementa COM, tem mecanismos próprios de RPC do Windows para isso.
Se for uma DLL normal, ela será carregada pelo seu programa se ela estiver em uma pasta compartilhada na rede, acessível aos usuários (permissão de leitura) e estiver no PATH da máquina onde o programa estiver sendo executado (acho que isso significa necessariamente que a pasta na rede deve estar mapeada em um drive da máquina).
Se for uma DLL que implementa COM, tem mecanismos próprios de RPC do Windows para isso.
Se for uma DLL normal, ela será carregada pelo seu programa se ela estiver em uma pasta compartilhada na rede, acessível aos usuários (permissão de leitura) e estiver no PATH da máquina onde o programa estiver sendo executado (acho que isso significa necessariamente que a pasta na rede deve estar mapeada em um drive da máquina).
GOSTEI 0
Anddibo
17/11/2004
Apenas por curiosidade... o que exatamente você está querendo fazer?
Obrigado pelo retorno pessoal.
Massuda, a idéia é simples: imagine um programa (1) instalado em uma máquina (1) e um programa (2) instalado em uma máquina (2), ok?
Imagine agora que o programa 2 possui poblicados alguns métodos que ativam certas funcionalidades internas, como por exemplo ´Mostrar um determinado form na tela´, ok?
O meu objetivo é que a partir da máquina 1 eu pudesse acessar o programa 2 e seus métodos. Desta forma, remotamente, eu ativaria as funcionalidades do programa 2.
Pensei em fazer o programa 2 em uma DLL porque eu poderia publicar os métodos de forma que um programa externo poderia acessá-los (só não sei como faria isto remotamente, estando o programa 1 em outra máquina).
Se tiver uma alternativa melhor, por favor, gostaria de saber.
Abraços...
Anderson Dibo
GOSTEI 0
Bruno_fantin
17/11/2004
Acho que no seu caso o DataSnap não seria ideal...
O melhor mesmo seria fazer isso usando socket de TCP/IP...
O programa 1 se conecta a maquina 2 e envia um texto qualquer... O programa 2 recebe o texto e de acordo com o texto ele faz alguma coisa...
Falou...
O melhor mesmo seria fazer isso usando socket de TCP/IP...
O programa 1 se conecta a maquina 2 e envia um texto qualquer... O programa 2 recebe o texto e de acordo com o texto ele faz alguma coisa...
Falou...
GOSTEI 0
Massuda
17/11/2004
[...]a idéia é simples: imagine um programa (1) instalado em uma máquina (1) e um programa (2) instalado em uma máquina (2), ok?
Imagine agora que o programa 2 possui poblicados alguns métodos que ativam certas funcionalidades internas, como por exemplo ´Mostrar um determinado form na tela´, ok?
O meu objetivo é que a partir da máquina 1 eu pudesse acessar o programa 2 e seus métodos. Desta forma, remotamente, eu ativaria as funcionalidades do programa 2.
Pensei em fazer o programa 2 em uma DLL porque eu poderia publicar os métodos de forma que um programa externo poderia acessá-los (só não sei como faria isto remotamente, estando o programa 1 em outra máquina).
Na situação que você está pensando usar isso, a DLL implementaria algum elemento visual do programa ou seria apenas algum tipo de processamento não visual?
No caso de processamento não visual, você pode adotar uma arquitetura cliente/servidor onde a máquina 2 atuaria como um servidor de aplicação para o programa na máquina 1. Por exemplo, o servidor de aplicação poderia realizar uma análise de crédito para um determinado CPF e retornar aprovado/reprovado para a máquina 1. Nesse caso, a comunicação entre as máquinas pode ser feita basicamente via TCP/IP (por exemplo, use TIdTCPServer/TIdTCPClient do Indy).
No caso de você estar pensando em elementos visuais do programa, um ponto de partida seria a DLL numa pasta da máquina 2 compartilhada na rede e mapeada em um drive da máquina 1, de modo que o programa na máquina 1 seja capaz de carregar a DLL.
Um desdobramento mais sofisticado seria implementar um sistema de plugin no seu programa. Se inglês não for problema, implementações comerciais de plugins pode ser vistas [url=http://www.remobjects.com/page.asp?id={84F6BA20-8322-4C2F-8D22-4409CD6DCDA6}]aqui[/url], [url=http://www.tmssoftware.com/tpf.htm]aqui[/url] e [url=http://www.athrasoft.com/en/Home.htm]aqui[/url]; uma implementação free está disponível no [url=http://sourceforge.net/projects/jvcl/]Jedi VCL[/url].
Dependendo do caso, sei que pode ser mais interessante desenvolver um BPL ao invés de uma DLL, mas neste instante, não lembro a razão exata disso.
GOSTEI 0
Anddibo
17/11/2004
Na situação que você está pensando usar isso, a DLL implementaria algum elemento visual do programa ou seria apenas algum tipo de processamento não visual?
Teria elementos visuais sim, pois gostaria de abrir remotamente um formulário (TForm) do programa 2, por exemplo.
No caso de você estar pensando em elementos visuais do programa, um ponto de partida seria a DLL numa pasta da máquina 2 compartilhada na rede e mapeada em um drive da máquina 1, de modo que o programa na máquina 1 seja capaz de carregar a DLL.
Vou fazer o teste. Achei interessante!
Um desdobramento mais sofisticado seria implementar um sistema de plugin no seu programa. Se inglês não for problema, implementações comerciais de plugins pode ser vistas [url=http://www.remobjects.com/page.asp?id={84F6BA20-8322-4C2F-8D22-4409CD6DCDA6}]aqui[/url], [url=http://www.tmssoftware.com/tpf.htm]aqui[/url] e [url=http://www.athrasoft.com/en/Home.htm]aqui[/url]; uma implementação free está disponível no [url=http://sourceforge.net/projects/jvcl/]Jedi VCL[/url].
English isn´t a problem! :) Gostei! Vou dar uma olhada, obrigado.
Abraços...
Anderson
GOSTEI 0
Anddibo
17/11/2004
Acho que no seu caso o DataSnap não seria ideal...
O melhor mesmo seria fazer isso usando socket de TCP/IP...
O programa 1 se conecta a maquina 2 e envia um texto qualquer... O programa 2 recebe o texto e de acordo com o texto ele faz alguma coisa...
Falou...
Ok, ´brigadão´ Bruno!
Abraços...
Anderson Dibo
GOSTEI 0