Ver Mensaje Individual
  #19  
Antiguo 30-01-2006
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Despues de mucho trayecto, ahora tengo una inclinacion mas "hibrida" en cuanto al acceso a datos.

Resulta, que como dice kinobi, no hay una relacion directa entre los objetos, tal como los definen los lenguajes OO, y las estructuras de datos. Pero iria mas alla: Es una PERDIDA de tiempo intentar que los conceptos OO mapeen 100% a las estructuras de datos y viceversa. Es una perdidad tal, que una solucion definitiva NO existe a pesar de los multiples intentos.

Analicemos la cosa. Hay (3) formas fundamentales, 3 paradigmas grandes de acceso a datos:

1-Estilo DataSet ( o sea, como Delphi, ADO, ADO.NET):

El estilo dataset es nada mas ni nada menos un manejo de matrices mas sofisticado, con opciones de lista, navegacion y edicion. El estilo DataSet representa perfectamente un conjunto de filas y columnas y provee excelentes y simples maneras de trabajar con ellas.

En mi opinion, Delphi tiene la mejor implementacion de este tipo de acceso, por encima de todos los demas. Es flexible, es intercambiable, no altera la parte visual y combinando con dataset en memoria, MUY facil de volverlo un objeto, usando encapsulamiento y polimorfismo.

Mi tabla de puntaje mediane mis propias conclusiones:

- Listar datos : ++++
- Velocidad : +++
- Modificar datos : +++
- Programar objetos negocios, procesos complejos: +
- Complejidad: ++/+++

2- Estilo objetos: Es lo que hace ECO, Bold, TechInsite y otros. De estos, me parece que ECO es lo mejorcito de lo que he visto, incluyendo cosas de Java como hibernate. Sin embargo, siempre utilizan en sus adentros uno de los otros dos estilos o el acceso directo a la API y se vuelve una gran carga en sentido de la cantidad de indirecciones que hacen. Pero para hacer modelamiento de objetos de negocios, es lo mejor.

- Listar datos : +/++
- Velocidad : ++/+++
- Modificar datos : +++
- Programar objetos negocios, procesos complejos: ++++
- Complejidad: +++

3- Estilo comando: Entre este estilo incluyo a lo que hace DBase, FoxPro, PHP, Ruby y Linq. Basicamente, es hacer asi (al estilo Fox): UPDATE Salario WITH Salario*50

- Listar datos : ++++
- Velocidad : ++++
- Modificar datos : ++++
- Programar objetos negocios, procesos complejos: +
- Complejidad: ++/+++

Pero despues de mucho batallar entre data-aware y no data-aware, hacer mis propios intentos de un OPF y de probar los de tech-insite, Bold y ECO, simplemente me he rendido a la realidad:

1- Si quieres listar cosas y hacer informes: DataSet / Estilo DBase/Fox
2- Si quieres modelar objetos de negocios, procesos: Programa TUS propios objetos y "esconde" los dataset/comandos en el interior o integra un OPF y si es algo mas complejo, un modelo como ECO
3- Si quieres hacer procesos complejos, usa OO + Comandos y/o llamadas directas SQL

Esto es como preguntar: Uso matrices o Colecciones, o arboles, o nodos, o listas enlazadas o doble enlazadas o punteros? Sobre los mismos datos no todas las formas de representarlos y manipularlos producen los mismos resultados, unas veces hazlo como una matriz, pero luego se pasa a una coleccion pero para aquello haz un arbol... pero el arbol es complejo, dale con nodos pero luego son nodos de conexiones debiles, tira punteros, etc....

Y no hay razon para no hacer mezclas. Por ejemplo, como dice Kinobi, la interface de PHP es pateticamente simple, la razon? es muy estilo FoxPro . O sea, como no sera mas sencillo:

RetornarDataSet('SELECT * FROM Clientes',SoloLectura):TClientDataSet

que voltear con los objetos, configurar conexiones, etc... (que es la forma manual de hacerlo con DataSet)

Pero a la vez, como no va ser mas simple, pegar un reporte, conectarlo a dataset, configurar la ubicacion de los campos y listo?

Pero como no va a ser mas simple, hacer un diagrama de estado, cojer ECO, decirle generar y !pow! tienes programado, ejem..., listo, tu sistema con Workflow automatico con persistencia de datos a xml, sql server, firebird, con evolucion de version, etc...?

Es por eso, que ahora con Delphi pongo los dataset para que me hagan los combos, las listas, los reportes y Grids. Hago mis propios objetos, que NO utilizan estos dataset, para los procesos, nada de eventicos por ahi sueltos en los dataset, TODOS en los objetos. Y lo programo para que me recuerde a mi fox, por medio de comandos como ObtenerDatos('Select... y EjecutarSql('Insert...

Y asi deje de peleear con esto...
__________________
El malabarista.
Responder Con Cita