О себе О работе Учебники Методич.ук. Тесты

 


Назад, к списку статей...

РЕАЛИЗАЦИЯ СЛУЖБЫ ВРЕМЕНИ В РАСПРЕДЕЛЕННОЙ ОБЪЕКТНОЙ ИНФОРМАЦИОННОЙ СИСТЕМЕ

Ю.Р. Осипов, А.Н. Швецов, А.А. Моисеев

Россия, Вологодский государственный университет

Архитектура управления объектами (ОМА), разработанная OMG (Object Managemnt Group – комитетом по стандартизации в области открытых рапределенных объектных систем), определяет, что распределенная объектная информационная система состоит из совокупности классов и экземпляров, взаимодействующих при помощи Брокера Объектных Заявок (Object Request Broker - ORB).

Архитектура управления объектами определяет и объектные службы – это набор интерфейсов и реализаций объектов. В состав объектных служб, определяемых ОМА, входит служба времени (Time Srvice). Служба времени запрашивает текущее время с нескольких серверов, получает ответы и выдает разницу между полученными значениями времени и локальным системным временем [1].

Служба времени имеется не во всех стандартных распределенных информационных системах, поэтому представляет интерес проблема ее реализации при помощи инструментальных программных средств. Авторами предлагается вариант реализации службы времени на языке Java.

Для реализации обмена данными предлагается использовать Протокол Дейтаграмм Пользователя (User Datagram Protocol - UDP). UDP хорошо применим для приложений, которые обмениваются данными в виде отдельных сообщений, т.е. один запрос от клиента порождает один запрос от сервера. Для UDP очень хорошо подходят данные хависящие от времени. По сравнению с ТСР протокол UDP требует значительно меньших накладных расходов, зато вынуждает разработчика самостоятельно обеспечивать требуемую надежность. Например, если клиент не получает ответа на свои запросы, что вполне вероятно при использовании UDP, возможно, в программе следует предусмотреть повторение запроса либо вывод сообщения, предупреждающего о ненадежной связи [2].

Программы реализующие Службу Времени, созданы при помощи инструментального набора Java Development Kit (JDK). Необходимые средства поддержки протокола UDP находятся в пакете java.net входящем в набор JDK. Для создания дейтаграмм в java.net существует класс DatagramPacke. При получении дейтаграммы по протоколу UDP класс DatagramPacket используется также для чтения данных, адреса отправителя и метаинформации. Отправка и получение дейтаграмм осуществляется при помощи класса DatagramSocket. Для получения значений времени используется класс Date пакета java.util [3].

Служба Времени работает по протоколу UDP с номером 13, при этом сервер UDP циклически повторяет ряд шагов. Он создает небольшой массив данных, используя его при создании объекта DatagramPacket. Затем сервер получет дейтаграмму из объекта DatagramSocket и берет из этой дейтаграммы IP-адрес и порт приложения отправителя. При получении дейтаграммы создается новый объект типа DatagramPacket, содержащий время и дату в следующем формате: день недели, день месяца, месяц, год и время в часах, минутах и секундах. Далее информация отсылается посредством DatagramSocket. Такую последовательность шагов сервер повторяет до тех пор, пока ее выполнение не будет прервано сигналом извне.

Клиент UDP – это программа на Java, которая запрашивает текущее время с нескольких серверов, получает ответы и выдает разницу между полученными значениями времени и локальным системным временем, причем обмен данными с серверами происходит через один и тот же порт UDP. Один из важных вопросов проектирования такого клиента состоит в том, что отсутствие ответа не должно вызывать зависания программы. Поскольку метод recive() класса DatagramSocket блокируется до получения дейтаграммы, а доставка дейтаграмм не является надежной, приложение должно обеспечить прерывание ожидания по истечении определенного промежутка времени. Программа достигает этого применяя дополнительный поток управления.

При запуске приложения задается список хостов, которые следует опросить в виде командной строки. Для просмотра списка хосто используется статический метод getByName() класса InetAddress из пакета java.net. Этот метод берет в качестве параметра имя хоста и возвращает объект InetAddress, который содержит адрес хоста в сети. Полученные объекты InetAddress помещаются в массив. Если какой-либо хост невозможно найти, элементу массива присваивается null. Для каждого элемента не равного null, создается небольшой массив, на основе которого конструируется соответствующим образом адресованный DatagramPacket и отсылается через порт UDP.

Когда каждому из хостов послано по запросу, приложение-клиент определяет текущее время. После приема массива пакетов UDP, производится сравнение содержащегося в них времени в секундах. По результатам работы программы может быть осуществлена процедура синхронизации рабочих станций сети.

ЛИТЕРАТУРА

  1. Common Object Srvices Specification, OMG, Nov. 1997
  2. Рэдмонд Ф. Элементы управления Visual Basic для протокола пользовательских дейтаграмм (User Datagram Protocol) // КомпьюЛог.-1997,-№1, - С. 16-22.
  3. Вебер Д. Технология Java в подлиннике: пер. с англ. – СПб.: BHV – Санкт-Петербург, 1997. – 1104с.


Назад, к списку статей...


О себе О работе Учебники Методич.ук. Тесты

Hosted by uCoz