ALTERNAR ENTRE CONEXOES

EDISONJULIANOTI 03/04/2012 00:42:53
#398983
Preciso desenvolver um sistema DESKTOP aonde vai ser administrado x sites, onde vou ter um cadastro de sites e apartir das informacoes cadastradas eu posso adminsitrar.
A minha duvida e a seguinte, como posso mudar a conexao que fica no app.conf de acordo com o site que eu quero?
KERPLUNK 03/04/2012 09:05:38
#398992
Hmmm, para alterar dados no app.config, é relativamente simples:

//instanciando o objeto
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationCollection settings = config.AppSettings.Settings;


settings[[Ô]SUA_CHAVE_AQUI[Ô]].Value = [Ô]SEU VALOR AQUI[Ô];

config.Save(ConfigurationSaveMode.Modified);
//Depois de salvar, tem que recarregar...
ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);


Esse procedimento vai atualizar a chave [Ô]SUA_CHAVE_AQUI[Ô] com o valor que você colocar no arquivo (Nome do seu programa).config
LUIS.HERRERA 03/04/2012 14:39:44
#399002
Kerplunk - Legal aprendi mais uma (rs).

EDISONJULIANO - será que é isso mesmo que você quer fazer? Veja, se você terá uma conexão diferente para cada site, não tem muita lógica você ficar alterando justamente a app.config com esses dados. Não sei mais interessante guardar num banco de dados os dados que precisa de cada site?

Assim quando for mudar de site, seleciona o desejado na lista e busca os dados no banco. Um exemplo disso poderia ser as strings de conexão com um banco de dados no site ou a senha usuário de cada site.

Não não é isso, desculpe.
EDISONJULIANOTI 03/04/2012 23:07:21
#399056
LUIS, seria isso mesmo guardar em um banco de dados as strings de conexao.
Mais como eu podeia usar um dataset alternando entre conexoes?
LUIS.HERRERA 04/04/2012 07:58:42
#399066
Os objetos de manipulação de dados não tem relação direta com uma conexão específica, mas sim com a conexão que você associa a ele, pois não são eles que abrem. Assim...

Você abre a conexão
Faz o acesso aos dados
Fecha a conexão

Sua estrutura de todos os bancos sendo exatamente iguais, você terá uma única rotina de carga e mainpulação dos dados, independente de qual site esteja acessando. Mas se cada banco for diferente, então terá de ter um manipulador específico para cada um. Dessa forma o acesso aos dados pode ser feito com qualquer conexão, inclusive com mais de uma aberta simultaneamente.

Pelo que entendi você terá estruturas idênticas em cada site, então sua programação será única para todos, com isso só muda mesmo a string de conexão. Assim basta guardá-las em algum lugar seguro e organizada para recuperar quando necessário.

Pensando na plataforma .Net, guardar strings dentro do EXE ou DLL não é seguro. Você poderia guardar todas criptografadas e só na hora de usar, poderia descriptografar e passar ao objeto conexão, mas como a rotina de descriptografia estará no programa também, a coisa fica meio vulnerável. Neste caso e de qualquer um, também me incluo nessa, temos que descobrir uma forma segura de guardar todas as strings de conexão, pois como elas tem que ser passadas ao usuário (cliente) não podemos comprometer estes dados, ainda mais quando acessam o nosso banco também.

Nota: O app.config só permite uma string de conexão e tem um recurso de criptografia própria para protegê-la. Mas não dá para usar várias. Eu até pensei em usar uma DLL do VB6 incorporado ao programa .Net, pois ele não sendo gerenciado, não seria possível usar ferramentas de engenharia reversa do .Net para abrí-lo, e sim teriam de tentar via programas binários, mas mesmo assim as strings deveriam estar criptografadas também na DLL e só sendo revertidas na hora de passar ao programa chamador.

O problema com essa solução é da Microsoft retirar o suporte ao VB6 como vem alegando a algum tempo,mas postergando. Com isso acredito que estas dlls não funcionem fururamente, então não seria uma solução definitiva, somente provisória.

Um outro problema que ainda não consegui analisar, é se o objeto Conection (o local onde se passa a string de conexão) é também uma variável string que pode ser acessada diretamente para se VER o conteúdo ou só pode ser acessada, para abrir a conexão. Se puder ser visualizado o conteúdo, acredito que não haja qualquer forma de proteger uma string de conexão, pois há um programa de leitura em tempo real de tudo que está na RAM do micro em execução, ou seja, qualquer programa Dot.Net rodando, pode ter seu conteúdo verificado e alterado por esse programa.

Acho que o final da resposta não está respondendo sua pergunta, mas tem relação direta com o assunto.
EDISONJULIANOTI 11/04/2012 09:22:39
#399558
Obrigado Luis, vou tentar fazer aqui alguma coisa e te mantenho informado


Tópico encerrado , respostas não são mais permitidas