GARANTIR DESCONTO

Fórum Como acessar DLL remota? #258734

17/11/2004

0

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


Anddibo

Anddibo

Responder

Posts

17/11/2004

Bruno_fantin

Sim...


Responder

Gostei + 0

18/11/2004

Gurc

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


Responder

Gostei + 0

18/11/2004

Massuda

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).


Responder

Gostei + 0

18/11/2004

Anddibo

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


Responder

Gostei + 0

18/11/2004

Bruno_fantin

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...


Responder

Gostei + 0

18/11/2004

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).


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.


Responder

Gostei + 0

18/11/2004

Anddibo

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


Responder

Gostei + 0

18/11/2004

Anddibo

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar