![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() Buenas a todos!, trabajando con algunos proyectos estamos standarizando e implementando las buenas practicas del arte del desarrollo de software.
Resulta que he trabajado mucho en las etapas anteriores de desarrollo de software, definición de alcance, requerimientos, requisitos, diagramas de actividades, estados, clases lógicas/físicas dentro de un marco de estandarización de desarrollo de software en la empresa con el fin de certificación ISO. En este momento estoy bajando de nivel hasta la programación y me he encontrado con dudas sobre el manejo de la interfaz entre Negocio / Datos. En la capa de negocio tengo código que resuelve puramente el negocio definido y no hay ninguna línea referente a SQL o servidores de almacenamiento. Mi pregunta es: En la capa de Datos, tengo que generar clases de datos correspondientes 1 a 1 con las clases de negocio físicas en las cuales por atributos tendrán los mismos que la clase de negocios y como métodos: Insertar – Eliminar – Modificar – Búsqueda. También, el método que asigna los datos del objeto de negocio al objeto correspondiente de la capa de datos, debe existir en la capa de negocio o datos? Hay patrones, buenas prácticas o libros que hagan referencia específicamente a este tema?. Desde ya muchas gracias. ![]() |
#2
|
||||
|
||||
No precisamente. Al menos en Delphi es difícil alcanzar un patrón MVC perfecto dado el enfoque RAD del IDE y las ayudas que proporciona para hacer binding entre objectos con acceso a datos y componentes de edición.
Lo que quieres hacer es válido, pero te obligará a desarrollar tu propio framework para abstracción de datos ya que pretentes crear un equivalente 1 a 1 entre una clase y una entidad (o un objeto y una tabla). No es imposible, pero si muy tedioso, por ahí Al Gonzalez tiene algo interesante en lo que está trabajando y como el mismo comenta le ha llevado varios años irlo madurando. Un enfoque un poco más sencillo es que en tu capa de negocios como tu lo dices hagas todo el montaje de las reglas pero sin buscar que se correspondan al 100% con lo que hay en la capa de datos. Asi pues, puedes tener una TFactura que se comunica con una TQFactura y con TQDetFactura que son las querys de la factura y su detalle en la capa de datos. Como sabemos el patron MVC permite que la vista pueda "ver" las capas de datos y de negocios por lo que puedes implementar el binding de los componentes visuales al dataset que le proporcione la clase TFactura o bien ligarlos completamente a TQFactura y TQDetFactura ya que solo los están mostrando. De manera que cuando se quiera guardar, modificar o borrar lo visualizado, la vista utiliza a TFactura quien aplica las reglas de negocio y actua sobre la capa de datos. Otro enfoque más es adicionar una capa o bien dentro de la capa de negocios, colocar ClientDataSets para que las vistas hagan binding sobre ellos y así no tengan acceso directo a la capa de datos. En conclusión, no es necesario hacer una coincidencia entre los objetos de la capa de negocios con la de datos, el patrón solo pide que la capa de datos no sea manoseada más que por la de negocios y además esta capa de datos no puede "ver" a las demás, su unico trabajo es acceder a los datos.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Que es programacion en 3 capas?? | mefixxto | Varios | 2 | 21-05-2008 10:22:38 |
Programacion En Tres Capas | OMARS | Internet | 2 | 08-08-2007 10:37:16 |
Programacion en 3 capas usando zeos components | Jose Fermin | Debates | 0 | 28-03-2007 03:30:28 |
Programacion en capas | @le | OOP | 0 | 23-12-2004 16:38:04 |
DDE , es lo correcto? | nicocer | Varios | 4 | 31-10-2003 08:09:18 |
![]() |
|