2016-05-05 8 views
7

Я гугле немного, чтобы найти хорошее объяснение разницы между этими двумя стратегиями удаленного взаимодействия, т.е. прозрачной прозрачности удаленного взаимодействия и местоположения.разница между прозрачной Remoting и прозрачности местоположения

Насколько я знаю, первый находится у основания Java RMI, последний у основания Akka. Я знаю очень хорошо Java RMI и я понимаю, что прозрачный удаленный означает, но как насчет Akka?

Большое спасибо за ответы.

ответ

11

Эти два фактически противоположности.

«Прозрачное удаленное устройство» связано с тем, что удаленные вызовы выглядят как местные звонки. «Прозрачность местоположения» означает, что локальные вызовы выглядят как удаленные вызовы.

Хотя это может показаться не очень важным - это так. Это все предположения, которые вы можете сделать. Обычно локальные вызовы имеют гораздо более высокую точность, так как существует намного меньше возможных ошибок и ошибок. Обнимая эти режимы отказа и ошибки в «Прозрачности местоположения», уже не имеет значения технически, где отправитель и получатель находится.

С «Прозрачным удалением» не очевидно, что вы пересекаете асинхронную и двоичную границу и, таким образом, сможет ли вызывающий поток добиться прогресса, будет ли уведомление о проблемах связи или потеря информации или коррупция.

Я надеюсь, что ответ на ваш вопрос,

Cheers, √

3

Смотрите docs:

В предыдущем разделе описывается, как актер путь используется для того, чтобы прозрачности местоположения. Эта специальная функция заслуживает дополнительных разъяснений , потому что связанный термин «прозрачный удаленный доступ» был использован совершенно по-другому в контексте языков программирования, платформ и технологий.

В принципе, прозрачный Remoting привязан к RMI (как Вы сами сказали) и средство вызова методов объектов, не зная, методы выполняются локально или данные переданы по сети для выполнения на удаленном объекте ,

Прозрачность местоположения аналогичная философия, но связанная с актерами. Это означает, что Akka API не проводит различия между локальными и удаленными участниками. Более конкретно, это означает, что даже если актер может работать как в локальной, так и в удаленной системе актеров, как только вы его получите (используя имя системы, имя актера и хост-сервер удаленной машины), вы используете его так же, как если бы он были запущены на местном уровне. Если вы переключите какого-либо актера на запуск локально на удаленную работу (или наоборот), вам нужно изменить только то, что вам нужно изменить - это поиск актера (так как теперь он находится на другом хосте). Но как только ActorRef был получен, остальная часть вашего кода не волнует, работает ли актер локально или удаленно.

См. Также here.