Das Folgende ist ein Vergleich mehrerer häufig verwendeter Kommunikationsprotokolle und der Protokollleistung in der Java-Sprache
1.RMI
RMI-Aufruf Wie erwartet ist RMI natürlich am schnellsten und benötigt in fast allen Fällen die wenigsten Millisekunden. Gerade wenn die Datenstruktur komplex und die Datenmenge groß ist, wird der Abstand zu anderen Protokollen besonders deutlich. Um die Leistung von RMI voll auszuschöpfen, haben wir eine separate Testklasse ohne Verwendung von Spring erstellt und dabei die ursprüngliche RMI-Form (die das UnicastRemoteObject-Objekt erbt) verwendet, um Dienste bereitzustellen und Remote-Anrufe zu tätigen, und die Effizienz mit dem RMI-Paket von Spring verglichen POJO. Die Ergebnisse zeigen, dass die beiden grundsätzlich gleich sind und der von Spring bereitgestellte Service etwas schneller ist. Zunächst wird angenommen, dass dies daran liegt, dass die Proxy- und Caching-Mechanismen von Spring relativ leistungsfähig sind, was die Zeit für den erneuten Erwerb von Objekten spart.
2. Hessian
Hessian nennt den Resin-Server der Firma Caucho, der als der schnellste Server gilt und im Java-Bereich einen gewissen Ruf genießt. Als Bestandteil von Harz ist das Design von Hessian außerdem sehr stromlinienförmig und effizient, und der tatsächliche Betrieb hat dies bewiesen. Im Durchschnitt ist Hessian etwa 20 % langsamer als RMI, dies kann sich jedoch nur dann widerspiegeln, wenn die Datenmenge besonders groß und die Datenstruktur komplex ist. Bei mittleren oder kleinen Datenmengen ist Hessian nicht langsamer als RMI. Der Vorteil von Hessisch besteht darin, dass es rationalisiert und effizient ist, sprachübergreifend verwendet werden kann und die Protokollspezifikationen öffentlich sind. Wir können Implementierungen seiner Protokolle für jede Sprache entwickeln. Zu den derzeit implementierten Sprachen gehören: Java, C++, .net, Python und Ruby. Es gibt noch keine Implementierung von Delphi. Darüber hinaus lässt sich Hessian sehr gut in den WEB-Server integrieren und bietet große Vorteile bei der Verwaltung des gleichzeitigen Zugriffs einer großen Anzahl von Benutzern, der Thread-Warteschlange, der Ausnahmebehandlung usw garantiert durch einen ausgereiften WEB-Server. RMI selbst stellt keinen Multithread-Server bereit. Darüber hinaus muss RMI einen Firewall-Port öffnen, Hessian jedoch nicht.
3.Burlap
Burlap und Hessian sind beide Open-Source-Produkte der Firma Caucho, aber Hessian verwendet das Binärformat, während Burlap das XML-Format verwendet. Die Testergebnisse zeigen, dass die Effizienz von Burlap immer noch akzeptabel ist, wenn die Datenstruktur nicht komplex und die Datenmenge mittelgroß ist. Bei großen Datenmengen nimmt die Effizienz jedoch stark ab. Im Durchschnitt ist die Anrufzeit pro Millisekunde von Burlap dreimal so hoch wie die von RMI. Ich denke, es gibt zwei Gründe für die geringe Effizienz. Der eine ist, dass es zu viele XML-Datenbeschreibungsinhalte gibt und das Übertragungsvolumen derselben Datenstruktur viel größer ist. Andererseits ist das Parsen von XML relativ ressourcenintensiv, insbesondere Dies gilt insbesondere für große Datenmengen.
4.HttpInvoker
HttpInvoker ist die von Spring Framework bereitgestellte JAVA-Remoteaufrufmethode, die den Java-Serialisierungsmechanismus verwendet, um die Übertragung von Objekten abzuwickeln. Den Testergebnissen nach zu urteilen ist seine Effizienz immer noch akzeptabel, im Grunde die gleiche wie bei RMI. Es kann jedoch nur für die Kommunikation zwischen JAVA-Sprachen verwendet werden und sowohl der Client als auch der Server müssen das SPRING-Framework verwenden. Darüber hinaus wurde HttpInvoker nicht in der Praxis getestet und es wurden noch keine Projekte gefunden, die dieses Protokoll anwenden.
5.Webservice
Bei diesem Test wurde die AXIS-Komponente von Apache ausgewählt, da die Implementierung von WEB SERVICE relativ ausgereift und im Bereich WEB SERVICE etabliert ist. Um nur die Zeit der Datenübertragung, Kodierung und Dekodierung zu testen, verwenden sowohl der Client als auch der Server Caching, und das Objekt muss nur einmal instanziiert werden. Testergebnisse zeigen jedoch, dass die Effizienz von Webdiensten immer noch zehnmal langsamer ist als bei anderen Kommunikationsprotokollen. Berücksichtigt man die Übertragung mehrerer Referenzen, die auf dasselbe Objekt verweisen, hinken Webservices noch weiter hinterher. Denn RMI, Hessian und andere Protokolle können Referenzen übergeben und die Anzahl der Referenzen, die ein Webdienst hat, hängt davon ab, wie viele Kopien von Objektentitäten er hat. Zu viele redundante Informationen, die vom Webdienst übertragen werden, sind einer der Gründe für die langsame Geschwindigkeit. Die Überwachung ergab, dass für dieselbe Zugriffsanforderung, die dieselben Daten beschreibt, die vom Webdienst zurückgegebene Datenmenge das 6,5-fache des Hessischen Protokolls beträgt. Darüber hinaus nimmt die Verarbeitung von WEB SERVICE viel Zeit in Anspruch. Der aktuelle XML-Parser ist im Allgemeinen nicht effizient und die Verarbeitung von XML-Beans nimmt viele Ressourcen in Anspruch. Den Testergebnissen zufolge sind Remote-Aufrufe schneller als lokale Aufrufe, was auch zeigt, dass die Zeit hauptsächlich für die Kodierung und Dekodierung von XML-Dateien aufgewendet wird. Dies ist schwerwiegender als redundante Informationen. Redundante Informationen belegen nur die Netzwerkbandbreite, und der Ressourcenverbrauch jedes Anrufs wirkt sich direkt auf die Auslastungskapazität des Servers aus. (MS-Ingenieure sagten einmal, dass WEB SERVICE nicht mehr als 100 gleichzeitige Benutzer laden kann.) Während des Tests wurde auch festgestellt, dass die Codierung von Webdiensten nicht sehr praktisch ist. Für nicht grundlegende Typen müssen Serialisierungs- und Deserialisierungsklassen einzeln registriert werden Erstens, was sehr schwierig ist. Das Generieren von Stubs ist ermüdender und nicht so reibungslos und prägnant wie die Verarbeitung mit Feder + RMI/Hessian. Darüber hinaus unterstützt der Webdienst keine Sammlungstypen und kann nur Arrays verwenden, was unpraktisch ist.
Das obige ist der detaillierte Inhalt vonWelche Protokolle unterstützt die Java-Sprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!