Patrón de diseño: SERVICE LOCATOR

Es un componente que contiene referencias a los servicios y encapsula la lógica que  localiza dichos servicios, este patrón es utilizado para obtener instancias de los servicios que necesitamos.

Ventajas

  •         Los servicios se instancian solo cuando es necesario.
  •         Provee una manera de registrar servicios y mantener una referencia a dichos servicios.
  •         Una vez que el servicio es  registrado, el service locator siempre puede localizarlo.
  •         Provee una forma de localizar un servicio sin especificar el tipo.

Desventajas

  •         Cosas colocadas en el registro son cajas negras 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 sea 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 inyectar código incorrecto en una aplicación.
  •         El registro esconde dependencias de la clase; causando errores en tiempo de ejecución en lugar de errores en tiempo de compilación cuando las dependencias faltan.
  •         El registro hace que el código sea más difícil de probar, ya que se tiene que interactuar con un service locator que es global, lo cual no nos permite hacer pruebas “unitarias” seguras.

 

Consecuencias

  • Resume la complejidad
  • Proporciona acceso uniforme a servicio a los clientes
  • Facilita la adición de componentes de negocio EJB
  • Mejora el rendimiento de la red
  • Mejora el rendimiento del cliente mediante el almacenamiento en caché

 

Estructura

Diagrama de clase

Diagrama de secuencia

  • Servicio – Servicio Actual que procesará la solicitud. Referencia de este servicio debe ser considerado en el servidor JNDI.
  •         Contexto / Contexto Inicial contexto JNDI, lleva la referencia al servicio que se utiliza para fines de consulta.
  •         Servicio de localización – Servicio de localización es un único punto de contacto para obtener los servicios de búsqueda JNDI, el almacenamiento en caché de los servicios.
  •         Caché – Cache para almacenar referencias de servicios a reutilizarlos
  •         Client – Cliente es el objeto que invoca los servicios a través de ServiceLocator.

 

A modo resumen: “Un asistente con alcance global que se anota la ruta a las clases que proporcionan alguna utilidad o servicio y nos da acceso a estas de manera sencilla”

 

fuente: http://castellanosmiguel.blogspot.com.uy/2013/07/service-locator.html

 

Deja un comentario