что такое заглушка на "сервере" и что означает скелет? - PullRequest
21 голосов
/ 21 декабря 2011

Что делает заглушка на стороне сервера? А что такое скелет ?

from wikipedia

Это диаграмма из википедии. Я установил заглушку как на сервере, так и на клиентском компьютере. Я понимаю, что заглушка помогает в сети на стороне клиента, но что заглушка делает на стороне сервера?

Также на рисунке выше, что означает скелет?

Ответы [ 7 ]

16 голосов
/ 30 марта 2015

посмотрите на следующее изображение:

skeleton

Короче говоря, заглушка и скелет являются аналогами в настройке веб-службы,Skeleton belongs to service provider side и stub belongs to receiver side.На нижнем уровне заглушка и скелет общаются друг с другом.

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

6 голосов
/ 21 декабря 2011

Заглушка и скелет скрывают некоторую сложность.

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

Скелет отвечает за передачу вызова фактической реализации удаленного объекта.

http://docs.oracle.com/javase/7/docs/platform/rmi/spec/rmi-arch2.html

http://www -itec.uni-klu.ac.at / ~ harald / ds2001 / rmi / rmi.html

4 голосов
/ 23 декабря 2011

Первое, что вам нужно сделать, это забыть о скелетах.Они устарели в течение 13 лет.

Заглушка создается удаленным объектом при экспорте.Затем он либо привязывается к Реестру и получает клиент через поиск, либо он возвращается непосредственно клиенту в результате другого удаленного метода.

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

3 голосов
/ 23 декабря 2011

Ключ к пониманию «заглушек» и «скелетов» заключается в понимании концепции маршаллинга :

rmiregistry - это просто средство поиска;ничего более.Когда сервер делает bind(), он «регистрируется» с помощью rmiregistry .Когда клиент делает lookup(), он проверяет, что зарегистрировано на сервере.Ни больше, ни меньше.

Не думаю, что имеет смысл спорить о терминологии, такой как "скелеты".Если вы предпочитаете, вы можете назвать все «заглушкой».Дело в том, что оба являются ПРОКСИ, оба выполняют МАРШАЛЛИНГ, одна сторона существует под клиентом (на который клиент обращается), а другая сторона существует на сервере (скелет вызывает фактический код сервера).

Надеюсь, мое объяснение и пример помогли в вашей , еще одна ссылка помогла (хотя бы немного).

1 голос
/ 27 февраля 2019

Заглушка: Заглушка - это небольшая подпрограмма, которая заменяет более длинную программу, которая может быть загружена позже или расположена удаленно.

* 1005 Skeleton * * * 1006 Скелет удаленного объекта - это серверная сущность, которая отправляет вызовы фактической реализации удаленного объекта.

0 голосов
/ 24 мая 2016

Сто

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

В качестве альтернативы рассмотрим программу, работающую на одном компьютере: каждый метод является ветвью. Когда вы перемещаете метод на удаленную машину, вы отключаете ветку, оставляя заглушку, которая содержит только сообщения.
Источник

enter image description here


Скелет

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

И скелет , который я рассматриваю как первую реализацию - то, что удовлетворяет соглашению о вызовах, выполняет частичную операцию и удовлетворительно завершается.

Форма Oracle

0 голосов
/ 10 марта 2015

Я рассмотрю только вопрос о том, почему заглушка должна быть на стороне сервера, а также на стороне клиента.На другой вопрос уже дан ответ.

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

Вот типичный сценарий.

  • На компьютере S объект s создается и экспортируется.
    • Часть экспорта заключается в создании заглушки для s;Вызов ss0.
  • Machine S вызывает Naming.bind с аргументом s.
    • Серверная заглушка ss0 сериализуется и отправляется на компьютер реестра R.
    • Сериализованная версия ss0 используется для создания копии ss0 R;назовите его ss1.
    • Реестр на R хранит указатель на ss1.

Таким образом, использование заглушки на стороне сервера позволяетможет быть сериализован и (его копия) отправлен на другие машины, например, как часть привязки.Аналогичным образом, когда клиент выполняет поиск, реестр сериализует свою копию (ss1) и отправляет ее клиенту.

...