Frage

Die Argumente über die Einfachheit der Lösungen unter Verwendung von XML-RPC oder REST sind leicht zu verstehen und schwer zu argumentieren, mit.

Ich habe oft auch Argumente gehört, dass der erhöhte Aufwand für SOAP deutlich verwendete Bandbreite auswirken kann und möglicherweise sogar Latenz. Ich möchte die Ergebnisse eines Tests, um zu sehen, dass die Auswirkungen quantifiziert. Jeder weiß, eine gute Quelle für diese Informationen?

War es hilfreich?

Lösung

Es gibt einige Studien, die in Bezug auf das getan haben, die Sie informativ finden könnten. Bitte beachten Sie folgende Möglichkeiten:

Es gibt auch eine (etwas veraltet) interessante Performance Gespräch über das Thema auf dem MSDN Foren .

Kurz gesagt - die meisten dieser Quellen scheinen, dass SOAP und REST zu vereinbaren ist in etwa die gleiche Leistung für allgemeine Zwecke Daten. Einige Ergebnisse scheinen jedoch darauf hin, dass mit binären Daten, REST tatsächlich weniger performant sein kann. Sehen Sie die Links im Forum habe ich für weitere Einzelheiten über dieses verknüpft.

Andere Tipps

Die wichtigsten Auswirkungen der Geschwindigkeit von SOAP vs. REST haben nicht mit Drahtgeschwindigkeit, aber mit cachability zu tun. REST schlägt die Semantik Web verwenden, anstatt zu versuchen, um Tunnel über sie via XML, so RESTful Web-Service im Allgemeinen richtig entwickelt, um Cache-Header zu verwenden, so dass sie gut mit dem Standard-Infrastruktur des Web, wie die Caching-Proxies und sogar lokales Browser-Caches. Auch die Semantik Web verwenden bedeutet, dass Dinge wie ETags und automatische ZIP-Komprimierung sind gut Weise verstanden Effizienz zu erhöhen.

.. und jetzt Sie sagen, Sie Benchmarks wollen. Nun, mit dem Google-Hilfe, ich gefunden ein Kerl deren Prüfung zeigt REST sein 4-6x schneller als SOAP und andere Papier den REST auch begünstigt.

REST als Protokoll wird nicht definiert, jede Form von Nachrichtenumschlag, während SOAP diesen Standard hat.

Deshalb, seine etwas vereinfachend, die beiden zu versuchen und zu vergleichen, sie sind Äpfel mit Birnen.

Das hieß, ein SOAP-Umschlag (abzüglich die Daten) sind nur wenige k, so sollte es kein merklicher Unterschied in der Geschwindigkeit sein, vorausgesetzt, Sie sowohl über SOAP und REST ein serialisierte Objekt abrufen.

SOAP und anderes Protokoll, das im allgemeinen XML verwendet blähen Ihre Nachrichten ziemlich viel - dies je nach dem Zusammenhang ein Problem sein kann oder nicht

.

So etwas wie JSON wäre kompakter und vielleicht schneller serialise / deserialise - aber nicht ausschließlich aus diesem Grunde verwenden. Tun Sie, was Sie fühlen, macht Sinn, zu der Zeit, und ändern Sie es, wenn es ein Problem ist.

Alles, was normalerweise HTTP verwendet (Es sei denn, es wird eine HTTP 1.1 Keep-Alive-Verbindung wiederverwendet, die viele Implementierungen nicht), um eine neue TCP-Verbindung für jede Anforderung startet; das ist ziemlich schlecht, vor allem über die Verbindungen hoher Latenz. HTTPS ist viel schlimmer. Wenn Sie eine Menge von kurzen Anfragen von einem Sender an einen Empfänger haben, darüber nachzudenken, wie man diesen Aufwand aus nehmen.

HTTP Verwendung für jede Art von RPC (ob SOAP oder etwas anderes) wird immer diesen Overhead verursachen. Andere RPC-Protokolle im Allgemeinen können Sie eine Verbindung offen halten.

Aufbauend auf "PJZ" ‚s Antwort.

Wenn Sie eine Menge Informationen bekommen (erhalten * Art von Anrufen) auf Basis von SOAP-Operationen, zur Zeit gibt es keine Möglichkeit, sie cachen kann. Aber wenn Sie die gleichen Vorgänge mit REST implementieren sind, gibt es eine Möglichkeit, dass die Daten (abhängig von Ihrem Business-Kontext) zwischengespeichert werden können, wie oben erwähnt. Da SOAP POST für seine Operationen verwendet, kann es nicht die Informationen auf der Serverseite zwischenzuspeichern.

SOAP ist definitiv langsamer. Nutzlasten sind deutlich größer, die langsamer sind zu montieren, Transport, analysieren, zu validieren und zu verarbeiten.

Ich weiß nicht, jeder Antwort auf die Benchmarking-Frage ist jedoch, was ich weiß über das SOAP-Format ist ja, es Overhead hat, aber das Overhead nicht erhöht pro Anfrage: Wenn Sie ein Element haben gesendet der Web-Service, haben Sie Overhead + ein Element Konstruktion, und wenn Sie 1000 Elemente an den Web Service gesendet, Sie haben Kopf + 1000 Elementbauweise. Der Overhead tritt als die XML-Anforderung für die jeweilige Operation formatiert ist, aber jedes einzelne Argument Element in der Anforderung wird das gleiche formatiert.

Wenn Sie kleben wiederholbaren, kurze Ausbrüche von Daten (etwa 500 Elemente), sollte die Geschwindigkeit acceptible sein.

Ich denke, die wichtigste Frage ist hier, wie RPC mit SOAP vergleicht.

sie beide dienen den gleichen Ansatz der Kommunikation Abstraktion durch Stub-Objekte mit Ihnen und primitiven / komplexen Datentypen, die Sie zurück, ohne wirklich zu wissen bekommen arbeiten, wie das alles unter behandelt wird.

Ich würde immer lieber (JSON-) RPC weil

  • Es ist leicht
  • gibt es viele große Implementierungen für alle Programmiersprachen gibt
  • es ist einfach zu erlernen / Nutzung / erstellen
  • es ist schnell (vor allem mit JSON)

obwohl es Gründe, die Sie SOAP verwenden sollten, das heißt, wenn Sie Parameter müssen Namensgebung, anstatt sich auf ihre korrekte Reihenfolge

einige weitere Details, die Sie von diesem Stackoverflow Frage erhalten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top