- Propiedades del
patrón - Aplicabilidad
- Descripción
- Implementación
- Ventajas en
inconvenientes - Variaciones
del Patrón - Patrones
relacionados - 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:
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.- Registro del cliente: el cliente realiza una
solicitud, proporcionando información de contacto
servidor. - 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.
- La información solicitada por el cliente.
- 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:
Página siguiente |