Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по дисциплине «Технология прог....doc
Скачиваний:
8
Добавлен:
27.10.2018
Размер:
1.05 Mб
Скачать

3.2.3 Потоки и их синхронизация

Серверное окно имеет потоковую функцию и каждый компонент (машина) имеет свою потоковую функцию, которая никак не взаимодействует с потоковой функцией серверного окна. Синхронизация необходима между потоками компонентов. Они имеют общий ресурс – участок с дорожными работами и заправку, и не могут занимать его одновременно. Синхронизация осуществляется посредством событий. При занятии «машиной» этого участка, он вызывает событие, обработчик которого оповещает всех остальных «машин», что заправка или участок с дорожными работами занят.

3.2.4 События и их использование

В программе помимо стандартных событий (обработчиков нажатий кнопок) реализовано 3 событий для корректного взаимодействия между компонентами.

public event vyehalDeleagate vyehalEvent; - событие выезда машинки из рова

public static event AddDelegate addEvent;- события добавления удаленного объекта

public static event RemoveDelegate removeEvent;- события удаления удаленного объекта

Обработчики всех событий описано в серверном окне.

3.2.5 Ресурсы

Имеется два ресурса: заправка и участок дорожных работ. Синхронизация осуществляется посредством событий. Благодаря синхронизации два компонента не смогут одновременно занять заправку и участок с дорожными работами. А запись в базу данных происходит при прохождении участка дорожных работ. Следовательно, доступ к базе данных в текущий момент времени получает только один компонент.

3.2.6 Базы данных

В программе в качестве СУБД используется СУБД Access. В базу данных записывается номер машины, время и дата её выезда с дорожных работ.

Вся информация записывается в одну таблицу rov. Её структура и пример заполнения изображены на рисунке 4 и 5.

Рис. 4. Структура таблицы

Рис. 5. Пример заполненной таблицы

3.2.7 Удаленный объект и его интерфейс

Удаленным объектом является экземпляр класса RemoteObject Интерфейс удаленного объекта представлен двумя функциями:

  1. void CreateAdd(string name)

  2. void Remove(string name)

CreateAdd – создает новый компонент.

Remove – удаляет компонент с определенным номером.

3.2.8 Сервер

Сервер описывается в классе Doroga. В нем, в функции Main() создается серверное окно класса Doroga, ссылка на это окно принимается и регистрируется инфраструктурой удаленного взаимодействия методом RemotingServices.Marshal, регистрируется Http-канал.

3.2.9 Клиент

Клиент описывается в классе Client. В нем регистрируется Http-канал, описывается клиентское графическое окно и создает прокси для хорошо известного объекта, определенного заданным типом и URL. (см. рис. 2). Для управления удаленным объектом клиент имеет возможность вызывать две интерфейсных функции:

1) void add(string name);

  1. void remove(string name);

3.3 Диаграмма классов

Диаграмма классов представлена на рисунке 6.

Рис. 6. Диаграмма классов.