Patrón de diseño para el análisis de archivo binario de datos y almacenamiento en una base de datos

StackOverflow https://stackoverflow.com/questions/11680

  •  08-06-2019
  •  | 
  •  

Pregunta

¿Alguien recomienda un patrón de diseño para tomar un archivo de datos binarios, el análisis de partes de la misma en los objetos y el almacenamiento de los datos resultantes en una base de datos?

Creo que un patrón similar podría ser utilizado para tomar un XML o un archivo delimitado por tabuladores y analizarlo en su representante objetos.

Una común estructura de datos incluyen:

(Encabezado) (DataElement1) (DataElement1SubData1) (DataElement1SubData2)(DataElement2) (DataElement2SubData1) (DataElement2SubData2) (EF)

Creo que un buen diseño incluiría un modo de cambiar el análisis de la definición basada en el tipo de archivo o algunos que se definen los metadatos incluidos en el encabezado.Así que un Patrón De Fábrica se parte de que el diseño general del Analizador parte.

¿Fue útil?

Solución

  1. Simplemente escriba su analizador de archivos, usando cualquier técnica que vienen a la mente
  2. Escribir un montón de pruebas de unidad para asegurarse de que todos sus casos de borde están cubiertos

Una vez que hayas hecho esto, usted realmente va a tener una idea razonable de los problema/solución.

Ahora sólo tienes teorías flotando en su cabeza, la mayoría de los cuales resultan ser equivocadas.

Paso 3:Refactorizar sin piedad.Su objetivo debe ser eliminar alrededor de la mitad de su código

Usted encontrará que su código al final será o bien se asemejan a un diseño existente patrón, o te han creado uno nuevo.Entonces serás calificado para responder a esta pregunta :-)

Otros consejos

Estoy totalmente de acuerdo con Orion Edwards, y por lo general es la forma en que me acerco al problema;pero últimamente he estado empezando a ver algunos patrones(!) a la locura.

Para tareas más complejas suele usar algo como un intérprete (o un estrategia) que utiliza algunos el generador de (o fábrica) para crear cada parte de los datos.

Para la transmisión de datos, todo el analizador sería algo así como un adaptador, la adaptación de un flujo de objeto a un objeto stream (que por lo general es solo una cola).

Por su ejemplo no sería probablemente la de un constructor para la completa estructura de los datos (de la cabeza a los EF), que utiliza internamente constructores para el interior de los elementos de datos (alimentado por el intérprete).Una vez que la EF se encuentra un objeto sería emitida.

Sin embargo, los objetos creados en una instrucción switch en algunos de fábrica función es probablemente la forma más sencilla para muchas tareas de menor importancia.También, me gusta mantener mis datos-objetos inmutables como nunca se sabe cuando alguien mete la concurrencia a través de su garganta :)

El patrón de Estrategia es tal vez uno desea ver.La estrategia de ser el archivo algoritmo de análisis.

A continuación, usted desea una estrategia para la base de datos de inserción.

Uso Lex y YACC.A menos que dedicar los próximos diez años exclusivamente a este tema, que van a producir mejor y más rápido el código cada vez.

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