27 votos

Middleware y SOA por ejemplo

Yo soy un inexperto desarrollador Java tratando de envolver mi cabeza alrededor de algo fundamental en middleware SOA conceptos y tecnologías, en concreto:

  • La Arquitectura Orientada al servicio (SOA)
  • Middleware Orientada a mensajes (MOM)
  • La Cola De Mensajes
  • Apache Camel
  • Mula
  • Ejb
  • Estaciones Y Rutas
  • Servicio Autobús de/ESB
  • JMS

Después de ver cada uno de estos en línea/en la Wikipedia, yo era capaz de conseguir (la mayor parte) decente definiciones para cada uno de estos. Lo que yo no estoy entendiendo es cómo todas estas tecnologías/conceptos trabajar juntos en el backend para proporcionar un 2º/nivel de negocios de la solución.

Por favor alguien puede dar un ejemplo de una arquitectura que el uso de todas estas tecnologías y conceptos, y explicar lo que el papel de cada uno de ellos juegan en la solución general? Una vez que me vea un ejemplo de trabajo estoy seguro de que me ayudará a conectar la mayoría de los puntos.

Edit: Ya he añadido la recompensa, he tenido varias respuestas que sugieren la lectura de libros. Aunque aprecio a todos los comentarios aquí, yo simplemente no puede separarse de 300 puntos de reputación para una respuesta que, básicamente, se reduce a "RTM" (sobre todo cuando estoy en la quiebra y no puede permitirse el manual!) Para reiterar, la generosidad y la respuesta definitiva que irá a alguien que puede golpear todas estas balas en un significativo ejemplo práctico. Esto no tiene que ser un middleware compendio!!! Sólo un párrafo o dos que muestra cómo todos estos pueden ser usados juntos en armonía para producir una Java de negocios solución de nivel. Gracias de nuevo.

18voto

Pangea Puntos 36713

SOA principal de principios: Construir sistemas como un conjunto de servicios, donde cada servicio es

  • De grano grueso
  • Interoperable
  • Débilmente acoplados

Una empresa ofrece un montón de servicios a las empresas (de grano grueso) desarrollado a lo largo de muchos años y expuestos a los usuarios (humanos o de otros sistemas) en alguna forma. Hay más posibilidades de que cada una de estas características se han diseñado y desarrollado no mantener los tres principios en mente. Por otra parte, cada una de esas características podría ser que se ejecutan en distintas plataformas heterogéneas, el uso de diferentes tecnologías, etc.

Lo que si desea integrar estas diversas características por lo tanto la creación de nuevas soluciones (Por ejemplo, Amazon frente de la tienda es un nuevo servicio integrado de su catálogo de servicios, carrito de servicio, etc)?

Usted tiene dos opciones:

  1. La construcción de la nueva característica desde cero manteniendo los 3 principios en mente. Pero es que es muy costoso esfuerzo, y que casi nunca tienen éxito.
  2. Un eficaz y alternativa menos riesgosa es armar/la componen, de los actuales, comprobado (probado) servicios.

La opción 2 es donde los Esb puede ayudar con su apoyo para el enrutamiento, la transformación, seguimiento, etc. Apache Camel, Mula son de código abierto ESB. Los extremos y de las Rutas de la terminología utilizada en el PAE (Patrones de Integración Empresarial) que estos ESB a implementar. ESB puede tomar la ayuda de la MAMÁ cuando quieren ruta/de integrar los servicios que se ejecutan en plataformas heterogéneas (Por ejemplo, el catálogo de servicio puede ejecutarse en un sistema de mainframe, pero el carrito de la compra se implementa el uso de Ejb con estado ejecutando en un servidor de Aplicaciones Java). La cola de mensajes es un concepto en la madre que los actos de almacenamiento temporal de los mensajes entre el emisor y el receptor. Este almacenamiento temporal proporciona muchos beneficios como asincrónica de entrega, entrega garantizada, etc. Ahora, puede que me múltiples MAMÁ proveedores como IBM (WebSphere MQ), de código abierto ActiveMQ etc. Podemos utilizar JMS para mantener su código independiente del proveedor.

Traté de relacionar todos los conceptos con un ejemplo. También traté de mantenerlo corto. Por favor hacer preguntas de seguimiento para obtener más entendimiento.

MAMÁ no es un requisito para implementar SOA. Por ejemplo, si todos sus servicios están expuestos más de JABÓN a través de HTTP, entonces usted no necesita una madre en este caso.

8voto

neo Puntos 448

Las clases de Java/ejemplo para cada tecnología. podría no ser posible en un solo post, porque lo que pide es la evolución de la industria pasó en la última década y aún en evolución. Así, lo que sucedió durante la última década no pueden ser cubiertas en un solo post. Sin embargo, su buen entender cómo fue a través de esta fase y por qué la nueva tecnología de pila necesaria y qué tipo de problema que resuelve.

  • Ejb Enterprise Java Beans serverside de la arquitectura de componentes. Permite la rápida y simplificada de desarrollo de

    1) distribuido(donde varios servidor de aplicaciones habla el uno al otro, los componentes del servidor(por ejemplo, el servicio de llamadas de servicio de otros alojados sobre diferentes server).

    2) transaccional - persistencia de frijol (DB TXNs), la parte más importante de cualquier simple/web/aplicación distribuida. Fácil desarrollo e.g configuración de base. Escribir XML es el que se encarga de la transacción, por ejemplo, cuando se cometan, cuando ruede hacia atrás(sobre excepciones) etc. JPA Persistencia de Java Api proporcionan la relación entre el objeto mapeo. Como su fila de la tabla se asigna al objeto java a través de la configuración xml.

    3) seguro de autenticación(uid/pwd) y autorización(en el papel de la base - que se registra en el usuario y lo que todas las tareas se puede hacer?).

Esto se ve bien en un momento de desarrollar cualquier aplicación empresarial sin embargo tiene algunas desventajas, por ejemplo, su muy pesado (todos los frascos incluidos en el mismo.). Las clases que se utilizan como bean debe confirmar a los EJB (estándares de clases debe tener implementado ciertas interfaz EJB motor a entender que tipo de frijol que es).

Para superar tales scenarioes, hay muchas alternativas disponibles en la industria para los Ejb e.g Hibrnate hace las mismas cosas tales como cartografía, TXN manejo mismos de siempre por la persistencia de frijol en EJB. Spring, peso ligero marco y simplifica la lógica de negocio (usted puede utilizar su ya de la clase que no existe la necesidad de implementar ninguna interfaz, excepciones comprobadas o se extiende algunos de la obligatoriedad de las clases abstractas).

Hoy en día, la mayoría de las entidades realmente en el marco de peso ligero, el trabajo, tales como Spring, Hibernate, IBatis, Eje-2.

  • La Arquitectura Orientada al servicio (SOA) Arquitectura Orientada a servicios es una respuesta a la independencia de la plataforma a nivel de la empresa. O Integrar tu aplicación más rápido, para la comunicación entre el servidor de aplicaciones.

    Sólo piensa que usted desea implementar una solución en la que usted está proporcionando la opción de reserva de hotel en todo el mundo. Su requisito es para verificar la disponibilidad de habitaciones en los hoteles. Ahora, esto significa que usted necesita para interactuar con múltiples aplicaciones del hotel en un momento. No es necesario que todos los hotel está usando el mismo estándar o de su aplicación(servidor, lenguaje de programación) puede ser desplegado en servidores de aplicaciones diferentes. En un mismo tiempo, no es práctico para escribir las diferentes aplicaciones que puede hablar con todo tipo diferente de la del servidor de la aplicación. Necesitamos un estándar basado solución que puede resolver este problema. Es posible a través de los servicios Web.

Esto es posible debido a que los servicios web son el envío de mensajes en el SOAP(Simple Object Access Protocol), basado en el XML. XML se utiliza para el intercambio de datos a través de cualquier lenguaje o plataforma de protocolo de red.

Los servicios Web pueden ser clasificados de JABÓN Base y el RESTO. JABÓN de servicio basado en la JAX-RPC, y JAX-WS (http://www.ibm.com/developerworks/webservices/library/ws-tip-jaxwsrpc/index.html)

Los servicios Web pueden ser desarrollados contrato de de primera primera escritura de WSDL. código de de primera primera escritura de código.

Ahora, vamos a hablar de cómo empezar para los servicios web prácticamente.

Más simple servicio web o hello world(JAXWS) puede ser escrita de la siguiente manera:- http://svn.apache.org/viewvc/cxf/trunk/distribution/src/main/release/samples/java_first_jaxws/

  • Middleware Orientada a mensajes (MOM)
  • JMS
  • Cola de mensajes (punto a Punto)

    MAMÁ es necesario para superar las desventajas de respuesta de solicitud de estilo de la comunicación. El servidor necesita para estar vivo cuando el cliente envía la respuesta. Cliente de esperar por la respuesta hasta que el servidor se ejecuta y responder de nuevo.

    Como respuesta a la solicitud de la aplicación fallará si el servidor o el cliente está abajo. - MAMÁ, ya Sea del punto final no está obligado a estar en el momento de enviar el mensaje de solicitud para el procesamiento.

    MAMÁ es concepto y JMS es la especificación sobre este concepto. Muchos proveedores tienen la aplicación de esta especificación e.g IBM ha MQ, OpenJMS implementación de código abierto, de Tibco EMS etc.

Especificación JMS tiene principalmente dos patrones. Pub/sub y ponin-a-punto.

Pub/sub es el tema, su aplicación desea publicar cierta información a todas las partes interesadas. por ejemplo, el salpicadero. (Stock de la aplicación que desee notificar a cierto mensaje a todos los detectores registrados).

Punto-a-Punto de la comunicación se realiza a través de la cola de mensajes.

Negocio de caso de uso - creo que usted tiene la aplicación de correo.g a petición del cliente, atención al cliente. Otro lado se tienen varios representantes de atención al cliente y del otro lado los clientes a veces más que los representantes de atención al cliente, en un tiempo único y un representante se pondrá la solicitud sea procesada y él/ella no va a obtener la siguiente solicitud hasta que finaliza la tarea. (Lo mismo una cola de varias ventanas y que cada vez que la ventana es el libre albedrío proceso de la solicitud). Usted puede pensar en otras complejidad en este correo.g ¿qué sucede si uno de los nodos falla, solicitud no procesada y particular tipo de solicitud debe ser un proceso por nodo en particular. etc.

Producir código:- http://docs.oracle.com/javaee/1.4/tutorial/examples/jms/simple/src/SimpleProducer.java

Los consumidores código sincrónico:- (POJO clases) http://docs.oracle.com/javaee/1.4/tutorial/examples/jms/simple/src/SimpleSynchConsumer.java

http://www.java2s.com/Code/Java/J2EE/ThisexampleisasimpleJMSclientapplication.htm

Consumir código asíncrono:- (Spring por ejemplo - lee el mensaje de destino hasta que el programa no se detiene.) http://www.springbyexample.org/examples/simple-spring-jms-listener-config.html

Sin embargo, es solo lo básico que hay muchos aspectos que se cubren en este MOM por ejemplo, lo del fail-over mecanismo, lo que es el selector, durable mensaje, mensaje de acuse de recibo modos etc...

  • Servicio Autobús de/ESB
  • Estaciones Y Rutas
  • Apache Camel
  • Mula

Ahora, digamos que usted ha adoptado SOA y MAMÁ largo de la espalda y tiene montón de servicios que habla a cada uno de los otros para lograr toda la empresa de la tarea. Imaginar para gestionar la lógica como varios de destino, los cuales deben ser redirigido desde donde va a ser muy engorroso. Algunas personas llaman a esto la lógica de la aplicación. Servicio de buses será utilizado para reducir la lógica de la aplicación y se centran más en la lógica de negocio(de la funcionalidad proporcionada por la aplicación).

En palabras Simples, considere el punto Final de la URL, expuesto en el servidor. Usted va a utilizar esta url de punto final para invocar el servicio.

por ejemplo, http://localhost:8888/Context/MyService?wsdl

en el código:-

    String endpointAddress = "http://localhost:8080/jaxws/services/hello_world?wsdl";

    // Add a port to the Service
    service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);

    HelloWorld hw = service.getPort(HelloWorld.class);
    System.out.println(hw.sayHi("World"));

Rutas Cuando el servicio de bus recibe mensaje en particular, es la ruta a través de ninguna de servicios/corredor de destinos, tales como la cola de los temas. Esta ruta se conoce como ruta.

E. g su aplicación stock tiene entrada por el analista, será procesado a través de la aplicación/web de la componente y, a continuación, el resultado será publicado a todos los interesados/miembros registrados en particular de actualización de stock.

Apache Camel y Muel http://camel.apache.org/how-does-camel-compare-to-mule.html proporciona la solución para la integración de la empresa.

4voto

andrew cooke Puntos 20902

Patrones de Integración empresarial puede ayudar a entender cómo encaja todo.

[actualización:] La pregunta de seguimiento en otra respuesta me hizo darme cuenta de que usted está confundido acerca de productos específicos. Eso es en parte debido a que el software en la práctica tiende a asignar a más de un concepto y, en parte, debido a las diferentes empresas argumentan que proporcionan el "todo", cuando realmente no es así.

El Esb son herramientas / bibliotecas que permiten conectar todo junto. No son ni los servicios, ni el las implementaciones de mensajería, pero el goo que llena el poco extraño lagunas en el medio. Si se escribir todo desde cero, puede que no sea necesario, porque lo que mejor es solucionar el desajuste entre un montón de diferentes tecnologías, y si usted está empezando desde cero, usted puede evitar que el desorden.

Los servicios son, además, los servicios. Usted podría utilizar algunos de los Ejb cuando la aplicación de uno (yo sólo menciono esto porque, por alguna razón, se incluyen en tu pregunta).

El middleware de mensajería es un software que recibe los mensajes de la a a la B. Eso es muy útil, pero también complejo, y todo el mundo y su hermano ha inventado su propio. Por lo que necesita un poco de abstracción que le permite evitar el bloqueo. Que puede ser un ESB o, si son todos en Java, puede ser JMS. Pero incluso cuando están todos-Java con JMS usted todavía puede que desee utilizar un ESB porque son las bibliotecas de todos los bits de código Java que aún tendría que escribir (bits aleatorios de la lógica de enrutamiento de mensajes, formatear, etc, etc).

Espero que ayude. Mi respuesta original es más acerca de los patrones abstractos que construir con estas herramientas - cuando estás de cableado cosas juntos los mismos problemas que surgen una y otra vez.

2voto

user1338132 Puntos 171

Estaciones y Rutas: donde la información viene y va. Mensaje de la Cola es un tipo de estación. El otro tipo es un Mensaje de Tema.

Un extremo es un nombre lógico para una cosa", por ejemplo, el PRECIO.MSFT, que es utilizado por un editor o una aplicación de consumidor para conseguir las cosas desde él o para enviarle. Temas de entregar la información a todos los suscritos (uno-a-uno o uno-a-muchos), las colas de entrega de los mensajes a la primera que lo consigue (generalmente de uno-a-uno). Olvídate de las Colas, todo lo que puede hacerse también con los Temas y los temas tienen varias ventajas.

Middleware Orientada a mensajes (MOM): la infraestructura de software que provee de información entre los temas o queus. Es un mensaje orientado a la' no 'de paquetes orientada' como TCP. Así que cada blob se entrega, esperemos que la auto-descripción, mensaje. La aplicación de su MAMÁ, a continuación, proporciona un API donde usted puede hacer cosas como msg.get("oferta")

JMS y AMQP son ejemplos de una MAMÁ especificaciones. MAMÁ implementaciones son los verdaderos productos que implementan estas características: TIBCO EMS, Websphere MQ, MSMQ, Consuelo, y muchos, muchos otros

Apache Camel - enfoque muy interesante sobre cómo configurar los flujos de trabajo de esta MAMÁ mundo. Pero el más avanzado concepto.

La Arquitectura Orientada al servicio (SOA), Servicio Autobús de/ESB son solo las nuevas palabras de moda palabras de lo que solía ser llamado EAI (Enterprise Application Integration). Son recomendaciones sobre cómo usar 'la MAMÁ y una forma de pagar los altos precios de los consultores. Lo 'ESB', se añade a una MAMÁ que es la idea de pensar de sus editores como los "servicios" de la prestación de un servicio. En otras palabras: no piense demasiado acerca de lo que un consumidor quiere ahora. No podría ser de 5 a los consumidores en el futuro y que el editor debe prestar un servicio, que no se cree la información que el consumidor quiere". (Se volverá más clara una vez que su arquitectura ha crecido a 5+ aplicaciones). También debería tener un modelo de objetos común, tal vez en XML para hacer las cosas de forma sencilla entre las aplicaciones.

Mula - una forma de ESB, pero su' no se exactamente la corriente principal. En 5 años, la mayoría de middleware de acción que se han movido a AMQP o algo totalmente distinto.

Ejb: Sol la idea de sofisticados clases de Java que se ejecutan en un contenedor. Supone que debe hacer la aplicación más fácil el desarrollo. Pero en muchos casos se hicieron las cosas más complejas. Una mejor alternativa sería la 'Spring' - pero EJB se trata de otra cosa (no sólo la MAMÁ). Su más acerca de cómo desarrollar aplicaciones más grandes. (ver Coi patrón).

Si usted está buscando en dónde empezar: yo recomendaría aprender acerca de JMS (todos los demás MAMÁ están simliar y JMS es la base de EJB/ Mula, ...) y, a menos que el super-requisitos de alto rendimiento, considere la posibilidad de los mensajes a ser un TextMessage contiene XML. La mayoría de las herramientas están disponibles en esa área. O incluso más simple, pero menos sofisticado, una MapMessage con pares clave/valor.

1voto

MrGomez Puntos 20526

Tomando en cuenta todas sus necesidades de embalaje y en una consulta, me encontré con un excelente caso de estudio que debe cumplir con sus necesidades:

Me fui por delante y texto buscado el libro a través de Amazon "Buscar en el Interior de Este Libro". Cubre todos los casos de integración que hemos discutido, parece ser exhaustiva, y los pasos a través de todo el proceso de diseño e implementación.

Me avergüenza estado no he leído a través de este mismo, pero yo recomiendo utilizar las mismas herramientas que yo hice para ver si se ajusta a sus necesidades antes de invertir en una copia. Parece más profundo, más completo y más útil que simplemente endilgar usted en un montón de documentación incompleta o la cola de contenido en una respuesta aquí.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X