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)
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