Middleware & SOA par exemple

je suis un développeur Java inexpérimenté qui essaie de m'enrouler autour de quelques concepts et technologies de base middleware/SOA, en particulier:

  • Architecture orientée services (SOA)
  • Middleware orienté Message (MOM)
  • Message De La File D'Attente
  • Apache Camel
  • Mule
  • EJBs
  • Paramètres Et Les Itinéraires
  • Bus de Service / ESB
  • JMS

après avoir pris soin de chacun des ces en ligne/sur Wikipédia, j'ai pu obtenir (pour la plupart) décent définitions pour chacune de ces. Ce que je ne suis pas la compréhension est comment toutes ces technologies/concepts fonctionnent ensemble sur le backend de fournir un 2e/couche d'entreprise solution.

est-ce que quelqu'un peut donner un exemple d'une architecture qui utiliserait toutes ces technologies/concepts, et expliquer ce que rôle chacun d'eux joue dans la solution globale? Une fois que je le vois un exemple pratique je suis sûr qu'il m'aidera à relier la plupart des points.

Modifier: depuis que j'ai ajouté la prime, j'ai eu plusieurs réponses qui suggèrent de lire des livres. Bien que j'apprécie tous les commentaires ici, Je ne peux tout simplement pas séparer les façons avec 300 points de réputation pour une réponse qui, essentiellement, se résume à "RTM" (surtout quand je suis à plat cassé et ne peut pas se permettre le manuel!!!) Pour réitérer, la réponse bounty et définitive ira à quelqu'un qui peut frapper tout de ces balles dans un sens, exemple pratique. il n'est pas nécessaire que ce soit un middleware compendium!!! juste un paragraphe ou deux qui montre comment tout cela peut être utilisé ensemble en harmonie pour produire une solution Java business-tier. Merci encore.

30
demandé sur IAmYourFaja 2012-04-07 18:28:55

7 réponses

SOA principes principaux: construire des systèmes comme ensemble de services où chaque service est

  • Grossiers
  • interopérable
  • Faiblement couplé

Une entreprise offre beaucoup de services aux entreprises (gros grains) a développé depuis de nombreuses années et exposées aux utilisateurs (humains ou d'autres systèmes). Il y a plus de chances que chacune de ces caractéristiques ait été conçue et développée sans tenir compte des trois principes ci-dessus. De plus, chacune de ces caractéristiques pourrait fonctionner sur des plateformes hétérogènes disparates, utilisant des technologies différentes, etc.

Que faire si vous souhaitez intégrer ces fonctionnalités disparates créant ainsi de nouvelles solutions (par exemple Amazon store front est un nouveau service composé de leur service de catalogue, service de panier d'achat, ETC)?

Vous avez deux choix:

  1. construire la nouvelle fonctionnalité à partir de zéro en gardant les 3 principes à l'esprit. Mais il est très coûteux endeavor, et qui n'a presque jamais réussi.
  2. une alternative efficace et moins risquée consiste à assembler/composer à partir de services existants, éprouvés (bien testés).

L'Option 2 est où bus de services d'entreprise peuvent aider avec leur support pour le routage, la transformation, le suivi, etc. Apache Chameau, Mule sont open-source ESB. Les paramètres et les voies sont la terminologie utilisée dans le PPC ( Intégration De L'Entreprise Les modèles) que ces ESB mettent en oeuvre. ESB peuvent prendre l'aide de MAMAN ( Message-Oriented-Middleware) quand ils veulent Router/intégrer des services qui fonctionnent sur des plateformes hétérogènes (par exemple, le service de catalogue peut fonctionner sur un système mainframe mais le panier d'achat est implémenté en utilisant stateful EJBs en cours d'exécution dans un serveur d'Application Java). Message de la file d'attente est un concept dans MOM qui agit comme un stockage temporaire de le message entre l'expéditeur et le destinataire. Ce stockage temporaire offre de nombreux avantages tels que livraison asynchrone, livraison garantie, etc. Il existe plusieurs fournisseurs MOM différents comme IBM (WebSphere MQ), open-source ActiveMQ, etc. Nous pouvons utiliser JMS pour garder votre code indépendant du vendeur.

j'ai essayé de relier tous les concepts avec un exemple. J'ai aussi essayé de le garder court. Merci poser des questions de suivi pour gagner plus compréhension.

la mum n'est pas une exigence pour mettre en œuvre L'AAS. Par exemple, si tous vos services sont exposés via SOAP via HTTP, vous n'avez pas besoin d'une mère dans ce cas.

20
répondu Aravind R. Yarram 2018-03-07 17:42:01

classes Java/exemple pour chaque technologie. pourrait ne pas être possible dans un seul poste parce que ce que vous avez demandé est l'évolution de l'industrie a traversé au cours de la dernière décennie et encore en évolution. Donc, ce qui s'est passé au cours de la dernière décennie ne peut pas être couvert dans un seul poste. Cependant, il est bon de comprendre comment il a traversé cette phase et pourquoi la nouvelle pile de technologie nécessaire et quel type de problème il résout.

  • EJBs Enterprise Java Beans serverside component architecture. Il permet rapide et développement simplifié de

    1) distribués (où plusieurs serveurs d'applications se parlent entre eux, composants de serveur (par exemple service appelant un autre service hébergé sur un serveur différent).

    2) Le haricot de persistance transactionnel (DB TXNs), la partie la plus importante de toute application simple/web/distribué. Développement facile E. G Base de configuration. Ecrire XML qui prend en charge la transaction par exemple quand s'engager, quand revenir en arrière(sur les exceptions) etc. JPA Java Persistance APIs fournir une cartographie de la relation objet. Telle que votre ligne de table est mappée à votre objet java par le biais de la configuration xml.

    3) sécurité - authentification(uid/pwd) et l'autorisation(basé sur un rôle - qui est l'utilisateur connecté et que toutes les tâches qu'il peut faire?).

cela semble bon à un point pour développer n'importe quelle application d'entreprise cependant il a obtenu quelques inconvénients par exemple son très lourd (tous les pots inclus dans lui.). Les classes utilisées comme haricots doivent être conformes aux normes EJB (les classes devraient avoir mis en place une certaine interface pour que le moteur EJB comprenne quel type de bean c'est).

pour surmonter de tels scénarios, il existe de nombreuses alternatives disponibles dans l'industrie pour les EJB E. G Hibrnate fait les mêmes choses comme ou la cartographie, TXN manipulation même fourni par persistance bean dans EJB. Spring, cadre léger et simplifie la logique d'entreprise (vous pouvez utiliser votre classe déjà construit qui n'a pas besoin de mettre en œuvre une interface, des exceptions vérifiées ou étend certains des classes obligatoires de l'abrégé).

maintenant un jour, la plupart des compnies realy sur le cadre léger tel que le printemps, hibernation, IBatis, Axis-2.

  • Architecture orientée services (SOA)) L'Architecture axée sur le Service est une réponse à l'indépendance de la plate-forme au niveau de l'entreprise. OU Pour intégrer votre application plus rapidement, pour communiquer entre différents serveurs d'application.

    il suffit de penser que vous voulez mettre en œuvre la solution où vous offrant l'option de réservation d'hôtel partout dans le monde. Votre obligation est de vérifier la disponibilité des chambres dans ces hôtels. Maintenant, cela signifie que vous devez interagir avec plusieurs applications hôtelières à la fois. Il n'est pas nécessaire que chaque hôtel utilise le même standard ou leur application(serveur, langage de programmation) peut être déployée sur les différents serveurs d'application. En même temps, il n'est pas pratique d'écrire des applications différentes qui peuvent parler à tous les différents types de serveur d'application. Nous avons besoin d'une solution standard qui puisse résoudre ce problème. Il est possible par le biais de services Web.

c'est possible parce que les services web envoient des messages dans le SOAP(Simple Object Access Protocol), basé sur le XML. Le XML est utilisé pour échanger des données dans n'importe quelle langue, plate-forme ou protocole de réseau.

les services Web peuvent être classifiés SOAP et REST. Service à base de savon JAX-RPC et JAX-WS (http://www.ibm.com/developerworks/webservices/library/ws-tip-jaxwsrpc/index.html)

les services Web peuvent être développés contrat d'abord-première écriture WSDL. code première-première écriture du code.

maintenant, parlons comment commencer pour les services web pratiquement.

Le service web le plus simple ou hello world (JAXWS) peut être écrit comme suivre:- http://svn.apache.org/viewvc/cxf/trunk/distribution/src/main/release/samples/java_first_jaxws/

  • Middleware orienté Message (MOM)
  • JMS
  • Message File (Point-to-Point)

    maman doit surmonter les désavantages de la communication de type requête-réponse. Le serveur doit être vivant lorsque le client envoie la réponse. Client attendre la réponse jusqu'serveur exécute et répondre arrière.

    Request response-application échouera si le serveur ou le client est en panne. MAMAN - Soit du point de fin n'est pas nécessaire d'être à l'heure, vous envoyez le message de demande pour le traitement.

    MOM est concept ET JMS est spécification sur ce concept. De nombreux fournisseurs ont mis en œuvre cette spécification E. G IBM a MQ, OpenJMS open source implementation, EMS de Tibco etc.

la spécification JMS a essentiellement deux motifs. Pub / sub et ponin-à-point.

Pub / sub est sujet, votre application souhaitez publier certaines informations à toutes les parties intéressées. par exemple tableau de bord. (Application Stock souhaitez les informer de certains message à tous les écouteurs enregistrés).

Point-à-Point la communication se fait par la file d'attente des messages.

de cas d'utilisation - pensez-vous avoir des applications en électronique.g demande du client pour le service à la clientèle. Autre côté, vous avez plusieurs soins à la clientèle représentants et autres clients parfois plus que des représentants du service à la clientèle, à la fois un et un seul représentant obtiendra la demande à être traitée et il/elle n'obtiendra pas la prochaine demande jusqu'à ce que la tâche soit terminée. (Même file d'attente windows multiple et que chaque fenêtre est libre traitera la requête). Vous pouvez penser à une autre complexité dans ce E. g Que faire si l'un des noeuds échoue, la requête n'est pas traitée et le type particulier de requête doit être traité par noeud particulier. etc.

produire le code: - http://docs.oracle.com/javaee/1.4/tutorial/examples/jms/simple/src/SimpleProducer.java

Code de consommation synchrone: - (classes POJO) http://docs.oracle.com/javaee/1.4/tutorial/examples/jms/simple/src/SimpleSynchConsumer.java

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

Code de consommation asynchrone: - (printemps par exemple - message de la destination jusqu'programme ne sera pas arrêté.) http://www.springbyexample.org/examples/simple-spring-jms-listener-config.html

cependant, c'est juste de base il y a beaucoup d'aspects à couvrir dans cette MOM, par exemple ce qui est mécanisme de basculement, ce qui est sélecteur, message durable, modes d'accusé de réception de message, etc...

  • Bus de Service / ESB
  • Paramètres Et Les Itinéraires
  • Apache Chameau
  • Mule

maintenant, disons que vous avez adopté SOA et maman il y a longtemps et que vous avez un tas de services qui se parlent entre eux pour accomplir la tâche à l'échelle de l'entreprise. Imaginez pour gérer la logique telle que la destination multiple qui devrait être redirigé d'où sera très encombrant. Certaines personnes appellent cette logique d'application. Les bus de Service seront utilisés pour réduire la logique d'application et se concentrer davantage sur la logique d'affaires(fonctionnalité fournie par App.)

en termes simples, considérez point comme URL exposée sur le serveur. Vous utiliserez cette url/end point pour invoquer votre service.

e.g. http://localhost:8888/Context/MyService Je ne sais pas.wsdl

en code: -

    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"));

Itinéraires Lorsque l'autobus de service reçoit un message particulier, il l'acheminera par aucun des services/courtiers destinations telles que la file d'attente/sujets. Ce chemin est connu comme route.

par exemple, votre application stock a obtenu quelques entrées par analyste, il sera traité par le biais de l'application/composante web et puis le résultat sera publié à tous les membres intéressés/enregistrés pour la mise à jour de stock particulière.

Apache chameau et Muel http://camel.apache.org/how-does-camel-compare-to-mule.html fournit la solution pour l'intégration d'entreprise.

10
répondu neo 2012-04-16 11:08:23

Enterprise Integration Patterns peut vous aider à comprendre comment tout s'imbrique.

[mise à jour:] votre question de suivi sur une autre réponse m'a fait réaliser que vous êtes confus au sujet de produits spécifiques. Cela s'explique en partie par le fait que, dans la pratique, les logiciels ont tendance à être associés à plus d'un concept et en partie par le fait que différentes entreprises font valoir qu'elles fournissent "tout", alors qu'en réalité elles ne le font pas.

les ESBs sont des boîtes à outils / bibliothèques qui vous permettent de vous connecter tout ensemble. Ils ne sont ni les services eux-mêmes, ni les implémentations de messagerie, mais le goo qui comble les petits écarts entre les deux. Si vous écriviez tout à partir de zéro, vous pourriez même ne pas avoir besoin d'un, parce que ce qu'ils sont les meilleurs à la réparation de l'inadéquation entre une pile entière de différentes technologies, et si vous commencez à partir de zéro, vous pouvez éviter ce gâchis.

les services sont, bien, les services. Vous pourriez utiliser certains EJBs lors de la mise en œuvre d'un mentionne cela parce que, pour une raison que vous les incluez dans votre question).

l'middleware de messagerie est un logiciel qui reçoit les messages de A à B. c'est extrêmement utile, mais aussi complexe, et tout le monde et leur frère ont inventé le leur. Donc vous avez besoin d'abstraction qui vous permet d'éviter le verrouillage. Cela peut être un ESB ou, si vous êtes all-Java alors il peut être JMS. Mais même lorsque vous êtes tout-Java avec JMS, vous pouvez toujours vouloir utiliser un ESB parce qu'il s'agit de bibliothèques de tous les les bits de code Java que vous devez encore écrire (bits aléatoires de logique de routage, reformatage de message, etc.).

J'espère que ça aidera. Ma réponse originale est plus sur les modèles abstraits que vous construisez avec ces outils - quand vous connectez les choses ensemble les mêmes problèmes surgissent encore et encore.

5
répondu andrew cooke 2012-04-09 22:10:37

paramètres Et Itinéraires: d'où provient l'information et de va de. La file d'attente de messages est un type de point final. L'autre type est un sujet de Message.

un paramètre est un 'nom logique pour une chose', par exemple Prix.MSFT, qui est utilisé par un éditeur ou une application de consommateur pour obtenir des choses de ou envoyer à. Les sujets transmettent l'information à tous les abonnés (un à un ou un à plusieurs), les files d'attente transmettent les messages à la première personne qui reçoit l'information (habituellement un à un). Oubliez les Files d'attente, tout peut également être fait avec les Sujets et les sujets ont plusieurs avantages.

Middleware orienté Message (MOM): l'infrastructure logicielle qui fournit des informations entre des sujets ou des queus. Il est "orienté message" et non "orienté paquet" comme TCP. Ainsi, chaque bloc d'information est livré dans un message, avec un peu de chance auto-description. L'implémentation de votre maman vous donne alors une API où vous pouvez faire des choses comme msg.get("offre")

JMS et AMQP sont des exemples de spécification. Les implémentations MOM sont les vrais produits qui implémentent ces spécifications: TIBCO EMS, Websphere MQ, MSMQ, Solace, and many, many others

Apache Camel-approche très intéressante sur la façon de configurer les workflows dans ce monde MOM. Mais un concept plus avancé.

Architecture orientée services( SOA), Bus de Service/ESB ne sont que de nouveaux mots à la mode pour ce qui était appelé EAI (Enterprise Application Integration). Ils sont des recommandations sur la façon d'utiliser ' maman et une façon de payer des consultants très chers. Ce que " ESB "ajoute à une maman, c'est l'idée de considérer vos éditeurs comme des "services" fournissant un service. Autrement dit, Ne pensez pas trop à ce que veut un consommateur en ce moment. Il pourrait y avoir 5 consommateurs à l'avenir et cet éditeur devrait fournir un service, pas "créer l'information que le consommateur veut". (Cela deviendra plus clair une fois que votre architecture sera passée à 5+ applications). Vous devriez aussi avoir un modèle d'objet commun, peut-être en XML pour simplifiez les choses entre les applications.

Mule-une forme D'ESB, mais ce n'est pas exactement le courant principal. Dans 5 ans, la plupart de l'action middleware pourrait avoir été déplacé à AMQP ou quelque chose d'autre entièrement.

EJBs: L'idée de Sun de classes Java sophistiquées qui fonctionnent dans un conteneur. Censé faciliter le développement des applications. Mais dans de nombreux cas, cela rend les choses plus complexes. Une meilleure alternative serait le "printemps" - mais les EJB sont sur autre chose (pas seulement maman). Son plus sur la façon de développer des applications plus importantes (voir modèle du CIO).

si vous cherchez par où commencer: je vous recommande d'en savoir plus sur JMS (tous les autres MOM's sont simliar et JMS est la base de EJB's/ Mule, ...) et, à moins que vous n'ayez des exigences de performance très élevées, considérez les messages comme un TextMessage contenant du XML. La plupart des outils sont disponibles dans ce domaine. Ou encore plus simple mais moins sophistiqué, un MapMessage avec des paires clé/valeur.

3
répondu Axel Podehl 2012-04-17 09:31:06

prenant toutes vos exigences et les emballant dans une requête, je suis tombé sur un excellent étude de cas qui devrait répondre à vos besoins:

je suis allé de l'avant et fulltext a cherché le livre en utilisant Amazon "Rechercher dans ce livre". Il couvre tous les cas d'intégration dont vous avez parlé, semble être complet, et les étapes vous à travers la conception complète et processus de mise en œuvre.

je suis gêné de l'état, je n'ai pas le temps de lire ce moi-même, mais je recommande fortement d'utiliser les mêmes outils que j'ai fait pour voir si elle correspond à vos besoins avant d'investir dans une copie. Il semble plus complet, plus complet, et plus utile que de vous tromper sur un grand nombre de documentation incomplète ou de transformer le contenu en une réponse ici.

1
répondu MrGomez 2012-04-09 19:00:15

Vous mélangez beaucoup de différents concepts et technologies à différents niveaux d'abstraction. Mais tous vos concepts ont quelque chose à voir avec l'intégration d'applications (d'entreprise). Je vais essayer de commenter vos définitions:

  • Architecture orientée services (SOA)

    L'AAS fournit un ensemble de principes et de méthodologies pour intégrer les applications existantes sous forme d'unités à couplage lâche. Selon les modèles D'intégration des entreprises (Voir ci-dessous): " SOAs flouter la ligne entre intégration et applications réparties".
  • Bus de Service / ESB

    L'ESB est un concept principal de SOA pour réduire les dépendances dans les applications d'un SOA. Au lieu de beaucoup de dépendances entre les applications chaque application est connectée à L'ESB.
  • Middleware orienté Message (MOM)

    Le MOM est une infrastructure pour l'envoi et la réception de messages entre les systèmes distribués. Ce est utilisé pour intégrer des applications. MAMAN c'était le marteau d'or avant que SOA ne fasse la une. Puisque les deux sont utiles, de grandes suites d'intégration fournit à la fois ESB et maman (ou utiliser maman à l'intérieur de leur ESB).
  • Message De La File D'Attente

    Une file d'attente de messages n'est qu'un détail technique dans L'architecture MOM. Lorsque l'envoi et la réception des messages sont découplés, les messages sont stockés dans des files d'attente jusqu'à ce que le destinataire soit prêt.
  • Apache Camel

    Lorsque le livre Modèles D'Intégration D'Entreprise: Conception, Construction, et déployer des Solutions de messagerie a frappé le marché, certaines solutions logicielles ont été créés qui prévoit la mise en œuvre pour les modèles dans ce livre. Le chameau Apache en fait partie. Camel fait également partie d'Apache ServiceMix qui est également un ESB open source. FuseSource et Talend emballent Apache ServiceMix, Apache Camel et Apache Active MQ (MOM) en paquets avec support commercial.
  • Mule

    Mule est également une ESB open source et l'intégration plate.
  • EJBs

    De Wikipedia: Enterprise JavaBeans (EJB) est une architecture de composants gérée côté serveur pour la construction modulaire d'applications d'entreprise. cela signifie que EJB est un composant d'une application et n'a rien à voir avec l'intégration des applications.
  • Paramètres Et Les Itinéraires

    Lorsque vous travaillez avec Apache Camel, vous concevez des routes entre les points terminaux, voir un tutoriel. Bref, les messages entrent/sortent de votre système via des points terminaux et sont traités dans un flux défini par une route.
  • JMS

    JMS ou Java Message Service est un Middleware orienté Message (MOM) avec une API Java standardisée.
1
répondu ChrLipp 2012-04-16 14:23:10

Enterprise Application Integration (EAI) est la clé pour connecter des applications professionnelles avec des systèmes hétérogènes. Au fil des ans, les architectes de solutions d'intégration ont inventé leur propre mélange de motifs de différentes façons. Mais la plupart de ces architectures ont des similitudes, initiant un ensemble de normes largement acceptées dans l'architecture des modèles d'intégration. La plupart de ces normes sont décrites dans le catalogue Enterprise Integration Patterns disponible à: http://www.eaipatterns.com/toc.html.

WSO2 ESB

WSO2 Enterprise Service Bus (ESB) 4.7.0 documentation! WSO2 ESB est une ESB rapide, légère, 100% open source, et conviviale distribuée sous la licence logicielle Apache v2.0. WSO2 ESB permet aux administrateurs système et aux développeurs de configurer commodément le routage des messages, la médiation, la transformation, la journalisation, la planification des tâches, le basculement, l'équilibrage de charge, et plus encore. Il prend en charge la plupart des les modèles D'intégration D'entreprise (EIPS) couramment utilisés permettent la commutation de transport, le concours complet, la médiation basée sur les règles et la médiation basée sur les priorités pour les exigences d'intégration avancées. L'exécution ESB est conçue pour être complètement asynchrone, sans blocage et en continu sur la base du moteur de médiation Synapse D'Apache.

0
répondu Rashod Chamikara Bandara 2013-11-05 06:32:13