Информационно-аналитическая система мониторинга учебных диiиплин в университете

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?ервера нужно чтоб он поддерживал обработку php-скриптов. В соответствии с этими требованиями был выбран свободный веб сервер Apache.

На данный момент существует большое количество браузеров, и каждый пользователь выбирает для себя более удобный, поэтому интерфейс должен быть кросбраузерным, и должен работать с параллельными запросами (т.к. нужно запрашивать много изображений) для этого использовался подход AJAX /11/.

4.2 Организация программ

Информационная справочная система YarMap Online разрабатывалась на основе имеющихся картографических данных, хранящихся в векторном формате, а также использовался компонент PentaMap, который занимается прорисовкой графической информации. Этот компонент был доделан под специфику многопоточного сервера, а так же специфику обрабатываемых запросов.

Для того чтобы нельзя было обратиться напрямую к серверному приложению, из соображений безопасности, нужно осуществлять взаимодействие с помощью php скриптов, т.к. скрипты php выполняется на стороне веб сервера. В таком случае обращение к серверному приложению будет недоступно для пользователя. В дополнение к этому с помощью php скриптов можно сделать первичную обработку запросов, не связанную с обработкой графической информации, а именно обработка запросов связанных с текстовой информацией, хранящейся в БД. Так же осуществляется возможность кэширования картинок, благодаря чему очень сильно возрастает скорость обработки запросов.

4.3 Организация приложения сервера обработки графической информации

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

Для реализации многопоточного сервера, был выбран компонент IdHTTPServer (INDY(14)), он отвечает всем требованиям, а так же имеет много положительных отзывов от разработчиков Web серверов.

СОГИ при запуске считывает свои настройки, загружает в память свою карту города, и запускает главный поток сервера (алг. 2), который принимает запросы на выделенном ему порту. При принятии запроса он создаёт новый поток (алг. 3), который обрабатывает принятый запрос, отправляет ответ клиенту, и уничтожается.

Алгоритм 2 - работа главного потока сервера обработки графической информации

Алгоритм 3 - работа потока обработки запроса сервера обработки графической информации

Главный поток содержит в себе объект, который в свою очередь содержит векторные данные карты. Каждый дочерний поток, который создаётся для обработки - наследует доступ к этому объекту, и пользуется его данными. Логика программы организована таким образом, чтобы потоки не могли изменить общие данные, они могут только прочесть их, т.к. они работают параллельно и изменение одних и тех же данных приводит к их искажению, или вовсе к исключительным ситуациям, что недопустимо.

Серверное приложение обрабатывает все запросы, связанные с географической привязкой.

Функции сервера:

Прорисовка изображения

Сервер обработки ГИ должен в первую очередь рисовать картинки. Т.к. используется технология разбиения рабочей области на квадраты, было решено взять картинки размером 256*256, соответственно при запросе картинки в качестве параметров в запросе клиент присылает координаты и зум.

Ранние разработки компании ЯрМап были не приспособлены для использования их в многопоточном режиме, т.к. использовались переменные класса для прорисовки рабочей области. Поэтому все нужные функции были переделаны, чтобы все используемые переменные передавались через параметры, т.к. у каждого потока они свои.

Так же картинка рисовалась в формате *.bmp, а изображения в том формате слишком большого размера, и не подходят для передачи по сети. Поэтому после прорисовки картинки она конвертируется в формат png, операция очень быстрая и эффективная. С 800 килобайт изображение уменьшается до 20 килобайт (в ~40 раз), при этом потерь качества видимых глазом не происходит. Это позволило сильно сократить трафик и как следствие увеличить скорость.

Определение объекта по координатам

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

В информацию об объекте включаются номера квадратов, в которых расположен объект. Это делается для упрощения выделения объекта. При выделении объекта нужно нарисовать объект другим цветом. Для этого серверу необходимо знать идентификационный номер объекта, координаты и зум запрашиваемой картинки. Чтобы не перерисовывать всю рабочую область, клиент запрашивает только те квадраты, в которых содержится объект. Благодаря этому решению, сокращается трафик и увеличивается скорость работы.

Поиск объекта

Серверу приходит информация об объекте, который нужно найти. Это может быть улица, дом, а так же идентификационный номер. Производится поиск и формируется ответ клиенту. В ответ входит следующая информация:

-позиция на карте (для позиционирования);

-идентификационный номер;

-зум при котором нужно отобразить объект;

-номера ?/p>