Estoy desarrollando una aplicación de escritorio, y esta aplicación requiere cierta información para ejecutarse, pero no cambia nada de esta información (los datos deben cargarse en cada ejecución de la aplicación, pero los datos nunca cambian). Los datos deben almacenarse en la misma computadora en la que se ejecuta la aplicación (¿almacenamiento del lado del cliente?).
También es mejor si el usuario no puede cambiar fácilmente esta información (suponga que no tiene mucho conocimiento de TI).
¿Cómo debo almacenar este tipo de información? ¿Una base de datos local? XML que se envía con la aplicación?
Estoy usando WPF.
Respuestas:
Un archivo binario sería la respuesta obvia, pero depende de cómo lo esté cargando; también podría facilitarle la vida si puede.
XML podría ser una buena opción ya que hay métodos integrados en C # para leer esto. Puede agregar una suma de verificación a sus datos, de modo que si el usuario la modifica, la suma de verificación ya no coincidirá (debe agregar una verificación para asegurarse de que la suma de verificación sea válida)
Una base de datos local puede crear más problemas porque tiene otras dependencias que necesita para poder acceder a ella
fuente
Si los datos nunca cambian y son de solo lectura , simplemente colóquelos en un archivo de código como una lista de constantes.
Si estos datos son diferentes por implementación, entonces un archivo externo está bien.
.Net viene con archivos .config integrados (App.Config). Uno debería usarlos ya que hay formas estándar (integradas en el marco) para leer la información de ellos.
Use los archivos de configuración en caso de que una configuración deba cambiar (nunca digas nunca), ya que son solo archivos de texto (Xml). Si hay información confidencial, se puede cifrar una configuración si es necesario.
fuente
Siempre puede agregar un archivo a su proyecto y establecer su tipo de compilación para
Embedded Resource
que se incruste directamente en la aplicación misma.Alternativamente, un archivo que se cifra y se coloca en una ubicación accesible.
fuente
Si no desea que el usuario eche un vistazo a los datos, debe serializarlos en un archivo de datos binarios.
Solo la aplicación sabría la longitud de los fragmentos para leer.
No sé C # pero en Java crearías el archivo así:
... y ellos lo leen así:
fuente