martes, 12 de enero de 2016

Introducción a ASP.NET MVC 4

El patrón Modelo Vista Controlador ( MVC)  es un modelo o patrón independiente de cualquier empresa o lenguaje, es una modelo arquitectónico para el desarrollo de software.

Cuando hablamos de arquitectura de software, sin entrar en grandes malabares intelectuales, hablamos de la manera en como organizar el trabajo, en que orden lo vamos a realizar; cuales son los materiales con los que construimos, en donde y cómo los vamos a colocar para tener fácil acceso a ellos; cómo los vamos a juntar o integrar, que orden seguiremos en las tareas a realizar, que materiales van con cuales y en que orden.

La forma de organizar y hacer el trabajo es conocido como patrón o modelo, y la elección de un patrón o modelo esta relacionado con el tipo de problema que estemos atacando. En México hay un dicho que dice: "Según el chango, es la pedrada", y creo que va bien con la idea de seleccionar un patrón según el tipo de problema que enfrentemos.

ASP.NET MVC es un Framework para el desarrollo de aplicaciones web, proporcionado por Microsoft, y que aplica el patrón arquitectónico Modelo Vista Controlador (MVC) para el framework ASP.NET.

Los conceptos de framework son bastantes y pulidos, en mi opinión un framework es un conjunto (que puede llegar a ser muy grande) de herramientas, como espacios de nombres, clases, estructuras, tipos de datos, etc.,  a los que además hay que sumarle que todas estas herramientas están pensadas para realizar trabajos particulares en áreas particulares, y que también siguen y mantienen una idea principal de como organizar y hacer ese trabajo.

En 2002 se lanza ASP.NET 1.0, se llego a pensar que ASP.NET y Web Forms eran lo mismo. ASP.NET tiene dos capas de abstracción.
  • System.web.UI: La capa de Web Forms, esta capa contiene a los controles de servidor, el ViewState, etc.
  • System.Web: La parte interna - los "fierros" - que proporcionan todo el soporte para el desarrollo de aplicaciones Web, módulos, manejadores, el soporte a HTML, etc.
El método principal de desarrollo con ASP.NET incluía el soporte a Web Forms, es decir, al proceso  de arrastrar y pegar controles, que evita trabajar de forma directa con HTML y las tareas que esto implica.

Para 2007 fue anunciado ASP.NET MVC, el patrón MVC tenia tiempo ya de existir y era una forma popular de construir frameworks para web.

El patrón MVC
 MVC (Model-View-Controller) ha sido un importante modelo arquitectónico de construcción de aplicaciones para las ciencias de la computación o las Tecnologías de la Información.

Como en todo el "hacer" humano se van mejorando las formas de trabajo. Al principio de un descubrimiento todo se realiza de forma artesanal y después se encuentran formas más rápidas y mejores de hacer el trabajo; el desarrollo de software tiene este desarrollo.

Originalmente el modelo o patrón MVC fue llamado Thing-Model-View-Editor. Su idea interior es la identificación y separación de tareas. Esta identificación y organización nos lleva a la construcción de conceptos o intereses, por ejemplo: la separación de la lógica de acceso a datos de la de presentación al usuario.

El concepto de "lógica" en este medio ambiente debe ser entendido en el sentido de la organización de los elementos y el orden en que estos se unen o integran para realizar una tarea, por ejemplo el acceso a los datos.

La separación de tareas generalmente produce importantes avances en la construcción de aplicaciones. Ayuda a evitar complejidad extra y menores esfuerzos. El clásico "divide y vencerás".

MVC  aplicado
MVC separa la interfaz de usuario (UI) de una aplicación en tres principales aspectos:

El Modelo: es un conjunto de clases - en efecto, son nuestras ya conocidas clases - que describen los datos con los que trabajamos, y cuando se dice que describen es que la clase contiene las propiedades necesarias para reconocerlas como nuestros puentes entre nuestra aplicación y la fuente de datos; así como las reglas de negocios que definen cómo los datos pueden ser manejados y modificados.

La Vista: Define cómo la interfaz de usuario será presentada. En nuestro caso es el HTML y otros elementos que permiten construir lo que el usuario ve.

El Controlador: Un conjunto de clase - y nuevamente, entran en escena las clases - que manejan la comunicación del y para el usuario, en general manejan el flujo de la aplicación  y secciones especificas de lógica de la misma.


MVC como un interfaz de usuario
Nos referimos a MVC como un patrón para la UI para facilitar su acercamiento al mismo, ya que MVC presenta una solución para el manejo de la interacción con el usuario, pero no se menciona nada acerca de como manejar otros intereses como el acceso a datos, interacción con servicios web, etc.

ASP.NET MVC
MVC es un un patrón arquitectónico, ASP.NET MVC esta enfocado en proveer un framework para el desarrollo web usando el patrón MVC y ejecutandose en una plataforma .NET, es decir en medio ambiente Microsoft Windows.

ASP.NET MVC mantiene una relación estrecha con las estrategias principales que se usan en MVC, ofreciendo la compilación y administración de código, así como las nuevas características de los lenguajes .NET, como las expresiones lamba y tipos dinámicos y anónimos. Los fundamentos seguidos son:
  • Convención sobre configuración, es decir que se da una importancia alta a la organización de los elementos de trabajo como: carpetas, archivos, nombres de elementos de software, etc. sobre la configuración de la aplicación.
  • Uso del principio DRY (Don't repeat yourself) . El principio "No repitas" evita la duplicidad de los elementos de software, muy importante ya repetir incrementan la dificultad en los cambios y la evolución de las aplicaciones, complica la claridad y crea espacios de inconsistencias. Estos elementos de software repetido pueden presentarse tanto en bases de datos como en elementos de código. Al usar este principio podemos realizar cambios en un solo lugar mejorando la posibilidad de la evolución de la aplicación. 
  • Siempre que sea posible use Pluggability
ASP.NET ofrece diferentes herramientas para crear componentes con diferente funcionalidad. Las dos herramientas más comunes para reutilización en ASP.NET son:
  • Controles del usuario y los controles de servidor, compilados para ser elementos de la interfaz de usuario y de la funcionalidad de la aplicación.
  • Bibliotecas de clases de .NET para la lógica de negocio y el código de acceso a datos.
Dos herramientas de reutilización ASP.NET que no reciben mucha atención son módulos y controladores HTTP
Si usted no está familiarizado con lo controladores HTTP y módulos, no se preocupe. Hablaremos más sobre ellos más adelante en este artículo. Por ahora, sólo entienden que los módulos HTTP son clases que se pueden configurar para funcionar en respuesta a los eventos que se disparan durante la solicitud de un recurso ASP.NET.  
Un controlador HTTP es una clase que se encarga de la prestación de un recurso en particular, o un determinado tipo de recurso 
Cada vez que se agrega una página Web ASP.NET a su proyecto, usted está esencialmente escribiendo un controlador HTTP. Esto es porque cuando la parte HTML de una página Web ASP.NET se compila dinámicamente en tiempo de ejecución, hereda directa o indirectamente de System.Web.UI.Page, que pasa a ser una implementación de controlador HTTP. Esto es cierto independientemente de si usted  utiliza la estrategia de código subyacente.
  • Puede ser útil, pero si no es necesario, retíralo del  camino del desarrollo. Evitar el desarrollo de elementos software que no entren en los requerimientos puede ser muy tentador y los auto abrazos al ego son algo común entre programadores. 
Como anécdota hablaré de una aplicación que requería un par de reportes y el programador creo un módulo completo para que el usuario creara todos los reportes que quisiera con los campos que quisiera, de las tablas que quisiera. ¿Muy bueno? bueno el "reporteador" llego a adquirir una importancia tal que se llego a olvidar el objetivo principal de la aplicación. Tomando más tiempo del necesario para la liberación del sistema y tristemente el "reporteador" nunca fue liberado y se opto por realizar solo los reportes necesarios.



El camino hacia MVC 4
En Marzo del 2009 se lanza ASP.NET MVC 1 y en el transcurso de tres años se llego a MVC 4.

ASP.NET MVC 2 es lanzado en Marzo del 2010, incluyendo:

  • Auxiliares para scaffolding (uso de infraestructuras básicas) para las construcción de plantillas o estructuras a la medida.
  • Validación basada en el modelo de atributo tanto del lado del cliente como del servidor
  • Auxiliares HTML fuertemente tipados.
  • Mejora en las herramientas de Visual Studio.
También hay mejoras a un gran conjunto de APIs, basadas en la retroalimentación de los desarrolladores.
  • Soporte para la partición de aplicaciones largas en áreas.
  • soporte a controladores asíncronos
  • Soporte para el re-dibujo (rendering) de subsecciones de una página, usando Html.RenderAction.
  • Nuevos auxiliares de funciones y utilerias, así como mejoras APIs.

ASP.NET MVC 3
Diez mese después de MVC 2 aparece MVC 3, 2011, incluyendo las siguientes características.
  • Uso del motor de vistas Razor -recuerde que uno de los motores de vista es Web Forms, usado para MVC 1 y 2-. El motor Razor esta diseñado como un motor de vistas basado en sintaxis.
  • Soporte para anotación de datos para NET 4.
  • Mejora de la validación del modelo.
  • Mayor control y flexibilidad para el soporte de resolución de dependencias y filtros de acción global.
  • Mejor soporte a JavaScript, validación de JQuery y enlace a JSON.
  • Uso de NuGet para liberar software y manejar dependencias en la plataforma.
ASP.NET MVC 4
En el mes de Julio del 2011, se anuncia su liberación. Sus características incluyen:


  • ASP.NET Web API
  • Mejora de los proyectos por omisión
  • Plantillas para proyectos de "Mobiles" usando JQuery
  • Modos de Display
  • Soporte a tareas (Task) y controladores asíncronos.
  • Bulding  and minification
Agrupación y minificación son dos técnicas que se puede utilizar en ASP.NET 4.5 para mejorar el tiempo de tiempo de carga, mediante la reducción del número de peticiones al servidor y reduciendo el tamaño de los activos solicitados,como los archivos CSS y JavaScript ).

Referencias:
  • Professional ASP.NET MVC 4 de los autores Jon Galloway, Phil Haack, Brad Wilson, K. Scot Allen de editorial Wrox.
  • Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components, https://msdn.microsoft.com/en-us/library/aa479332.aspx
  • Bundling and Minification, http://www.asp.net/mvc/overview/performance/bundling-and-minification

No hay comentarios.:

Publicar un comentario