Ich muss Web Services in Java lernen. Was sind die verschiedenen Typen darin? [geschlossen]

91

Vor kurzem habe ich mich entschlossen, etwas über Java-Webdienste zu lernen. Als ich anfing, ein Tutorial für Java-Webdienste in Google zu durchsuchen, stellte ich fest, dass es viele Arten von XML-basierten, SOAP-basierten und auch RESTful-Webservices gibt.

Außerdem habe ich festgestellt, dass es eine JAX-WS-Spezifikation für XML-basierte Webdienste und eine JAX-RS-Spezifikation für die Erstellung von RESTful-Webservices gibt.

Q1) Ich war verwirrt. Es wäre großartig, wenn mir jemand helfen könnte, den Unterschied zwischen diesen verschiedenen Arten von Webservices zu verstehen, damit ich entscheiden kann, welche ich zuerst lernen möchte.

F2) Außerdem möchte ich ausführlich über das Erstellen verschiedener Arten von Webdiensten in Java lernen. Gibt es ein Tutorial oder Ressourcen, die einen Einblick in jede Art von Webservice und einen Vergleich zwischen ihnen geben können?

F3) basierend auf welchen Szenarien und Bedingungen sollte ich entscheiden, dass ich einen XML-basierten Webdienst anstelle eines SOAP-Dienstes erstellen möchte, oder ich sollte mich für den RESTful-Dienst entscheiden.

Rajesh Pantula
quelle

Antworten:

142
  1. SOAP-Webdienste sind standardbasiert und werden von fast jeder Softwareplattform unterstützt: Sie basieren stark auf XML und unterstützen Transaktionen, Sicherheit, asynchrone Nachrichten und viele andere Probleme. Es ist ein ziemlich großer und komplizierter Standard, deckt jedoch fast jede Messaging-Situation ab. Auf der anderen Seite stützen sich RESTful-Dienste auf das HTTP-Protokoll und die Verben (GET, POST, PUT, DELETE), um Nachrichten in jedem Format auszutauschen, vorzugsweise JSON und XML. Es ist ein ziemlich einfacher und eleganter architektonischer Ansatz.
  2. Wie in jedem Thema in der Java-Welt gibt es mehrere Bibliotheken zum Erstellen / Konsumieren von Webdiensten. Auf der SOAP-Seite haben Sie den JAX-WS-Standard und die Apache-Achse , und in REST können Sie unter anderem Restlets oder Spring REST-Funktionen verwenden .

In Frage 3 heißt es in diesem Artikel , dass RESTful Services in diesen Szenarien geeignet sind:

  • Wenn Sie eine begrenzte Bandbreite haben
  • Wenn Ihre Vorgänge zustandslos sind: Von einem Aufruf zum nächsten bleiben keine Informationen erhalten, und jede Anforderung wird unabhängig behandelt.
  • Wenn Ihre Clients Caching benötigen.

Während SOAP der richtige Weg ist, wenn:

  • Wenn Sie eine asynchrone Verarbeitung benötigen
  • Wenn Sie einen formellen Vertrag / Schnittstellen benötigen
  • In Ihrem Dienst sind Vorgänge zustandsbehaftet: Beispielsweise speichern Sie Informationen / Daten auf einer Anfrage und verwenden diese gespeicherten Daten auf der nächsten.
Carlos Gavidia-Calderon
quelle
11
+1 für so klar zu sein und die Szenarien
anzugeben
Klare und klare Antwort.
Krishna
+1 für eine gute Antwort ... !!!
Shailesh Saxena
Gute Antwort: Können Sie mir sagen, was staatenlose / zustandsbehaftete Operationen sind?
Keerthivasan
Ich habe die Antwort einschließlich dieser Konzepte bearbeitet.
Carlos Gavidia-Calderon
13

Q1) Hier sind einige Dinge zu lesen oder mehr zu googeln:

Hauptunterschiede zwischen SOAP- und RESTful-Webdiensten in Java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

Es liegt an Ihnen, was Sie zuerst lernen möchten. Ich würde empfehlen, dass Sie sich das CXF- Framework ansehen . Sie können beide Ruhe- / Seifendienste erstellen.

F2) Hier sind einige gute Tutorials für Seife (ich habe sie mit einem Lesezeichen versehen):

http://united-coders.com/phillip-steffensen/developing-a-simple-soap-webservice-using-spring-301-and-apache-cxf-226

http://www.benmccann.com/blog/web-services-tutorial-with-apache-cxf/

http://www.mastertheboss.com/web-interfaces/337-apache-cxf-interceptors.html

Der beste Weg zu lernen ist nicht nur das Lesen von Tutorials. Aber Sie würden zuerst Tutorials durchgehen, um eine grundlegende Idee zu erhalten, damit Sie sehen können, dass Sie in der Lage sind, etwas zu produzieren (oder nicht), und das würde Sie motivieren.

SO ist eine großartige Möglichkeit, bestimmte Technologien (oder mehr) zu erlernen, Menschen stellen viele seltsame Fragen und es gibt immer seltsamere Antworten. Insgesamt erfahren Sie jedoch, wie Sie Probleme auf andere Weise lösen können. Vielleicht wusstest du das nicht, vielleicht kannst du es dir nicht selbst vorstellen.

Abonnieren Sie einige Tags, die für Sie interessant und hartnäckig sind, stellen Sie gute Fragen und versuchen Sie, gute Antworten zu geben. Ich garantiere Ihnen, dass Sie dies im Laufe der Zeit lernen werden (wenn Sie hartnäckig sind).

F3) Sie müssen diese Frage selbst beantworten. Zuerst müssen Sie sich überlegen, was Sie bauen möchten. Schließlich müssen Sie sich ein Mini-Projekt oder etwas anderes überlegen und es von dort übernehmen.

Wenn Sie CXF als Framework für die Erstellung von REST / SOAP-Diensten verwenden möchten, empfehlen wir Ihnen, dieses Buch nachzuschlagen Apache CXF Web Service Development. Es ist fantastisch, nicht schwer zu lesen und auch nicht zu groß (Win Win).

Ameise
quelle
7

Der SOAP WS unterstützt sowohl Integrationsstile für Remoteprozeduraufrufe (dh RPC) als auch für Nachrichtenorientierte Middleware (MOM). Der Restful Web Service unterstützt nur den RPC-Integrationsstil.

Der SOAP WS ist transportprotokollneutral. Unterstützt mehrere Protokolle wie HTTP (S), Messaging, TCP, UDP SMTP usw. Der REST ist transportprotokollspezifisch. Unterstützt nur HTTP- oder HTTPS-Protokolle.

Der SOAP WS erlaubt nur das XML-Datenformat. Sie definieren Operationen, die über den POST tunneln. Der Schwerpunkt liegt auf dem Zugriff auf die genannten Operationen und der Bereitstellung der Anwendungslogik als Dienst. Der REST erlaubt mehrere Datenformate wie XML, JSON-Daten, Text, HTML usw. Jeder Browser kann verwendet werden, da der REST-Ansatz die Standard-Weboperationen GET, PUT, POST und DELETE verwendet. Der Schwerpunkt liegt auf dem Zugriff auf die genannten Ressourcen und der Bereitstellung der Daten als Dienst. REST unterstützt AJAX. Es kann das XMLHttpRequest-Objekt verwenden. Gut für zustandslose CRUD-Vorgänge (Erstellen, Lesen, Aktualisieren und Löschen). GET - repräsent () POST - acceptRepresention () PUT - storeRepresention () DELETE - removeRepresention ()

SOAP-basierte Lesevorgänge können nicht zwischengespeichert werden. REST-basierte Lesevorgänge können zwischengespeichert werden. Leistung und Skalierung besser. SOAP WS unterstützt sowohl SSL-Sicherheit als auch WS-Sicherheit, wodurch einige Sicherheitsfunktionen für Unternehmen hinzugefügt werden, z. B. die Aufrechterhaltung der Sicherheit bis zu dem Punkt, an dem sie benötigt wird, die Aufrechterhaltung von Identitäten über Vermittler und nicht nur die Punkt-zu-Punkt-SSL-Sicherheit, mit der verschiedene Teile der Nachricht gesichert werden verschiedene Sicherheitsalgorithmen usw. Der REST unterstützt nur Punkt-zu-Punkt-SSL-Sicherheit. Das SSL verschlüsselt die gesamte Nachricht, unabhängig davon, ob sie vertraulich ist oder nicht. Der SOAP bietet umfassende Unterstützung sowohl für das ACID-basierte Transaktionsmanagement für kurzlebige Transaktionen als auch für das kompensationsbasierte Transaktionsmanagement für langfristige Transaktionen. Es unterstützt auch das zweiphasige Festschreiben über verteilte Ressourcen hinweg. Das REST unterstützt Transaktionen,

Der SOAP verfügt über eine integrierte Erfolgs- oder Wiederholungslogik und bietet End-to-End-Zuverlässigkeit auch über SOAP-Vermittler. REST verfügt nicht über ein Standardnachrichtensystem und erwartet, dass Clients, die den Dienst aufrufen, Kommunikationsfehler durch erneutes Versuchen beheben.

Quelle http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html

murali
quelle
> Der Restful Web Service unterstützt nur den RPC-Integrationsstil. REST ist kein RPC, sagt RPC, "definieren Sie einige Methoden, die etwas bewirken", während REST sagt, "definieren Sie einige Ressourcen und sie werden diese Methoden haben". peej.co.uk/articles/rest.html
Urmalp
0

Wenn Ihre Anwendung häufig das http-Protokoll verwendet, ist REST aufgrund seines geringen Gewichts am besten geeignet. Wenn Sie wissen, dass Ihre Anwendung nur das http-Protokoll verwendet und SOAP auswählt, ist dies nicht so gut, da es schwer ist. Besser ist es, eine Entscheidung über die Auswahl des Webdienstes auf der Grundlage der von uns verwendeten Protokolle zu treffen in unseren Anwendungen.

Wohlfühlen und Programmieren
quelle