Generadores y Controladores HTTP

ASP.NET proporciona una API de bajo nivel para solicitudes y respuestas que permite a los programadores utilizar clases de .NET Framework para ocuparse de las solicitudes HTTP entrantes. Para ello, los programadores crean clases que admiten la interfaz System.Web.IHTTPHandler e implementan el método ProcessRequest(). Los controladores suelen ser útiles cuando los servicios suministrados por la abstracción del marco de trabajo de página de alto nivel no son necesarios para procesar la solicitud HTTP. Entre los usos habituales de los controladores, se incluyen los filtros y las aplicaciones al estilo CGI, especialmente aquéllas que devuelven datos binarios.

Cada solicitud HTTP recibida por ASP.NET se procesa en último término mediante una instancia específica de una clase que implementa IHTTPHandler. IHttpHandlerFactory proporciona la infraestructura que controla la resolución real de las solicitudes URL en instancias IHttpHandler. Además de las clases IHttpHandlerFactory predeterminadas suministradas por ASP.NET, los programadores pueden opcionalmente crear y registrar generadores que admitan escenarios complejos de activación y resolución de solicitudes.

Configurar generadores y controladores HTTP

Los generadores y controladores HTTP se declaran en la configuración de ASP.NET como parte de un archivo web.config. ASP.NET define una sección de configuración <httphandlers> en la que se pueden agregar y quitar controladores y generadores. Los valores de configuración para HttpHandlerFactory y HttpHandler son heredados por los subdirectorios.

Por ejemplo, ASP.NET asigna todas las solicitudes de archivos .aspx a la clase PageHandlerFactory del archivo global machine.config:

<httphandlers>

 

  <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory,System.Web" />

 

</httphandlers>

Crear un controlador HTTP personalizado

El siguiente ejemplo crea un controlador HttpHandler personalizado que controla todas las solicitudes que se realizan a "SimpleHandler.aspx".

using System.Web;

 

namespace Acme {

 

    public class SimpleHandler : IHttpHandler {

   

        public void ProcessRequest(HttpContext context) {

            context.Response.Write("Hola a todos");

        }

 

        public bool IsReusable {

            get {

                return true;

            }

        }

    }

}

 

Un controlador HTTP personalizado se puede crear implementando la interfaz IHttpHandler, la cual contiene sólo dos métodos. Mediante una llamada a IsReusable, un generador HTTP puede consultar a un controlador para determinar si se puede utilizar la misma instancia con el f in de atender a varias solicitudes. El método ProcessRequest toma una instancia HttpContext como parámetro y le proporciona acceso a los intrínsecos Request y Response. En el siguiente ejemplo, los datos de solicitud no se tienen en cuenta y se envía una constante de tipo cadena como respuesta al cliente.  

Después de incluir el ensamblado del controlador compilado en el directorio \bin de la aplicación, la clase del controlador se puede especificar como objetivo de las solicitudes. En este caso, todas las solicitudes dirigidas a "SimpleHandler.aspx" se desvían a una instancia de la clase SimpleHandler, la cual reside en el espacio de nombres Acme.SimpleHandler

<configuration>
  <system.web>
    <httpHandlers>
      <add verb="*" path="SimpleHandler.aspx" type="Acme.SimpleHandler, SimpleHandler" />
    </httpHandlers>
  </system.web>
</configuration>
 
Resumen
  1. Los controladores y generadores HTTP constituyen el eje del marco de trabajo de las páginas ASP.NET.
  2. Los generadores asignan cada solicitud a un controlador, que se encarga de procesarlas.
  3. Los generadores y controladores se definen en el archivo web.config. Los subdirectorios heredan la configuración de los generadores..
  4. Para crear un controlador personalizado, hay que implementar IHttpHandler y agregar la clase a la sección <httphandlers> del archivo web.config del directorio.

About justindeveloper

I am MCP (Microsoft Certified Professional). MCTS (Microsoft Certified Technology Specialist) and MCPD (Microsoft Certified Professional Developer), also I am SAP Business One Certified!! Desarrollando desde el IDE de Visual Studio NET 2003 hasta ahora con el Visual Studio NET 2010. Desde Microsoft SQL Server 2000 hasta ahora con el Microsoft SQL Server 2008 R2 y tambien con SharePoint, desde WSS 3.0 y MOSS 2007 y ahora familirizandome con el Sharepoint Foundation 2010 & Sharepoint Server 2010. The software development will follow being every time more wonderful!
This entry was posted in Development. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s