4

Filtros en ASP.NET MVC

En ASP.NET MVC los controladores (mediante sus métodos de acción) son los encargados de ejercer como intermediarios entre el usuario y el sistema.  Cuando por ejemplo se pulsa un botón, se envía un formulario o se introduce una dirección url en el navegador, se genera una petición al servidor y el framework mediante el módulo de rutas (UrlRoutingModule) analiza la url y la redirecciona al controlador y método de acción adecuado, que la gestiona y devuelve el resultado.

Continue Reading

2

No uses using con clientes WCF

Cuando agregamos una referencia a un servicio WCF, se crea una clase proxy de servicio Windows Communication Foundation (WCF). Esta clase deriva de System.ServiceModel.ClientBase<TChannel> e implementa IDisposable, por lo que uno se viene arriba :) y cree que puede usarla dentro de una sentencia using garantizando de esta manera la limpieza automática de recursos sin que se genere ninguna excepción. Gran error.

El problema radica en que la implementación de Dispose de ClientBase<TChannel> llama incondicionalmente al método Close. Este es su código.

void IDisposable.Dispose()
{
    this.Close();
}

El método Close provoca que el objeto pase a estado cerrado, pero si el estado del cliente es Faulted lanzará una excepción CommunicationObjectFaultedException. Es cierto que un método Dispose no debería lanzar excepciones y rompe con la guía de diseño del framework , pero ocurre. Continue Reading

8

Configuración y optimización de los motores de vista (View Engines) de ASP.NET MVC

Los motores de vista (View engines) de mvc son los responsables del renderizado HTML de las vistas. Por defecto el framework MVC incluye dos motores: Webforms y Razor, pero existen muchos más como Spark, NHaml o Bellevue (por citar algunos) que podemos añadir a colección de view engines de nuestro proyecto.

Cuando devolvemos un objeto ViewResult en una acción de un controlador, por ejemplo a través del método View, el framework itera sobre los motores de vista registrados y por cada uno de ellos intenta localizar la plantilla que corresponde con el nombre solicitado. El primer view engine que lo encuentre será el motor que renderizará la vista, dejando de iterar sobre los restantes.

Cada motor de vistas tiene su propia lógica para buscar las plantillas, normalmente lo hacen a traves del sistema de archivos, es decir, por ubicación física. Los motores Webforms (.aspx, .ascx) y Razor (.cshtml, .vbhtml) implementados en las clases WebFormViewEngine y RazorViewEngine respectivamente, buscan las plantillas por ubicación. Concretamente buscan el nombre de la plantilla con un determinado nombre de extensión en diferentes directorios. Continue Reading