Estou desenvolvendo um aplicativo de desktop, e esse aplicativo requer algumas informações para ser executado, mas não altera nenhuma delas (os dados devem ser carregados em todas as execuções do aplicativo, mas os dados nunca são alterados). Os dados devem ser armazenados no mesmo computador em que o aplicativo está sendo executado (armazenamento do lado do cliente?).
Também é melhor se o usuário não puder alterar facilmente essas informações (suponha que ele não tenha muito conhecimento em TI).
Como devo armazenar esse tipo de informação? Um banco de dados local? XML enviado com o aplicativo?
Estou usando o WPF.
Respostas:
Um arquivo binário seria a resposta óbvia, mas depende de como você o está carregando - você também pode facilitar a vida, se puder.
O XML pode ser uma boa opção, pois há métodos incorporados em C # para ler isso. Você pode adicionar uma soma de verificação aos seus dados, para que, se o usuário alterá-la, a soma de verificação não corresponderá mais (é necessário adicionar uma verificação para garantir que a soma de verificação é válida)
Um banco de dados local pode criar mais problemas porque você tem outras dependências para poder acessá-lo
fonte
Se os dados nunca mudarem e forem somente leitura , basta colocá-los em um arquivo de código como uma lista de constantes.
Se esses dados forem diferentes por implantação, um arquivo externo será bom.
.Net vem com arquivos .config integrados (App.Config). Deve-se usá-las, pois existem maneiras padrão (integradas à estrutura) para ler as informações a partir delas.
Use os arquivos de configuração caso uma configuração precise ser alterada (nunca diga nunca), pois são apenas arquivos de texto (Xml). Se houver informações confidenciais, é possível criptografar uma configuração, se necessário.
fonte
Você sempre pode adicionar um arquivo ao seu projeto e definir seu tipo de construção para
Embedded Resource
que seja incorporado diretamente no próprio aplicativo.Como alternativa, um arquivo criptografado e colocado em um local acessível.
fonte
Se você não quiser nem mesmo espiar os dados, serialize-os em um arquivo de dados binários.
Somente o aplicativo saberia o tamanho dos pedaços para ler.
Eu não sei c #, mas em Java você criaria o arquivo assim:
... e eles lêem assim:
fonte