¿Cómo se utiliza mybatis en una arquitectura orientada a servicios de manera eficiente?

StackOverflow https://stackoverflow.com/questions/4102945

  •  29-09-2019
  •  | 
  •  

Pregunta

Tenemos varios servicios, cada uno de los cuales idealmente debe operar de forma independiente el uno del otro. El principal uso de los servicios es apoyar nuestra aplicación web. Estamos buscando la mejor manera de uso iBatis con esos servicios.

Nuestro primer enfoque, era tener un proyecto con el SqlSessionFactory y tienen todas las implementaciones de servicios utilizan ese proyecto de acceso a datos. Esto significa que el proyecto depende de todos los servicios (que tuvimos con el servicio separado y impl para eliminar el círculo de dependencia) para los objetos de datos, y que contiene todos los mapas de SQL. La ventaja sería una instancia de SqlSessionFactory en cualquier momento, y una configuración de manejar. Aunque si un servicio se usa como por junits, o alguna otra utilidad, todos los mapas de SQL se cargan independientemente, y todos los servicios son una dependencia.

Otro enfoque sería que cada servicio tiene su propia configuración y ibatis instancia de SqlSessionFactory. Esto evitaría la necesidad de que la meca de las dependencias en el proyecto de acceso de datos, pero mediante varios ejemplos de SQLFactory en la aplicación web.

como el segundo enfoque, aunque veo buenas y malas en ambos.

¿Qué haría usted? Lo que añadir o quitar de mi argumento?

Por favor ayuda !!!

¿Fue útil?

Solución

A pesar de que creo que la fuerza de sus primeros puntos de argumentos a la debilidad de SOA en general, creo que si usted está haciendo SOA, que en contra del propósito para luego hacer toda la interdependientes servicios el uno del otro.

Si usted está haciendo SOA, usted está aceptando la desventaja de la utilización de recursos más ineficiente por el bien de desacoplamiento y el aislamiento de los componentes.

Otros consejos

En serio, que sea sencillo hasta que encuentre un cuello de botella o su aplicación se hace muy grande. Es decir, a menos que vaya servicios que se actualizan de forma independiente en sus propios horarios.

donde trabajo, no hay código común que se comparte entre todas las aplicaciones. Todo viene de la misma fuente, pero está construido de forma independiente en cada aplicación. Esto probablemente no es la mejor solución, pero al menos hace que sea fácil de modificar código común con a preocuparse por una aplicación separada siendo desplegado. Y permite código común al cambio a medida que se introducen más aplicaciones, con a efectuar aplicaciones desplegadas anteriormente.

Si pueden aplicar ambas soluciones, es probable que tenga todos sus servicios se ejecutan en la misma JVM. En mi opinión, usted debe pensar en la ejecución de los componentes en las JVM separadas. Una verdadera arquitectura de componentes de servicio es una de las que tiene varios componentes (EJB, por ejemplo) que se ejecutan en un entorno agrupado y hablar el uno al otro en un acoplamiento flexible tripulada (a través de JMS por ejemplo, o de servicios web o RMI, etc.). Cada componente es independiente y, posiblemente, se ejecuta en un servidor remoto.

En este caso, yo usaría, por supuesto, el segundo enfoque. Pero si su aplicación no necesita este desacoplamiento, se debe utilizar el primer enfoque, ya que es más eficiente de la memoria.

Es, después de todo, una cuestión de lo que realmente necesita su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top