it-swarm.com.de

Was ist der Unterschied zwischen einem Top-Down-Webdienst und einem Bottom-Up-Webdienst?

Was ist in Java der Unterschied zwischen einem Top-Down-Webdienst und einem Bottom-Up-Webdienst? Was ist auch der Unterschied zwischen einem SOAP und einem REST-vollständigen Webdienst?

46
Maverick

Top-down bedeutet, dass Sie mit einer WSDL beginnen und anschließend alle erforderlichen Gerüste in Java erstellen.

Bottom-up bedeutet, dass Sie mit einer Java-Methode beginnen und daraus die WSDL generieren.

SOAP bedeutet, dass die URL für alle Aufrufe gleich ist und sich nur die Parameter für die Java-Methode unterscheiden. REST bedeutet, dass die URL und die aufgerufene HTTP-Methode die auszuführende Operation widerspiegeln.

Contract-first versus Contract-last

Bottom-Up: Der Ansatz nimmt eine übergeordnete Definition des Problems vor und unterteilt es in Teilprobleme. 

d.h. Kontrakt-letzter. Es gibt die folgenden Vorteile, um einen Bottom-Up-Entwicklungsstil zu bevorzugen.

  • Code zuerst 
  • Anfangsstadium sehr einfach zu entwickeln. 

Nachteile: 

  • Wartung ist sehr sehr schwer.
  • Eng verbunden

Top-Down: Denken Sie an die Grundfunktionen und die benötigten Teile. 

d.h. Vertrag zuerst. Es gibt folgende Gründe, einen Top-Down-Entwicklungsstil zu bevorzugen.

1. Fragility Der vertraglich letzte Entwicklungsstil führt dazu, dass Ihr Webservicevertrag (WSDL und Ihre XSD) aus Ihrem Java-Vertrag (in der Regel eine Schnittstelle) generiert wird. Wenn Sie diesen Ansatz verwenden, können Sie nicht garantieren, dass der Vertrag im Laufe der Zeit konstant bleibt. Jedes Mal, wenn Sie Ihren Java-Code ändern und erneut bereitstellen, kann es zu späteren Änderungen des Webservicevertrags kommen. __ Außerdem generieren nicht alle SOAP - Stapel denselben Webservicevertrag aus einem Java-Vertrag. Dies bedeutet, dass Sie Ihren aktuellen SOAP -Stack für einen anderen Stapel (aus welchem ​​Grund auch immer) ändern. Möglicherweise wird auch Ihr Webservicevertrag geändert. Wenn ein Webservicevertrag geändert wird, müssen die Benutzer des Vertrags dazu aufgefordert werden den neuen Vertrag und möglicherweise dessen Code ändern, um etwaige Vertragsänderungen zu berücksichtigen ..__ Damit ein Vertrag nützlich ist, muss er so lange wie möglich konstant bleiben. Wenn sich ein Vertrag ändert, müssen Sie sich an alle Benutzer Ihres Dienstes wenden und sie anweisen, die neue Version des Vertrags zu erhalten.

2. Leistung Wenn Java automatisch in XML umgewandelt wird, gibt es keine Möglichkeit, sich zu vergewissern, was über die Verbindung gesendet wird. Ein Objekt kann auf ein anderes Objekt verweisen, das sich auf ein anderes bezieht, usw. Am Ende wird die Hälfte der Objekte auf dem Heapspeicher in Ihrer virtuellen Maschine möglicherweise in XML konvertiert, was zu langsamen Antwortzeiten führt. Zunächst beschreiben Sie explizit, welche XML-Daten wohin gesendet werden. So stellen Sie sicher, dass es genau Ihren Wünschen entspricht.

3. Wiederverwendbarkeit Durch die Definition Ihres Schemas in einer separaten Datei können Sie diese Datei in verschiedenen Szenarien wiederverwenden.

4. Versionierung Obwohl ein Vertrag so lange wie möglich konstant bleiben muss, müssen sie manchmal geändert werden. In Java führt dies normalerweise zu einer neuen Java-Schnittstelle, z. B. AirlineService2, und einer (neuen) Implementierung dieser Schnittstelle. Natürlich muss der alte Dienst beibehalten werden, da es möglicherweise Clients gibt, die noch nicht migriert sind. Wenn Sie Contract-First verwenden, können wir eine lockerere Kopplung zwischen Vertrag und Implementierung herstellen. Durch eine solche lockere Kopplung können wir beide Vertragsversionen in einer Klasse implementieren. 

 enter image description here

11
Premraj

@mad_programmer - Sie meinen, Web Services mit einem Bottom-Up- oder Top-Down-Ansatz zu erstellen ..__ Zuerst müssen Sie die Klassen und Geschäftslogik als Java-Code programmieren und dann den Web-Service-Vertrag (d. h. WSDL) daraus generieren. Der letztere Ansatz bedeutet das Gegenteil (Generierung von Klassenstubs aus der WSDL). 

7
Anthony Accioly

Um die Antwort von andersen zu unterstützen, möchte ich einen Punkt hinzufügen. Grundsätzlich neigen die Leute dazu, den Bottom-up-Ansatz zu verwenden, da wir in den meisten Fällen bereits mit dem Schreiben der Beans, der Geschäftslogik usw. begonnen hätten. In der Persistence-Schicht erstellen wir die Web-Services, wsdl's etc . Wo wie in einem neuen Projekt, in dem Sie etwas von Grund auf neu erstellen, können wir den Top-Down-Ansatz verwenden, in dem wir nur die Wsdl und das Gebäude schreiben Das Skelett würde Ihnen die Beans, Implementierungen, Schnittstellen usw. geben. Denken Sie jedoch daran, dass der Computer nicht die gewünschte Logik erzeugen kann. Sie müssen also immer noch das gesamte Projekt durchgehen und die Lücken füllen.

5
raja777m

Die Antwort, wenn ein Projekt von Grund auf neu gestartet wird, ist der Ansatz, eine sehr einfache Schnittstelle zu erstellen und daraus eine WSDl zu erstellen. Dies erspart Ihnen das Schreiben komplexer WSDl. Dann können wir projektspezifische Operationen direkt in WSDl hinzufügen. Sobald WSDl abgeschlossen ist, können wir mit dem Top-Down-Ansatz beginnen.

4
Varun

In Top Down definieren Sie, was Sie zuerst tun werden. d. h. Ihr wsdl . Und dann fahren Sie mit der eigentlichen Entwicklung fort . Obwohl es schwierig erscheint, zuerst wsdl zu erstellen, empfiehlt es sich, das empfohlene (Eclipse) zu verwenden, da dies auf lange Sicht Ihre Entwicklung vereinfacht.

Genau das Gegenteil passiert von unten nach oben. Wir beginnen mit dem Codeteil und erstellen dann mit integrierten Tools wsdl. Dies mag beim Start einfach erscheinen, führt jedoch zu Verwirrung, wenn Sie mit der Komplexität Ihres Codes viel anfangen. 

0
VDevD