Next: Guardián
Up: Patrones de diseño para
Previous: Ficha de terminación asíncrona
Se usa cuando una aplicación
- necesita establecer una conexión entre una pareja de
servicios (p.ej., ordenadores en una red)
- donde el servicio sea transparente a las capas mas altas de la
aplicación
- y el conocimiento de los detalles de la conexión
(activo, passivo, protocolo) no son necesarios para la aplicación
Ejemplos:
- los super-servicios de unix (inetd)
Comportamiento exigido:
- se quiere esconder los detalles de la conexión entre dos puntos
de comunicación
- se quiere un mecanismo flexible en la capa baja para responder
eficientemente a las necesidades de aplicaciones para que se puedan
jugar papeles como servidor, cliente o ambos en modo passivo o activo
- se quiere la posibilidad de cambiar, modificar, o añadir
servicios o sus implementaciones sin que dichas modificaciones
afecten directamente a la aplicación
Posible solución:
- se separa el establecimiento de la conexión y su inicialización
de la funcionalidad de la pareja de servicios (peer services),
es decir, se usa una capa de transporte y una capa de servicios
- se divide cada pareja que constitue una conexión en una parte
que llamada aceptor y otra parte llamada conector
- la parte aceptora se comporta passiva esperando a la parte conectora
que inicia activamente la conexión
- una vez establecida la conexión los servicios de la aplicación
usan la capa de transporte de modo transparente
Detalles de la implementación:
- muchas veces se implementa un servicio par-en-par (peer-to-peer)
donde la capa de transporte ofrece una pareja de conexiones que se puede
utilizar independientemente en la capa de servicios, normalmente una
linea para escribir y otra para recibir
- la inicialización de la capa de transporte se puede llevar a cabo
de modo síncrono o asíncrono, es decir, la capa de servicios queda
bloqueada hasta que se haya establecida de conexión o se usa un
mecanismo de notificación para avisar la capa de servicios del
establecimiento de la conexión
- es recomendado de usar el modo síncrono solamente cuando:
el retardo esperado para establecer la conexión es corto
o la aplicación no puede avanzar mientras no tenga la conexión
disponible
- muchas veces el sistema operativo da soporte para implementar
este patrón, por ejemplo, conexión mediante sockets
- se puede aprovechar de la misma capa de transporte para dar
servicio a varias aplicaciones a la vez
Next: Guardián
Up: Patrones de diseño para
Previous: Ficha de terminación asíncrona
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática