2016-05-05 22 views
7

Googled un po 'per trovare una buona spiegazione della differenza tra queste due strategie di comunicazione remota, vale a dire i servizi remoti trasparente e posizione di trasparenza.Differenza tra i servizi remoti trasparente e trasparenza posizione

Per quanto ne so, il primo è alla base di Java RMI, il secondo alla base di Akka. Conosco molto bene Java RMI e ho capito cosa significa il servizio di comunicazione remota , ma che dire di Akka?

Grazie mille per tutte le risposte.

risposta

11

I due sono in realtà opposti.

"Remoto trasparente" significa rendere le chiamate remote come chiamate locali. "Trasparenza della posizione" significa rendere le chiamate locali come chiamate remote.

Anche se questo potrebbe non sembrare un grosso problema, lo è. È tutto basato sulle ipotesi che puoi fare. In genere le invocazioni locali hanno una fedeltà molto più elevata in quanto vi sono molte meno possibilità di errore e di errore. Abbracciando quelle modalità di errore e errore in "Trasparenza posizione" non importa più tecnicamente in cui il mittente e il destinatario è situato.

Con "Remoting trasparente" non è evidente che si stia attraversando un confine asincrono e binario e, in quanto tale, se il thread chiamante sarà in grado di fare progressi, se ci sarà una notifica su problemi di comunicazione o perdita di informazioni o corruzione.

Spero che risponde alla tua domanda,

Cheers, √

3

Vedere il docs:

La sezione precedente descrive come percorsi di attore sono utilizzati per consentire posizione trasparenza. Questa caratteristica speciale merita qualche spiegazione aggiuntiva , perché il termine correlato "trasparente remoto" è stato utilizzato in modo molto diverso nel contesto dei linguaggi di programmazione, delle piattaforme e delle tecnologie.

Fondamentalmente, servizi remoti trasparente è legato a RMI (come hai detto te) e mezzi invocare metodi su oggetti senza sapere se i metodi vengono eseguite localmente oppure i dati sono stati inviati sulla rete da eseguire su un oggetto remoto .

La trasparenza della posizione è una filosofia simile, ma correlata agli attori. Significa che l'API di Akka non distingue tra attori locali e remoti. Più specificamente, significa che anche se un attore può essere in esecuzione in un sistema di attori locale o remoto, una volta ottenuto (usando nome di sistema, nome attore e host + porta macchina remota) lo si utilizza come se fosse stavano funzionando localmente. Se si passa da un attore a un altro in esecuzione locale (o viceversa), l'unica cosa che è necessario modificare è la ricerca degli attori (poiché ora si trova su un host diverso). Ma una volta ottenuto uno ActorRef, al resto del codice non interessa se l'attore viene eseguito localmente o in remoto.

Vedere anche here.