Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Programación en 3 capas - Haciendo lo correcto (https://www.clubdelphi.com/foros/showthread.php?t=63652)

edalmasso 24-02-2009 22:52:57

Programación en 3 capas - Haciendo lo correcto
 
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.:p

AzidRain 24-02-2009 23:35:22

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.


La franja horaria es GMT +2. Ahora son las 23:37:21.

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