viernes, 18 de abril de 2014

Arquitectura N-Capas - Estado del arte - parte 1

Objetivo:

Se diseñara y desarrollara una aplicación con la Arquitectura N-Capas con ASP.NET MVC 4.5, el proyecto será una aplicación de ejemplo para la gestión de una Tienda en Línea (LineShop).

Arquitectura N-Capas

La Arquitectura N-Capas es un estilo de programación donde el objetivo principal es separar los aspectos de desarrollo tales como el almacenamiento, lógica de negocio y presentación, la metodología de Programación Orientada a Objetos que captura  funcionalidad, comportamiento y estructura a través de clases permite esta arquitectura.
Una clase o conjunto de clases forman los componentes, los componentes son almacenados dentro de lo que llamamos Repositorio de objetos, Uno o más componentes debidamente organizados y relacionados forman una Capa, se habla de Arquitectura N-Capas cuando se utiliza más de una capa en la aplicación, en una aplicación N-Capas, cada capa expone servicios que otras aplicaciones o capas pueden consumir, y cada capa puede consumir servicios de otras.

Ventajas

Mantenibilidad: Provee una organización lógica de aplicación y desarrollo
Escalabilidad: Permite distribuir aplicación – cada capa puede residir en un computador distinto, agregar maquinas mejora rendimiento
Seguridad: Permite aislar componentes
Alta disponibilidad: Permite tener componentes redundantes
Soporte múltiples plataformas: múltiples plataformas

Arquitectura de tres capas

Capa de acceso a datos – Data access layer(DAL) 

La capa de acceso a datos, contiene la lógica para la conexión a la base de datos, para llamar a los procedimientos almacenados o para ejecutar sentencias SQL

Capa lógica de negocios – Business logic layer(BLL)

La capa de lógica de negocios, contiene todas las reglas de negocio y de validación 

Capa de interfaz de usuario – User interface  (UI)

La capa de interfaz de usuario, es esencialmente todo lo que interactúa directamente con el usuario, puede ser a través de navegador web, formularios Windows, aplicaciones móviles,etc.

Figura 1-1 – Arquitectura N-Capas

Capa de acceso a datos

Es objetivo de la DAL es la creación de clases que exponen métodos que permiten a la capa de lógica de negocios recuperar o conservar los datos de la base de datos, la DAL no debe comunicarse directamente con la interfaz de usuario

Diseño

Figura 1-2 - Capa de acceso a datos

La capa de acceso a datos realiza las operaciones CRUD (Crear, Obtener, Actualizar y Borrar), el modelo de objetos que .NET Framework proporciona para estas operaciones es ADO.NET, típicamente invocan procedimientos almacenados SP_I(Insert),SP_U(Update),SP_D(Delete), SP_S(Select).

Objetos de ADO.NET

System.Data.SqlClient
System.Data.OracleClient
System.Data.OleDb y
System.Data.Odbc

SqlHelper

La sintaxis para la conexión a una base de datos y ejecutar consultas puede llegar a ser bastante repetitivo. Una buena práctica es encapsular estas llamadas en una sola clase que el DAL pueda llamar fácilmente, Microsoft tiene una solución (Data Access Aplication Block) que tiene una clase SqlHelper que es un contenedor para todos los métodos mencionados.

Métodos de SqlHelper:

 ExecuteNonQuery
 ExecuteDataset
 ExecuteReader
 ExecuteScalar
 FillDataset

Pasar datos de DAL a BLL

Se tiene varias opciones para pasar datos entre la capa de acceso a datos y la capa lógica  de negocios.

DataReaders

Es extremadamente rápida y son ideales para recuperar datos de solo lectura.

DataSets

Es la representación en memoria de las tablas de la base de datos, el conjunto de datos esta completamente desconectado de la fuente de datos, tiene incorporado soporte para agregar actualizar y eliminar registros en la base de datos.

Typed DataSets

Objetos personalizados, son clases echas a medida que imitan la estructura relacional de la base de datos, también se pueden utilizar las estructuras en lugar de las clases para representar los datos ya que las estructuras son más ligeras que las clases.

Custom entity objects

La desventaja de esta opción es que usted tiene que crear los objetos manualmente. 

Scalar values

Esta última opción es buena cuando quiere insertar, actualizar o eliminar un solo registro

LINQ to SQL

LINQ significa Language Integrated Query, Se trata de un modelo de programación uniforme para la aplicación de cualquier tipo de acceso a datos, Visual Studio tiene un objeto ORM(Object Relational Model) que nos aporta una manera fácil de modelar y visualizar una base de datos como un modelo de objeto, para manejar las llamadas ADO.NET, también crea las clases de entidad que se pueden pasar de nuevo al nivel medio, la clase DataContext que se crea es similar a la clase SqlHelper, y las clases de entidad creada por el Diseñador ORM puede ser usado para replazar DataReaders,DataSets y Custom entity objects para pasar los datos al nivel medio

Capa lógica de negocios

El objetivo de la BLL es desarrollar un patrón de diseño de objetos de negocio (Tx y NTx), se usa muchos términos como requisitos del usuario, lógica de negocio, requisitos funcionales y requisitos de usabilidad, piense en los requisitos del negocio como proceso de negocio o flujo de trabajo, Estos requisitos ayudan a definir su modelo de objetos ej. “El sistema debe permitir  dos niveles de aprobación para cada solicitud”
Las reglas de validación permiten comprobar la integridad de datos, tales como campos obligatorios o únicos, estas reglas se definen como los requisitos de negocio por el usuario pero que no afectan el modelo objetos ej. “Se requiere que el nombre de usuario sea único”

Diseño


Figura 1-3 - Capa lógica de negocios

Capa interfaz de usuario

El objetivo de la  IU es desarrollar una interfaz de usuario que sea coherente, intuitivo, visualmente agradable y que cumpla con todas las políticas de marca de la empresa.

Diseño



 Figura 1-4 - Capa interfaz de usuario



lunes, 14 de abril de 2014

Bienvenido, gracias por su visita

Inicio este blog con el objetivo de compartir experiencias sobre bits, datos, información, conocimiento, sabiduría e insight aplicado al mundo TI.

Gracias, muchas gracias por leer este blog.