Vous êtes sur la page 1sur 48

Arquitectura de Aplicaciones

.NET

Diseo de aplicaciones y servicios

Carlos Walzer

msmvps.com/blogs/cwalzer
Objetivo
Disear arquitectura para aplicaciones y
servicios
Recomendar tecnologas apropiadas
Cumplir requisitos funcionales y no
funcionales
Elegir los mecanismos de comunicacin
adecuados
Agenda
Aplicaciones Distribudas
Diseo de los componentes de una aplicacin
o Servicio
Aplicacin ejemplo
Aplicaciones Distribudas
Aplicaciones distribudas
Para que distribuir?
Cumplir requerimientos funcionales
Conocimiento de los procesos empresariales
Cumplir requerimientos no funcionales
Escalabilidad
Disponibilidad
Rendimiento
Seguridad
Mantenimiento
Servicios
Que son?
Similiares a los componentes tradicionales
Encapsulan funcionalidad y datos
No forman parte de la App, son usados
Plataformas heterogneas
Comunicacin = Mensajes
Implcita
Explcita
Interfaz de Servicios = Contrato
Proceso basado en Servicios
Solucin basada en Servicios
Acoplamiento mnimo
Aplicacin tradicional de 3
niveles
Sin UI asociada
Transacciones atmicas
Componentes en Capas
Componentes y Servicios Relacionados
Diseo de los componentes de una
aplicacin o servicio
Tipos de Componentes
Al disear Aplicaciones o Servicios
Identifique los componentes necesarios
Diseo coherente de componentes de un tipo
Formato de intercambio de datos homogeneo
Abstraer cdigo que aplica polticas de la
funcionalidad
Tipo de comunicacin entre capas.
Capa de Interfaz de Usuario
Componentes de UI
Distintas tecnologas disponibles
Una pgina o formulario, controles, aceptan
entrada de datos.
Patrn View-Controler
Funcionalidades de los Componentes de UI

No inicializan, participan ni votan en Tx.


Referencian a un componente de Proceso en
nombre del usuario corriente.
Encapsulan funcionalidad de visualizacin.
Al aceptar la entrada del usuario
Toman los datos del usuario
Capturan los eventos del usuario y llaman a
funciones de control
Restringen los tipos de entrada del usuario
Validan la entrada de datos
Interpretan acciones de usuarios
Al procesar datos
Adquieren los datos de utilizados por los
componentes
Formatean valores (fechas)
Localizacin de los datos
Funcionalidad de deshacer y copy & paste
Aspectos a tener en cuenta en UI
Usar Data Binding
Evitar que las excepciones lleguen al usuario
No implemente funcionalidad en manejadores
de eventos
private void addItem_Click(object sender, System.EventArgs e)
{
AddItemToBasket(selectedProduct, selectedQuantity)
}

public void AddItemToBasket(int ProductID, int Quantity)


{
// cdigo para agregar el artculo a la cesta
}
Componentes de Proceso de Usuario
Clases .NET con mtodos llamados por Comp
de UI
Coordinan el proceso de usuario y mantienen
el estado entre pginas o ventanas
Coordinan visualizacin de la interfaz
Se abstraen de la funcionalidad de
procesamiento y adquisicin de datos
Ejemplo
Ventajas
Ejecucin larga (carrito de compras)
Varias UI pueden usar el mismo proceso
Nuevo dispositivo -> pueden requerir
recodificacin
Control de actividades concurrentes
Sincronizacin de ventanas
Estado de ejecucin larga (guardar y
continuar)
Aplicaciones desconectada.
Interfaces de Componentes de procesos de
UI
1 Acciones de procesos de
usuarios
2 Mtodos de acceso a
Datos
3 Eventos de cambios de
estado
4 Control de pausa, reiniciar
y cancelar.
Capa de Reglas de Negocio Empresariales
Componentes de Reglas de Negocio o
Empresariales
Funcionalidad de proceso empresarial o
Lgica de dominio
Una o varias tareas
Generalmente una tarea encapsulada en un
Mtodo (accin: Facturar, DescontarStock)
Componentes y flujos de trabajo
empresariales
Organizan componentes empresariales
Usar flujos de trabajo cuando:
Proceso de varios pasos y Tx de ejecucin larga
Orquestar procesos
Participar con otros servicios
Componentes empresariales
Raiz de una Tx atmica
Implementan reglas de negocio
Aceptan y devuelven estructuras de datos
Independientes del almacenamiento
Implementacin de Componentes
Empresariales
Invocados por la capa de usuario o interfaces de
servicios
Son la raz de Tx, deben votar en Tx.
Validan entrada y salida
Operaciones de compensacin
Recuperan y actualizan datos llamando a
componentes logicos de acceso a datos
Pueden llamar a otros componentes empresariales o
flujos
Envan Excepciones
Llamados por
Interfaces de servicios
Componentes de procesos
de usuario
Flujos de trabajo
empresariales
Otros componentes
empresariales
Patrones de Componentes Empresariales

Canalizacin
Eventos
Diseo de Interfaz de Servicios
Punto de entrada a implementacin interna
Fachada que expone Mtodos
Individual o Secuencial
Contrato pblico
Esquema de datos
Seguridad, autenticacin
Proceso
Recomendaciones
Lmite de confianza de su Aplicacin
Que los cambios de funcionalidad no
impliquen cambios de interfaz
Diferentes usuarios, diferentes forma de
consumo, diferentes interfaces, misma lgica
Asmx, WSE, HTTP, Remoting, SOAP, MSMQ,
WCF
Uso de Fachadas con Interfaces de
Servicios
Fachada:
Autorizacin
Auditora
Validaciones
Usada por diferentes
canales
Datos entre Niveles
Windows Forms
Objetos, DataSet Tipados
OOP
Objetos, DataSet Tipados
ASP.NET
DataReader, DataSet, DataSet Tipados, XML + XSLT
Listados
DataReader, DataSet, DataSet Tipados, XML + XSLT
Binding
Objetos, DataSet, DataSet Tipados, XML
Componentes de entidades empresariales
personalizadas
Clases Custom
DTO (data transfer object)
Representan 1 o mas tablas del modelo relacional
Serializables
No tienen comportamiento
No acceden al almacenamiento de datos, ni manejan
Tx
No son obligatorios.
Capa de Acceso a Datos
Capa de Datos
Determinar:
Almacn de datos a utilizar
Diseo de los componentes para acceder a los
datos
Formato de datos entre capas y la programacin
relacionada.
Componentes Lgicos de Acceso a Datos

Abstraen la semntica del almacn de datos


Sin estado
Separan el procesamiento empresarial de la
lgica de acceso a datos.
CRUD de entidades empresariales
Pueden utilizar componente de ayuda de
acceso a datos (DAAB)
Funcionalidad de los componentes de
lgica de acceso a datos
Separar la lgica empresarial de los esquemas
de almacenamiento
Proveen un nico acceso a datos
Actan en una tabla principal y sus
relacionadas
Pueden encapsular bloqueo pesimista
Pueden implementar cach
Uso de los Componentes Lgicos de Acceso
a Datos
Exponen CRUD, paginacin
Usan un componente de
ayuda de acceso a datos
Se recomienda el uso de
procedimientos almacenados
No deben
Invocar a otros componentes lgicos de
acceso a datos. Mas previsibles.
Iniciar transacciones distribudas.
Mantener estado entre llamadas a mtodos
Mtodos que expone un componente
lgico
Administracin de Entidades: CRUD
Consulta de datos de solo lectura (listados)
Acciones que actualizarn y devolvern datos
Devolucin de Metadatos
Subconjunto de datos (paginacin).
Recomendaciones
Devuelva solo los datos necesarios
Use y no abuse de los SP
SP estndard: Insert, Update, Delete, Select
(generadores de cdigo)
Interfaces coherentes para clientes diferentes:
ASP.NET -> DataReader
Encargarse del cifrado (si es necesario)
Utilice Tx solo cuando las necesite
Utilice componentes de ayuda de acceso a datos
Componente de Ayuda de Acceso a Datos

DAAB
Genrico, no conoce de entidades
Abstrae la APIs de ADO.NET y sus versiones
Buenas prcticas de acceso a Datos
Disminuye el cdigo repetitivo
Administracin la conexin
Agnstico del motor de Base de Datos
Cach de Parmetros de SP
Integracin con Servicios
Utilizar el API adecuada de llamada
Traduccin entre formatos
Mantener estado entre conversaciones de
ejecucin larga
Se recomienda utilizar un componente de
agente (Proxy)
Encapsula la comunicacin
Se pueden considerar como los componentes
lgico de acceso a datos para los servicios.
Conclusin
Arquitectura en el diseo
Reutilizacin
Futuro para el Sistema
Nueva Funcionalidad mas fcil de implementar
Escalabilidad
Reglas claras para el Team de desarrollo.
Utilice el sentido comn al aplicar los
conceptos
Referencias
msmvps.com/blogs/cwalzer
Msdn.microsoft.com/practices
Enterprise Solution Patterns Using Microsoft .NET
Application Architecture for .NET: Designing
Applications and Services
http://www.microsoft.com/spanish/msdn/arquitectura/das/di
stapp.asp
Patterns & practices Enterprise Library
.NET Data Access Architecture Guide
Exception Management Architecture Guide
Preguntas?
Muchas gracias
por su participacin

Carlos Walzer

msmvps.com/blogs/cwalzer

Vous aimerez peut-être aussi