Busqueda local

Loading

martes, 15 de febrero de 2011

Extensibility en MVC

Cuando hablamos de MVC podemos decir sin temor a equivocarnos, que fue pensado para que el programador pudiera tomar el control, para que pudiéramos ampliar su funcionalidad y lograr nuestros objetivos. Para poder hacerlo, es necesario conocer los puntos donde se puede ampliar o personalizar, además es necesario conocer a fondo dicho punto para hacer las cosas adecuadamente…nadie dijo que fuera fácil!
Algunos de estos puntos no los he comentado en ninguno de mis post previos, aun que he tenido la necesidad de hacer algo con ellos, no ha sido a fondo, por lo que esta lista será un punto de partida para próximos post, donde pueda analizar y crear ejemplos, para publicar.
Los enumerare, con una breve descripción, ya que en esta ocasión, solo quiero crear un índice para poder organizarlos.
1. Manejo de Rutas:
a. RouteConstraint: Reglas para los parámetros que se reciben
b. Routehandler: Nos permite tomar el control del Rquest.
2. Manejo del Controller:
a. ControllerFactory: Es el componente que determina cual Controller debe instanciarse para atender a la solicitud.
b. Podemos encontrar además del Default, algunos que nos ofrecen otras posibilidades, como el Ninject Controller Factory. (http://ninject.org/)
c. ControllerBase: Todos los controllers heredan de este, lo cual nos ofrece la posibilidad de establecer nuestra propia implementación, para que nuestros controllers hereden de ahí y de esta forma simplifiquemos nuestro código al encapsular lógica o estándares dentro de esta.
3. Manejo de Acciones:
a. ActionInvoker: Es el responsable de ejecutar la acción por medio del nombre.
b. Esto también puede hacerse usando Ninject.
4. Manejo de la Seguridad:
a. AuthorizationFilter: Es código que se ejecuta antes que alguna acción pueda ser ejecutada, y determina si dicho requerimiento es válido, o no.
b. Es en este punto donde encontramos algunos filtros para evitar ataques clásicos, como puede ser: CSRF o XSFR.
c. ActionFilter: Este resulta ser un primo del anterior, solo que se ejecuta antes y después de la acción.
5. Mapeo de datos:
a. Modelbinder: MVC tiene un Default ModelBinder el cual mapea los parámetros que se reciben por medio de HTP, hacia propiedades de nuestras clases o entidades.
6. Generación de Código Resultante:
a. ActionResult: MVC trae consigo diferentes resultados que pueden ser renderizados para ser enviados al que lo solicite, como Views, Files, JSON.
b. Por ejemplo podemos crear nuestro propio resultado para archivos Excell, PDF, RSS, etc.
c. ResultFilter: Se ejecutan antes y después de la acción, y son de gran utilidad si queremos llevar un registro de acceso a nuestra “pagina”.
d. HtmlHelpers: Según la filosofía más pura de MVC una View no debe tener más código que HTML y llamadas a HtmlHelpers. Los HtmlHelpers son métodos de extensión de la clase HTMLHelper. Y nos ayudan a encapsular código que de otra forma tendríamos que escribir en la View.
e. ViewEngine: Es el encargado de crear la View final, que se envía de regreso al que lo solicita. Desde que fue concebido el MVC se pensó, para que pueda soportar View Engines de terceros o personalizados. Es todo un reto.
Hay mucha tela de donde cortar, no?

No hay comentarios:

Publicar un comentario