Como distribuir melhor as configurações específicas do cliente

5

Eu estou escrevendo um aplicativo de desktop WinForms que será enviado para vários clientes diferentes e estou querendo saber qual é a melhor maneira de implementar um arquivo de configuração do usuário. Normalmente eu usaria o construído em Settings.settings ou app.config para armazenar as configurações do usuário, mas neste caso o que eu quero armazenar é exclusivo para cada cliente, eu quero que ele seja configurado antes de enviá-lo e eu quero evitar recompilar cada hora que enviamos para um novo cliente.

O que eu quero que meu arquivo de configuração faça é armazenar algumas informações sobre os gráficos específicos do cliente usados no programa e algumas senhas (hash).

Não suspeitamos que os usuários estariam invadindo qualquer coisa do programa; Estamos apenas tentando evitar que usuários regulares do nível 'tech' façam alterações ou acessem certos módulos que um gerente deve alterar. Até agora, a senha foi codificada e, ao longo de alguns anos de uso, todos conseguiram saber o que é. Gostaríamos de ter mais controle sobre quais senhas vão, mas não necessariamente dar aos clientes o controle das alterações de senha.

Eu escrevi um programa separado que (de) serializa uma classe de configuração para um arquivo XML que seria colocado no diretório apropriado na instalação de modo que todas as pessoas precisassem fazer (depois que eu estiver fora da imagem) .msi do programa, crie um arquivo de configuração xml usando este programa separado, inclua os gráficos desejados em uma subpasta e copie tudo. Então, quando o usuário descompacta e instala, tudo é colocado no lugar certo. Quando meu programa carrega, meu arquivo de configuração termina de carregar. Se não conseguir encontrá-lo, o usuário terá uma alteração para localizá-lo, caso contrário, o programa não será aberto.

Eu tenho lido sobre a classe ConfigurationManager , mas não consigo descobrir como posso usá-la melhor. Eu não encontrei muito em pessoas usando arquivos de configuração externos e não tenho certeza se a minha situação é realmente única ou não estou pensando dentro da caixa o suficiente. Isso é um bom design? Eu deveria estar fazendo isso de forma diferente? Se você já teve uma situação semelhante, como você resolveu?

    
por Brad 20.02.2013 / 03:04
fonte

1 resposta

3

Tivemos uma situação semelhante em que trabalho e usei praticamente sua solução. Nós colocamos qualquer configuração específica do cliente em arquivos de configuração do json externo e os carregamos no início do programa. O que fizemos foi garantir que um instalador instalasse um conjunto padrão de trabalho, caso os arquivos de configuração ainda não estivessem instalados no sistema.

Eu não tenho certeza se a classe ConfigurationManager lhe daria qualquer benefício, pois, na minha experiência, isso basicamente dá a você um bom serialização de um arquivo de configuração. Json / Xml / Seja qual for a serialização é bastante conhecida e fácil nos dias de hoje que realmente se resume a escolha pessoal.

A única adição que pensei foi armazenar os arquivos de configuração em um servidor da Web e recuperá-los durante a instalação ou a primeira inicialização. Você poderia especificar o endereço durante a instalação ou novamente na primeira inicialização. Dessa forma, você não precisa fornecer tantos arquivos com o instalador e fornece uma maneira central de administrar a alteração na configuração no futuro.

    
por 20.02.2013 / 05:03
fonte