Documente Academic
Documente Profesional
Documente Cultură
Lgica de Negocios
Para organizar el Layer de Negocios
Transaction Script Table Module Domain Module Service Layer Scripting
Conceptos Previos
Glanularidad Interfaces
Coarse Grained
Mtodos con muchos parmetros SOA Distribucin Un procesamiento completo para un servicio
Fine Grained
Mtodos con pocos parmetros Domain Model Contiene un conjunto de operaciones separadas Mas Flexibilidad
Transaction Script
Transaction Script
Organiza la lgica de la aplicacin en procedimientos que resuelven la funcionalidad que la aplicacin requiere
Transaction Script
Es un procedimiento que:
Toma el input de la presentacin Lo procesa y realiza los clculos y validaciones que correspondan Guarda los datos en una base de datos Devuelve un resultado a la presentacin
Transaction Script
Opciones de Implementacin:
Organizar en un conjunto de Mtodos Organizar en un conjunto de Clases.
Clases con Interfaces Coarse-Grained.
Permite distribucin
Transaction Script
Coarse-Grained Transaction Script:
interface FacturaScript +AgregarFactura(in Fecha : Date, in Cliente : int, in Vencimiento : Date, in Lista De Precios : int, in ....) : int
Transaction Script
Fine-Grained Transaction Script:
Transaction Script
Problema a Resolver
Como comunico mi capa de Transaction Scrtipts con las otras capas de mi aplicacin
Opciones
ID RecordSets Algn Tipo de Dato Abstracto Iteradores DTO XML
Transaction Script
Ejemplo
Se desea listar las ventas del ultimo perodo Para ello debemos comunicarnos con la capa de la interfaz grafica
Transaction Script
Opciones
Devolver un RecordSet con las ventas del ultimo perodo Devolver un Iterador a las ventas del ultimo Perodo Devolver una coleccin de DTO Ventas Devuelve un XML que contiene la coleccin de Ventas
Transaction Script
Consecuencias
Ve a la aplicacin como una serie de transacciones Existen varios componentes de negocios. Cada componentes de negocios tienen mtodos que corresponden directamente con la funcionalidad que la aplicacin requiere.
Transaction Script
Consecuencias
Se pueden generar distintos niveles de transaction script para eliminar el cdigo duplicado Son un buen punto para incluir
Manejo de transacciones (strart transaccin / commit) Seguridad
Transaction Script
Ventajas
Es un modelo procedural simple que todos los desarrolladores entienden. Fcil de comprender y rpido de desarrollar para problemas no muy complejos Un procedimiento para cada accin Cada procedimiento maneja la transaccin
Transaction Script
Desventajas:
Es propenso a que aparezca cdigo duplicado Carece de la flexibilidad que poseen otras formas de organizacin. Se dificulta mantener el software (realizar correcciones, agregar funcionalidades) a medida que los requerimientos cambian.
Table Module
Table Module
Table Module
Una instancia que maneja toda la lgica de negocios para todas las filas de una tabla o vista de la base de datos Se ajusta muy bien si el entorno donde trabajamos esta preparado para trabajar con RecordSets como por ejemplo Delphi o .NET.
Table Module
Table Module
Consecuencia
Este patrn representa un punto medio de complejidad entre los otros dos. El diseo se hace ms dependiente a la plataforma que elijamos Se ajusta muy bien con los DataSets de ADO.NET Es ms difcil montar pruebas automaticas y hacer unit testing
Table Module
Esta directamente relacionado con el patrn de Arquitectura Recordset En el grfico podemos apreciar la implementacin de .NET de ese patron mediante la clase DataSet
Domain Module
Domain Module
Una red de objetos interconectados que incorporan tanto los datos como el comportamiento
Domain Module
Temas a tener en cuenta
Mapeo entre los objetos y la base de datos Generacin de Ids. Colecciones Fuertemente tipadas
Domain Module
Temas a tener en cuenta
Mapeo entre los objetos y la base de datos Generacin de Ids. Colecciones Fuertemente tipadas
Domain Module
Patrones Relacionados
Lazy Load Data Mapper Identity Field
Domain Module
Permite aplicar tcnicas y patrones conocido (GOF) para trabajar con objetos.
Creacionales
Abstract Factory Builder. Factory Method Prototype. Singleton
Estructurales
Adapter Bridge Composite Decorator Facade code. Flyweight Proxy
Comportamiento
Command Iterator Mediator Memento Observer State Strategy Template method Visitor
Domain Model
Ideas para organizar domain module
Divisin vertical (en Capas)
Domain Model
Divisin horizontal segn funcionalidad (paquetes)
Domain Module
Desventajas
Requiere mayor preparacin y conocimientos por parte del equipo de desarrollo. No aprovecha la capacidad de determinados entornos para trabajar alrededor de RecordSets
Layer de Negocios
Criterios para elegir
Complejidad del problema Perspectiva de cambio del software a futuro Entorno de Desarrollo Equipo de Trabajo
Ejemplo
Layer De Negocios
Se tiene que disear un sistema para 3 clientes distintos Los tres clientes manejan presupuesto Dependiendo ciertas circunstancias los presupuestos se aprueban automticamente Cada cliente tiene un criterio de aprobacin diferente
En mi empresa los presupuestos se aprueban automaticamente si el cliente tiene cuenta corriente y el saldo de la misma es positivo
Juan Perez
En mi empresa si el cierre del ultimo ejercicio fue positivo y se pronostica que no habr inflacin en los proximos 3 meses, el presupuesto se aprueba automaticamente
Pedro Ramirez
Si mercurio se encuentra alineado con jupiter y neptuno y hay luna llena entonces el presupuesto se aprueba directamente
Ernesto Horangel
Presupuesto 1
EstrategiaAprobacionAutomatica *
AprobacionJuanPerez
AprobacionPedroRamirez
AprobacionErnestoHorangel
Service Layer
Service Layer
Service Layer
Define una capa con los servicios disponibles a ejecutar la aplicacion y corrdina la respuesta a esos servicios.
Scripting
Scripting
Permitir parametrizar en tiempo de ejecucin la logica de la aplicacin (application logic) mediante scripts que se ejecutan ante determinados eventos del sistema.
Lgica de Negocios
Links
http://articles.techrepublic.com.com/5100-22-5107664.html