218
382
 
Varios
Articulos y manuales de wpf, html, crystal report, gadget...
Enlaces
Encuentra links a manuales o paginas relacionadas
Visual C#
Creado en el 2001 y actualmente se se encuentra en su version 4.0
Visual Basic
Visual Basic es un lenguaje de programación desarrollado por Alan Cooper para Microsoft.
SQL Server
Basado en el lenguaje Transact-SQL, y específicamente en Sybase IQ
ASP .Net
Apareció en enero de 2002 con la versión 1.0 del .NET Framework
JavaScript
JavaScript es un lenguaje de programación interpretado, es decir, que no requiere compilación
Utilidades
Herramientas y utilidades que podras usar en tus ambientes de desarrollo. Hazte la Vida mas Facil!!!
Ex empleado de Apple describe duro sistema de trabajo y "ley del silencio"
El uso de blogs hasta lo que pueden o no pueden comentar con sus cónyuges en sus hogares
7/15/2010 6:57:11 AM
El iPhone 4, no apto para zurdos
Las críticas sobre la calidad de la recepción cuando se sostiene con la mano izquierda
6/26/2010 8:35:23 PM
Nuevo Hotmail a partir de hoy
Exchange ActiveSync en móviles como iPhone, BlackBerry, o Windows Phone
6/17/2010 12:41:25 PM
Microsoft Office 2010 es ahora gratuito en versión web
Office.live.com
6/10/2010 6:34:23 AM
Se inicia el Campus Party 2010
Del 28 de Junio al 4 de Julio se inicia la tercera edición de la fiesta de la tecnología en Colombia, que se caracteriza por ser un foro para aprender.
6/29/2010 2:32:59 PM
Novedades en Reporting Services 2008 R2
Nuevas funcionalidades de SSRS 2008 R2 (Maps, Report Builder 3.0, cambios de skin y mucho más).
2/4/2010 8:08:54 AM
Uso del diseñador de SharePoint y Visual Studio con Microsoft Business Connectivity Services en SharePoint 2010
crear Tipos de contenido externos para conectarse a los sistemas externos.
2/4/2010 8:04:53 AM
Creación de soluciones Office con Visual Studio 2010 y Office 2010
Webcast
1/10/2010 10:44:50 PM
 
   
Introducción a Generic Handlers en ASP.NET y un ejemplo de como utilizarlos.
Los Generic Handler es una clase de objeto .NET que puede procesar http requests, sin necesidad de estar dentro de una página aspx
Oscar Hernando Barón Roa
Introducción a Generic Handlers en ASP.NET y un ejemplo de como utilizarlos.
Los Generic Handler es una clase de objeto .NET que puede procesar http requests, sin necesidad de estar dentro de una página aspx
Visitas:382
Fecha publicación:6/29/2010
Introducción a Generic Handlers en ASP.NET y un ejemplo de como utilizarlos.

Un Generic Handler (GH) es una clase de objeto .NET que puede procesar http requests, sin necesidad de estar dentro del scope de una página aspx (que está dirigida a presentar salidas de tipo HTML clásico). Un ejemplo de GH es el HTTP Handler. Como es bien sabido un http Handler se puede asociar a cualquier extensión de archivo (de acuerdo a lo permitido por el IIS). Los GH sin embargo, solo se pueden asociar a la extensión ASHX que está directamente soportada por los proyectos web en visual Studio 2005 y posteriores. Así que los GH en .NET se asocian a archivos con extensión ASHX.
Todos los Handlers implementan System.Web.IHttpHandler. Además, en IIS 7 se puede alojar cualquier Handler directamente.

El hecho que el GH pueda correr fuera del entorno de una página y aparte procesar HTTPRequests, lo hace una herramienta perfecta para ofrecer servicios similares a los que ofrecería un Web Service. De esta manera, es un muy buen candidato para reemplazarlos, cuando no se pueden implementar ya sea por requerimientos del negocio o requerimientos no funcionales.

Por qué puede no ser deseado un WebService?

Según la arquitectura y requerimientos de algunos clientes, es mejor recibir resultados a través de HTTPRequest "simple", debido a que por ejemplo el llamado se hace desde una plataforma distinta a .NET desde la cual se hace bastante complejo crear un llamado a un WebService, tal vez porque la herramienta no puede manejar todos los tipos estándar en los WebServices (como sucede por ejemplo con PHP antiguo).

Entonces por qué no hacer una página Web Normal que responda a los llamados?

Si se crea una página aspx que responde a las peticiones se incurre en adicionales encabezados y todo el overhead adicional que genera la creación de una página completa (ciclo de vida, viewstate, etc), cuando en realidad sólo se desea obtener una simple respuesta (una imagen un xml, etc).

Entonces para ganar performance y facilidad de administración en este tipo de funciones, es posible crear un Generic Handler sin dejar de atender al requerimiento de que la comunicación permanezca sencilla.
Entre los métodos obligatorios al estarse implementando IHttpHandler está ProcessRequest que es el que ejecuta el proceso requerido y por ende al fnal de su alcance habrá de tener un llamado a context.Response.Write o similar, que devuelva una respuesta http. Esta respuesta puede ser html, txt plano, imágenes, xml, etc.
Uso Avanzado
Suponga le siguiente escenario: Existe un objeto en memoria que se desea presentar al usuario como una página html.

Opciones:

Serializar el objeto a XML, leer el XML y pasarlo a un XSLT que crea el HTML, y grabarlo en un archivo que luego es presentado en un IFrame. Como es obvio, el overhead de crear y borrar estos archivos físicos generados es absolutamente inaceptable.
Otro enfoque es incluir en la página un control XML que muestre el objeto serializado y en el cual luego de hacer la transformación se vea el HTML como tal. Es una alternativa muy aceptable que a primera vista no tiene ninguna desventaja, excepto el mismo overhead y tamaño que implica una página ASP.NET.
Generic Handler: Se obtiene un control más directo sin el overhead que implica agregar un control XML a una página que además tendrá otros elementos que sumaran innecesariamente peso al resultado.

Cómo se Logra?

Al crear un GH, éste puede ser llamado como cualquier otra página aspx. (Por ejemplo desde un browser) Además también pueden aceptar parámetros: http://warnov.com/miGH.ashx?param=valor;otroparam=otrovalor a través de su URL. Para incluir un GH en su aplicación Web, solo agréguelo como un nuevo ítem en el proyecto en Visual Studio.
En el caso especial de querer mostrar un objeto serializado en XML y transformado a través de XSLT es bastante sencillo: Solo se tiene que incluir en el XML la directiva de transformación XSLT y el archivo XSLT se ha de encontrar en la ruta que allí se especifica.

Conclusión:

Como se observa, son muchas las aplicaciones que tienen estos objetos y es considerable la ganancia que se obtiene con su uso, aunque en general pasan muy desapercibidos.

Artículo original de WarNov: http://blogs.msdn.com/b/warnov/archive/2009/08/15/introducci-n-a-generic-handlers-en-asp-net.aspx

Ejemplo de como realizar un Handler sencillo.

Creamos un proyecto en Visual Studio de tipo WebApplication, Para nuestro ejemplo se llamara WebAppLication1.
 

Hacemos clic derecho sobre el proyecto, hacemos clic Add new item, y seleccionamos Generic Handler, le damos un nombre, para el ejemplo handler1.ashx.
 

Visual Studio genera un controlador con el siguiente contenido y que vemos hereda de IHttpHandler.

 

Para el ejemplo realizaremos un codigo sencillo que permite escribir en el Html un Combo Seleccionable e imprimir un mensaje como se muestra a continuación. Creamos el metodo CrearForm y enviamos el parametro del contexto.

public void ProcessRequest(HttpContext context)
        {
            CrearForm(context);
        }

        public void CrearForm(HttpContext context)
        {
            context.Response.Write("<html><body><form>");
            context.Response.Write("<h2>Ejemplo Generic Handler Onglasses.NET</h2>");            
            context.Response.Write("Seleccionado su categoria favorita:");
            context.Response.Write("</br></br>");
            context.Response.Write("<select name='Categoria'>");
            context.Response.Write("<option> Visual C# .NET</option>");
            context.Response.Write("<option> Visual Basic .NET</option>");
            context.Response.Write("<option> SQL Server 2008</option>");
            context.Response.Write("<option> ASP.NET</option>");
            context.Response.Write("</br></br>");
            context.Response.Write("</select>");
            context.Response.Write("</br></br>");            
            context.Response.Write("<input type=submit name='Lookup' value='Selección'></input>");
            context.Response.Write("</br>");

            if (context.Request.Params["Categoria"] != null)
            {
                context.Response.Write("Usted ha seleccionado la categoria: ");
                context.Response.Write(context.Request.Params["Categoria"]);
                context.Response.Write("Como favorita.</br>");
            }

            context.Response.Write("</form></body></html>");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }



Ejecutamos nuestra aplicación colocando por defecto nuestro handler. (http://localhost/handler1.ashx), como vemos nuestro handler se ejecutara y nos mostrara el formulario que creamos.
 

Hacemos clic sobre el boton Selección y automaticamente volvera a ejecutar el handler y nos mostrara la selección realizada.

 

Espero les sea de buena utilidad este articulo para que puedan conceptualizarse acerca de los handlers, para descargar el código del ejemplo haga clic
Aquí.

Javier Vera
Muy bueno, ya necesitábamos un ejemplo de este temas.....
6/29/2010 8:00:10 PM
mar
comoooo comooo como paso parametros a un GH???
8/8/2010 2:58:28 PM
Agregar comentarios
Autor:
Comentario:
codigo de la imagen

Fecha de publicación: 6/29/2010 7:31:24 PM