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