stringtranslate.com

Распределенная объектная связь

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

Заглушки и скелеты классов

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

В RMI заглушка (которая является битом на клиенте) определяется программистом как интерфейс . RMIC (компилятор RMI) использует это для создания заглушки класса. Заглушка выполняет проверку типов. Скелет определяется в классе, который реализует заглушку интерфейса. [1]

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

Более подробно, коммуникация состоит из нескольких этапов:

  1. вызывающий объект вызывает локальную процедуру, реализованную заглушкой
  2. заглушка маршалирует тип вызова и входные аргументы в сообщение запроса
  3. клиентская заглушка отправляет сообщение по сети на сервер и блокирует текущий поток выполнения
  4. Скелет сервера получает сообщение-запрос из сети
  5. скелет распаковывает тип вызова из сообщения-запроса и ищет процедуру в вызываемом объекте
  6. скелет немаршалирует аргументы процедуры
  7. скелет выполняет процедуру над вызванным объектом
  8. вызываемый объект выполняет вычисление и возвращает результат
  9. скелет упаковывает выходные аргументы в ответное сообщение
  10. скелет отправляет сообщение по сети обратно клиенту
  11. клиентская заглушка получает ответное сообщение из сети
  12. заглушка распаковывает выходные аргументы из сообщения
  13. заглушка передает выходные аргументы вызывающему объекту, освобождает поток выполнения , а затем вызывающий объект продолжает выполнение

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

Заглушка

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

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

Заглушка отвечает за:

Скелет

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

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

Скелет отвечает за:

Протоколы, использующие подход «заглушка/скелет»

Смотрите также

Ссылки

  1. ^ "Введение в удаленный вызов методов Java (RMI)". www-itec.uni-klu.ac.at . Архивировано из оригинала 2002-03-26.
  2. ^ MSDN: Подробности маршалинга.