lunes, 8 de julio de 2013

1.2.9 Service Locator

El patrón de localización de servicios es un patrón de diseño utilizados en el desarrollo de software para encapsular los procesos involucrados en la obtención de un servicio con una fuerte capa de abstracción . Este modelo utiliza un registro central conocido como el "servicio de localización", que a petición devuelve la información necesaria para realizar una tarea determinada.

Ventajas

Ø El "servicio de localización" puede actuar como un simple enlazador en tiempo de ejecución. Esto permite que el código a ser añadido en tiempo de ejecución sin volver a compilar la aplicación, y en algunos casos incluso sin tener que reiniciarlo.

Ø Las aplicaciones pueden optimizar los mismos en tiempo de ejecución mediante la adición selectiva y eliminar elementos del localizador de servicios. Por ejemplo, una aplicación puede detectar que tiene una mejor biblioteca para la lectura de imágenes JPG disponibles de la predeterminada, y cambiar el registro correspondiente.

Ø Grandes secciones de una biblioteca o aplicación puede ser completamente separados. El único vínculo entre ellos se convierte en el registro.

Desventajas

Ø Cosas colocados en el registro son cajas negras con eficacia en lo que respecta al resto del sistema. Esto hace que sea más difícil de detectar y recuperarse de sus errores, y puede hacer que el sistema en su conjunto menos fiable.

Ø El registro debe ser único, el cual puede hacer que sea un cuello de botella para las aplicaciones concurrentes.

Ø El registro puede ser un problema de seguridad grave, ya que permite a los forasteros para inyectar código correcto en una aplicación.

Ø El registro se esconde dependencias de la clase ', causando errores de tiempo de ejecución en lugar de errores en tiempo de compilación cuando las dependencias que faltan.

Ø El registro hace que el código sea más difícil de mantener (en lugar de utilizar la inyección de dependencia), porque se vuelve claro cuando iba a introducir un cambio importante

Ø El registro hace que el código más difícil de probar, ya que todas las pruebas tienen que interactuar con el mismo servicio de clase mundial localizador para establecer las dependencias falsas de una clase bajo prueba.

Participantes y Responsabilidades

Diagrama de secuencia de Service Locator




Ø Cliente
Este es el cliente del Servicio de localización. El cliente es un objeto que normalmente requiere el acceso a los objetos de negocio como un Business Delegate.

Ø Servicio de localización

El Service Locator abstrae los servicios de búsqueda de nombres (API), las dependencias de proveedores, las complejidades de búsqueda y creación de objetos de negocio y proporciona una interfaz sencilla para los clientes.

Ø InitialContext


El objeto InitialContext es el punto de partida en el proceso de búsqueda y creación. Los proveedores de servicios ofrecen el objeto de contexto, que varía dependiendo del tipo de objeto de negocio proporcionada por búsqueda el localizador de servicio y el servicio de la creación. Un Servicio de localización que ofrece servicios para varios tipos de objetos de negocio (como beans enterprise y componentes JMS, etc) utiliza múltiples tipos de objetos de contexto, cada uno obtenido de un proveedor diferente

Ø ServiceFactory

El objeto ServiceFactory representa un objeto que proporciona gestión del ciclo de vida de los objetos BusinessService. El objeto ServiceFactory para beans enterprise es un objeto EJBHome. El ServiceFactory para componentes JMS puede ser un objeto JMS ConnectionFactory, como un TopicConnectionFactory (para publicar / suscribir modelo de mensajería) o una QueueConnectionFactory (de punto a punto de modelo de mensajería).

Ø BusinessService

El BusinessService es un rol que cumple el servicio al cliente está tratando de acceder. El objeto BusinessService se crea o se miró hacia arriba o removido por el ServiceFactory. El objeto BusinessService en el contexto de una aplicación EJB es un bean enterprise. El objeto BusinessService en el contexto de una aplicación JMS puede ser un TopicConnection o un QueueConnection. El TopicConnection y QueueConnection a continuación, se pueden utilizar para producir un objeto JMSSession, tales como TopicSession o un QueueSession respectivamente.

No hay comentarios.:

Publicar un comentario