- •Распределенные системы обработки информации. Недашковский Вячеслав Михайлович
- •Лекция 3.09.04 Литература
- •1.Язык программирования Java
- •1.1.История и предпосылки
- •1.3.Архитектура Java
- •1.3.4Класс Object
- •1.3.5Класс Class
- •1.3.1Именованные константы
- •1.3.2Классы и объекты
- •1.3.3Комментарии
- •Лекция 21.09.04
- •Синхронизация
- •Взаимодействие потоков
- •1.5.Библиотека Swing
- •1.5.2Панели
- •1.5.3Обработка событий
- •2.1.1Требования к системе
- •2.1.2Прозрачность системы
- •2.2.Общие сведения о промежуточном слое
- •2.3.Типы промежуточного слоя
- •2.4.Удаленный вызов процедур
- •Лекция 2.11.04
- •2.5.Передача параметров
- •2.6.Передача параметров по ссылке.
- •2.7.Расширение модели rpc. Асинхронный вызов.
- •3.Общие сведения об объектно-ориентированном промежуточном слое. Обращение к удаленным объектам.
- •3.1.Привязка клиента к распределенному объекту.
- •3.2.Объекты времени компиляции и объекты времени выполнения (раздел)
- •3.3.Сохранные и не резидентные объекты.
- •3.3.1Привязка клиента к объекту.
- •3.4.Реализация ссылок на объект
- •Лекция 9.11.04
- •3.4.1Идентификатор сервера. Об именовании. Имена, идентификаторы, адреса.
- •Идентификатор сервера
- •3.5.2Динамическое обращение
- •Передача параметров
- •3.5.3Сервер объектов
- •3.5.4Адаптер объекта
- •3.6.Перенос кода
- •3.6.1Модели переноса кода
- •3.8.4Реализация технологии клиент-сервер на Java (работа с сетями)
- •Лекция 30.11.04
- •3.8.5Клиентская часть
- •Объяснение в виде диаграммы последовательности
- •3.8.6Дополнительные сведения rmi.Java
- •Разница между удаленными и локальными объектами.
- •Блокировка объектов
- •Вопрос удаленных объектов
- •4.Последний раздел языка Java: интерфейс jdbc при работе с бд
- •4.1.Определение местонахождения распределенных объектов
- •Именование
- •Трейдинг
- •Лекция 7.12.04
- •4.2.Иерархические подходы в службах локализации.
- •4.2.1Кэширование указателей
- •4.2.2Масштабирование
- •4.3.Объектный трейдинг.
- •4.5.Алгоритм Крестиана
- •4.6.Алгоритм Беркли
- •4.7.Логические часы. Алгоритм Лампорта.
- •4.8.Жизненный цикл объекта
- •4.9.Миграция объектов на удаленный хост
3.5.2Динамическое обращение
Иногда удобнее собрать параметры обращения к методу в процессе исполнения. Этот процесс – динамическое обращение. Когда неизвестно, к какому методу будет обращение.
invoke (object, method, input inparam, out outparam);
Передача параметров
Используются ссылки на объекты, как параметры, которые передаются при обращении к удаленному объекту: по значению. Если ссылка возвращается: клиент получил ссылку, прежде чем обратится, он осуществляет привязку. Есть нюанс. Объект, ссылка на который передается:
находится в адресном пространстве клиента
находится удаленно
Они реализуются по-разному. Ссылка передается только для удаленных объектов. А если объект локальный, то передается копия объекта.
Передача объектов.
Рис. 3.12.
При удаленном вызове фигурирует ссылки O1, O2 и при этом осуществляется копирование O1 и передачи ссылки на O2. Это все спрятано.
3.5.3Сервер объектов
~ - это сервер, ориентированный на поддержку распределенных объектов. Он предоставляет конкретной службы. Конкретные службы реализуются на сервере, реализуемые объектами. Сервер предоставляет только средства обращения к локальным объектам на основе запросов от удаленных клиентов. Фактически сервер выступает как место для хранения объектов. Как следствие, то легко добавлять новые службы: добавляется новый объект.
3.5.4Адаптер объекта
Правила обращения к объекту называют политикой активизации. Прежде чем обратится к объекту, часто его надо поместить в адресное пространство сервера, то есть активизирован. Удаленный клиент не знает, что делается на сервере. И здесь возникает проблема: объект нужно подготовить перед обращением.
Эта предварительная подготовка для разных объектов разная. Необходимо как-то сгруппировать объекты в соответствии с политикой активизации. Это механизм группирования – адаптер объекта. Адаптер объекта готовит объект, чтобы к нему можно было обратится. Нельзя сказать, что эту кусок сервера объекта, это функциональность.
Адаптер объектов является общедоступным для разработчиков распределенных объектов.
Если несколько объектов с разной политикой активизации, то на каждую группу с одинаковой политикой активизации надо иметь адаптер активизации. И у сервера эти адаптеры есть. Есть еще промежуточное звено, когда запрос сначала поступает к АО, а затем куда требовалось. Тогда схема такая –
Диспетчеризация запросов.
Рис. 3.13.
То есть сначала запрос переадрисовывается к соотв. АО. АО смотрит, к какому obj идет запрос, если obj не активен, то АО его активизирует. Только после этого запрос передается к соотв. заглушки объекта. Тут уже надо распаковать параметры и она смотрит к какому методу запрос. А дальше понятно.
Объект, прежде чем вызвать нужный запрос, он должен выполнить диспетчеризацию операций – действия по организации вызова конкретного метода.
Адаптер перед передачей запроса должен активизировать obj. Информацию о том, как запустить данный obj, АО получает из репозитария реализации (реестр).
Внимание: АО не знает ничего об интерфейсах объектов. Это не его инфорамция. Его назначение – извлечь из запроса ссылку на объект и активизировать в соотв. с политикой активизации. После этого он передает запрос соотв. заглушке объекта, которая затем производит деморшалинг(распаковку параметров) и она осуществляет вызов.
