Fórum Como acessar DLL remota? #258734
17/11/2004
0
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
Curtir tópico
+ 0Posts
17/11/2004
Bruno_fantin
Gostei + 0
18/11/2004
Gurc
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
18/11/2004
Massuda
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
18/11/2004
Anddibo
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
18/11/2004
Bruno_fantin
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
18/11/2004
Massuda
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
18/11/2004
Anddibo
Teria elementos visuais sim, pois gostaria de abrir remotamente um formulário (TForm) do programa 2, por exemplo.
Vou fazer o teste. Achei interessante!
English isn´t a problem! :) Gostei! Vou dar uma olhada, obrigado.
Abraços...
Anderson
Gostei + 0
18/11/2004
Anddibo
Ok, ´brigadão´ Bruno!
Abraços...
Anderson Dibo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)