DUVIDA SOBRE DLL
Boa tarde pessoal,
Por exemplo, tenho um sistema com cadastro de clientes (nome,cpf,cidade...blablabla), este cadastro esta envolvido em um sistema de controle comercial, e penso que este mesmo cadastro também pode funcionar para outros sistemas (academia, consultório, etc ) , para poder reutilizar este cadastro e para ficar mais fácil de atualizar eu coloquei ele em uma DLL, então em determinado momento dentro do sistema quando eu preciso cadastrar cliente eu chamo de dentro um commandbutton pela DLL (que já foi refenciada no projeto) e ela ja me manda o formulário de cadstro, as funções de pesquisa, etc... é como se a DLL fosse um outro projeto e eu chamesse ele a hora que preciso, ai td bem o negócio até funciona legal, até pensei em fazer o mesmo com as contas a pagar, cadastro de funcionários, e tudo que segue o mesmo padrão nos sistemas... mas minha dúvida é: este é o melhor jeito de reutilizar códigos ? ou é simplesmente uma [Ô]gambiarra[Ô] ? pois li em algum lugar que uma DLL não pode ter interface deve ser só pra funções, etc..... se não for o certo, qual a maneira mais correta de reutilizar códigos e formulários comuns entre sistemas ?
Obrigado a todos....
Por exemplo, tenho um sistema com cadastro de clientes (nome,cpf,cidade...blablabla), este cadastro esta envolvido em um sistema de controle comercial, e penso que este mesmo cadastro também pode funcionar para outros sistemas (academia, consultório, etc ) , para poder reutilizar este cadastro e para ficar mais fácil de atualizar eu coloquei ele em uma DLL, então em determinado momento dentro do sistema quando eu preciso cadastrar cliente eu chamo de dentro um commandbutton pela DLL (que já foi refenciada no projeto) e ela ja me manda o formulário de cadstro, as funções de pesquisa, etc... é como se a DLL fosse um outro projeto e eu chamesse ele a hora que preciso, ai td bem o negócio até funciona legal, até pensei em fazer o mesmo com as contas a pagar, cadastro de funcionários, e tudo que segue o mesmo padrão nos sistemas... mas minha dúvida é: este é o melhor jeito de reutilizar códigos ? ou é simplesmente uma [Ô]gambiarra[Ô] ? pois li em algum lugar que uma DLL não pode ter interface deve ser só pra funções, etc..... se não for o certo, qual a maneira mais correta de reutilizar códigos e formulários comuns entre sistemas ?
Obrigado a todos....
Will a princÃpio não vejo problema no que fez. Sobre certo e errado em informática, isso não existe o que pode haver são formas melhores ou piores de se atingir um objetivo.
Por outro lado não sei se DLL para uso como módulos inteiro de um programa seja a melhor opção, isso no caso de uso multiusuário, pois como DLL deve ser registrada em cada estação (não pode ficar no servidor), sua manutenção seria muito trabalhosa já que deveria ser feita micro por micro. Por outro lado poderia usar DLL não registrada que ficaria na pasta de seu aplicativo, mas nesse caso como o EXE está no servidor ele usaria o (path) do servidor. Não sei se DLL sem registro pode ficar no servidor junto ao EXE também, e se seria usada corretamente pelo EXE. Talvez alguém possa elucidar isso melhor.
Já pensei várias vezes em dividir meu sistema de um único EXE para várias DLLs, mas esbarrei justamente no problema de atualização. Tenho um cliente que desistiu de usar meu programa, só porque tinha que copiar o EXE do meu site e substituir no servidor, imagina se tivesse de rodar um setup de atualização máquina por máquina para atualizar DLL?
Nota 1: A opção de usar o EXE no servidor só é válida para VB6.
Nota 2: No .Net não é possÃvel centralizar executáveis no servidor, uma vez que o EXE MSIL é compilado durante a execução na estação de trabalho. Sendo assim e como cada estação pode ter um Windows diferente, não seria possÃvel compilar todos no mesmo EXE no servidor. Então em .Net o EXE deve ficar localmente também, o que obriga a atualizações estação por estação e não centralizada, da mesma forma que quando se usa DLL no VB6.
OBS: Posso ter escrito alguma besteira, pois ainda não fiz testes em .Net a este respeito, mas isso é conclusão com base em todos os materiais que já li sobre o .Net.
Por outro lado não sei se DLL para uso como módulos inteiro de um programa seja a melhor opção, isso no caso de uso multiusuário, pois como DLL deve ser registrada em cada estação (não pode ficar no servidor), sua manutenção seria muito trabalhosa já que deveria ser feita micro por micro. Por outro lado poderia usar DLL não registrada que ficaria na pasta de seu aplicativo, mas nesse caso como o EXE está no servidor ele usaria o (path) do servidor. Não sei se DLL sem registro pode ficar no servidor junto ao EXE também, e se seria usada corretamente pelo EXE. Talvez alguém possa elucidar isso melhor.
Já pensei várias vezes em dividir meu sistema de um único EXE para várias DLLs, mas esbarrei justamente no problema de atualização. Tenho um cliente que desistiu de usar meu programa, só porque tinha que copiar o EXE do meu site e substituir no servidor, imagina se tivesse de rodar um setup de atualização máquina por máquina para atualizar DLL?
Nota 1: A opção de usar o EXE no servidor só é válida para VB6.
Nota 2: No .Net não é possÃvel centralizar executáveis no servidor, uma vez que o EXE MSIL é compilado durante a execução na estação de trabalho. Sendo assim e como cada estação pode ter um Windows diferente, não seria possÃvel compilar todos no mesmo EXE no servidor. Então em .Net o EXE deve ficar localmente também, o que obriga a atualizações estação por estação e não centralizada, da mesma forma que quando se usa DLL no VB6.
OBS: Posso ter escrito alguma besteira, pois ainda não fiz testes em .Net a este respeito, mas isso é conclusão com base em todos os materiais que já li sobre o .Net.
cara para não estender muito talves fica um pouco inviável mas se eu entendi o que vc precisa trabalhar dentro do VB6 ou VB.Net
VC precisa desenvolver aplicações em COM PLUS (COM+) ambas as ferramentas dão suporte e a aplicação fica atualizável por DLL. Desa forma sua plicação fica modular de fácil atualização por modulos em DLL. é assim que as grandes empresas trabalham com seus sistemas modulares.
Respondendo sua dúvida uma DLL pode ter Formulários Classes e Módulos como em um sistema comum EXE.
DLL, EXE e OCX são formas de executar sua aplicação em VB6
Uma dica de desnvolvimento é o desenvolvimento em N Camadas parece um pouco Mauricinho mas para dar manutenção ou adicionar novas funcionalidades.
é isso ai agente acha que terminou desenvolver o sistema e sempre pensamos em melhorias trabalho e mais trabalho.
Como disse acima pegue algum material no google sobre COM+ e OOP e talves suas dúvidas talves ficarão mais claras sobre desenvolvimento em dll e Orientação a Objeto, lembrando que VB6 náo é orinetado a objeto mas é orientado a eventos(quase a mesma coisa).
LUIS HERRERA, realmente executar um setup de atualização micro por micro é meio trabalhoso, mas eu nunca tentei rodar um EXE direto do servidor sem instalar no cliente, eu sempre faço assim: instalo o banco de dados (firebird) e o sistema no servidor, e o mesmo sistema nos clientes buscando o banco no IP do servidor. Estou pensando em bolar um só setup que quando instalado no servidor, os clientes na hora de abrir verificam se ha a atualização e atualiza automático se houver.
AJSO, vou dar uma estudada nesse tal de COM PLUS (COM+), mas vc poderia adiantar resumidamente o que é isso, o q ele faz e se interage com VB6 ? eu to pesquisando sobre programação N camadas mas não consigo entender na prática como fazer isso para sistemas desktop.
Desse modo que estou fazendo, colocar cada módulo em uma DLL diferente parece estar dando certo, ontem eu coloquei o módulo de contas a pagar em uma única dll, instanciei ela em dois projetos diferentes e funcionou certinho, Vamos ver no que da...
Amigos, Muito obrigado pela atenção.
AJSO, vou dar uma estudada nesse tal de COM PLUS (COM+), mas vc poderia adiantar resumidamente o que é isso, o q ele faz e se interage com VB6 ? eu to pesquisando sobre programação N camadas mas não consigo entender na prática como fazer isso para sistemas desktop.
Desse modo que estou fazendo, colocar cada módulo em uma DLL diferente parece estar dando certo, ontem eu coloquei o módulo de contas a pagar em uma única dll, instanciei ela em dois projetos diferentes e funcionou certinho, Vamos ver no que da...
Amigos, Muito obrigado pela atenção.
Tópico encerrado , respostas não são mais permitidas