RPC против RMI
Основное различие между RPC и RMI заключается в том, что RPC - это механизм, позволяющий вызывать процедуры на удаленном компьютере, а RMI - это реализация RPC в java. RPC не зависит от языка, но поддерживает передачу только примитивных типов данных. С другой стороны, RMI ограничен Java, но позволяет передавать объекты. RPC следует традиционным конструкциям процедурного языка, в то время как RMI поддерживает объектно-ориентированный дизайн.
Что такое RPC?
RPC, что означает удаленный вызов процедур, представляет собой тип межпроцессного взаимодействия. Это позволяет вызывать функцию в другом процессе, работающем на локальном или удаленном компьютере. Эта концепция возникла очень давно, в 1980 году, но первая известная реализация была замечена в Unix.
RPC включает в себя несколько шагов. Клиент выполняет вызов процедуры на локальном компьютере, как обычно. Модуль, называемый клиентской заглушкой, собирает аргументы, создает сообщение и передает его операционной системе. Операционная система выполняет системный вызов и отправляет это сообщение на удаленный компьютер. Операционная система на сервере собирает сообщение и передает его модулю на сервере, называемому серверной заглушкой. Затем заглушка сервера вызывает процедуру на сервере. Наконец, результаты отправляются обратно клиенту.
Преимущество использования RPC заключается в том, что оно не зависит от параметров сети. Программист просто должен указать абстрактно, в то время как операционная система позаботится о деталях внутренней сети. Таким образом, это упрощает программирование и позволяет RPC работать в любой сети, несмотря на физические различия и различия в протоколах. Реализации RPC присутствуют во всех основных операционных системах, таких как Unix, Linux, Windows и OS X. RPC, как правило, не зависит от языка, поэтому он ограничивает типы данных самыми примитивными, поскольку они должны быть общими для всех языков. Подход в RPC не является объектно-ориентированным, а представляет собой традиционный процедурный механизм, как в C.
Что такое RMI?
RMI, что означает удаленный вызов метода, представляет собой API (интерфейс прикладного программирования), который реализует RPC в java для поддержки объектно-ориентированного характера. Это позволяет вызывать методы Java на другой виртуальной машине Java, находящейся на том же или удаленном компьютере. Ограничение RMI состоит в том, что можно вызывать только методы Java, но это имеет то преимущество, что объекты могут передаваться в качестве аргументов и возвращаемых значений. Когда рассматривается производительность, RMI медленнее, чем RPC, из-за использования байт-кода на виртуальной машине Java, но RMI очень удобен для программиста и очень прост в использовании.
RMI использует встроенные механизмы безопасности в Java, а также предоставляет фабрику сокетов, которая позволяет использовать пользовательские протоколы транспортного уровня, отличные от TCP. Кроме того, RMI предоставляет методы обхода брандмауэров. Шаги, которые происходят в RMI, аналогичны RPC. Реализация RMI заботится о деталях внутренней сети, и программисту не нужно о них беспокоиться.
В чем разница между RPC и RMI?
• RPC не зависит от языка, а RMI ограничен Java.
• RPC процедурный, как и в C, но RMI является объектно-ориентированным.
• RPC поддерживает только примитивные типы данных, в то время как RMI позволяет передавать объекты в качестве аргументов и возвращаемых значений. При использовании RPC программист должен разделить любые составные объекты на примитивные типы данных.
• RMI легко запрограммировать для RPC.
• RMI медленнее, чем RPC, поскольку RMI требует выполнения байт-кода Java.
• RMI позволяет использовать шаблоны проектирования из-за объектно-ориентированной природы, в то время как RPC не имеет такой возможности.
Обзор:
RPC против RMI
RPC - это независимый от языка механизм, позволяющий вызывать процедуры на удаленном компьютере. Однако функция, не зависящая от языка, ограничивает типы данных, которые передаются в качестве аргументов и возвращаемых значений, примитивными типами. RMI - это реализация RPC на Java, которая также поддерживает передачу объектов, облегчая жизнь программисту. Преимуществом RMI является поддержка объектно-ориентированного проектирования, но ограничение Java является недостатком.