Обзор архитектуры RMI

В архитектуре распределенных приложений всегда необходима связь между двумя различными приложениями. В приложениях на основе Java одно приложение связывается с другим удаленным / другим приложением, работающим где-то еще, используя механизм, называемый архитектурой RMI.

RMI расшифровывается как удаленный вызов метода. Это API, предоставляемый Java, который позволяет объекту, находящемуся в одной JVM (виртуальной машине Java), получать доступ или вызывать объект, запущенный в другой JVM. Другая JVM может находиться на той же или удаленной машине. Это интересная особенность, потому что в приложениях реального времени для приложений Java становится очень легко общаться напрямую друг с другом без какого-либо внешнего механизма связи. Кроме того, всегда необходима безопасная связь между приложениями на основе распределенной архитектуры приложений.

RMI Design

Прежде чем мы углубимся в детальную архитектуру, мы разберемся с базовым дизайном архитектуры RMI.

  • RMI API предоставляется в пакете java.rmi. Давайте введем два термина для понимания архитектуры проектирования RMI. Сначала клиент; JVM, которая будет вызывать удаленный объект, а второй - это сервер; JVM, которая содержит удаленный объект. Таким образом, клиент вызовет сервер, в данном случае объект для вызова метода.
  • Затем сервер вернет ссылку на объект клиенту. Подвох здесь заключается в том, что оба объекта, т.е. локальный и удаленный, будут отображаться как локальный объект на сервере. Там не будет никакой разницы между двумя. Синтаксис методов обоих объектов также одинаков. Поэтому серверная JVM действует как обычная JVM, не зная ни о каком объекте, локальном или удаленном.
  • Один и тот же объект может быть как сервером, так и клиентом. Получена ссылка на удаленные объекты, и она используется, как если бы она была локальным объектом. Инфраструктура RMI отвечает за поиск удаленного объекта, перехват вызова методов и удаленную обработку удаленного запроса. Клиент вызывает методы для объекта только после получения ссылки на удаленный объект.

Архитектура RMI

Ниже приведена схема архитектуры RMI в простой форме. В Интернете вы найдете различные формы одной и той же архитектуры, но у нас есть простая, которая поможет объяснить ее лучше.

Давайте начнем с соединения точек с точки зрения дизайна с диаграммой архитектуры.

Клиентское приложение и серверное приложение являются соответствующими JVM клиентского компьютера и серверного компьютера. В приложении RMI мы пишем две программы соответственно; клиентская программа, которая находится на клиентской и серверной программе, которая находится на сервере.

Уровень приложений:

Этот уровень является фактическими системами, то есть клиентом и сервером, которые участвуют в коммуникации. Java-программа на стороне клиента связывается с java-программой на стороне сервера.

заглушка:

От вступления к дизайну у нас есть клиентские объекты; В архитектуре RMI он известен как заглушка. Это объект, который находится на клиентском компьютере и действует как прокси для удаленного объекта. Это как шлюз для клиентской программы.

Заглушка имеет те же методы, что и удаленный объект. Когда клиент вызывает объект-заглушку, заглушка направляет этот запрос удаленному объекту (Skeleton) через инфраструктуру RMI, которая затем выполняется на сервере.

Заглушка Выполняет следующие события: -

  1. Инициирует соединение с удаленной JVM,
  2. Записывает и передает (Marshals) параметры в удаленную JVM,
  3. Ждет результата,
  4. Читает (Unmarshalls) возвращенный результат,
  5. Передать полученный результат вызывающей стороне.

Скелет:

Объект сервера, который находится на сервере, называется Skeleton. Stub связывается с приложением сервера с помощью промежуточного объекта Skeleton.

Ответственность каркасного объекта заключается в отправке параметров в реализацию метода и отправке возвращаемых значений обратно клиенту.

Скелет Выполняет следующие события: -

  1. Читает параметр, переданный клиентом,
  2. Вызывает метод на реальном удаленном объекте,
  3. Передать / передать результат вызывающей стороне.

Слой заглушки / скелета:

  • Уровень Stub / Skeleton отвечает за перехват вызовов, сделанных клиентом, и перенаправление этих вызовов на удаленный объект. Этот слой также называется Proxy Layer. Stub и Skeleton являются прокси для клиента и сервера. Объекты Stub и Skeleton подобны интерфейсу между приложением и остальной частью системы RMI.
  • Цель этого слоя - перенести данные в слой удаленных ссылок путем сериализации объектов. Этот процесс преобразования данных / объекта в поток байтов известен как Marshalling, а обратный процесс называется Unmarshalling. Маршалинг выполняется при запросе объекта с сервера, а демаршаллинг выполняется при получении ссылки на данные / объект с сервера.

Удаленный эталонный уровень:

  • Уровень прокси подключен к механизму RMI через уровень удаленного эталона. Этот уровень отвечает за связь и передачу объектов между клиентом и сервером. Семантика вызова соединения RMI определяется и поддерживается этим уровнем.
  • Удаленный эталонный уровень отвечает за поддержание сеанса во время вызова метода. т.е. он управляет ссылками, сделанными клиентом на объект удаленного сервера. Этот слой также отвечает за обработку дублированных объектов.

Транспортный уровень:

Транспортный уровень отвечает за настройку связи между двумя компьютерами. Этот уровень использует стандартный протокол TCP / IP для соединения. Фактическая передача данных осуществляется через этот слой. Этот слой является частью Remote Reference Layer.

Вывод

  • Удаленный вызов метода (RMI) - это очень полезный API, предоставляемый в JAVA, который помогает в связи между двумя разными JVM. Это позволяет объекту вызывать метод для объекта, находящегося в другом адресном пространстве.
  • Он обеспечивает безопасный способ взаимодействия приложений друг с другом. Эта функциональность достигается с помощью концепций Stub (вызывающий объект клиента) и Skeleton (удаленный объект, находящийся на сервере).
  • RMI используется для создания распределенных приложений. Сохраняет тип безопасности. Архитектура RMI минимизирует сложность приложения в распределенной архитектуре.

Рекомендуемые статьи

Это было руководство по архитектуре RMI. Здесь мы подробно обсудим дизайн RMI и архитектуру с соответствующей блок-схемой. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. Архитектура хранилища данных
  2. Что такое протокол TCP?
  3. Что такое настольное программное обеспечение?
  4. CCNA Интервью Вопросы