Busqueda local

Loading

lunes, 31 de octubre de 2011

Ejemplo ASP.NET en capas (3 de 3)

Una vez que hemos armado las tuberías de comunicación a la base de datos, podemos movernos un poco más arriba, en esta ocasión vamos a crear una capa que controla la comunicación entre la interface de usuario y la capa de servicios.
Me refiero a la capa de Presentación…

Capa de Presentación.

Para esta capa vamos a implementar el patrón Model-View-Presenter, si les parece conocido es porque se trata de una derivación del MVC. Se trata de una variante del patrón, con la cual se sugieren algunas modificaciones:
  • La Vista no conoce el Modelo.
  • El presentador es Independiente de la interface de usuario.

Relación Vista Presentador.

La recomendación es usar el modelo de vista pasiva, o sea la vista se limita a presentar los datos, no tiene lógica ni formateo de datos.
MVP2
El presentador es quien recibe los datos y es el responsable de realizar las acciones contra el sistema; es quien recibe la respuesta y la prepara para la vista.
Donde he visto esto?...Claro es como el Controlador del modelo MVC.
 

Como se logra la separación entre Vista y Presentador.

Mediante un Contrato, o sea una estructura de datos bien definida que representa toda la información que el usuario recibe. Este contrato está ligado a la vista, cada vista debe soportar un solo contrato.
La única relación entre ambas es el contrato.
Antes de empezar agregaremos una nueva carpeta que llamaremos Presentacion y dentro crearemos una carpeta para las Interfaces.
MVP3
 

Tutorial

1.- Lo primero que hacemos será crear el contrato, este contrato no es otra cosa que una interface:
MVP4
2.- Ahora debemos crear el Presentador:
MVP5

Descripción del código

Como pueden observar en el código, es en el presentador donde se unen todas las partes que previamente estuvimos codificando.
La explicación del método Display es bastante simple:
  • Se recibe la solicitud por medio de la cual se identifica para que tipo de Cliente se creara la lista.
  • Se obtiene los productos para eta solicitud en particular.
  • Si la acción tuvo éxito, se despliegan los resultados de lo contrario se envía el mensaje de error que se ha obtenido.
  • Es tan simple que la primera vez que la vi, tuve mis dudas al respecto.
La capa final
Esta capa es la que el usuario ve, es donde el usuario interactúa con nuestra aplicación. Y como les comente en el primero  de estos artículos debemos descargar una biblioteca de esta dirección, para que la Inyección de dependencia  no sea dolorosa; ya que tratar de implementarla en una plataforma como ASP, nos llevaría mucho tiempo y esfuerzo.
Después de descargar la biblioteca debemos descomprimirla, una vez que tengamos la DLL, vamos a nuestro proyecto y agregaremos una Carpeta nueva a nivel de la raíz, a la cual llamaremos Lib y acto seguido copiamos la DLL en el.
MVP6
Al terminar agregaremos una referencia a la biblioteca.
MVP7
Nos encontramos ante un reto interesante, ya que necesitamos una forma de “meternos” en medio, o sea entre la página web y el presentador; es un punto que servirá para preparar nuestro entorno para la inversión del control, permitiendo la inyección de dependencia.
3.- Agreguen otra carpeta a nivel del Raíz, y denomínenla WebUI.
4.- Vamos a crear una nueva Clase dentro de esta carpeta, que nos servirá para registrar las dependencias y permitirle a la biblioteca inyectar lo que corresponde:
MVP8
5.- Este código es similar al que se usa en MVC y debe ser cargado al principio de la ejecución, por lo tanto debemos asegurarnos que sea así, para lograrlo debemos escribir código en el Global.asax de nuestra aplicación:
MVP9
6.- Antes de continuar debemos agregar información a la tabla para poder presentar algo cuando ejecutemos nuestra aplicación por primera vez.
MVP10
7.- Ahora sí, la interfaz de usuario, para el ejemplo voy a usar la página Default.aspx, primero agregare los controles en modo de código fuente:
MVP11
8.- Este es el código HTML:
MVP12
9.- Hasta aquí solo nos falta el Code Behind… (Si creyeron que lo íbamos a omitir, pues no es posible, solo le vamos a dar la vuelta), así queda:
MVP13
Explicación del código
  1. Lo primero que se debe notar es la presencia de nuestra interface junto a Page, para que podamos implementar nuestro modelo dentro de la página.
  2. En el método Init se crea una instancia de nuestro Presentador, pasándole una instancia de la propia página y por medio de la biblioteca nos aseguramos que se envíe la instancia apropiada.
  3. Justo debajo de esta línea, podemos ver que agregamos un delegado para que atienda el evento del DropDownList.
  4. En el método Load, se llama al método Display del presentador, condicionado con el postback.
  5. Luego encontraremos un Bloque de código que contiene la implementación de nuestra interface, lo que nos permite tomar el control.

Prueba

Compilen su aplicación y ejecútenla.


KISS: Simplemente sencillo.
 

Comentario Final

Esta serie de artículos nos han permitido experimentar esta forma de crear aplicaciones usando ASP.NET, con un enfoque más moderno, el cual nos permite la escalabilidad y nos ofrece una alternativa viable para que nuestra aplicación pueda crecer posteriormente, sin que este crecimiento represente un problema futuro.
Espero que lo hayan disfrutado tanto como yo.
Y como siempre: El poder del código solo es completo, si tenemos el conocimiento de como usarlo.

No hay comentarios:

Publicar un comentario