WikiDer > Распределенная связь объектов
В распределенных вычислений Окружающая среда, связь с распределенными объектами реализует связь между распределенные объекты. Основная роль - разрешить объектам доступ к данным и вызов методы на удаленных объектах (объекты, находящиеся в нелокальных пространство памяти). Вызов метода удаленного объекта известен как вызов удаленного метода (RMI) или удаленный вызов, и является объектно-ориентированного программирования аналог удаленный вызов процедур (RPC).
Заготовки и скелеты классов
Широко используемый подход к реализации канала связи реализуется с помощью заглушки и скелеты. Это сгенерированные объекты, структура и поведение которых зависят от выбранного протокола связи, но в целом предоставляют дополнительные функции, обеспечивающие надежную связь по сети.
В RMI заглушка (которая является битом на клиенте) определяется программистом как интерфейс. Rmic (компилятор rmi) использует это для создания заглушки класса. Заглушка выполняет проверку типа. Каркас определяется в классе, который орудия заглушка интерфейса. [1]
Когда вызывающий абонент хочет выполнить удаленный вызов вызываемого объекта, он делегирует запросы его заглушка который инициирует связь с удаленным скелет. Следовательно, заглушка передает аргументы вызывающего абонента по сети в скелет сервера. Затем скелет передает полученные данные вызываемому объекту, ожидает ответа и возвращает результат клиентской заглушке. Обратите внимание, что между вызывающим и вызываемым объектом нет прямой связи.
Более подробно общение состоит из нескольких этапов:
- звонящий звонит местному процедура реализовано заглушкой
- заглушка маршалы тип вызова и входные аргументы в сообщение запроса
- клиентская заглушка отправляет сообщение по сети на сервер и блокирует текущее выполнение нить
- скелет сервера получает сообщение запроса из сети
- скелет распаковывает тип вызова из сообщения запроса и ищет процедура на вызываемом объекте
- скелет немаршаллы аргументы процедуры
- скелет выполняет процедура на вызываемом объекте
- вызываемый объект выполняет вычисление и возвращает результат
- скелет упаковывает выходные аргументы в ответное сообщение
- скелет отправляет сообщение по сети обратно клиенту
- клиентская заглушка получает ответное сообщение из сети
- заглушка распаковывает выходные аргументы из сообщения
- заглушка передает выходные аргументы вызывающей стороне, освобождает выполнение нить и вызывающий затем продолжает выполнение
Преимущество этой архитектуры состоит в том, что ни вызывающий, ни вызываемый объект не должны реализовывать логику, связанную с сетью. Эта функция, обеспечивающая надежный канал связи по сети, перенесена в заглушка и скелет слой.
Заглушка
Объект на стороне клиента, участвующий в обмене данными между распределенными объектами, известен как объект заглушка или же доверенное лицо, и является примером прокси-объект.
Заглушка действует как шлюз для объектов на стороне клиента и всех исходящих запросов к объектам на стороне сервера, которые проходят через него. Заглушка обеспечивает функциональность клиентского объекта и, добавляя сетевую логику, обеспечивает надежный канал связи между клиентом и сервером. Заглушка может быть написана вручную или сгенерирована автоматически в зависимости от выбранного протокола связи.
Заглушка отвечает за:
- инициирование связи с сервером скелет
- перевод вызовов от вызывающего объекта
- сортировка параметров
- информирование скелет что вызов должен быть вызван
- передача аргументов в скелет по сети
- демаршаллинг ответа от скелет
- информирование вызывающего абонента о завершении разговора
Скелет
Объект на стороне сервера, участвующий в обмене данными между распределенными объектами, известен как скелет (или заглушка; термин здесь избегается).
Каркас действует как шлюз для объектов на стороне сервера, и все входящие запросы клиентов маршрутизируются через него. Скелет оборачивает функциональность объекта сервера и предоставляет его клиентам, кроме того, добавляя сетевую логику, обеспечивает надежный канал связи между клиентами и сервером. Скелеты могут быть написаны вручную или созданы автоматически в зависимости от выбранного протокола связи.
Скелет отвечает за:
- перевод входящих данных из заглушка к правильным ап-вызовам серверных объектов
- демаршаллинг аргументов из полученных данных
- передача аргументов серверным объектам
- сортировка возвращаемых значений от серверных объектов
- передача значений обратно клиенту заглушка по сети
Протоколы с использованием тупикового / каркасного подхода
- Переносимые распределенные объекты (PDO) - Цель-C
- Общая архитектура брокера объектных запросов (CORBA) - межъязыковой
- Вызов удаленного метода Java (Java RMI) - Java
- Распределенная компонентная объектная модель (DCOM) - Microsoft, межъязыковая
- (обратите внимание, что заглушка называется «прокси», а скелет - «заглушкой»[2])
- .NET Remoting - Microsoft, межъязыковая
- DDObjects – Borland Delphi
- Распределенный Ruby (DRb) - Рубин
Смотрите также
Рекомендации
- Плашил, Франтишек и Сталь, Михаил. «Архитектурное представление распределенных объектов и компонентов в CORBA, Java RMI и COM / DCOM», Программные концепции и инструменты (том 19, № 1), Январь 1998 г.
- Друщель, Питер «Построение распределенных программ»
- Фарли, Джим. Распределенные вычисления Java, О'Рейли, январь 1998 г.
- Научно-исследовательские работы, Исследовательская группа распределенных систем, Карлов университет в Праге