Title: Aplicaciones NCapas con 'NET
1Aplicaciones N-Capas con .NET
- Miguel Ángel Ramos
- (Coordinador Técnico dotNetClubs España)
2Patrones
- Describen problemas/solucionesya conocidas y
recurrentes - Facilitan la comunicación
- Al identificar un patrón, permiten construir un
conjunto de conceptos/ soluciones a su alrededor
(de aplicabilidad inmediata) - Se complementan
- Aplicables en distintas áreas de la construcción
/ implementación de sistemas
3patterns practicesDirecciones y guía en
temas de arquitectura por parte de Microsoft
Con autoridad
Probadas
Precisas
Relevantes
Utilizables
Disponible online (en inglés) http//www.microsof
t.com/practices Libros disponibles
http//www.amazon.com/practices CD de recursos
http//shop.microsoft.com/practices
4Arquitectura en Capas
- Diseñamos una aplicación en capas, donde cada
capa expone servicios que otras aplicaciones o
capas pueden consumir, y donde cada capa puede
consumir servicios de otras - Cuáles son las capas y qué componente se coloca
en cada capa?
5Arquitectura en Capas
- A tener en cuenta
- Queremos minimizar los efectos de cambiar una
capa - Los servicios se pueden llegar a exponer hacia
fuera del lugar físico o de la empresa - Comunicarse con otros servicios involucra
múltiples protocolos, formatos de datos y
conocimientos técnicos - Tratamos de aislar la lógica de negocios de la
tecnología usada para acceder a los servicios
6Arquitectura .NET
Usuarios
Operaciones
Seguridad
Comunicaciones
UI Componentes
UI Componentes de Procesos
Interfaces de Servicios
Workflows de Negocio
Componentes de Negocio
Entidades de Negocio
Componentes de Accesos a Datos
Agentes de Servicios
Orígenes de Datos
Servicios
7Arquitectura .NET simple
Capa de Presentación
Página Web de Presupuestos
Página Web de Inventario
Página Web de Clientes
Capa de Negocio
Manejo de Presupuestos
Cálculo de Precios
Manejo de Clientes
Capa de Datos
Utilidades
ADO.NET
Acceso a Datos De Presupuestos
8Patrones de Diseño en .NET
Presentación
Lógica negocio Fábrica Mensajes
Integración ypersistencia de datos
.NET Windows
ADO.NET
Response
10b.Get/Set Remove
8. ExecuteBiz Method
13. CRUDData
Business Service Facade
Disconnected DataSet /or ObjectSpaces
14. Query
Request
Data Access Object
9.Assemble Data
12. CRUDData
ltltde-serializegtgt
IIS ASP.NET
18. Response
Serialized XMLDataSet VO
16. Redirect
ASPX (ASCX)
Value Object Assembler
ltltcreatesgtgt
10c.CRUD Data
1. Request
17. State?
ASPX/MXFront Controller
Data Access Proxy
ltltusesgtgt
ltltdescribesgtgt
10a.Invoke
4. Dispatch
2. Fill State 3. Validate
11a.Get/Set Remove
Attributed Connection Pooling Transactions
XMLAction to Form Forward Mappings
C Assembly Serviced Component
Disconnected DataSet /or ObjectSpaces
11b. CRUDData
XML DataSet VO
ltltusesgtgt
Base Form Control
5. Get Delegate
ASCX Code Behind
Otra infrastructura
Clave
ltltusesgtgt
15. Fill State
6. Execute
ltltsuppliesgtgt
.NET Windows / EJB Container
ltltusesgtgt
XML DataSet VO
BusinessDelegateAdapter
BusinessDelegateFactory
ModelPattern
M
7a. Execute Biz Method
Event Interceptor Framework
Security Management Framework
Event Notification Framework
Messaging Command Factory
ViewPattern
V
Business Service Proxy
ltltusesgtgt
ControllerPattern
ltltusesgtgt
C
Data Access Proxy
7b. CRUD Data
Filter Interceptors
Service Activation
Message Q Channel Locator
OtherPattern
P
To DAO
9Arquitectura común de Aplicaciones distribuidas
Web Básica
10Uso de las bibliotecas
Source Mili, et. al., Reuse-Based Software
Engineering, Techniques, Organization and
Measurement, John Wiley Sons, Inc., c2002.
11Capa de Datos
12Arquitectura .NET
Usuarios
Operaciones
Seguridad
Comunicaciones
UI Componentes
UI Componentes de Procesos
Interfaces de Servicios
Workflows de Negocio
Componentes de Negocio
Entidades de Negocio
Componentes de Accesos a Datos
Agentes de Servicios
Orígenes de Datos
Servicios
13Data Access Logic Components
- Objetos sin comportamiento que solo saben guardar
un Business Entity en la base de datos. - Generalmente son clases con métodos estáticos.
- Utilizan alguna forma de acceso a datos
simplificado como Data Access Application Block. - Deben ser llamados por el Business Component de
forma que no se tenga en cuenta el origen de los
datos. - Realiza todas las conversiones y validaciones
necesarias que estén relacionadas con el modelo
de base de datos.
14Capa de Datos
- Se puede implementar
- Escribiendo código ADO.NET para cáda método de
cada objeto Create, Open, Update, Delete, Find. - Escribiendo código con DAAB.
- Usando DataAdapter, si se usan DataSets como
Business Entities. - Alguna herramienta de Object Relational Mapping.
15DAAB - Data Access Application Block
- Versión 2.0 (MSDN / Patterns Practices)
- http//msdn.microsoft.com/library/en-us/dnbda/html
/daab-rm.asp - Versión 3.1 (GotDotNet)
- http//www.gotdotnet.com/Workspaces/Workspace.aspx
?idc20d12b0-af52-402b-9b7c-aaeb21d1f431
16Data Access Application Block
17DAAB Abstract Factory (3.x)
AdoHelper
Odbc
SqlServer
OleDb
18Qué es NHibernate?
- Framework de persistencia, basado en objetos,
para bases de datos relacionales. - Portado de Hibernate de Java
- Permite mapear tablas y relaciones entre las
mismas a partir de entidades (clases) escritas en
c - Libera al programador de la mayoría de las tareas
de persistencia de datos
19Arquitectura
20Algunas características
- Soporte de
- Herencia
- Polimorfismo
- Relaciones uno a muchos, muchos a uno
- Claves compuestas
- Colecciones de datos
- Cache
- Varios cache providers
- Transacciones
- Lazy Inicialization
- HQL
- Ultima versión disponbible
- 0.8.4.0
21Clases XML Tablas
- Las clases escritas en código se vinculan a las
tablas mediante archivos hbm - Los hbm son xml que determinan mapeos entre las
Properties y las columnas de una tabla.
lt?xml version"1.0" encoding"utf-8" ?gt
lthibernate-mapping xmlns"urnnhibernate-mapping-
2.0"gt ltclass nameNombreCompletoClase,
NombreAssembly" tableNombreTabla"gt ltid
name"Id" columnNombreColumnaKey
type"String" length"20"gt ltgenerator
class"assigned" /gt lt/idgt ltproperty
nameNombreProperty1 column NombreColumna1"
typeTipoDato1" length"40"/gt ltproperty
nameNombreProperty2 column NombreColumna2"
typeTipoDato2" length"40"/gt ltproperty
nameNombreProperty3 column NombreColumna3"
typeTipoDato3" length"40"/gt lt/classgt
lt/hibernate-mappinggt
22Licencia
- Lesser General Public License (LGPL)
- Es una free software licence.
- Sin embargo es una strong copyleft licence
- Esta permitido linkearla con módulos que no son
libres. - GNU y GPL tienen un esquema de sombrilla
- Si se utilizan librerias GNU o GPL en proyectos,
el producto final debe ser también GNU o GPL
respectivamente. - En cambio la LGPL permite cerrar el código.
23Capa de Negocio
24Arquitectura .NET
Usuarios
Operaciones
Seguridad
Comunicaciones
UI Componentes
UI Componentes de Procesos
Interfaces de Servicios
Workflows de Negocio
Componentes de Negocio
Entidades de Negocio
Componentes de Accesos a Datos
Agentes de Servicios
Orígenes de Datos
Servicios
25Interfaces de servicios
- Es el punto de entrada de la Capa de Negocio
- Expone la funcionalidad que otras aplicaciones
pueden consumir - Se implementa con Servicios Web o Remoting (en
caso de aplicaciones distribuidas) - Se puede implementar con otras tecnologías
BizTalk Server, Message Queues...
26Entidades de Negocio
- Son contenedores de datos
- Encapsulan y ocultan los detalles de
representación de datos - Puede encapsular datos que provengan de un
Recordset, y luego enviarlos a un XML - No tienen lógica de negocios
- Es conveniente distinguir entre instancia y
colección de instancias
27Entidades de Negocio
- Se referencian desde la capa de presentación,
desde la interfaz de servicio y desde los
componentes de negocio - Alternativas
- DataSet
- DataSet tipado
- Objetos (individuales y colecciones)
- XML
28Componentes de Negocio
- Implementación en software de conceptos de
negocios - Encapsulan las reglas de negocio de la
aplicación, relacionadas con un Business Entity. - Algunos métodos requieren acceder a la base de
datos (Capa Datos) - Separación de las Business Entities
29Business Workflow
- Implementan las actividades de alto nivel del
negocio proceso de una orden de compra, de una
factura - Son métodos que no pertenecen a un objeto en
particular - Se pueden agrupar en objetos o en un objeto por
método - Cada método de un Service Interface, accede a un
Business Workflow o a un Componentes de Negocio
30Capa de Presentación
31Capa de Presentación
- Para muchas aplicaciones se usa la metáfora del
formulario/informe - Habrá formularios/páginas web de ingreso y
modificación - Habrá formularios/páginas web de vista de datos
- Son los Componentes de Interfaz
- Hay Componentes de Proceso de Interfaz
32User Interface Components
- Muestran datos a los usuarios
- Adquieren y validan (en alguna medida) la entrada
de los usuarios - Interpretan gestos del usuario, para ejecutar
una acción - NO PARTICIPAN, No hacen nada por sí solos.
33Interfaz Windows
- Para entornos desconectados o clientes ricos
(rich clients) - Opciones de implementación más simple
- Windows Forms
34Interfaz Web
- ASP.NET Web Forms
- Basado en componentes en el servidor
- Usa enlace de datos en los controles
- Entorno de desarrollo integrado al resto de las
soluciones - Amplio manejo de estado y caching
- Nuevo modelo de Formularios
35Infraestructura
36Capa de Infraestructura
- Son servicios para las aplicaciones
- Dado que no pertenecen a ninguna capa, se definen
por fuera aunque en algunos casos se implementen
o usen en alguna capa. - Son los siguientes
- Seguridad
- AuthZ, AuthN, Comunicación segura, Auditoría,
Manejo de Perfiles. - Operaciones
- Manejo de excepciones, Monitoreo, Execución
asincrónica, Metadatos, Configuración. - Comunicaciones
- Formato, Protocolo, Asincronismo.
37(No Transcript)
38Dudas?
39Gracias