Next: Guardián
Up: Patrones de diseño para
Previous: Ficha de terminación asíncrona
  Índice General
Se usa cuando una aplicación
- necesita establecer una conexión entre una pareja de
servicios (por ejemplo, ordenadores en una red)
- donde el servicio sea transparente a las capas más altas de la
aplicación
- y el conocimiento de los detalles de la conexión
(activo, pasivo, protocolo) no son necesarios para la aplicación
Ejemplos:
- los super-servicios de unix (inetd)
- usando http para realizar operaciones (CLI)
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 pasivo 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 constitúe una conexión en una parte
llamada aceptor y otra parte llamada conector
- la parte aceptora se comporta pasiva 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
línea 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 establecido la conexión o se usa un
mecanismo de notificación para avisar a 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, conexiones 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
  Índice General
© 2005, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática