В среде распределенных вычислений распределенный объект взаимодействует ion реализует связь между распределенными объектами. Основная роль состоит в том, чтобы разрешить объектам доступ к данным и вызывать методы для удаленных объектов (объектов, находящихся в нелокальном пространстве памяти ). Вызов метода удаленного объекта известен как вызов удаленного метода (RMI ) или удаленный вызов, и является объектно-ориентированным программированием аналог удаленного вызова процедуры (RPC).
Широко используемый подход к реализации канала связи реализуется с помощью заглушек и скелетов. Это сгенерированные объекты, структура и поведение которых зависят от выбранного протокола связи, но в целом предоставляют дополнительные функции, обеспечивающие надежную связь по сети.
В RMI заглушка (которая является битом на клиенте) определяется программистом как интерфейс. Rmic (компилятор rmi) использует это для создания заглушки класса. Заглушка выполняет проверку типа. Каркас определяется в классе, который реализует заглушку интерфейса.
Когда вызывающий объект хочет выполнить удаленный вызов вызываемого объекта, он делегирует запросы его заглушке, которая инициирует связь с удаленным скелетом. Следовательно, заглушка передает аргументы вызывающего абонента по сети в скелет сервера. Затем скелет передает полученные данные вызываемому объекту, ожидает ответа и возвращает результат клиентской заглушке. Обратите внимание, что между вызывающим и вызываемым объектом нет прямой связи.
Более подробно, коммуникация состоит из нескольких этапов:
Преимущество этой архитектуры состоит в том, что ни вызывающий, ни вызываемый объект не должны реализовывать логику, связанную с сетью. Эта функция, обеспечивающая надежный канал связи по сети, была перенесена на уровень stub и слой скелета.
Объект на стороне клиента, участвующий в обмене данными между распределенными объектами, известен как заглушка или прокси и является примером прокси-объект.
Заглушка действует как шлюз для объектов на стороне клиента и всех исходящих запросов к объектам на стороне сервера, которые проходят через него. Заглушка обертывает функциональность клиентского объекта и, добавляя сетевую логику, обеспечивает надежный канал связи между клиентом и сервером. Заглушку можно записать вручную или сгенерировать автоматически в зависимости от выбранного протокола связи.
Заглушка отвечает за:
Объект на стороне сервера, участвующий в распределенном обмене объектами, известен как скелет (или заглушка; здесь термин избегается).
Каркас действует как шлюз для объектов на стороне сервера, и все входящие запросы клиентов маршрутизируются через него. Каркас обертывает функциональность объекта сервера и предоставляет его клиентам, кроме того, добавление сетевой логики обеспечивает надежный канал связи между клиентами и сервером. Скелеты могут быть написаны вручную или созданы автоматически в зависимости от выбранного протокола связи.
Каркас отвечает за: