Разработка веб-приложения для информационного обеспечения учебного процесса (видеокасты)
4 Построение модели системы и разработка технологии реализации
4.1 Диаграмма развертывания
Рисунок 6 – Диаграмма развертывания
На рисунке 6 представлена диаграмма развертывания. Данная схема является стандартной для большинства сайтов в сети Интернет. Клиентские запросы поступают на
80 порт, который слушает веб-сервер nginx, далее запрос или проксируется на apache, или отрабатывает на nginx. Apache в свою очередь взаимодействует с СУБД и системой кэширования (на диаграмме показан Eaccelerator, но на его месте могут быть Memcached или APC) [15].
4.2 Диаграмма компонентов
Рисунок 7 – Диграмма компонентов
Диаграмма компонентов (рисунок 7) хорошо показывает альтернативу связке Apache-MySQL-PHP в лице пакетов Denwer/LAMP. Модули видеокастов, форум и дисциплины вынесены как увеличивающие функционал системы. В то же время система не зависит от них, и сами эти модули самодостаточны. Модуль авторизации вынесен в отдельную часть, поскольку он не реализует дополнительный функционал системы, а является одной из ее частей.
4.3 Диаграммы вариантов использования
4.3.1 Диаграмма вариантов использования для гостя
Как видно из цели диплома, гости хоть и являются второстепенной целевой аудиторией, но основная цель – студенты университета, соответственно на данный момент функционал доступных извне подкастов не реализован, хотя и может быть реализован по требованию. Соответственно, гостю показывается лишь приветственная страница и форма авторизации (рисунок 8). Загруженные в систему видеокасты гостям на данный момент не показываются.
Рисунок 8 – Диаграмма вариантов использования для гостя
4.3.2 Диаграмма вариантов использования для автора
Условно можно сделать разделение “преподавателя” на автора и тьютора. Автор создает сам материал подкаста, в то время как тьютор занимается типичной для него функцией – обучает. На практике часто получается, что эти две роли объединены в одну - “тьютор”.
На рисунке 9 показаны варианты использования системы для автора материалов.
Рисунок 9 – Диаграмма вариантов использования для автора
4.3.3 Диаграмма вариантов использования для преподавателя
Преподаватель в конкретном случае должен обучать студентов и назначать им аудио- и видеокасты к просмотру (рисунок 10).
Рисунок 10 – Диаграмма вариантов использования для преподавателя
4.3.4 Диаграмма вариантов использования для студента
Диаграмма вариантов использования для студента – самая большая из всех, поскольку именно обучающиеся в университете на настоящий момент являются целевой аудиторией данного проекта. Студенты могут просматривать доступные им видеокасты (рисунок 11), просматривать обсуждения, вопросы студентов и ответы преподавателей на эти вопросы в “Обсуждениях”. Студенты могут как просматривать видеокасты, так и слушать аудиокасты загруженные авторами обучающих материалов.
Рисунок 11 – Диаграмма вариантов использования для студента
4.4 Инфологическая модель базы данных
На рисунке 13 представлена инфологическая модель базы данных системы. Подробное описание проиллюстрированной модели представлено в приложении A. Инфологическая модель ядра системы представлена на рисунке 12.
Рисунок 12 – Инфологическая модель ядра системы
Рисунок 13 – Инфологическая модель системы
4.5 Выбор технологии реализации
После рассмотрения возможных аналогов данного проекта было выявлено, что для отдачи мультимедиа контента (в том числе видео- и аудиоконтента) используются веб-сервера nginx и lighttpd. Серверные скрипты в основном используют возможности php, python и bash. В качестве сервера баз данных используются в большинстве случаев MySQL и PostgreSQL. На рисунке 14 представлена стандартная схема работы большинства динамических сайтов в сети Интернет.
Рисунок 14 – Стандартная схема работы динамических сайтов, использующих БД
Как видно из рисунка, запрос пользователя поступает на фронтовый веб-сервер, который слушает 80 порт (стандартный HTTP-порт). Далее фронтовый веб-сервер в зависимости от запроса или проксирует его далее на бэкенд (более тяжеловесный сервер, умеющий обрабатывать динамические запросы, например Apache), или же отдает контент, запрошенный пользователем. В случае проксирования запроса на бэкенд мы можем взаимодействовать с БД посредством какого-либо языка программирования [14].
4.5.1 Выбор веб-сервера
Данная схема работы сайтов является на данный момент стандартной в сети Интернет. В качестве фронтовых веб-серверов в большинстве случае используются nginx и lighttpd. В качестве бэкенда самым известным веб-сервером является Apache. Также возможен вариант работы нескольких веб-серверов Apache (или вобще – нескольких физических серверов) вместе с балансировщиком нагрузки [12]. Вообще, главная причина использование схемы фронтенд-бэкенд – эффективное использование ресурсов. Если клиентов пускать напрямую к бэкенду (например apache+mod_perl) без фронтенда, то серверов под бэкенды потребуется в несколько раз больше [12].
В nginx рабочие процессы обслуживают одновременно множество соединений, мультиплексируя их вызовами операционной системы select (Windows), epoll (Linux), kqueue (FreeBSD) и eventport (Solaris). Рабочие процессы выполняют цикл обработки событий от дескрипторов. Полученные от клиента данные разбираются с помощью конечного автомата. Разобранный запрос последовательно обрабатывается цепочкой модулей, задаваемой конфигурацией. Ответ клиенту формируется в буферах, которые хранят данные либо в памяти, либо указывают на отрезок файла. Буферы объединяются в цепочки, определяющие последовательность, в которой данные будут переданы клиенту. Если операционная система поддерживает эффективные операции ввода-вывода, такие как writev и sendfile, то nginx применяет их по возможности [10].
Для эффективного управления памятью nginx использует пулы. Пул — это последовательность предварительно выделенных блоков динамической памяти. Длина блока варируется от 1 до 16 килобайт. Изначально под пул выделяется только один блок. Блок разделяется на занятую область и незанятую. Выделение мелких объектов выполняется путем продвижения указателя на незанятую область с учетом выравнивания. Если незанятой области во всех блоках нехватает для выделения нового объекта, то выделяется новый блок. Если размер выделяемого объекта превышает значение константы NGX_MAX_ALLOC_FROM_POOL, либо длину блока, то он полностью выделяется из кучи. Таким образом, мелкие объекты выделяются очень быстро и имеют накладные расходы только на выравнивание [15].
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности