Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
записка (Анисимов А).doc
Скачиваний:
2
Добавлен:
17.04.2019
Размер:
1.29 Mб
Скачать

структурное подразделение

Новосибирского государственного университета

Информатики высший колледж

Кафедра информатики

Разработка автоматизированной системы создания динамических web-сайтов

Дипломный проект на квалификацию

техник-программист

Научный руководитель

Иваньчева Т.А.

«____»__________2005 г.

Студент гр. 204б2

Анисимов А.О.

«____»__________2005 г.

Новосибирск

2006

Оглавление

КАФЕДРА ИНФОРМАТИКИ 1

РАЗРАБОТКА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ СОЗДАНИЯ ДИНАМИЧЕСКИХ WEB-САЙТОВ 1

Дипломный проект на квалификацию 1

Новосибирск 1

Введение

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

Для разработки данного приложения существуют несколько причин. Первая и главная – это отсутствие у обычного пользователя персонального компьютера необходимых знаний для создания своей собственной web-странички, доступной всем пользователям сети Internet. Эти знания обычно включают HTML (Hyper Text Markup Language), JavaScript – язык написания скриптов исполняемых на клиенте (браузере) и одной или нескольких технологий генерации содержимого на сервере. Передо мной стояла задача предоставить таким пользователям возможность создать, опубликовать, и, в дальнейшем, поддерживать собственный сайт. Вторая причина заключается в универсализации процесса создания web-сайта. Большинство существующих сайтов представлены в виде набора страниц определённых типов, колонки новостей, меню и логотипа. Отличаются такие сайты друг от друга лишь дизайном. Поэтому, структурировав данные параметры, можно избавить пользователя от необходимости расположения элементов дизайна на странице, предоставив ему возможность выбора из готовых вариантов дизайна. Всё, что остаётся пользователю - это только заполнить свой сайт содержимым, что также упрощает моя система.

Данный программный продукт может найти применение в организациях, предоставляющих хостинг (hosting-providers), на общедоступных web-серверах или в других возможных областях, связанных с предоставлением услуг пользователям Internet.

В процессе выполнения проекта мной проделаны следующие виды работ:

  • Изучена новая предметная область;

  • Найдены и рассмотрены существующие аналоги;

  • Составлена спецификация требований к системе;

  • Исследованы возможные способы реализации;

  • Разработана объектная модель;

  • Разработана модель данных;

  • Разработан пользовательский интерфейс;

  • Реализованы все функции системы;

  • Сделан анализ проделанной работы.

Постановка задачи, описание предметной области

Постановка задачи

Основная задача системы предоставить своим пользователям возможность создать и, в дальнейшем, опубликовать свой собственный web-сайт в Интернете, упростив процесс разработки. Для того чтобы создание web-сайта было простым для обычных пользователей, не имеющих опыта разработки, система должна скрыть сложные процессы, такие, например, как обращение к базе данных. В результате пользователь должен получить полноценный web-сайт, который он сможет редактировать и обновлять в режиме WYSIWYG (What You See Is What You Get), то есть на интуитивно понятном уровне. Пользователи без фактического знания web-дизайна могут получить полностью готовый web-сайт с современным дизайном и удобной навигацией в течение пяти-десяти минут.

Пользователи системы и их роли

В системе существует две группы пользователей: обычные пользователи (клиенты) и администраторы.

Обычные пользователи регистрируются в системе, тем самым получая доступ к основным инструментам создания сайта. При регистрации они указывают своё имя, адрес, электронный почтовый ящик и реквизиты для входа в систему. Для каждого клиента система предоставляет одинаковый функционал создания web-сайта. В диалоговом режиме определяются основные параметры сайта, такие как дизайн, расположение элементов меню, логотип, и так далее. На любом этапе создания сайта пользователь может посмотреть результаты своей работы, используя функцию предварительного просмотра.

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

Набор типов страниц сайта предусмотрен заранее. В него входят:

  • Главная страница. Состоит их двух частей. Первая часть может использоваться для вывода общей ознакомительной информации. Вторая часть может использоваться для показа ссылок и быстрой навигации по сайту.

  • Текстовая страница. Содержит блоки форматируемого текста, включая различные ссылки, изображения, таблицы и списки.

  • Ссылка на внешний ресурс.

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

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

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

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

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

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

После определения основных параметров сайта и добавления содержимого страниц, клиенту предоставляется возможность опубликовать свой сайт, то есть сделать его доступным для других пользователей сети Интернет. Для этого ему необходимо составить запрос администратору системы. После того, как запрос будет одобрен, web-сайт сможет посетить любой желающий, зная только URL-адрес.

Администратор системы имеет отдельный вход в систему, своё рабочее место и интерфейс, позволяющий выполнять следующие функции:

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

  • Просмотр списка клиентов. Возможность просмотра информации о клиентах в списке и по каждому клиенту в отдельности. Данная функция также включает возможность просмотра сайта каждого клиента.

  • Работа с запросами на публикацию. Администратор должен одобрять либо отклонять запросы на публикацию, поступающие от пользователей. В обоих случаях на электронный почтовый ящик пользователя система должна послать письмо с уведомлением об одобрении либо отклонении запроса.

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

Аналоги системы

У данной системы существует несколько аналогов. Все они сходны по структуре и организации, а также всех их объединяет сфера применения –Internet. Вот несколько из наиболее известных:

  • Page Builder (http://pagebuilder.com/)

  • SW-Soft SiteBuilder (http://www.swsoft.com/en/products/sitebuilder/)

  • Google Page Creator (http://pages.google.com)

  • Online Website Builder (http://www.site2you.com/)

Основные отличия данной системы от вышеперечисленных таковы:

  1. Данная система хранит все данные web-сайта в собственной базе данных, что позволяет создавать динамические страницы, то есть страницы, содержимое которых генерируется сервером. Это позволяет пользователям создавать такие страницы как гостевая книга, форма отправки данных или др.

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

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

Выбранные программные средства

Для реализации системы выбраны следующие программные средства и технологии.

Web-сервер Apache: Данный web-сервер имеет огромное распространение в среде Unix и Windows, большинство Unix-серверов работают именно через Apache. По данным компании Netcraft (http://www.netcraft.com/Survey/) общее число Web-узлов, работающих под его управлением, к концу 1998 г. достигло 2 млн. (55% общего числа узлов) и постоянно растет. Для сравнения: на долю серверов Microsoft приходится 25%, Netscape -7%. Будучи бесплатной открытой программой, предназначенной для бесплатных же Unix-систем (FreeBSD, Linux и др.), Apache по функциональным возможностям и надежности не уступает коммерческим серверам, а широкие возможности конфигурирования позволяют настроить его для работы практически с любой конкретной системой. Существуют локализации сервера для различных языков, в том числе и для русского.

Apache http-сервер легко конфигурируется и имеет множество настроек различного уровня для работы с серверным содержимым.

СУБД Caché: CACHÉ — это постреляционная СУБД, уникальное качество которой заключается в равноправной и эффективной поддержке сразу трех способов работы с данными:

  • Объектного;

  • Реляционного, на основе SQL;

  • Высокопроизводительного и гибкого многомерного метода доступа к данным.

Кроме того, CACHÉ обеспечивает быструю и эффективную разработку Web-приложений, поддержку механизма транзакций при работе с данными, легкую масштабируемость приложений, предъявляя, при этом, крайне скромные требования к аппаратным ресурсам, используемым системой и администрированию. CACHÉ поддерживает большинство платформ, используемых для создания промышленных приложений - от Windows, OpenVMS, Unix/Linux до Mac OS X. На ее основе разработаны различные системы, оперирующие как малыми, так и большими массивами данных (порядка нескольких терабайт), с которыми одновременно могут работать до 50 000 пользователей.

Caché Server Pages: Для разработки Web-приложений в Caché используется технология серверных страниц, т.е. создаются специальные страницы, которые заполняются данными немедленно ("on-the-fly"), как только они запрашиваются браузером. Отличие серверных страниц Caché (Caché Server Pages) от других технологий разработки Web-приложений состоит в том, что они хранятся на сервере данных Caché, так сказать, рядом с используемыми данными. При обращении к CSP-странице выполняются методы, генерирующие HTML или XML. Чтобы подсоединиться к Web-серверу, используется стандарт API, обеспечивающий высокую скорость. Такая архитектура позволяет создавать высокопроизводительные Internet- или Intranet-приложения.

Если данная система будет установлена в среде Unix, то для полноценной функциональности требуется, чтобы на сервере были также установлены следующие программы:

  • Sendmail: программа для отправки электронных писем;

  • ImageMagick: набор программ для обработки цифровых изображений.

Таким образом, система предусмотрена для работы под управлением операционных систем Unix или Windows с установленным программным обеспечением, перечисленным выше. Для связки Apache + Caché Server Pages необходима дополнительная настройка, детали которой зависят от выбранной операционной системы. Все подробности описаны в документации, прилагаемой к СУБД Caché.

Проектирование системы

Предметом проектирования явилось ядро системы, отвечающее за общую функциональность. За основу я взял технологию CSP (Caché Server Pages), которая сама по себе позволяет довольно легко создавать страницы различной сложности. Большим минусом данной технологии является практическое отсутствие разделения так называемой бизнес логики от логики представления. Для каждой страницы, предоставляющей пользователю какую-либо информацию, должен быть создан отдельный файл, в котором смешены системные вызовы, обращение к данным и обработка этих самых данных для конечного представления пользователю. Созданные таким способом системы плохо адаптированы к возможным изменениям в дальнейшем, поэтому плохо расширяемы. Например, для того, чтобы изменить дизайн пользовательского интерфейса, дизайнеру понадобится перебрать много лишней информации, относящейся к функциональности и обработке данных, что неоспоримо лишнее и занимает больше времени.

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

В процессе проектирования использовались некоторые шаблоны объектно-ориентированного проектирования, такие как Команда (Command) и Model View Controller. Каждый из шаблонов будет описан ниже. Спроектированная мною архитектура является универсальной и легко может стать основой любой другой системы, работающей в тех же условиях и с тем же программным обеспечением.

Model View Controller: Шаблон MVC часто используется в Web-приложениях. Такой подход позволяет строить трехзвенные приложения и предоставляет необходимые уровни абстракции кода. Кроме того, MVC позволяет упростить взаимодействие дизайнеров и разработчиков, а также - упрощает сопровождение и обновление созданных приложений.

Обычно Представление (View) - это конечный результат работы приложения, который отсылается браузеру (например - код HTML). Говоря о представлении, многие подразумевают шаблонизатор (template engine), но такая ассоциация весьма спорна. Основная идея представления - оно должно существовать "само по себе". В процессе рендеринга (rendering) представления его элементы должны знать о своей роли в системе. Если для примера рассмотреть XML, то при обработке документа XML с помощью DOM API такое "знание" присутствует - узел в дереве DOM "знает", где он находится и что он содержит, в то время, как при обработке с помощью SAX узел ничего не знает до тех пор, пока обработчик не доберется до него.

Модель (Model) включает в себя логику работы приложения (в корпоративных приложениях обычно называется бизнес уровнем). В общем случае модель занимается превращением исходных данных в данные, имеющие смысл, которые передаются в представление для последующего отображения. Часто модель содержит SQL-запросы, в некоторых случаях обладая преимуществом перед абстрактным классом БД.

Контроллер (Controller) обычно вызывается первым при получении HTTP запроса. Он обрабатывает запрос (GET, POST переменные, cookie и т.п.) и формирует соответствующий ответ.

Принцип шаблона Команда: Шаблон Команда (Command) включает в себя процесс выполнения одиночного действия (команды). Он отлично подходит для проектирования реакции системы на запрос пользователя и возвращение ему ответа (результата) в каком-либо виде. В процессе выполнения создаётся соответствующий объект класса Command и ему передаются параметры запроса. Запуск команды осуществляется методом Execute (выполнить) и результат работы команды возвращается в место вызова.

В результате проектирования были созданы следующие классы:

  1. HttpResponse (ответ пользователю): Класс, содержащий ответ на пользовательский запрос, то есть представление. Наследуется от класса %CSP.Response, входящего в состав стандартных классов технологии CSP. Имеет дополнительный метод Evoke (вызов ответной реакции). Этот класс является базовым для различных классов ответа пользователю: XmlResponse, возвращающий пользователю XML, HtmlResponse, возвращающий пользователю HTML-страницу, RedirectResponse, перенаправляющий пользователя на другую команду и Template, являющийся основным классом для представления информации в виде HTML-шаблонов. Все эти классы переопределяют метод Evoke базового класса.

  1. Command (команда): Этот класс является абстрактным и реализует один метод – Execute (выполнение), возвращающий объект HttpResponse. Он является базовым для всех классов команд, каждый из которых предназначен для обработки конкретного запроса пользователя.

  1. Application (приложение): Класс приложения имеет функцию контроллера, принимая пользовательский запрос и возвращая результат его обработки. Этот класс имеет единственный метод Page, который извлекает из запроса название команды, которая должна обработать запрос, создаёт объект соответствующего класса и вызывает его метод Execute. Результат работы команды в виде объекта HttpResponse возвращается пользователю посредством вызова метода Evoke данного объекта. Этот класс также определяет основные параметры приложения, такие как кодировку символов, язык, время бездействия приложения, после которого будут уничтожены данные текущей сессии и т. д.

Роль модели в системе под управлением СУБД Caché играют специальные классы данных, вынесенные в отдельный пакет Model.

Реализация

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

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

Структура основных пакетов и классов, созданных в приложении: Пакет Core содержит базовые классы ядра, а также пакет специальных классов- утилит, которые могут использоваться в различных приложениях на базе Core, такие как Image, Email, Localization и Matrix. Класс Core.Utils.Image служит для обработки изображений, закачке изображений на сервер а также для создания уменьшенных изображений. Core.Utils.Email предназначен для отправки писем электронной почтой. Оба эти класса требуют установки соответствующего программного обеспечения. Класс Core.Utils.Localization упрощает процесс локализации приложения. Класс Core.Utils.Matrix используется для создания двумерных матриц из данных, представленных как векторы (списки, массивы).

Пакет SiteBuilder содержит все рабочие классы приложения. В него входят три пакета: пакет команд SiteBuilder.Commands, содержащий все классы, которые наследуются от класса Core.Command, пакет классов модели SiteBuilder.Model, содержащий классы данных, хранимые в БД и пакет SiteBuilder.Views, который содержит классы представления, наследуемые от Core.Template.

Основной класс приложения – класс SiteBuilder.Application. Он наследуется от класса Core.Application и переопределяет основные параметры приложения, такие как язык пользовательского интерфейса по умолчанию.

Пакет SiteBuilder.Views содержит четыре класса представления: AdminView – представление системы для администратора, ClientView – представление для клиента, вошедшего в систему, IndexView, отвечающий за вид системы для пользователя, не вошедшего в систему и VisitorView – представление созданного системой web-сайта для посетителя.

Пакет SiteBuilder.Commands содержит множество команд, отвечающих за различную функциональность в системе. Так как каждая команда способна обрабатывать определённый формат запроса и выдавать ответ пользователю, все команды разбиты на группы по функциональности. При реализации частично использовалась технология AJAX (Asynchronous JavaScript And XML) — подход к построению пользовательских интерфейсов web-приложений, при котором web-страница, не перезагружаясь, сама догружает нужные пользователю данные. В пакет SiteBuilder.Commands.Ajax вынесены все команды, использующие AJAX-запросы.

Пакет SiteBuilder.Model содержит классы, отвечающие за хранение и обработку данных. Все они подробно описаны в пункте 3. ОПИСАНИЕ БАЗЫ ДАННЫХ.