Descargar

Patrón CallBack


Partes: 1, 2

    1. Propiedades del patrón
    2. Aplicabilidad
    3. Descripción
    4. Implementación
    5. Ventajas en inconvenientes
    6. Variaciones del Patrón
    7. Patrones relacionados
    8. Bibliografía

    Exposición sobre: "Patrón CallBack" (Retrollamada)

    Propiedades del patrón

    Tipo: Procesamiento (de comportamiento)

    Nivel: Arquitectura

    Propósito

    Permitir que un cliente se registre en un servidor para ciertas operaciones. De esta forma, el servidor puede notificar al cliente cuando la operación ha finalizado.

    Introducción

    Un Gestor de información personal distribuido realizara periódicamente costosas peticiones a un servidor. Por ejemplo, el tiempo necesario para recuperar un proyecto completo almacenado en un servidor es absolutamente impredecible el proyecto podría tener miles de tareas y de desarrollos.

    Ante esta situación, el hecho de mantener una conexión de red abierta supondría una limitación para el servidor. Aunque mantener esa conexión abierta podría mejorar la eficiencia del servidor, el tener una conexión por cada cliente limita severamente el número de peticiones cliente que el servidor puede procesar concurrentemente.

    En vez de que le cliente y el servidor se mantengan conectados, seria mejor permitir que el servidor se conectara con el cliente cuando finalizara su petición correspondiente. El patrón CallBack utiliza esta aproximación.

    • El cliente envía una petición para recuperar un proyecto del servidor, ofreciendo la información necesaria para la retrollamada junto con la petición.
    • El cliente se desconecta del servidor y permite que este emplee el tiempo necesario para recuperar el proyecto.
    • Cuando el servidor completa la tarea, conecta con el cliente y envía información del proyecto solicitado.

    Entre las ventajas obtenidas por el uso de este patrón se incluyen el ahorro de ancho de banda y el uso más eficiente del tiempo de procesamiento en el servidor. Esta solución también da ala servidor la libertad de ejecutar acciones como poner en cola las peticiones y utilizar prioridad en las tareas, para gestionar de forma mas eficiente los recursos disponibles en cada momento.

    Aplicabilidad

    Utilice el patrón callback para un sistema cliente/servidor en el que los clientes realicen operaciones costosas, y cuando una de las dos reglas siguientes sea cierta:

    • Desea conservar los recursos del servidor para una comunicación activa.
    • El cliente puede y debe continuar trabajando hasta que la información esté disponible. Esto puede lograrse simplemente haciendo que el cliente sea multithreaded.

    Descripción

    En algunos sistemas distribuidos, un servidor debe emplear mucho tiempo de procesamiento para satisfacer las peticiones de los clientes. En esos sistemas, probablemente la comunicación síncrona no sea la mejor opción, si el servidor mantiene contacto con el cliente durante el procesamiento, utilizara recursos que podrían ser aplicados a otra tareas como la comunicación con otros clientes.

    Imagine un sistema en el que el usuario desea ejecutar una consulta compleja sobre una tabla de una base de datos moderadamente grandes; como por ejemplo, una tabla con información sobre clientes con más de 10.000 registros. En un sistema cliente/servidor síncrono, el proceso cliente tendría que esperar, posiblemente durante un largo periodo de tiempo, hasta que el servidor finalizara. El servidor ejecutaría la petición y gestionaría todos los posibles pasos para organizar, formatear y empaquetar los datos, hasta que finalmente pudiera devolver los datos del cliente.

    La alternativa es crear un sistema que permita a un cliente registrarse en el servidor para recibir notificaciones. Cuando el servidor completa la operación solicita, envía una notificación al cliente. En el tiempo transcurrido hasta que finaliza la operación, tanto el cliente como el servidor son libres de utilizar sus recursos para propósitos más productivos que mantener el enlace de comunicación específico.

    El patrón callback proporciona esta capacidad, permitiendo la comunicación cliente/servidor asíncrona. El proceso consta de tres pasos principales:

    1. Por ejemplo, el cliente contacta con el servidor y realiza una petición. Normalmente, el cliente solicita información, como las estadísticas de ventas del año 2001, o una acción como puede ser introducir al usuario en el viaje organizado. Como el cliente no espera una respuesta inmediata, proporciona la información necesaria para que el servidor pueda contactar con el.

    2. Registro del cliente: el cliente realiza una solicitud, proporcionando información de contacto servidor.
    3. Procesamiento en el servidor: el servidor procesa la petición del cliente y formatea una respuesta en caso de que sea necesario. Durante ese periodo de tiempo, el cliente puede realizar otras tareas, u el servidor puede establecer comunicación con otros clientes.

      • La información solicitada por el cliente. Esta aproximación es utilizada generalmente cuando el cliente nenecita todos los datos o cuando el envió de los datos ocupa relativamente poco ancho de banda.
      • Un mensaje informando al cliente de que los datos o parte de los datos están disponibles. Esta opción se utiliza generalmente cuando hay una gran cantidad de información, de forma que el cliente pueda elegir entre recuperar una parte de los datos una vez que estén disponibles, o solo los datos que necesita de entre todos los solicitados.

      Como por ejemplo del patrón Callback, considere un padre y sus tres hijos que salen de compras. El hijo numero 1 quiere un Robot Láser; el hijo numero 2 quiere un ordenador portátil y el hijo numero 3 el ultimo libro sobre Java publicado por Prentice Hall. Sin embargo:

      • Encontrar todas estas cosas puede llevar mucho tiempo, especialmente no se venden en un mismo comercio.
      • Los hijos solo son capaces de prestar atención durante cinco minutos y se vuelven locos si tienen que estar de compras durante mucho tiempo.
      • El padre solo puede comprar una o dos cosas a la vez si comprara mas, su rendimiento caería.

      Afortunadamente, el padre puede dejar a sus hijos en la sala de juegos recreativos, o dejarlos pelear entre si, o cualquier otra cosa que se le ocurra. Entonces el padre puede ir a compra uno de los artículos, volver a dejarlo, ir a comprar el otro y etc.

      Se puede utilizar el patrón callback en múltiples aplicaciones:

      • Los agentes de software, ahora muy populares en la Web, pueden utilizar retrollamadas para notificar al cliente que la petición ha sido completada. Por ejemplo, imagine un agente de búsqueda de empleo en Monster.com. Un usuario puede introducir un criterio de búsqueda para el empleo que desea obtener; por ejemplo podría estar buscando uno en el que se pidiera una buena nariz para hacer de catador de cerveza. Posteriormente, el servidor notifica al usuario cuando hay un puesto disponible de catador en una cervecería.
      • Las aplicaciones que requieren operaciones costosas de bases de datos, como minería de datos, utilizan frecuentemente el patrón CallBack para incrementar el número de clientes a los que ofrecen un servicio de manera efectiva.
      • El patrón CallBack puede ser utilizado en aplicaciones que tienen flujo de trabajo detallado en el servidor. Por ejemplo un servidor utilizado en procesamiento ordenado, a menudo ejecuta una serie de operaciones una vez que un cliente ha realizado el pedido. El servidor suele comprobar inventario, valida el pago y la información de distribución, y se coordina con otros sistemas de información, facturación y entrega de pedidos. El patrón CallBack permite que el servidor notifique a los clientes el estado de pedido después de haber ejecutado los pasos anteriores. Como estas operaciones pueden llevar horas o días, los clientes también prefieren una solución de este estilo.

       

    4. Retrollamada del servidor: cuando el servidor completa la solicitud del cliente, le envía un mensaje de notificación. La notificación normalmente tiene una de las dos formas siguientes:
    Partes: 1, 2
    Página siguiente