Blog de Jorge Pedraza

octubre 12, 2009

Programacion Asincrona de Pagina web

Filed under: Aplicaciones Web — JorgePedraza @ 1:17 am
Tags:

La programación Asíncrona permite que una solicitud se ejecute en un subproceso diferente. Esto detiene el flujo actual de espera y le permite realizar acciones adicionales, mientras que el otro subproceso se ejecuta. Esto puede mejorar dramáticamente el rendimiento en situaciones en que una solicitud de otro modo tendría que esperar (o bloque) para una acción relativamente largo, como el acceso a un recurso de red.

En una Aplicación Windows el uso de programación asíncrona  permitir que la aplicación responda a la entrada del usuario mientras se ejecuta proceso de larga ejecución. En Páginas Web los usuarios no puede interactuar con la página hasta que la página se represente por completo, para responder a la entrada del usuario; esto no es una razón válida para usar programación asíncrona .En su lugar se usaría la programación asíncrona para mejorar la eficacia de larga ejecución de una página web.

Por ejemplo, si está creando una página web que debe consultar recurso de la red (Como un servicio web), IIS y ASP.NET solo puedo procesar un número limitado de páginas simultáneamente. Por lo tanto el pool de subproceso puede ser consumido completamente, crea un cuello de botella. Una vez que el pool es consumido, tu servidor espera que la página finalice su representación antes que se inicie procesos por otras páginas. A pesar de que el servidor puede tener ciclos de procesador disponible, las solicitudes son encoladas.  Habilitando la programación de página web asíncrona el servidor puede simultáneamente iniciar la representación de más páginas, mejorado el tiempo de representación de páginas más reducido y eficiente.

Patrón base para Trabajar con programación asíncrona de página web ASP.NET (Visual Basic 2008):

  1. Agregar el Atributo Async=»true» en la directiva @ Page,  como muestra en el siguiente Ejemplo:
    <%@ Page Language=»VB» Async=»true» AutoEventWireup=»False» %>
    Dicho codigo esta situado generalmente en la primera linea de cada pagina ASPX.
  2. Se crea eventos  de inicio y fin asíncrono que implementa  System.Web.IHttpAsyncHandler.BeingProcessRequest y System.Web.IHttpAsyncHandler.EndProcessRequest. estos eventos debe coincidir con la siguiente firma:
    Function BeginTask(ByVal src As Object, ByVal args as EventArgs, ByVal cb As AsyncCallback, ByVal state as Object) as IAsyncResult
    End Function
    Sub EndTask(ByVal ar as IAsyncResult)
    End Sub
  3. Llama el metodo AddOnPreRenderCompleteAsync para declarar su manejador de eventos como es demostrado por el siguiente codigo:
    Dim bh As New BeginEventHandler(AddressOf Me.BeginTask)
    Dim eh As New EndEventHandler(AddressOf Me.EndTask)
    AddOnPreRenderCompleteAsync(bh,eh)

En resumen la programación asíncrona de página web enfocada con ASP.NET tiene como finalidad mejorar el tiempo de ejecución de tarea relacionada con una página web además de brindar mayor rendimiento de representación de página con otros usuarios en la web.

Codigo Fuente (Visual Basic 2008)

Crea un blog o un sitio web gratuitos con WordPress.com.