2016-05-05 6 views
7

Ich habe ein wenig gegoogelt eine gute Erklärung für die Differenz zwischen den beiden oben genannten Strategien Remote zu finden, das heißt transparente Remote und Standorttransparenz.Unterschied zwischen transparenten Remoting- und Standorttransparenz

Soweit ich weiß, ist der ehemalige an der Basis von Java RMI, die letztere an der Basis von Akka. Ich weiß sehr gut Java RMI und ich verstehe, was transparente Remoting bedeutet, aber was ist mit Akka?

Vielen Dank für alle Antworten.

Antwort

11

Die beiden sind eigentlich Gegensätze.

"Transparentes Remoting" bedeutet, Remote-Anrufe wie lokale Anrufe aussehen zu lassen. "Standorttransparenz" bedeutet, dass lokale Anrufe wie entfernte Anrufe aussehen.

Während dies nicht wie eine große Sache klingt-es ist. Es geht um die Annahmen, die Sie treffen können. Typischerweise haben lokale Aufrufe eine viel höhere Genauigkeit, da es viel weniger mögliche Fehler- und Fehlermodi gibt. Durch Umarmen dieser Fehler- und Fehlermodi in "Standorttransparenz" spielt es keine Rolle technisch wo der Absender und Empfänger ist befindet sich.

Mit "Transparent Remoting" ist es nicht offensichtlich, dass Sie eine asynchrone und binäre Grenze überschreiten und ob der aufrufende Thread in der Lage ist, Fortschritte zu machen, ob es eine Benachrichtigung über Kommunikationsprobleme oder Informationsverlust gibt oder Korruption.

Ich hoffe, dass Ihre Frage beantwortet,

Cheers, √

3

Siehe docs:

Der vorherige Abschnitt beschreibt, wie Schauspieler Pfade Standorttransparenz zu ermöglichen, verwendet. Diese spezielle Funktion verdient einige extra Erklärung, weil der verwandte Begriff "transparente Remoting" wurde ganz anders im Zusammenhang mit Programmiersprachen, Plattformen und Technologien verwendet.

Grundsätzlich ist transparent remoting an RMI gebunden (wie man selbst gesagt) und Mittel Methoden für Objekte aufrufen, ohne zu wissen, ob die Methoden lokal ausgeführt oder die Daten über das Netzwerk wurde auf einem entfernten Objekt ausgeführt zu send .

Location Transparenz ist eine ähnliche Philosophie, aber im Zusammenhang mit Schauspielern. Das bedeutet, dass die Akka-API nicht zwischen lokalen und entfernten Akteuren unterscheidet. Genauer gesagt bedeutet dies, dass, obwohl ein Akteur entweder in einem lokalen oder einem entfernten Akteurs-System läuft, sobald Sie ihn erhalten (unter Verwendung des Systemnamens, des Akteursnamens und des entfernten Rechnerhosts + Ports), Sie ihn genauso benutzen, als ob Sie dies tun würden liefen lokal. Wenn Sie einen Akteur von lokal auf Remote-Betrieb umstellen (oder umgekehrt), müssen Sie nur den Actor Lookup ändern (da er sich jetzt auf einem anderen Host befindet). Aber sobald ein ActorRef erhalten wurde, interessiert der Rest Ihres Codes nicht, wenn der Schauspieler lokal oder remote ausgeführt wird.

Siehe auch here.