Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2005
DANY DANY is offline
Miembro
 
Registrado: nov 2003
Posts: 145
Poder: 21
DANY Va por buen camino
Uqe Librerias De Persistencia De Objetos Me Recomiendan??

Hola foro
Les cuento que estoy por empezar a desarrolarun proyecto nuevo,
a Grandes rasgos es una aplicacion de gestion administrativa para una empresa
son 130 puestos de trabajo trabajando contra un SQL Server desarrollados en Delphi 7.

hace unos meses empece a incursionar en el tema de la OOP y UML.
hice un par de aplicaciones pequeñas donde declaraba prolijamente las clases
y creaba los objetos, todo muy bonito (inclusive el cliente se mostro muy conforme,
cosa rara en el rubro, jaja ) con el pasar del tiempo me di cuenta del gran problema
que tenian mis aplicaciones y es el acople del SQL (incluidos siempre en metodos de
los objetos como texto puro), es decir que se pierde uno de los principios mas basicos
de la POO que es que los objetos funcionen como cajas negras independentes,
pr supuesto un cambio en la estructura de la BD Destruia todo el programa (a veces exajero)
Concretamente me puse a investigar el tema de las librerias de persistencias de objetos.
Instale Bold, aprendi a usarlo(Solo lo basico,
por ende mis concluciones de la herramienta pueden ser herradas).
Me parecio muy interesante, pero lo que no me gusto es que siemprea arman
la interfaz de usuario con los componentes BOLD. Eso de las dbgrid comunes y los navigator
por lo gral no van en aplicaciones serias (por lo menos en mi opinion) en donde se require
lograr un grado de interaccion del usuario con la GUI mucho mayor. Yo tengo mi conjunto de
componentes cuiddosamente seleccionados (CuantumGrid, InfoPower, etc.).
!Y NO LOS PIENSO CAMBIAR POR OTROS QUE ME RESTRINJAN FUNCIONALIDAD!.
mas que una duda concreta lo que les pido es una orientacion, Estuve viendo algo de RemObjects
y veo que son aplicaiones orientadas al trabajo con multiples bases de datos ( no es mi caso).
en fin,con que herrmienta puedo mapear atributos a Campos de BD, que me automatizen la
generacion de SQL y que me informe (o automatize si es posible) si cambia algo en la BD en
las clases que hacen uso de la misma?. Creo estar conceptualmente por el camino correcto pero
no se que herramientas usar ya que carezco de experiencia en el tema.
Vi los foros de MAMCX y me parecieron fantasticos,
de todas maneras necesito un empujoncito mas. Creo que es una cuestion importante por que si
largo el proyecto viciado probablemente no haya marcha atras (Igual que empezara a fumar ), los tiempos caigan fuera de
lo estimado (GRANDES DOSIS DE CAFE, PELEAS CON LA NOVIA, QUIZAS HASTA CON LA SUEGRA...) y
seguramente el mantenimiento sera un caos, lo cual incide directamente en el bolsillo.
(y agrandaria el mito de que todos los informaticos somos chantas=charlatantes)

Bueno,me pase de vueltas escribiendo ,les mando un saludo grande.
El aporte altruista de los que participan en los foros es una ayuda muy importante, que tiene
concecuncias directas en la vida de los que lo aprovechamos (y de vez en cuando aportamos)
(menos peleas con la novia y la suegra, etc.) .
Responder Con Cita
  #2  
Antiguo 04-07-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno, hace un año y medio me encontré en una situación muy similar a la tuya, así que como mínimo te puedo detallar dónde estoy y cómo me va un año y medio después... Es como si puedieras ver el futuro...

No me quiero extender mucho (si a partir de eso tienes dudas sobre algo concreto o quieres que hablemos más en detalle sobre algo, lo comentamos,... sin problemas...), simplemente comentarte que el proyecto era bastante similar; SQL Server, Delphi 6 (en nuestro caso), aunque no se descartaban posteriores, número de puestos muy elevado, posiblemente acaben siendo unos 350/400.

Las premisas:
* Un modelo de persistencia para las reglas de negocio donde poder programar las clases como "cajas negras" (tal y como dices tu).
* Trabajar con componentes estandard (nada de componentes propietarios tipo BOLD -salvo que no hubiera otro remedio-)
* Muy importante trabajar basádonos en SQL, nada de componentes conectados... (la idea era controlar al máximo el tráfico de red y las operaciones que se realizaban).
* No hacía fala que fuera Multiplataforma, ni MultiSGBD. Queda bonito, pero en la práctica iba a funcionar sobre SQL Sever y Windows.
* Poder diseñar sobre UML y en lo posible Generar a partir de eso los modelos (código Delphi y estructura en la Base de Datos).

Éstas eran las principales; A partir de aquí y evaluando lo que hay -o lo que había en ese momento- en el mercado (en mi caso ya los tenía vistos...) se decidió crear una estructura desde cero (propietaria); Cosas que miramos en su día:

* BOLD: A mi entender el Gran problema de Bold son los componentes que utiliza; Propietarios; En ningun caso tienes código fuente, o al menos cuando yo lo miré. La creación que hace de tablas y su estructura (no se ajustaba a lo que nosotros queríamos) y sobre todo la falta de documentación y expreriencia en grandes proyectos y la falta de control absoluto sobre "lo que hacía" (en cuanto a Base de Datos).
* JEDI Obiwan Object Persistence Framework; En su momento estaba en pañales, ahora desconozco por dónde va.
* SPIDER containers and persistet clases for Delphi: En su momento nos pareció un poco "atascado" y además teníamos dudas de que pudiera funcionar al nivel de grandes proyectos.
* InstantObjects for Delphi: Muy básicos; Tenían una cosa buena, que es que trabajaban con controles estandard. Posteriormente, la empresa (seleqt) abandonó el desarrollo. Actualmente han pasado a SourceForge.
http://sourceforge.net/projects/instantobjects/
* TechInsite Object Persistence Framework: En su día estaba bastante "en pañales" y demasisdo extenso para lo que necesitabamos.
* Alguna otra cosa de poco importancia...

CONCLUSIÓN: Acabamos realizando nuestro propio sistema de Persistencia. Se puede hacer (en mi caso es el segundo que hago -ya que en mi empresa enterior también hice uno-; Justo por eso me contrataron en ésta), y ambos están funcionando. El actual no está "a pleno rendimiento" todavía, pero en las pruebas que realizamos responde bien.

CONSEJO: Es un trabajo de 1 año/año y medio mínimo; para generar algo productivo a un nivel alto (estamos hablando de aplicativos grandes y con necesidades altas). Así que antes de "meterte" en un "fregado" como ese asegúrate.

A lo que hemos llegado nosotros: (lo intentaré explicar en pocas palabras, para que tengas una idea).
(1) Se diseña en UML (Rational Rose). Clases; Orientación a objetos.
(2) Con una utilidad (propia), se genera a partir de los ficheros MDL de rational (utilizan formato llamado PETAL, que básicamente es un LISP):
+ Ficheros .PAS con la estructura de las clases; Modelo de Negocio.
+ Tablas necesarias, Vistas, y demás en la Base de Datos. El mapeo que usamos en BD es de (Varias tablas por clase -La documentación de Scott Ambler explica las posibilidades con bastabte claridad-)
+ Ficheros relacionados con las clases para multiidioma y posterior traducción.
+ Documentación en formato HTML, que despuyés se utiliza para generar la ayuda, a partir de los comentarios y documentación que se introduce en Rational.
+ A parte genera un esqueleto para el Browse y el Edit de la clase, que posteriormente "carga en Delphi".
(3) La parte que corresponde a la Persistencia funciona de forma sencilla -conceptualmente-; Tenemos un componente (-el más importante de todos-) que deriva de un TDataSet que conecta Componentes Data-Aware con la Base de Datos, con el añadido de que utiliza el modelo de Persistencia (almacenado en PAS).
Para que me entiendas es como si fuera el componente estandard, pero de Read-only; En el momento en que se hacen operaciones (INSERT/UPDATE/DELETE) no se hacen de la forma estandard (utilizando el componente), sino que se genera el SQL correspondiente y se lanza..

El Gestor de Persistencia es el que se encarga de realizar TODAS las consultas SQL que se utilizan en la aplicación a partir de modelo de Persistencia Generado. Ya ves que la idea es simple. Tienes 1 Base de Datos, un modelo de persistencia almacenado en PAS (formado por Clases) y un Gestor de Persistencia en medio que los conecta los dos -con una parte de Generación de SQL que en realidad es "la joya de la corona"-.

A partir de ahí, en cada clase se programa el código -las reglas de negocio- de forma que un TCliente tendrá operaciones propias para su tratamiento. Todas las clases que se crean derivan de una Clase básica TObjectModel que posee las operaciones principales; Insert, Delete, Update, Find, Exist, Clone, Assign, Clear, Export, Import, Initialize,...


Espero haberme explicado mínimamente bien; Al final me he alargado un poco,... Si tienes alguna consulta no dudes en hacerla.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 04-07-2005
DANY DANY is offline
Miembro
 
Registrado: nov 2003
Posts: 145
Poder: 21
DANY Va por buen camino
!!en eso estaba pensando

De mi comentario se deriva que al no encontrar alguna opcion de un tercero que me conforme (quizas por falta de conocimiento), estaba pensando en desarrollar yo mismo el gestor, las herramientas que voy a utilizar son similares a las que vos describis y los lineamientos identicos, salvo que en vez de rational rose usaremos model maker y pense en una clase por tabla por correspondencia con los metodos de acceso a las mismas. La gran duda es: no estare reinventando la rueda (alguna vez creo que escuche esa frase ) sobre algo que ya esta en el mercado y tiene una estabilidad, funcionalidad, etc. mucho mayor que lo que pueda llegar a desarrollar???.
Si alguien uso un FrameWork y tuvo exito que hable o calle para siempre.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:37:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi