Se ha montado un poco de revuelo (y no es para menos) porque Martin Fowler ha publicado dos nuevos articulos revisando el patron MVC (Model View Controller) adaptándolo a los tiempos que corren (TDD, metodologías ágiles, etc):
Fowler divide el MVP en dos nuevos patrones dependiendo del nivel de responsabilidad de la vista:
Supervising controller donde la controlador y la vista tienen funcionalidades repartidas, aunque específicas.
Passive View donde la vista es “controlada” por el controlador, si me permiten la redundancia y tiene muy poca funcionalidad inherente.
Como ejemplos de ambos puntos de vista se puede consultar los siguientes enlaces, muy interesantes:
ASP.NET Supervising Controller.
Session data pattern for multi-layered apps and Model-View-Presenter ASP.NET strategies
Despues de revisar ambas aproximaciones y el siguiente documento que es una exposicion completa del patrón MVC aplicado a ASP.NET:
Model View Presenter with ASP.NET
He llegado a la conclusion que las implementaciones del patrón que he comentado en posts anteriores pueden ser mejorados aplicando los siguientes puntos:
- Incializar los datos del controlador con los que vienen del QueryString utilizando el interfaz IContext, si procede.
- Los errores que se puedan generar en el controlador deben de ser expuestos a traves de la vista.
- IsPostBack depende del controlador y no de la vista. Esto se hace atendiendo a un metodo del controlador que reciba un flag equivalente al IsPostBack.
- Hacer las redirecciones de páginas como eventos lanzados por el controlador.
- Las acciones que realiza el controlador no debe ser parametrizadas con datos de la vista, sino con parametros pasados al metodo (ejemplo: Save(idBlog, strText)… aunque esto tengo que estudiarlo mas en detenimiento).
- Un poco relacionado con lo anterior, el 99% de las propiedades de las vistas no se pueden leer, son siempre actualizables (get, nunca set).
- Recibo datos del QueryString que me definen lo que hay que mostrar. Esto es común a todas las páginas: Comprobar si se ha pasado un valor, utilizar el valor o especificar que dicho valor se requiere para el funcionamiento de la pagina. El punto 1 me permiten meter este chequeo directamente en el controlado.
- Cada accion del controlador esta rodeada de un chequeo de excepcion. Tengo que ver la mejor manera para resolver este tema. El punto 2 puede ser una aproximación.
- Control muy sensible del PostBack: me refiero a que hay que definir 2 metodos en el Controlador para responder al PostBack en el Presenter. Es mejor que sea el controlador el que actue según dicho PostBack.
- La gestión de la seguridad: Según mis permisos qué puedo hacer y qué no.
Resumiendo: Cuanto más haya en el controlador, mejor (yo dixit). Por un motivo muy simple: El controlador es infinitamente mas facil de testear que la Vista.
Enviar un comentario nuevo