Pregunta

Tengo una aplicación de C # que permite a un usuario para introducir información sobre los clientes y los sitios de trabajo. La información es muy básica.

  • Cliente: nombre, número, dirección, correo electrónico, sitio de trabajo asociado
  • .
  • a pie de obra:. Nombre, ubicación

Estas son las especificaciones de mi que necesito para este programa.

  • No hay límite en la cantidad de los datos introducidos.
  • solo usuario por aplicación. Ninguna actividad concurrente o varios usuarios.
  • Permitir entradas de usuario / datos a ser exportados a un archivo externo que puede ser fácilmente compartida entre aplicaciones / usuarios.
  • Permite consultas de los usuarios a los clientes de visualización basados ??en diferentes combinaciones de información al cliente / trabajo sitio de información.
  • Los datos nunca será visto o manipulado fuera de la aplicación.
  • El programa se ejecuta casi siempre, minimizado en la barra de tareas.
  • Tiempo de inicio no es muy importante, sin embargo, me gustaría que las consultas a ser considerablemente más rápido.

Todo esto me parece apuntar hacia una base de datos, pero muy ligero. Sin embargo, también es necesario tener ninguna limitación en cuanto a almacenamiento de datos. Si está de acuerdo que debería utilizar una base de datos, por favor hágamelo saber lo que sería el más adecuado para mis necesidades. Si usted no cree que debería utilizar una base de datos, por favor haga algunas sugerencias sobre lo que cree que sería mejor.

¿Fue útil?

Solución

Me suena como una base de datos es 100% lo que necesita. Ofrece tanto el almacenamiento de datos, recuperación de datos (incluyendo consultas) y la capacidad de exportar los datos a un formato estándar (ya sea directamente de la base de datos, oa través de su aplicación.)

Para una base de datos de la luz, que sugieren SQLite (pronunciado 'SQL Lite';)). Puede google para tutoriales sobre cómo configurarlo, y luego la forma de interactuar con él a través de su código C #. También encontré una referencia a este C # envoltorio para SQLite, que puede ser capaz de hacer gran parte del trabajo para usted!

Otros consejos

Mi sugerencia sería utilizar SQLite. Lo puedes encontrar aquí: http://sqlite.org/ . Y se puede encontrar la versión C # envoltorio aquí: http://sqlite.phxsoftware.com/

SQLite es muy ligero y tiene algunas cosas bastante potente para un motor tan ligero. Otra opción que puede mirar es Microsoft Access.

Usted está haciendo la pregunta equivocada de nuevo:)

La mejor pregunta es "¿Cómo construir una aplicación que me permite cambiar la implementación de almacenamiento de datos?"

Si se aplica el modelo de repositorio y adecuadamente interfaz se puede crear capas de persistencia intercambiables. Por lo que podría comenzar con una implementación y cambiarlo según sea necesario wihtout necesidad de volver a diseñar las capas de negocio o de aplicación.


Una vez que tenga una interfaz de repositorio que podría intentar implementaciones en muchos enfoques diferentes personas:

archivo plano - Se podría persistir los datos como XML, y siempre que ello no es una gran cantidad de datos que puede almacenar todo el contenido en la memoria (acaba de leer el archivo en el inicio, escribir el archivo al apagar el equipo). Con XML en memoria se puede obtener un rendimiento muy alto y sin preocupación por los índices de bases de datos, etc.

distribuible DB - SQLite o gran trabajo de SQL compacto; que ofrecen muchos beneficios DB, y no requieren la instalación

Local DB - SQL Express es un buen medio-tierra entre un peso ligero y con todas las funciones DB. Acceso, cuando se usa con cuidado, puede ser suficiente. El principal beneficio es que se incluye con MS Office (aunque no se instala por defecto), y algunos grupos de TI son más cómodo tener acceso instalado en máquinas que SQL Express.

completa DB - MySQL, SQL Server, PostgreSQL, et al.


Teniendo en cuenta sus necesidades específicas Te aconsejaría hacia un archivo plano basada en XML - con la única condición de que estás bien con la memoria de uso de la aplicación correlaciona directamente con el tamaño del archivo (ya que sus datos están texto, incluso con el peso de XML, esto tomaría una mucho de entradas a ser muy grande).

Aquí está la ventajas / desventajas - enumerados por sus requisitos:

Contras

  • No hay límite en la cantidad de los datos introducidos.
    • el uso de XML en memoria significaría su aplicación no sería escalar. Que fácilmente podría manejar un archivo de datos de 10 MB, 100 MB, no debería ser un problema (a menos que su sistema tiene poca memoria RAM), por encima de que usted tiene que seriamente pregunta "¿Puedo pagar esta cantidad de memoria?".

Pros

  • solo usuario por aplicación. Ninguna actividad concurrente o varios usuarios.
    • XML se puede leer en la memoria y sostenido por el proceso (dominio de aplicación, en realidad). Está perfectamente adecuado para escenarios de un solo usuario, donde la concurrencia es una preocupación muy estrecho.
  • Permitir que las entradas de usuario / datos a ser exportados a un archivo externo que puede ser fácilmente compartida entre aplicaciones / usuarios.
    • XML es perfecto para la exportación, y también es fácil de importación a Excel, bases de datos, etc ...
  • Permite consultas de los usuarios a los clientes de visualización basados ??en diferentes combinaciones de información sitio de información al cliente / trabajo.
    • LINQ to XML es su amigo: D
  • Los datos nunca será visto o manipulado fuera de la aplicación.
    • .... entonces sostenerla en su totalidad en la memoria no causa ningún problema
  • El programa se ejecuta casi siempre, minimizado en la barra de tareas.
    • modo de cargar el XML en el arranque, y la escritura en el apagado será acceptible (si el archivo es muy grande que podría tomar un tiempo)
  • Tiempo de inicio no es muy importante, sin embargo, me gustaría que las consultas a ser considerablemente más rápido
    • La lectura del XML sería relativamente lento en el arranque; pero cuando se carga en memoria que será difícil de superar. Cualquier dada DB, será necesario que se arranca el motor DB, que se hagan llamadas / cruzada proceso de interoperabilidad / entre redes, que los resultados pueden cargar desde el disco (si no está almacenado en caché por el motor), etc ...

¿Qué hay de SQLite? Suena como que es un buen ajuste para su aplicación.

Se puede usar System.Data.SQLite como el envoltorio NET.

Se puede obtener SQL Server Express de forma gratuita. Yo diría que la cuestión no es tanto por qué se debe utilizar una base de datos, más de por qué no usted? Este tipo de problema es exactamente lo que las bases de datos son para, y SQL Server es una base de datos muy potente y ampliamente utilizado, por lo que si usted va a ir a alguna otra solución necesidad de proporcionar una buena razón por la que no iría con una base de datos.

Una base de datos sería un buen ajuste. SQLite se han mencionado bueno como los demás.

También podría utilizar una instancia local de de SQL Server Express para aprovechar las mejoras integración con otras piezas de la pila de desarrollo de Microsoft (ya que lo mencionas C #).

Una tercera opción es una base de datos de documentos como Cuervo que puede adaptarse a partir de los sonidos de sus datos.

editar
Una cuarta opción sería la de tratar interruptor de la luz cuando la beta sale en unos pocos días. (8-23-2010)
/ editar
No siempre va a ser una limitación de almacenamiento de datos (el espacio vacío del disco duro). Según Wikipedia, SQL Express se limita a 10 GB para SQL Server Express 2008 R2

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top