
- •Распределенные системы обработки информации. Недашковский Вячеслав Михайлович
- •Лекция 3.09.04 Литература
- •1.Язык программирования Java
- •1.1.История и предпосылки
- •1.3.Архитектура Java
- •1.3.1Именованные константы
- •1.3.2Классы и объекты
- •1.3.3Комментарии
- •Лекция 21.09.04
- •1.3.4Класс Object
- •1.3.5Класс Class
- •Синхронизация
- •Взаимодействие потоков
- •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.3.Сохранные и не резидентные объекты.
Из термина сохранные – объект продолжает существовать, даже не находясь постоянно в адресном пространстве серверного процесса. То есть, объект всегда можно воссоздать из памяти независимо от наличия процесса.
Нерезидентный объект – объект, который существует, пока им управляет сервер. Когда сервер завершает работу, это объект прекращает существование.
3.3.1Привязка клиента к объекту.
Вот мы сказали, есть механизм удаленного вызова RPC и есть РО. Много общего. Различия: система с РО обычно предоставляет клиентам ссылки на объекты, причем они уникальны в пределах всей системы. Такие ссылки можно передавать между процессами, запущенными на различных машинах, как параметры обращения к методу. Клиент должен иметь возможность обратиться к методу объекту. Здесь момент: прежде чем он обратиться по ссылке к методу соответствующего объекта, он должен выполнить привязку к этому объекту. Это значит разместить в адресном пространстве клиента заместителя объекта. Теперь понятно, почему это надо сделать – чтобы обратиться от клиента к серверу. Часто эта операция привязки делается за кадром (невидна программисту). За кадром остается поиск объект, когда делается привязка.
А за этим стоит:
Заместитель должен знать, где находится объект.
Разрешение ссылки – это как раз обозначение процесса поиска объекта в РС, где он находится. При неявной(автоматически происходит) привязке это разрешение ссылки происходит прозрачно.
В случае явной привязке, клиент должен до обращения к методу должен выполнить привязку. Он явно обращается к службе, осуществляющей привязку перед вызовом метода. Другой вариант – автоматически. От процесса привязки никуда не деться.
3.4.Реализация ссылок на объект
Ссылка должна содержать информацию, которая должна позволять осуществить привязку к объекту. Нужен адрес машины, адрес процесса, адрес объекта.
Лекция 9.11.04
Сетевой адрес
Конечная токчка
Объект
На сервере создать «Локакльный демон», который будет отселживать конечные точки и соотве-ие им объекты. Посл привязки клиента(ему нужна ссылка на объект), он будет запрашивать конечную точку у локального демона. Итак эту задачу решили. Ссылка должна содержат 1, 3 и через локального демона можно спрашивать конечную точку. Сетевой адрес прописывается в ссылке.
Захотели перенести объект на др. сервер. Идея та же. Вводится сервер-локализация, которая отслеживает, на каких компах находится сервер с объектом. Вместо сетевого адреса конр. компа мы имеем ссылки сервера локализации, который будет содержать инфо о конкретном объекте на некотором компе.
Теперь используется понятие «идентификатор».
3.4.1Идентификатор сервера. Об именовании. Имена, идентификаторы, адреса.
Идентификатор сервера
Разрешение имени представляет собой процесс доступа к именованной сущности. => для этого необходимо реализовать некоторую систему наименований. Имя – это последовательность битов, используемых для ссылки на сущность(файлы, URL, HD, процессы).
Чтобы общаться с сущности необходимо иметь к ней доступ через точку доступа. Имя точки доступа называют адресом.
Адрес сервера – IP +адр. факта.
Точка доступа может с течением времени изменятся. Перенесли ноут и в новом месте у него новый IP.
Отсюда понятно, что адрес сущности можно попытаться использовать в качестве постоянного имени сущности. ??? Поэтому в РС предпочитают использовать имя сущности, не связанное с адресом, так как это удобно. Такие имена называют локально-независимыми.
Идентификатор – это имя, которое используется для однозначной идентификации сущности.
Такое имя обладает такими свойствами:
Идентификатор ссылается не более чем на одну сущность.
На каждую сущность ссылается не более одного идентификатора.
идентификатор всегда ссылается на одну и ту же сущность, то есть мы не можем повторно использовать идентификатор повторно для именования другой сущности.
3.5.Статическое и динамическое удаленное обращение к методу.
3.5.1О языке определения интерфейсов
Прежде чем обратится к методу объекта, клиент должен осуществить процесс связывания (в адресном пространстве клиента создается заместитель, представляющий образ удаленного объекта). С помощью заместителя клиент может обратится удаленно к объекту.
Удаленное обращение к методу – Remote Method Invocation (RMI)
Напоминает RPC(Рассмотрено ранее). Есть различия - поддержка RMI удаленных ссылок на объект. Но в RPC тоже для описания удаленной функции используется IDL. Стандартный способ поддержки RMI – это описать интерфейсы объектов на IDL. Но на Java IDL «нету», на самом деле просто спрятано. Значит объекты нужно описывать заранее. Такой способ(подход) с помощью заранее заданного определения интерфейсов называются статическим обращением. То при использовании статического обращения интерфейсы д. б. уже известны и при изменении интерфейса нужна перекомпиляция.
Описание интерфейса футболиста.
interface Player: Object
{
typedef struct Date
{
short day; short month; short year;
}
attribute string name;
readonly attribute Date Dob;
};
interface PlayerStore: Object
{
exception IDNotFound();
short save (in Player);
Player load(in short id) raises (IDNotFound);
void print(in Player p);
}
Вот описано два интерфейса. Видим, что в этом языке наследование есть, причем наследуется корневой объект. Может возвращать ссылки на объект, более развит механизм оповещения об ошибках. Показано, что функция может вернуть определенное исключение. Вообще м. б. out, inout. Знания ООЯ достаточно, чтобы мы описали интерфейс.