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

Distributed object communication

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

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

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

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

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

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

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

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

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

Заглушка

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

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

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

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

Скелет

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

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

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

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

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

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

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