Распределенная объектная коммуникация - Distributed object communication

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

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

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

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

Распределенный объект связи.png

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

Более подробно общение состоит из нескольких этапов:

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

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

Заглушка

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

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

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

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

Скелет

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

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

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

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

Протоколы с использованием тупикового / каркасного подхода

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

Рекомендации