Architect möchte dringend SOAP über JMS verwenden

7

Ich habe JMS in der Vergangenheit verwendet, um Anwendungen zu erstellen, und es funktioniert großartig. Jetzt arbeite ich mit Architekten, die gerne den Spec: SOAP über Java Message Service 1.0 verwenden würden.

Diese Angabe ist übermäßig kompliziert. Ich sehe nicht viele Implementierungen (neben den Anbietern, die auf die Spezifikation drängen).

Verwendet jemand hier diese Spezifikation in einer Produktionsumgebung? Was ist Ihr Hauptvorteil bei der Verwendung dieser Spezifikation?

Link: Ссылка

    
Aerosteak 13.04.2010, 12:14
quelle

5 Antworten

13

Ich hatte das Pech mit SOAP über JMS. Es macht Sinn, wenn es für Fire-and-Forget-Operationen verwendet wird (keine in der WSDL definierte Antwortnachricht). In diesem Fall können Sie mithilfe der WSDL Clientskelette generieren und die WSDL in Ihrer Serviceregistrierung speichern. Außerdem erhalten Sie alle üblichen Vorteile von JMS (Entkoppeln von Sender und Empfänger, Lastenausgleich, Priorisierung, Sicherheit, Überbrückung zu mehreren Zielen - z. B. nicht-intrusive Auditing).

Auf der anderen Seite wird SOAP hauptsächlich für Anfragen / Antworten verwendet. Das Implementieren des Anfrage- / Antwortmusters über JMS führt zu folgenden Problemen:

  • Zeitüberschreitungen können nicht korrekt verarbeitet werden. Sie wissen nie, ob eine Anfrage immer noch auf die Zustellung wartet oder in der aufgerufenen Komponente steckengeblieben ist.
  • Antworten werden normalerweise in temporären Warteschlangen gesendet. Wenn der Client die Verbindung trennt, bevor die Antwort empfangen wird, und keine explizite Lebenszeit für die Antwortnachricht festgelegt wird, kann die temporäre Warteschlange im JMS-Server hängen bleiben, bis Sie sie erneut starten.
  • Wenn Sie einen JMS-Server in der Mitte haben, werden die Roundtrip-Zeiten dramatisch erhöht und unnötige Komplexität hinzugefügt.
  • JMS stellt ein zuverlässiges Transportmedium zur Verfügung, das den Sender vom Empfänger entkoppelt, aber im Falle einer Anfrage / Antwort sollte der Client nicht vom Server entkoppelt werden. Der Client muss wissen, ob der Server verfügbar und verfügbar ist.

Der einzige Vorteil, über den ich nachdenken könnte, ist, dass der Server verschoben oder Lasten ausgeglichen werden kann, ohne dass der Client davon weiß, aber die Verwendung von UDDI und HTTP Load Balancer ist eine bessere Lösung.

    
Miklos Csuka 14.04.2010, 11:52
quelle
6

Ich würde sagen, dass von der Suche eines Architekten die gleiche Frage wäre, warum man ein 5-schichtiges Internetmodell hat, wobei die fünfte die Anwendung ist, wenn man einfach die gesamte Anwendung auf Sockelebene codieren könnte. Die Transportschicht (JMS in Ihrem Fall) aus dem, was Ihre Anwendung produziert oder konsumiert (SOA-Nachrichten) zu abstrahieren, ist eine gute Praxis für viele Gründe, von denen unabhängige Komponententests und zukünftige Migration auf andere Plattformen die ersten sind

    
Petre Maierean 13.04.2010 12:30
quelle
3

Verdammt, ich hasse es, mit Architect Astronauts zu arbeiten. Ich fühle deinen Schmerz Bruder. Haben sie tatsächlich einen tatsächlichen, funktionalen Grund dafür, außer "es ist ein Standard"? Wird diese Entscheidung sie in einen bestimmten EE-Container-Anbieter sperren (sagen wir WebSphere)? Das ist so 2002; sehr wenige Leute haben ein echtes Bedürfnis dafür; Tatsächlich wurde SOAP von den meisten praktischen, erfolgreichen Implementierungen ziemlich ignoriert. Wenn sie nicht wirklich mehr Zuverlässigkeit benötigen, als sie von JMS oder SOAP-über-HTTP allein zur Verfügung gestellt wird, sind Sie auf einer Reise.

Überprüfen Sie die Site von Apache CFX auf einige Beispiele (spezifisch für CFX).

Ссылка

Die Faustregel wäre, wirklich das Minimum zu verwenden und nicht den vollen Stack. Wenn deine Architekten-Astronauten immer noch darauf bestehen, das Ganze zu benutzen, wirst du vielleicht in eine Welt voller Schmerzen gehen. Entschuldigung.

BEARBEITEN:

Übrigens, welchen Anwendungscontainer verwenden Sie? WebLogic, JBoss, WebSphere? Und welches Webservice-Framework? Apache CFX, Achse?

Architekten Astronauten werden gerne sagen, dass das Implementierungsdetails sind. Stier. Jede Entscheidung über ein System, dessen Änderung hohe Kosten verursacht (oder deren Implementierung erhebliche Einsparungen bringt), ist eine architektonische Entscheidung. Diese diktieren ziemlich genau, wie die Dinge implementiert werden (und was die Kosten der Veränderung sein werden). Daher ist es eine architektonische Entscheidung, früh zu entscheiden, welche Architektur Sie verwenden, außer mit sehr eigenständigen Systemen.

Einige weitere Links zu diesem kontroversen Thema:

Ссылка Ссылка

    
luis.espinal 13.04.2010 12:23
quelle
1

SOAP / JMS und SOAP / HTTP werden für verschiedene Szenarien verwendet, allerdings mit Message Fire und Request / Response. SOAP / JMS ist wirklich großartig für das Verbreiten gefundener (wenn erforderlich konvertierter) Nachrichten zu mehreren Sourecs einfach durch die Verwendung von SoapAction und Zieldienst Die JMS-Spezifikationen helfen auch beim komplexen Routing mit den Headern.

Tatsächlich können UDDI- und Build-Server AND als Quellen verwenden, um veröffentlichte WSDLs (Inline) aus massiven Middleware-Implementierungen (unabhängig von der Engine-Architektur) als SOAP / JMS-Message zu einzelnen SOA-Repository-Sinks zu erkennen. Sehr wichtig in der Unternehmensführung

Daher ist es von größter Wichtigkeit für Drahtabgriffmuster, im Wesentlichen wenn die Asynchronität von größter Wichtigkeit ist.

SOAP / HTTP und jetzt REST (mit dem Verbnomenmodell) funktionieren am besten für vertrauenswürdige Subsystemaufrufe

    
Dwai Banerjee 11.06.2015 23:50
quelle
0

Image Sie haben einen häufig verwendeten Web-Service implementiert neigt dazu, von Threads zu laufen, während Sie versprochen haben, dass keine Nachricht wird verloren sein.

Eine Webservice-Implementierung (der Server), die über eine Session - Bean kommt mit einer begrenzten Anzahl von Threads (sagen wir n aktives PE in Ihrem Pool), das möglicherweise eine Web-Service-Anfrage ausführt gleichzeitig. Was passiert mit der n + 1 Anfrage?

MRDE, haben Sie nicht Ihnen Anwendungsinhaber versprochen, dass nein? Nachricht wird verloren gehen. Das JMS isoliert diese Funktionalität also. Das Webservice-Skelett muss die Daten nur in einer Warteschlange speichern. und das gibt Zuverlässigkeit auch in Bezug auf Lastspitzen.

Das Interessante an WS über JMS ist, dass die verstrichene Zeit einer laufenden WS-Anfrage ist ziemlich kurz, so dass der Rechenaufwand sinkt wird sofort die nächste Anfrage an den Server zurückgeben.

    
Groovieman 06.08.2013 20:31
quelle

Tags und Links