aplicaciones n-capas con.net. patrones describen problemas/soluciones ya conocidas y recurrentes...

39
Aplicaciones N-Capas con .NET Aplicaciones N-Capas con .NET

Upload: paquita-barrantes

Post on 18-Apr-2015

17 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Aplicaciones N-Capas con .NETAplicaciones N-Capas con .NET

Page 2: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

PatronesPatrones

Describen problemas/solucionesya “conocidas” y recurrentesFacilitan la comunicaciónAl identificar un patrón, permiten construir un conjunto de conceptos/ soluciones a su alrededor (de aplicabilidad “inmediata”)Se complementanAplicables en distintas áreas de la construcción / implementación de sistemas

Page 3: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

““patterns & practices”patterns & practices”Direcciones y guía en temas de arquitectura por parte Direcciones y guía en temas de arquitectura por parte de Microsoftde Microsoft

Disponible online (en inglés): http://www.microsoft.com/practicesLibros disponibles: http://www.amazon.com/practices CD de recursos: http://shop.microsoft.com/practices

Probadas Con autoridad

Precisas

Utilizables

Relevantes

Page 4: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Arquitectura en CapasArquitectura 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?

Page 5: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Arquitectura en CapasArquitectura 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

Page 6: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Arquitectura .NETArquitectura .NET

UI Componentes

UI Componentes de Procesos

Componentes de Accesos a Datos

Workflows de Negocio

Componentes de

Negocio

Usuarios

Entidades de Negocio

Agentes de Servicios

Op

era

cio

nes

Seg

urid

ad

Com

un

icacio

nesInterfaces de Servicios

Orígenes de Datos Servicios

Page 7: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Página Web de Presupuestos

Página Webde Inventario

Página Webde Clientes

Manejo de Presupuestos

Cálculode Precios

Manejode Clientes

Utilidades ADO.NETAcceso a Datos

De Presupuestos

Capa de Presentación

Capa de Negocio

Capa de Datos

Arquitectura .NET simpleArquitectura .NET simple

Page 8: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

.NET & Windows ADO.NET

PresentaciónLógica negocio & Fábrica Mensajes

Integración ypersistencia de datos

Patrones de Diseño en .NETPatrones de Diseño en .NET

ASPX/MXFront

Controller

ASCX Code

Behind

Base Form

Control

ASPX (ASCX)

XML DataSet

VO

Business Service Proxy

Data Access Proxy

BusinessDelegateAdapter

BusinessDelegateFactory

Business Service Facade

Disconnected DataSet &/or

ObjectSpaces

Data Access Proxy

XML DataSet

VO

C# Assembly& Serviced Component

Serialized XML

DataSet VO

Attributed Connection Pooling &

Transactions

Resources

Database

DirectoryMSMQ

Data Access Object

Request

1. Request

4. Dispatch 2. Fill State3. Validate

16. Redirect

<<uses>>

<<uses>>

<<uses>>

<<supplies>>

5. Get Delegate

6. Execute

7a.ExecuteBiz Method

7b. CRUD Data

17. State?

15. Fill State

18. Response

8.ExecuteBiz Method

9.AssembleData

10b.Get/SetRemove

12.CRUDData

10a.Invoke

13.CRUDData

14.Query

<<creates>>

<<de-serialize>>

To DAO

Response

11a.Get/SetRemove

IIS & ASP.NET

Disconnected DataSet &/or

ObjectSpaces

10c.CRUDData

<<uses>> <<describes>>

11b.CRUDData

XMLAction to Form & Forward

Mappings

MS

MQ

R

WS

MS

MQ

R

WS

Value Object Assembler

.NET & Windows / EJB Container

Otra infrastructuraClave

M

V

C

P OtherPattern

ModelPattern

ViewPattern

ControllerPattern

Event Interceptor Framework

Security Management Framework

Event Notification Framework

Messaging Command

Factory

Filter Interceptors

Service Activation

Message Q& Channel

Locator

<<uses>>

<<uses>>

Page 9: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Arquitectura común de Aplicaciones Arquitectura común de Aplicaciones distribuidasdistribuidasWeb BásicaWeb Básica

Web Clients

Web Farm

UIC

BC

UIP

Data and Services

DAC

Web Farm

UIC

UIP

SI

SA

Web EmpresarialWeb Empresarial

Data and Services

Application Farm

BC

DAC

Web Clients

Escritorio EmpresarialEscritorio

Empresarial

Rich Clients

UIC

UIP

Data and Services

Application Farm

BC

DAC

Web Farm

SI

SA

Web ComplejaWeb Compleja

Data and Services

Application Farm

BC

DAC

Web Clients

Web Farm

UIC

UIP

Page 10: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Uso de las bibliotecasUso de las bibliotecas

Biblioteca HorizontalBiblioteca Horizontal

BibliotecaBibliotecaVerticalVertical

AplicaciónAplicación15%15%

20%20%

65%65%

Source: Mili, et. al., Reuse-Based Software Engineering, Techniques, Organization and Measurement,Source: Mili, et. al., Reuse-Based Software Engineering, Techniques, Organization and Measurement,John Wiley & Sons, Inc., c2002.John Wiley & Sons, Inc., c2002.

Page 11: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Capa de DatosCapa de Datos

Page 12: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Arquitectura .NETArquitectura .NET

UI Componentes

UI Componentes de Procesos

Componentes de Accesos a Datos

Workflows de Negocio

Componentes de

Negocio

Usuarios

Entidades de Negocio

Agentes de Servicios

Op

era

cio

nes

Seg

urid

ad

Com

un

icacio

nesInterfaces de Servicios

Orígenes de Datos Servicios

Page 13: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Data Access Logic ComponentsData 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.

Page 14: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Capa de DatosCapa 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.

Page 15: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

DAAB - Data Access Application DAAB - Data Access Application BlockBlock

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?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431

Page 16: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Data Access Application Block

Page 17: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

DAAB Abstract Factory (3.x)DAAB Abstract Factory (3.x)

AdoHelper

AdoHelper

SqlServer

SqlServer

OdbcOdbc

……OleDbOleDb

SqlHelper

SqlHelper

Page 18: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Framework de persistencia, basado en Framework de persistencia, basado en objetos, para bases de datos relacionales.objetos, para bases de datos relacionales.

Portado de Hibernate de JavaPortado de Hibernate de Java

Permite mapear tablas y relaciones entre Permite mapear tablas y relaciones entre las mismas a partir de entidades (clases) las mismas a partir de entidades (clases) escritas en c#escritas en c#

Libera al programador de la mayoría de las Libera al programador de la mayoría de las tareas de persistencia de datostareas de persistencia de datos

¿Qué es NHibernate?¿Qué es NHibernate?

Page 19: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

ArquitecturaArquitectura

Page 20: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Algunas característicasAlgunas característicasSoporte de:Soporte de:• HerenciaHerencia• PolimorfismoPolimorfismo• Relaciones uno a muchos, muchos a unoRelaciones uno a muchos, muchos a uno• Claves compuestasClaves compuestas• Colecciones de datosColecciones de datos

CacheCache• Varios cache providersVarios cache providers

TransaccionesTransaccionesLazy InicializationLazy InicializationHQLHQLUltima versión disponbibleUltima versión disponbible• 0.8.4.00.8.4.0

Page 21: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Clases – XML – TablasClases – XML – Tablas

Las clases escritas en código se vinculan a las tablas mediante Las clases escritas en código se vinculan a las tablas mediante archivos hbmarchivos hbmLos hbm son xml que determinan mapeos entre las Properties y las Los hbm son xml que determinan mapeos entre las Properties y las columnas de una tabla. columnas de una tabla.

<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">

<class name=“NombreCompletoClase, NombreAssembly" table=“NombreTabla"> <id name="Id" column=“NombreColumnaKey“ type="String" length="20">

<generator class="assigned" /> </id> <property name=“NombreProperty1“ column= “NombreColumna1" type=“TipoDato1" length="40"/> <property name=“NombreProperty2“ column= “NombreColumna2" type=“TipoDato2" length="40"/> <property name=“NombreProperty3“ column= “NombreColumna3" type=“TipoDato3" length="40"/>

</class> </hibernate-mapping>

Page 22: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

LicenciaLicencia

Lesser General Public License (LGPL)Lesser General Public License (LGPL)• Es una “free software licence”.Es una “free software licence”.• Sin embargo es una “strong copyleft licence”Sin embargo es una “strong copyleft licence”- Esta permitido linkearla con módulos que no Esta permitido linkearla con módulos que no

son libres.son libres.GNU y GPL tienen un esquema de “sombrilla”GNU y GPL tienen un esquema de “sombrilla”• Si se utilizan librerias GNU o GPL en proyectos, Si se utilizan librerias GNU o GPL en proyectos,

el producto final debe ser también GNU o GPL el producto final debe ser también GNU o GPL respectivamente. respectivamente.

En cambio la LGPL permite cerrar el código.En cambio la LGPL permite cerrar el código.

Page 23: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Capa de NegocioCapa de Negocio

Page 24: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Arquitectura .NETArquitectura .NET

UI Componentes

UI Componentes de Procesos

Componentes de Accesos a Datos

Workflows de Negocio

Componentes de

Negocio

Usuarios

Entidades de Negocio

Agentes de Servicios

Op

era

cio

nes

Seg

urid

ad

Com

un

icacio

nesInterfaces de Servicios

Orígenes de Datos Servicios

Page 25: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Interfaces de serviciosInterfaces de servicios

Es el punto de entrada de la Capa de NegocioExpone la funcionalidad que otras aplicaciones pueden consumirSe implementa con Servicios Web o Remoting (en caso de aplicaciones distribuidas)Se puede implementar con otras tecnologías: BizTalk Server, Message Queues...

Page 26: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Entidades de NegocioEntidades 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

Page 27: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Entidades de NegocioEntidades de Negocio

Se referencian desde la capa de presentación, desde la interfaz de servicio y desde los componentes de negocioAlternativas- DataSet- DataSet tipado- Objetos (individuales y colecciones)- XML

Page 28: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Componentes de NegocioComponentes 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

Page 29: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Business WorkflowBusiness Workflow

Implementan las actividades de alto nivel del negocio: proceso de una orden de compra, de una facturaSon métodos que no pertenecen a un objeto en particularSe pueden agrupar en objetos o en un objeto por métodoCada método de un Service Interface, accede a un Business Workflow o a un Componentes de Negocio

Page 30: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Capa de PresentaciónCapa de Presentación

Page 31: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Capa de PresentaciónCapa de Presentación

Para muchas aplicaciones se usa la metáfora del formulario/informeHabrá formularios/páginas web de ingreso y modificaciónHabrá formularios/páginas web de vista de datosSon los Componentes de InterfazHay Componentes de Proceso de Interfaz

Page 32: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

User Interface ComponentsUser 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.

Page 33: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Interfaz WindowsInterfaz Windows

Para entornos desconectados o clientes “ricos” (rich clients)

Opciones de implementación más simple:- Windows Forms

Page 34: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Interfaz WebInterfaz 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

Page 35: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

InfraestructuraInfraestructura

Page 36: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

Capa de InfraestructuraCapa de Infraestructura

Son servicios para las aplicacionesDado 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.

Page 37: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten
Page 38: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

¿Dudas?¿Dudas?

Page 39: Aplicaciones N-Capas con.NET. Patrones Describen problemas/soluciones ya conocidas y recurrentes Facilitan la comunicación Al identificar un patrón, permiten

GraciasGracias