TESTE DE VALIDADE NA DLL
Olá Pessoal.
Eu tenho uma DLL que contem todas as regras de negócio da aplicação.
Eu gostaria de colocar nessa DLL um teste (por exemplo) de validade.Imaginamos que eu queira que essa DLL só funcione até 31/12/2010.
Como eu poderia fazer esse teste, para que a DLL não executasse se esse teste fosse negativado.
Eu saberia fazer criando uma classe, e testando em cada método das outras classes.
Entretanto eu gostaria de um procedimento mais prático e inteligente.
Grato
Sidney Mendonça/
Curtidas 0
Respostas
Fabio Mans
22/02/2010
Olá Sidney nunca ouvi falar em tempo de vida de uma dll, por exemplo 28/02/2010 não chamar mais os métodos dela, o que pode fazer é na hora de instanciar esta dll consultar a data que você não quer mais que ela seja chamada e não passar por ela.
Fabio
GOSTEI 0
Sidney Mendonça/
22/02/2010
Olá Fabio.
Eu usei a validade da DLL somente como exemplo. Mas poderia ser qualquer outro teste.
A minha necessidade na realidade é o seguinte. 1) Eu entrego a DLL pronta (todas as regras de negócio do sistema) para um programador, ele faz parte do desenvolvimento, sai da empresa e pirateia o sistema todo. Se eu tiver um controle de validade nela, estarei seguro pois ela terá vencimento. 2) Eu alugo o sistema, poderia fazer o teste de contratação na DLL. 3) etc, etc.... A sugestão de testar ao instanciar a DLL não daria certo, teria que ser dentro da DLL mesmo. Grato
A minha necessidade na realidade é o seguinte. 1) Eu entrego a DLL pronta (todas as regras de negócio do sistema) para um programador, ele faz parte do desenvolvimento, sai da empresa e pirateia o sistema todo. Se eu tiver um controle de validade nela, estarei seguro pois ela terá vencimento. 2) Eu alugo o sistema, poderia fazer o teste de contratação na DLL. 3) etc, etc.... A sugestão de testar ao instanciar a DLL não daria certo, teria que ser dentro da DLL mesmo. Grato
GOSTEI 0
Fabio Mans
22/02/2010
Mas ele vai ter acesso aos fontes da DLL, se não você pode utilizar o Dotfuscator Community Edition para ele não ter acesso aos fontes. Será que é isso?
Fabio
GOSTEI 0
Sidney Mendonça/
22/02/2010
Olá Fabio.
Ele não vai ter acesso aos fontes, e poderei utilizar ou não Dotfuscator, já que ele só vai ver em assembler.
O que preciso é um teste de condição para que (dependendo da condição) essa DLL não funcione.
Exemplo.
Eu adquiri uma DLL que gera o arquivo de exportação para cobrança bancária, (qualquer banco, qualquer carteira).
Se a DLL não reconhecer o CNPJ da empresa que está utilizando essa DLL, ela não funciona.
De alguma maneira eles imbutiram nessa DLL esse teste de condição. O que eu gostaria de fazer é algo parecido. Grato
De alguma maneira eles imbutiram nessa DLL esse teste de condição. O que eu gostaria de fazer é algo parecido. Grato
GOSTEI 0
Fabio Mans
22/02/2010
Você sabe se esta DLL faz acesso a banco de dados?
Se sim você pode pode fazer consistências através do uma tabela.
O que você precisa é que o seu software não seja copiado? É isso? Parece que não estou etendendo sua necessidade.
Fabio
==============================================================
Se a DLL não reconhecer o CNPJ da empresa que está utilizando essa DLL, ela não funciona.
De alguma maneira eles imbutiram nessa DLL esse teste de condição.
Se sim você pode pode fazer consistências através do uma tabela.
O que você precisa é que o seu software não seja copiado? É isso? Parece que não estou etendendo sua necessidade.
Fabio
==============================================================
Se a DLL não reconhecer o CNPJ da empresa que está utilizando essa DLL, ela não funciona.
De alguma maneira eles imbutiram nessa DLL esse teste de condição.
GOSTEI 0
Sidney Mendonça/
22/02/2010
Olá Fabio.
A DLL a qual eu me referi, pode até fazer acesso a banco de dados, eu não tenho certeza.
Mas isso até não faz muita diferença, porque se eu souber fazer um teste qualquer na DLL, mesmo que seja uma constante (data < "31/12/2010"), como foi meu primeiro exemplo de ter uma validade para DLL, eu consigo fazer qualquer outro teste. Vamos imaginar
... que a DLL faça acesso ao banco de dados...
... que a DLL tenha 100 métodos.
... e que eu tenha uma tabela com os CPNJ das empresas que podem utilizar a DLL (TabelaA)
... e que eu tenha uma tabela com o CNPJ da empresa que vai utilizar a DLL (TabelaB)
... que nenhum método pode ser executado se o teste inicial não for positivo. Como eu poderia de dentro da DLL (uma uma única vez), fazer um teste, se o CNPJ da empresa que vai utilizar a DLL (TabelaB) está na tabela onde contem todos os CNPJs de todas as empresas que podem utilizar a DLL (TabelaA)? Grato
Mas isso até não faz muita diferença, porque se eu souber fazer um teste qualquer na DLL, mesmo que seja uma constante (data < "31/12/2010"), como foi meu primeiro exemplo de ter uma validade para DLL, eu consigo fazer qualquer outro teste. Vamos imaginar
... que a DLL faça acesso ao banco de dados...
... que a DLL tenha 100 métodos.
... e que eu tenha uma tabela com os CPNJ das empresas que podem utilizar a DLL (TabelaA)
... e que eu tenha uma tabela com o CNPJ da empresa que vai utilizar a DLL (TabelaB)
... que nenhum método pode ser executado se o teste inicial não for positivo. Como eu poderia de dentro da DLL (uma uma única vez), fazer um teste, se o CNPJ da empresa que vai utilizar a DLL (TabelaB) está na tabela onde contem todos os CNPJs de todas as empresas que podem utilizar a DLL (TabelaA)? Grato
GOSTEI 0
Fabio Mans
22/02/2010
Na dll que você se refere abaixo você consegue vizualizar os métodos certo? Porém quando vai executar o programa ele não abre é isso?
Fabio
Se a DLL não reconhecer o CNPJ da empresa que está utilizando essa DLL, ela não funciona.
De alguma maneira eles imbutiram nessa DLL esse teste de condição.
Fabio
Se a DLL não reconhecer o CNPJ da empresa que está utilizando essa DLL, ela não funciona.
De alguma maneira eles imbutiram nessa DLL esse teste de condição.
GOSTEI 0
Sidney Mendonça/
22/02/2010
Não Fábio.
Eu só dei um exemplo do que eu estou querendo fazer.
De uma olhada em todos os meus posts.
Grato
GOSTEI 0
Fabio Mans
22/02/2010
Sim mas não vejo uma solução sem ir no banco, por exemplo
public DevMediaBLL()
{
}
private void ValidarPrazo()
{
DateTime final = new DateTime(2010, 01, 25);
if (DateTime.Compare(DateTime.Now, final) > 0)
{
return; //Isso não existe,
}
}
public string MetodoTeste()
{
//Aqui eu valido pelo banco
return "Devmedia";
}
Isso não existe, na hora que ele passa no construtor ele chama o método, eu pensei em ir no banco e validar, se a validação for ok ele continua.
DevMediaBLL Bll = new DevMediaBLL();
string teset = Bll.MetodoTeste();
public DevMediaBLL()
{
}
private void ValidarPrazo()
{
DateTime final = new DateTime(2010, 01, 25);
if (DateTime.Compare(DateTime.Now, final) > 0)
{
return; //Isso não existe,
}
}
public string MetodoTeste()
{
//Aqui eu valido pelo banco
return "Devmedia";
}
Isso não existe, na hora que ele passa no construtor ele chama o método, eu pensei em ir no banco e validar, se a validação for ok ele continua.
DevMediaBLL Bll = new DevMediaBLL();
string teset = Bll.MetodoTeste();
GOSTEI 0
Fabio Mans
22/02/2010
Fica ruim colocar em cada método uma validação? Tipo se passou de uma determinada data você chama um return?
GOSTEI 0
Fabio Mans
22/02/2010
Sidney consegui fazer, vou explicar abaixo.
public class DevMediaBLL
{
public DevMediaBLL()
{
ValidarPrazo(); //Aqui no construtor da classe você chama um método que irá validar o prazo.
}
private static void ValidarPrazo()
{
DateTime final = new DateTime(2010, 01, 25);
if (DateTime.Compare(DateTime.Now, final) > 0)
{
throw new Exception("Prazo vencido"); //Você pode fazer um erro de compilação ou
}
}
public string MetodoTeste()
{
return "Devmedia";
}
}
public class DevMediaBLL
{
public DevMediaBLL()
{
ValidarPrazo(); //Aqui no construtor da classe você chama um método que irá validar o prazo.
}
private static void ValidarPrazo()
{
DateTime final = new DateTime(2010, 01, 25);
if (DateTime.Compare(DateTime.Now, final) > 0)
{
throw new Exception("Prazo vencido"); //Você pode fazer um erro de compilação ou
}
}
public string MetodoTeste()
{
return "Devmedia";
}
}
GOSTEI 0
Sidney Mendonça/
22/02/2010
Olá Fábio.
Era isso mesmo que eu precisava.
Já testei e funcionou direitinho.
Obrigado pela atenção, e parabéns pela solução.
[]s
Sidney
GOSTEI 0