No se que opción es mejor..

05/07/2007 - 10:00 por Francesc | Informe spam
Holas!!!

Tengo una duda mas bien de "arquitectura" que de programación. Mirad tengo
una DLL que me da consultas SELECT a una Base de datos y me devuelve un DATA
TABLE, bien mi problema es que no se como tratar este Data Table, he pensado
dos cosas:

1. En la capa de negocio recojo el datatable, me creo una clase con la misma
estructura de la BD y voy leyendo del datatable, creandome objetos por cada
tupla y a la parte de negocio le paso un ArrayList.

Problema: Cuando modifique la BD tendre que modificar mi clase y mi lector
de datatable (casi inevitable, pero..)

2. En la capa de negocio recojo el datatable, lo paso a XML (.WriteXml) y lo
paso a interface. Allí se lee el XML, se sacan los datos necesarios y demás.

Problema: En la parte grafica cuando se modifique se tendra que modif el
lector xml y demás. Además, esto ya no sería organizado en 3 capas (en mi
caso en 5 por accesos a web services y a ftp..)

El problema es que en la interface grafica no deven hacer ni un gridview, ni
nada de esto, si no se les pasa el datatable y dicho..funcionaria de coña.
Pero debemos hacer un grafico que con un componente de dundas con ajax y es
un poco complicado.

Ya me direís que opinaís,

Muchas gracias!

Francesc Jaumot
-
Si te caes 7 veces levantate 8, es un dicho chino...
 

Leer las respuestas

#1 cirano
07/07/2007 - 01:39 | Informe spam
Tons...

Primero de todo, no creo que si optas por la opción 1 lo correcto sea
hacerlo en la capa de negocio, yo diría que correspondería mejor a una
capa de "Componente de Lógica de Acceso a Datos", que es distinto del
componente general de acceso a datos y normalmente se utiliza para
hacer el puente entre la base de datos y la lógica de negocio (claro
que esto es una concepción personal). Sin embargo, me parece que es la
mejor manera, de todas formas, no es muy normal que las tablas cambien
y de cambiar precisamente se aprovecha la separación de capas
alterando únicamente la capa que se encarga de la transformación y la
clase que se encarga del transporte de datos (normalmente una entidad
de negocio) y no se tienen que hacer mayores cambios en el resto de la
aplicación. Algo adicional que se puede hacer para minimizar las
compilaciones en caso de que los cambios en base de datos sean
mínimos, tal como cambio en los nombres de los campos o cosas así, es
utilizar un XML para describir la estructura de la tabla y utilizarlo
para cargar los datos en la entidad correspondiente, de esta manera si
el cambio es mínimo, la lógica de carga de datos se debe acomodar y
debe poder cargar la entidad sin necesidad de compilar de nuevo.

Suerte

On 5 jul, 03:00, Francesc wrote:
Holas!!!

Tengo una duda mas bien de "arquitectura" que de programación. Mirad tengo
una DLL que me da consultas SELECT a una Base de datos y me devuelve un DATA
TABLE, bien mi problema es que no se como tratar este Data Table, he pensado
dos cosas:

1. En la capa de negocio recojo el datatable, me creo una clase con la misma
estructura de la BD y voy leyendo del datatable, creandome objetos por cada
tupla y a la parte de negocio le paso un ArrayList.

Problema: Cuando modifique la BD tendre que modificar mi clase y mi lector
de datatable (casi inevitable, pero..)

2. En la capa de negocio recojo el datatable, lo paso a XML (.WriteXml) y lo
paso a interface. Allí se lee el XML, se sacan los datos necesarios y demás.

Problema: En la parte grafica cuando se modifique se tendra que modif el
lector xml y demás. Además, esto ya no sería organizado en 3 capas (en mi
caso en 5 por accesos a web services y a ftp..)

El problema es que en la interface grafica no deven hacer ni un gridview, ni
nada de esto, si no se les pasa el datatable y dicho..funcionaria de coña.
Pero debemos hacer un grafico que con un componente de dundas conajaxy es
un poco complicado.

Ya me direís que opinaís,

Muchas gracias!

Francesc Jaumot
-
Si te caes 7 veces levantate 8, es un dicho chino...

Preguntas similares