Главная
страница 1
Опыт разработки Интернет-приложения «Система дистанционного обучения».

Порай Д.С., Плискин Е.Л.,


Солощенко Д.В., Голоусикова А.А., Карпенко С.М., Логинов А.С.

Аннотация

В данной работе предлагается технология обработки входных и создания выходных документов в формате HTML. Эта технология позволяет обрабатывать достаточно произвольные входные документы и изменять выходные формы независимо от программ. Последнее облегчает работу дизайнеру, который с одной стороны не скован разработчиками, а с другой имеет дело с форматом XML, который близок к HTML – основному рабочему материалу. Еще одна предлагаемая технология позволяет построить библиотеку классов на основе схемы реляционной базы данных. Она позволяет уменьшить количество кода, осуществляющего операции с базой данных и сконцентрировать внимание разработчиков на содержательных аспектах системы. Данные технологии были применены при создании Интернет-приложения «Система Дистанционного Обучения».


Введение


В последние годы одним из быстроразвивающихся и популярных видов приложений являются Интернет-приложения (или Web-приложения). Они представляют собой «активные» Web-сервера, которые предоставляют не только статическую информацию, но и позволяют пользователям вести диалог с системой, предоставляя информацию для браузера. Такие системы имеют преимущества перед традиционными системами типа «клиент-сервер»:

  1. Тонкий клиент.

  2. Отсутствие инсталляции на клиенте.

  3. Легкость модернизации (смены версии), вплоть до полной замены пользовательского интерфейса.

  4. Независимость от платформы клиента (аппаратного обеспечения, операционной системы и т.д.).

  5. Возможность работы как в Intranet, так и в «большом» Internet.

В данной статье описана техническая сторона Системы Дистанционного Обучения [2], далее СДО. Общая схема системы:

Минимальной единицей учебного материала является «страница» (не путать с печатной страницей). Отдельные страницы объединяются в модули, а модули объединяются в курс. Такая структура позволяет строить как очень большие, так и маленькие курсы.



Подготовка учебного материала осуществляется преподавателем-автором курса. Этот процесс осуществляется, например, в редакторе Microsoft Word. Автор разбивает весь материал на отдельные страницы, затем сохраняет их в формате HTML. При этом сам редактор экспортирует все внедренные графические изображения в виде отдельных GIF-файлов. Получившийся таким образом набор HTML и GIF файлов закачивается на сервер средствами системы.

1. Технологии вызова программ Web-сервером


На начальном этапе разработки Интернет-приложения стоит задача выбора основных системных компонент, которые будет использовать система. Нужно выбрать:

  1. Web-сервер.

  2. Технологию вызова программ Web-сервером.

  3. Технологию связи с СУБД

  4. Платформу (операционную систему).

  5. Язык программирования.

  6. Технологию межмашинного взаимодействия.

В следующей таблице приведены ограничения, который накладывает Web-сервер на способ вызова прикладных программ и на язык программирования, на котором эти программы написаны:




Web-сервер

Технология вызова программ

Язык программирования

1

Любой

cgi

любой

2

Apache

servlets

java

php-module

php

perl-module

perl

custom module

c++

isapi (частично)

c++

visual basic

3

IIS

isapi

c++

visual basic

asp

vb script

java script

perl

perl

Язык программирования совместно с операционной системой, под управлением которой работает и Web-сервер и прикладная программа, накладывают ограничение на СУБД, которую можно использовать:




Язык

Платформа

Технология связи с СУБД

СУБД

1

c++

win32

odbc

любая

любая

зависит от БД

*

2

perl

win32

odbc

любая

любая

зависит от БД

*

3

java

win32

jdbc/odbc

любая

любая

jdbc/private

*

4

php

win32

odbc

любая

любая

зависит от БД

*

5

visual basic

win32

odbc

любая

6

vb script

win32

odbc

любая

7

java script

win32

odbc

любая

В таблице символом (*) обозначен список из следующих СУБД:



  1. Свободно распространяемые:

    1. MySQL

    2. PostgreSQL

  2. Коммерческие:

    1. Oracle

    2. Informix

    3. InterBase

    4. Некоторые другие

Реальными альтернативами при выборе платформы являются следующие:

  1. Win32 (Microsoft Windows 9x/NT).

  2. Linux.

  3. FreeBSD.

  4. Sun Solaris.

Другие варианты Unix являются менее реальной альтернативой, хотя перенос системы на них выглядит чисто технической работой, впрочем, требующей времени.

При построении больших систем на первый план выходит требование масштабируемости – система должна обслуживать как несколько десятков, так и сотни, тысячи, а быть может даже и миллионы пользователей. В этом случае необходимо сделать выбор технологии межмашинного взаимодействия:






Технология

Платформы

1

«чистый» TCP/IP

любая

2

CORBA

любая

3

DCOM

win32

При разработке данной системы выбор был сделан в пользу Web-сервера Apache, технологий вызова cgi/Apache module, языка программирования C++, платформ Win32/Linux, СУБД MySQL, TCP/IP в качестве технологии межмашинного взаимодействия. При этом упор делается на собственную библиотеку ServletContext, которая может быть адаптирована потенциально к любой технологии вызова программ Web-сервером (в первую очередь cgi и Apache module). Все программные модули используют эту библиотеку и, таким образом, с ее помощью могут работать со многими Web-серверами. Отдельные возможности этой библиотеки рассмотрены далее.

2. Объектно-ориентированный интерфейс к реляционной СУБД


В настоящее время все большую и большую популярность приобретают объектно-ориентированные СУБД [3]. Однако это направление достаточно молодое, терминология и основные принципы еще не устоялись, и зрелые реализации отсутствуют [1]. Однако желание заполучить объектно-ориентированный интерфейс велико. Одним из способов решения данной проблемы является создание такого интерфейса над ставшей уже традиционной реляционной СУБД.

В данной системе разработана технология, позволяющая преобразовать схему реляционной СУБД в набор классов и библиотека для работы с такими классами. Технология выглядит следующим образом:



  1. На основании схемы базы данных, представляющей собой набор SQL-операторов, создающих структуру БД (DROP TABLE, CREATE TABLE) создаются два файла – schema.h и schema.cpp. В этих файлах каждой таблице соответствует один класс. Такой класс содержит переменные-члены (по одной переменной для каждого поля таблицы), но не содержит никаких функций.

  2. Если для класса никакой дополнительной функциональности не требуется, то он остается в том виде, в каком его создала преобразующая программа. Если же необходима некоторая функциональность, то описывается (уже вручную) класс-наследник от автоматически созданного. В новом классе описываются необходимые функции и (если это необходимо) transient-переменные, которые не являются хранимыми. Значение таких переменных вычисляется после загрузки переменной на основании хранимых полей.

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


3. Стандарт XML


Стандарт XML [8] - eXtensible Markup Language - разработан World Wide Web Consortium и предназначен для хранения структурированных документов в формате, независящем от прикладных программ, операционной системы, каналов передачи данных. Документ в формате XML представляет собой текст со вставленными в него тегами, которые несут дополнительную информацию о структуре документа. Стандарт XML – это упрощенный вариант SGML – чрезвычайно мощного инструмента, но достаточно сложного в реализации и потому до сих пор мало распространенного.

Наряду с собственно XML существует стандарт DOM [6] – Document Object Model – описывающий программный интерфейс (API – application programming interface) для работы со структурированными документами. В DOM документ представляет собой древовидную структуру, в которой каждый узел – это элемент XML-файла: текст, тег, комментарий, инструкция и т.д. Появление такого стандарта имеет большое значение, однако он имеет и некоторые недостатки – так как DOM является языково-независимым (существуют версии для C++, JAVA и т.д.), то его реализация для конкретного языка требует от программиста написания больше строк кода, чем заточенная под конкретный язык библиотека.

Так как XML в некотором смысле близок к HTML, то W3C выработал вариант HTML, синтаксис которого полностью соответствует XML. Получившийся формат файла назван XHTML [7]. Необходимость нового формата вызвана тем, что автоматически обрабатывать XML (а, значит, и XHTML) значительно проще, чем оригинальный HTML в связи со значительно более жестким синтаксисом. В будущем планируется полностью перейти на XHTML, оставив в программах возможность работы со старыми HTML файлами.

Преобразование XML документов в другие документы (XML, HTML, plain text) описывает стандарт XSLT [9]. Преобразование осуществляется по «программе», хранящейся в XSL файлах. Этот файл представляет собой XML, в котором описан способ создания выходного документа на основе входного.

Данная система использует формат XML в нескольких модулях:


  1. Обработка входных документов, подготовленных в формате HTML.

  2. Представление результатов работы программ в виде HTML.

  3. Архивное хранение информации о курсах.

Для работы с XML используется библиотека Xerces, свободно распространяемая организацией Apache Software Group. Эта библиотека представляет собой реализацию, удовлетворяющую стандартам XML 1.0 и DOM 1.0.

3.1. Обработка входных документов


Входными документами являются файлы в формате HTML, подготовленные преподавателем-автором курса. Эти документы проходят обработку перед тем, как будут показаны пользователю. В процессе этой обработки выполняются следующие преобразования:

  1. Преобразование HTML в XHTML. Это довольно сложный процесс, так как стандарт HTML довольно лоялен к отклонениям и поэтому многие авторы и программы работают с нестандартным HTML (непарные теги, закрытие тегов не в том порядке и т.д.).

  2. Выделение тела документа (тег BODY).

  3. Замена относительных ссылок на абсолютные (для внедренных файлов с изображениями, описываемыми тегом IMG).

  4. Обработка псевдо-ссылок на отдельные компоненты курса (разделы, глоссарий, список литературы, список иллюстраций и т.д.) и замена их на реальные ссылки.

В дальнейшем обработанный таким способом документ вставляется в оболочку, представляющую собой каркас страницы (фоновый рисунок, стилевое оформление, панель инструментов, шапка, подвал и т.д.).

3.2. Создание выходных документов


Выходные документы – это файлы в формате HTML, которые предъявляются пользователю. Особенностью выходных документов является то, что должна существовать возможность изменять вид этих документов (по требованию заказчика, например) без изменения программ. Логичное решение в этом случае – разделить некоторым образом программу и HTML страницу. В данной системе разработан механизм шаблонов, который позволяет это сделать. Этот механизм основан на применении XML в качестве промежуточного формата данных.

В процессе работы программа заполняет некоторую древовидную структуру данных, аналогичную той, которая используется в DOM (создание собственной структуры данных вызвано тем, что использование DOM требует больше строк кода для манипулирования). Внешний вид HTML страницы определяется шаблоном, который представляет собой XHTML файл с вкраплениями дополнительных тегов и служебных символов. Вывод результатов программы заключается в обработке шаблона и замене служебной информации на реальные данные, которые извлекаются из дерева, подготовленного программой.

В шаблоне встречаются два вида служебной информации – простые подстановки и сложные инструкции.

Простые подстановки – это последовательность символов $NAME, такая, что ключ NAME определена в дереве-результате. Обработка подстановки заключается в ее замене на значение, сопоставленное ключу NAME. При этом происходит замена символов, недопустимых в HTML на соответствующие «сущности» (entities) - например, символ «<» заменяется строкой «<».

Сложные инструкции – это теги, которые программа вывода обрабатывает некоторым образом. В настоящее время определены следующие теги:




Тег

Параметры

Описание

1

if

bool

Если параметр равен «истина», то содержимое тега выводится, иначе – нет

2

ifnot

bool

Действие противоположно тегу

3

repeat

list

Содержимое тега выводится столько раз, сколько элементов в списке

4

include

string

Подставляется содержимое файла с указанным именем

5

define




Служит для описания новых тегов. С обработкой результатов программы непосредственно не связан

6

inserthtml

string

Выполняет подстановку «сырого» HTML текста. В отличие от простой подстановки замены символов не происходит

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

С помощью механизма описания новых тегов можно как создавать новые теги, которые могли бы быть включены в стандарт HTML (например, ), так и описывать общую структуру страницы.



Пример 1: тег IMGBUTTON представляет собой всплывающую графическую «кнопку». Он имеет атрибуты SRC и ALT как у тега IMG и атрибуты HREF и ONCLICK как у тега A. Две картинки (для нормального состояния и «вдавленного») лежат в директории /images и называются src.gif и src_.gif соответственно.


onmouseout = "document['$src'].src = document['$src'].imgRolln"

onClick="$onClick"

href="$href">



id="$src"

name="$src"

dynamicanimation="$src"

lowsrc="/images/$src_.gif"

/>






Пример 2: тег PAGE. Определяет общую структуру страницы.





$title









$title





Смотрите также:
Опыт разработки Интернет-приложения «Система дистанционного обучения»
189.89kb.
1 стр.
Опыт международного сотрудничества исторического факультета Петргу в создании курсов дистанционного обучения по истории России
32.68kb.
1 стр.
Руководство по работе в сдо для преподавателя введение Для реализации проекта дистанционного обучения в угту используется система дистанционного обучения (сдо)
779.83kb.
7 стр.
Вопросы разработки программного интерфейса синхронизации данных иаис и систем дистанционного обучения
44.9kb.
1 стр.
Разработка портала дистанционного обучения вуза
46.37kb.
1 стр.
А. П. Хоменко, Т. Н. Черняева, С. Б. Занданова, Г. П. Бояркина
21.12kb.
1 стр.
Дистанционное обучение и новые формы дистанционной поддержки учащихся и учителей
374.58kb.
1 стр.
Морские кишечнополостные
101.4kb.
1 стр.
Программа кружка «Музееведение»
116.71kb.
1 стр.
Тип Хордовые. Надкласс Рыбы
27.38kb.
1 стр.
Памятка участнику дистанционного обучения по образовательным комплексам
41.04kb.
1 стр.
Подготовка преподавателей дистанционного обучения: от концепции к практике Л. П. Владимирова
78.71kb.
1 стр.