![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Hola,
Creo que el problema es que lo que pides es algo muy general, ya que el tema puede ser muy extenso. La programación en 3 capas básicamente consiste en separar el motor de datos, del motor SQL y del software cliente. De esta forma dividimos físicamente los procesos: "mantenimiento de datos", "Consulta y manipulación de datos" e "interface para el usuario". Cada una de estas capas, puede ser instalada en distintas y diversas máquinas, con intención de agilizar cada uno de los procesos y ofrecer un mayor rendimiento a mayor número de usuarios. Si necesitas orientación sobre algo más concreto sobre el trabajo en 3 capas (que realmente puede y debe ser >= 3 capas ), sobre motores de datos, componentes, metodología, etc, puedes comentarlo y podremos echarte una mano.Si lo que quieres es saber como empezar, puede buscar información sobre DbExpress + DataSnap para Delphi. Por otro lado, si lo que quieres es trabajar con base de datos C/S dentro de una red de área local, no te recomiendo trabajar en 3 Capas, aunque esto realmente depende de la arquitectura del Software que desees desarrollar. Un Saludo.
__________________
Maro. OutSourcing de programación con Delphi. |
|
#2
|
||||
|
||||
|
Gracias maro por responder y ofrecer tu ayuda.
Creo que el problema pasa por el significado de "3 capas". Yo entiendo por tres capas a esto: Capa Interfaz ------------- Capa Lógica ------------- Capa Datos Y vengo llevando desde hace tiempo un enfonque dirigido por POO. Concentré el mayor tiempo de mi análisis al aspecto Lógico. La idea es que conseguir un conjunto de clases que puedan ser reutilizadas. Tengo dos grupos de clases: las de "propódito general" y "propias del negocio" Esto me favorece a que pueda ampliar ambos grupos de clases en forma más o menos independiente. Con respecto al motor de base de datos que empleo es Firebird versión 1.5.3. Por el momento lo estoy manejando localmente y estoy pensando en como darle un enfoque C/S. No creo que haya demasiado problemas en esto... aunque reconozco que no se si deberé cambiar y alterar en algún punto el aspecto lógico (mis clases). Lo que me está costando... entender y comprender es unir las diversas ideas y conceptos que tengo sobre 3 capas, POO y Arquitectura C/S. Como dije antes, intenté ofrecer ayuda aquí y el problema sigue en nieblas. Buscando, y buscando encontré algo, pero lo que ofrece sobre ser 3 capas me es un concepto ajeno, ya que no coincide mi interpretación de lo que significa 3 capas con lo expresado en dicho documento. Si alguien tiene un documento y/o un link que trate estos aspectos que complementen a lo que se puede leer en la Cara Oculta se los agradecería. Un enfoque C/S no es primordial, pero si tratar de seguir llevando un enfoque OO y la comunicación sobre base de datos. Esto no sólo me serviría para mi, sino también para FaraonDX y otros interesados. Espero que se me entienda. Muchas gracias por tomarse el tiempo en leer este post. Saludos, |
|
#3
|
||||
|
||||
|
A mi me paso lo siguiente:
Empecé con POO cuando Delphi se llamaba Borland Pascal 6.0 y luego 7.0. y aquella maravillosa cosa llamada Turbo Vision. QUe maravilla, me movia con soltura en la creación de aplicaciones usando solo OOP, hasta que un día... Me encontré con el mundo de las bases de datos y las aplicaciones C/S. Lo peor llegó al empezar a estudiar el modelo Entidad-Relación... E-S y POO simplemente son dos cosas diferentes, si quieres aplicar una deshaces la otra. Ahi fue mi calvario, muchos de mis programas terminaron funcionando bien por fuera pero por dentro llenos de chapuzas y cosas raras. Después descubrí que había cosas como ECO que hacen la traducción de E-S a POO pero eso implicaba ponerse a leer mas y mas y terminar con aplicaciones que con tal de mantener las capas y lo de la POO se llenaban de líneas y líneas de código. Actualmente opté por un esquema híbrido, un poco de una cosa en donde se pueda y un poco de la otra donde no se puede. La clave: la documentación de l código.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
|
#4
|
||||
|
||||
|
Cita:
Ten por seguro que llevo un riguroso esquema de documentación de código. Aplico fielmente las buenas prácticas y consejos de la ingeniería de software. Prácticamente he hecho de Ingenía de Software. Un enfoque Práctico de Roger S. Pressman mi biblia. Desde ya, muchísimas gracias. Saludos |
|
#5
|
||||
|
||||
|
Pues bien, aunque no me considero por mucho experto yo lo hago asi para no meterme en honduras:
Practicamente la Capa de datos queda metida en uno o varios datamodules que son los "objetos" que en mi abstraccion saben como manejar los datos que no son mas que tablas. Ahora bien, todo lo demás lo modelo asi: 1-- Formas "inteligentes" 2.- Formas Auxiliares 3.- Clases varias (todo lo que no sea forma) Las formas inteligentes saben hacer cosas segun sea el caso, por ejemplo, un catalogo de clientes. La forma es capaz de editar, borrar, etc. uno o varios clientes..para ello utiliza alguno de los datamodules que son los que de verdad hacen el trabajo. Las formas auxiliares son solo mensajitos o formas adicionales que lo unico que hacen es recoger alguna información (por ejemplo una ventanita de captura). Las demás clases hacen cosas que no requieren interfaz: respaldos, configuraciones, etc. y pueden formar parte de una forma como propiedad. De manera que al final lo que obtienes es un conjunto de formas que utilizan otros objetos o clases para manipular datos (la interfaz se da por hecho). El chiste es separar bien los limites de cada cosa. Una forma, por ejemplo, no debe manipular directamente una tabla, sino hacerlo por medio de alguna otra clase. Por ejemplo, el catalogo de clientes, puede haber un objeto "TClientes" con sus métodos nuevo, borrar, editar, etc. este objeto clientes es el que internamente accede a datos (aunque aqui adentro ya no utilice mucha OOP, pero el objetivo es encapsular lo mas que se pueda) Este objeto TClientes puede ser una propiedad del Form Catalogo de clientes. No es muy ortodoxo este esquemita pero a mi me ha funcionado y sobre todo se presta para esos casos en los que no hay mucho tiempo para modelar y hay que programar algo al vuelo.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
|
#6
|
||||
|
||||
|
Gracias por ayudar AzidRain.
Bueno, a ver... si logro unir las cosas siguiendo tu modelo híbrido. Con lo que yo voy armando. 1. Yo tengo varias clases, que operan y se pasan parámetros. Todo lógica, nada de interfaz... Este conjunto forma la capa lógica. 2. En la capa más baja (Datos) está el/los DataModule/s con el Connection, y posibles algunos que otros Tables, Querys, etc La comunicación entre las clases y la base de datos debe pasar por el DataModule. Eso creo que está claro, al menos así lo entiendo yo. Y dependiendo de las consideraciones, analáisis, etc... se debe hacer un "canal" más o menos estrecho. Este canal de comunicación está formado por clases que son las que propiamente tienen encapsulada los eventos y/o procedimientos para permitir las operaciones habituales sobre la base de datos: *Agregar *Modificar *Borrar *Consultar Por lo tanto estas clases deberán ser las más bajas de la capa. Hasta aquí llego teóricamente, ahora... en forma práctica... ¿esto se consigue con algo similar a esto?
De modo que, si el análisis lo amerita se pueda hacer algo como:
Ahora, como le indicaría que debe hacer contacto con el datamodule? Allí me lio... Sería conveniente ver la posibilidad de hacer algo como:
Si voy entendiendo bien... o si tienen críticas, serán escuchadas. Muchas gracias. Última edición por Delphius fecha: 02-07-2007 a las 05:40:44. |
|
#7
|
||||
|
||||
|
El apuntador al TDatamodule viene así:
Yo usaría herencia visual para el datamodule, para al menos tener algunas propiedades ya asígnadas. Será lógico tener el Datamodule principal (donde reside el TDatabase y TTransaction ya configurados) y los nuevos datamodules tendrán un "enlace" a dichos componentes del Datamodule principal. Para asignar el Datamodule que nos interese, pues como siempre se hace en delphi:
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#8
|
||||
|
||||
|
Cita:
// Saludos |
|
#9
|
||||
|
||||
|
Creo que ya está "picando" el hilo
Muchas gracias Lepe por aportar ayuda. Ya me va entrelazando y uniendo las cosas en la cabeza.
Cita:
Cita:
Cita:
Esa pregunta, a la inversa, es realmente la otra cara de la moneda. Y como lo das a entender debe ser puesta de análisis. Hay dos canales: 1. Canal Superior: Interfaz/Lógica. Lo que creo que roman hace referencia. 2. Canal Inferior: Lógica/Datos. Este punto es el que se estuvo tratando. Para la comunicación hacia el exterior yo estaba pensando en algo como:
Mi idea es que haya una clase que reciba los datos y los coloque en los controles pasados por parámetros. No se hasta que punto se podría... habría que ver esta posibilidad. Voy a hacer un pequeño diagrama de como lo tengo pensado y lo subo a ImageShack y pongo un enlace. Para que se pueda dar una idea. Saludos, |
|
#10
|
||||
|
||||
|
Contestando la pregunta de Roman..
Si, uso componentes dbaware. Como lo modelo (un poco por las prisas) las ventanas con acceso a algun dato o datos contienen componentes dataware, los cuales se llenan a partir de algun query por ahi. Normalmente cuido que los querys devuelven solo lo necesario.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Información sobre FireBird | mosorio | Firebird e Interbase | 2 | 25-03-2024 19:49:58 |
| Cambio de modelo de 3 a 2 capas | Toni | Providers | 6 | 23-05-2005 23:17:42 |
| modelo de 3 capas - delpji | s_dominguez | Providers | 2 | 21-05-2005 18:14:49 |
| Cantidad de Informacion en Firebird | Choclito | Firebird e Interbase | 9 | 27-10-2004 20:37:27 |
| informacion para construir una aplicacion de tres capas | muli | Providers | 2 | 23-02-2004 01:22:04 |
|