Разработка платформы для создания сайтов различной направленности Content Management System на основе Zend Framework. Структура системы, архитектура базы данных. Функции управления контентом и администрирования. Реализация серверной и клиентской частей.
При низкой оригинальности работы "Интернет-сервис "Конструктор сайтов" на основе Zend Framework", Вы можете повысить уникальность этой работы до 80-100%
Сервис предоставляет возможность создать свой собственный одностраничный сайт, не обладая специальными техническими навыками, например: сайт визитку, сайт резюме, личный сайт, семейный сайт, сайт портфолио. Software as a service (SAAS) («Программное обеспечение как услуга»), или Software on Demand (SOD) («Программное обеспечение по требованию») - модель программного обеспечения, при которой поставщик разрабатывает веб-приложение и самостоятельно управляет им, предоставляя заказчикам доступ к программному обеспечению через Интернет. Текстовые документы, содержащие код на языке HTML (такие документы традиционно имеют расширение «html» или «htm»), обрабатываются специальными приложениями, которые отображают документ в его форматированном виде. Данный пример позволяет понять, что использование XSLT в качестве шаблонизатора и средства обработки XML-документов позволяет разделить два процесса: непосредственный процесс обработки данных на сервере и процесс обработки этих данных для удобного отображения их пользователю. Действия по преобразованию одного XML-документа в другой выполняются специальной программой - XSLT-процессором, которая получает на входе XML-документ, таблицу стилей XSLT, а на выходе выдает документ, полученный при применении XSLT-преобразований ко входному XML-документу.В результате использования нашей системы вы получите сайт, который будет полностью независим от нашей системы.В ходе работы была разработана платформа для создания сайтов различной направленности, которая, по сути, является Content Management System, то есть системой, содержащей в себе функции управления контентом сайта и администрирования, а также являющейся по сути онлайн сервисом, что позволяет избавить конечных пользователей от многих проблем, таких как обновление, установка. Для системы уже создано достаточно много блоков, которые чаще всего бывают необходимы.
Введение
Сегодня уже нет человека, который бы не знал, что такое интернет и как им пользоваться. И всем прекрасно известно, что интернет состоит из миллионов составляющих, так называемых сайтов, интернет проектов, доменов, вебсайтов, страничек, аккаунтов, блогов и т.д.
Сегодня уже нет компании, которая развивается, не обращая внимания на сетевые технологии, сетевые инструменты на те возможности которые дает интернет. Да и модель развития бизнеса претерпевает изменения. Становления бизнеса теперь уже часто начинается не с аренды офиса, а с создания своего сетевого представительства, корпоративного сайта компании.
Но, несмотря на бурное развитие сетевых технологий, создание даже просто сайта это довольно таки не тривиальная задача и требует от человека серьезных технических знаний.
В компании, в которой я работаю, мы задались целью создать такую систему, которая позволяла бы любому человеку создать свой собственный сайт. При этом мы постарались создать удобный и очень легкий в освоении интерфейс.
Уже существует несколько подобных систем, имеющих свои достоинства и недостатки. В разработке своей системы я попытался учесть и то, и другое, чтобы получить продукт, отвечающий современным тенденциям в веб-программировании и проектировании, а так же, что немаловажно, удовлетворяющий потребностям в быстродействии. На основе этой системы можно будет создавать разнообразные веб-приложения, при этом сведя трудозатраты до минимума и не требующие от человека каких либо навыков в программировании.
На данном этапе сервис уже находится в открытом бета тестировании и каждый может испытать ее, для создания своего личного сайта
Сервис предоставляет возможность создать свой собственный одностраничный сайт, не обладая специальными техническими навыками, например: сайт визитку, сайт резюме, личный сайт, семейный сайт, сайт портфолио.
Мы и наша команда старались сфокусировать все свои усилия и добиться преимуществ над другими схожими сервисами.
· Приятный и интуитивно понятный интерфейс для создания сайта.
· Никакой сторонней рекламы на Вашем сайте.
· Вы можете загружать и хранить фотографии без потери качества.
· Сайт будет находиться на Вашем домене. Пример http://www.yourdomain.ru (или любой другой).
· Объем информации которую Вы можете хранить зависит только от тарифного плана Вашего хостинга.
· Сайт загружается вам на FTP в полном объеме.
· Наличие большого колва профессиональных шаблонов. сайт платформа серверный клиентский
1. Постановка задачи
В дипломной работе требуется реализовать специализированную систему для создания сайтов, содержащую в себе следующие свойства: 1. Software as a service (SAAS) («Программное обеспечение как услуга»), или Software on Demand (SOD) («Программное обеспечение по требованию») - модель программного обеспечения, при которой поставщик разрабатывает веб-приложение и самостоятельно управляет им, предоставляя заказчикам доступ к программному обеспечению через Интернет. Основное преимущество модели SAAS для потребителя состоит в отсутствии затрат, связанных с установкой, обновлением и поддержкой работоспособности оборудования и программного обеспечения, работающего на нем.
2. Высокая степень надежности и отказоустойчивости, которая обеспечивается многоуровневым кэшированием данных и балансировкой нагрузки на http-серверы.
3. Высокая степень надежности и отказоустойчивости, которая обеспечивается многоуровневым кэшированием данных и балансировкой нагрузки на http-серверы.
4. Удобство использования: интерфейс должен быть продуман с учетом того, что им будет пользоваться человек, далекий от web-технологий. Интерфейс должен быть простым и интуитивно понятным любому пользователю. А также будет использоваться современные технологии и методы, такие как Jquery UI, WYSIWYG, Drag & Drop interace.
5. Быстродействие: в интерфейсе должна быть использована технология, обеспечивающая обмен данными между браузером клиента и сервером в «фоновом» режиме, без перезагрузки страницы, отличающаяся быстрой отдачей контента и возможностью работы с большими объемами информации.
6. Простота управления: система должна позволять быстро и гибко добавлять различные элементы (блоки) на сайт клиента а также настраивать их.
7. Расширяемость и совместимость: создаваемая система должна быть расширяемой, что позволит легко добавлять туда необходимые блоки с нужным функционалом. В системе должна быть предусмотрена возможность легкого добавления новых типов отдаваемой пользователю информации, нового функционала, быстрого приспособления блоков, уже готовых блоков для каких-то новых нужд, а также иметь возможность быстрого перестроения на другой тип базы данных..
Таким образом, мы получаем, что создаваемый сервис по сути является средой для быстрого создания вебсайтов. Она должна иметь возможность быстрого приспособления под нужды конкретного проекта в целях экономии времени на его создание.
2. Анализ существующих технологий
При разработке системы для создания и управления интернет-ресурсами использовались следующие технологии и библиотеки: Клиентские: • HTML (Hypertext Markup Language - язык разметки гипертекста)
Далее обо всех этих технологиях будет рассказано несколько подробнее.
HTML
HTML - стандартный язык для разметки документов, используемый во Всемирной Паутине. Все веб-страницы создаются при помощи языка HTML, который интерпретируется браузером и отображается в виде документа, который удобен для восприятия человеком. Язык HTML соответствует международному стандарту ISO 8879.
Текстовые документы, содержащие код на языке HTML (такие документы традиционно имеют расширение «html» или «htm»), обрабатываются специальными приложениями, которые отображают документ в его форматированном виде. Такие приложения, называемые браузерами или интернет-обозревателями, обычно предоставляют пользователю удобный интерфейс для запроса веб-страниц, их просмотра (и вывода на иные внешние устройства), и при необходимости отправки введенных пользователем данных на сервер. Найболее популярными, на сегодняшний день, являются браузеры Internet Explorer, Firefox, Opera и Safari.
Язык HTML был разработан британским ученым Тимом Бернерсом-Ли приблизительно в 1991-1992 годах в стенах Европейского совета по ядерным исследованиям в Женеве (Швейцария). HTML создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области верстки. HTML успешно справлялся с проблемой сложности SGML путем определения небольшого набора структурных и семантических элементов (размечаемых «тегами»), служащих для создания относительно простых, но красиво оформленных документов. Помимо упрощения структуры документа, в HTML внесена поддержка гипертекста. Мультимедийные возможности были добавлены позже. Изначально язык HTML был задуман и создан как средство структурирования и форматирования документов без их привязки к средствам воспроизведения (отображения). В идеале, текст с разметкой HTML должен был без стилистических и структурных искажений воспроизводиться на оборудовании с различной технической оснащенностью (цветной экран современного компьютера, монохромный экран органайзера, ограниченный по размерам экран мобильного телефона или устройства и программы голосового воспроизведения текстов). Однако современное применение HTML очень далеко от его изначальной задачи. С течением времени, основная идея платформонезависимости языка HTML была отдана в своеобразную жертву современным потребностям в мультимедийном и графическом оформлении.
HTML - это теговый язык разметки документов. Любой документ на языке HTML представляет собой набор элементов, причем начало и конец каждого элемента обозначается специальными пометками - тегами. Элементы могут быть пустыми, то есть не содержащими никакого текста и других данных (например, тег перевода строки ). В этом случае обычно не указывается закрывающий тег. Кроме того, элементы могут иметь атрибуты, определяющие какие-либо их свойства (например, размер шрифта для элемента font).
Атрибуты указываются в открывающем теге. Вот примеры фрагментов HTML-документа: • Текст между двумя тегами - открывающим и закрывающим.
• Здесь элемент содержит атрибут href.
• А вот пример пустого элемента: Каждый HTML-документ, отвечающий спецификации HTML какой-либо версии, должен начинаться со строки объявления версии HTML , которая обычно выглядит примерно так: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Если эта строка не указана, то добиться корректного отображения документа в браузере становится труднее. Далее обозначается начало и конец документа тегами и соответственно. Внутри этих тегов должны находиться теги заголовка () и тела () документа.
XML
XML - язык разметки, фактически представляющий собой свод общих синтаксических правил. XML - текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки, иногда называемых словарями.
Целью создания XML было обеспечение совместимости при передаче структурированных данных между разными системами обработки информации, особенно при передаче таких данных через Интернет.
XML - это иерархическая структура, предназначенная для хранения любого количества текста или любых данных, визуально структура может быть представлена как дерево. Важнейшее обязательное синтаксическое требование - то, что документ имеет только один корневой элемент (англ. root element) (альтернативно называемый элементом документа (англ. document element)). Это означает, что текст или другие данные всего документа должны быть расположены между единственным начальным корневым тегом и соответствующим ему конечным тегом.
Следующий простейший пример - правильно построенный документ XML:
First
Second
Subitem2
Third
Last
В этом простейшем примере видны основные элементы структуры XML-документа. Первая строка XML-документа называется объявлением XML (англ. XML declaration) - это необязательная строка, указывающая версию стандарта XML (обычно это 1.0), также здесь может быть указана кодировка символов и внешние зависимости. Остальная часть этого XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов (меток), обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, например «»; закрывающий тег состоит из того же имени в угловых скобках, но перед именем еще добавляется косая черта, например «». Содержимым элемента (англ. content) называется все, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы.
Кроме содержания у элемента могут быть атрибуты - пары имя-значение, добавляемые в открывающий тег после названия элемента. Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то же имя атрибута не может встречаться дважды в одном элементе. Не рекомендуется использовать разные типы кавычек для значений атрибутов одного тега. auto
В приведенном примере у элемента «car» есть два атрибута: «wheels-number», имеющий значение «4», и «doors-count», имеющий значение «5».
XSLT
XSLT - часть спецификации XSL, задающая язык преобразований XML-документов. Спецификация XSLT является рекомендацией W3C.
При применении таблицы стилей XSLT, состоящей из набора шаблонов, к XML-документу (исходное дерево) образуется конечное дерево, которое может быть как XML-структурой, так и обычным текстом. Запросы выбора данных из исходного дерева пишутся на языке запросов XPATH.
XSLT находит множество различных применений, в основном в области web-программирования. При разработке платформы язык шаблонов XSLT использовался для преобразования данных, полученных в ходе работы разработанного веб-приложения, в какой-либо другой вид. Например, преобразование XML, полученного в ходе работы приложения, в страницу HTML, удобную для восприятия пользователем (а также ряд других применений, о которых будет рассказано чуть ниже).
Консорциум W3 определяет три составные части языка XSL (от англ. EXTENSIBLE Stylesheet Language - Расширяемый Язык Стилей): XSLT, XPATH (язык путей и выражений, используемый в XSLT для доступа к отдельным частям XML-документа) и XSL Formatting Objects - словарь, определяющий семантику форматирования документов.
Для примера рассмотрим XSLT-преобразование уже приведенного выше в пример XML-документа:
First
Second
Subitem2
Third
Last
Применим к нему следующий стиль для XSLT-трансформации:
:
В результате на экран браузера будет выведена следующая информация: 1: First
2: Second Subitem2
3: Third
4: Last
Данный пример позволяет понять, что использование XSLT в качестве шаблонизатора и средства обработки XML-документов позволяет разделить два процесса: непосредственный процесс обработки данных на сервере и процесс обработки этих данных для удобного отображения их пользователю.
Действия по преобразованию одного XML-документа в другой выполняются специальной программой - XSLT-процессором, которая получает на входе XML-документ, таблицу стилей XSLT, а на выходе выдает документ, полученный при применении XSLT-преобразований ко входному XML-документу.
PHP
PHP - скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров. Входит в LAMP - «стандартный» набор для создания вебсайтов (Linux, Apache, MYSQL, PHP (Python или Perl)).
В области программирования для Сети PHP - один из популярнейших скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности и распространению исходных кодов на основе лицензии PHP. PHP отличается наличием ядра и подключаемых модулей, «расширений»: для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF и т. п. Любой желающий может разработать свое собственное расширение и подключить его. Существуют сотни расширений, однако в стандартную поставку входит лишь несколько десятков хорошо зарекомендовавших себя. Интерпретатор PHP подключается к веб-серверу либо через модуль, созданный специально для этого сервера (например, для Apache или IIS), либо в качестве CGI-приложения.
Кроме этого, он может использоваться для решения административных задач в операционных системах UNIX, GNU/Linux, Microsoft Windows, Mac OS X и AMIGAOS. Однако в таком качестве он не получил распространение, отдавая пальму первенства Perl, Python и VBSCRIPT.
Синтаксис PHP подобен синтаксису языка Си. Некоторые элементы, такие как ассоциативные массивы и цикл foreach, заимствованы из Perl.
Ныне PHP используется сотнями тысяч разработчиков. Несколько миллионов сайтов сообщают о работе с PHP, что составляет более пятой доли доменов Интернета.
При разработке платформы нами был выбран этот язык не случайно. У него есть рад преимуществ перед другими языками, а именно: • Традиционность. Синтаксис PHP очень похож на синтаксис многих языков, используемых в самых различных областях. Некоторые конструкции позаимствованы из языка С, Perl.
• Эффективность. «Движок» PHP не является ни компилятором, ни интерпретатором. Он является транслирующим интерпретатором. Такое устройство «движка» PHP позволяет обрабатывать сценарии с достаточно высокой скоростью. Производительность движка PHP вполне достаточна для создания серьезных web-приложений.
• Безопасность. В РНР реализованы механизмы безопасности, находящиеся под управлением администраторов; при правильной настройке РНР это обеспечивает максимальную свободу действий и безопасность. РНР может работать в так называемом безопасном режиме (safe mode), который ограничивает возможности применения РНР пользователями по ряду важных показателей. Например, можно ограничить максимальное время выполнения и использование памяти (неконтролируемый расход памяти отрицательно влияет на быстродействие сервера). По аналогии с cgi-bin администратор также может устанавливать ограничения на каталоги, в которых пользователь может просматривать и исполнять сценарии РНР, а также использовать сценарии РНР для просмотра конфиденциальной информации на сервере (например, файла passwd). В стандартный набор функций РНР входит ряд надежных механизмов шифрования. РНР также совместим с многими приложениями независимых фирм, что позволяет легко интегрировать его с защищенными технологиями электронной коммерции (e-commerce). Другое преимущество заключается в том, что исходный текст сценариев РНР нельзя просмотреть в браузере, поскольку сценарий компилируется до его отправки по запросу пользователя. Реализация РНР на стороне сервера предотвращает похищение нетривиальных сценариев пользователями, знаний которых хватает хотя бы для выполнения команды View Source.
• Гибкость. PHP является платформенно-независимым языком и не содержит каких-либо функций или методов, работающих только на определенных типов web-серверов. Также средства PHP позволяют программисту работать с внешними компонентами, такими как, например, Enterprise Java Beans.
• Бесплатность. PHP - полностью open source язык.
• При создании платформы было решено использовать PHP версии 5, поскольку в ней были полностью переработаны функции ООП, которые стали во многом схожи с моделью, используемой в Java. В частности, введен деструктор, открытые, закрытые и защищенные члены и методы, окончательные члены и методы, интерфейсы и клонирование объектов.
JAVASCRIPT
JAVASCRIPT - скриптовый язык, чаще всего использующийся при создании сценариев поведения браузера, встраиваемых в веб-страницы. JAVASCRIPT в настоящее время полностью занимает нишу браузерных языков.
JAVASCRIPT обладает рядом свойств объектно-ориентированного языка, но благодаря прототипированию поддержка объектов в нем отличается от традиционных ОО языков. Кроме того, JAVASCRIPT имеет ряд свойств, присущих функциональным языкам - функции как объекты первого уровня, объекты как списки, карринг (currying), анонимные функции, замыкания (closures) - что придает языку дополнительную гибкость.
JAVASCRIPT имеет С-подобный синтаксис, но по сравнению с языком Си имеет следующие коренные отличия: • объекты, с возможностью интроспекции и динамического изменения типа через механизм прототипов
• функции как объекты первого класса
• обработка исключений
• автоматическое приведение типов
• автоматическая сборка мусора
• анонимные функции
Пример кода на JAVASCRIPT: function MYFUNC()
{ this.a = 1;
this.b = 2;
} var mc = new MYFUNC();
mc.a = mc.b * 2;
Одна из популярных технологий, позволившая сделать страницы более динамическими и обеспечить новые возможности - это динамическая загрузка и вставка данных в документ, получившая название AJAX.
AJAX
AJAX (от англ. Asynchronous JAVASCRIPT and XML - «асинхронный JAVASCRIPT и XML») - это подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате при обновлении данных веб-страница не перезагружается полностью, и веб-приложения могут быть сделаны более быстрыми и удобными.
AJAX - концепция использования нескольких смежных технологий: • использование технологии динамического обращения к серверу «на лету», без перезагрузки всей страницы полностью
• использование DHTML для динамического изменения параметров страницы
В качестве формата передачи данных обычно используются JSON (о нем речь пойдет чуть ниже) или XML (о нем было рассказано выше).
Почему AJAX был выбран как один из инструментов, используемый при проектировании системы? Потому, что его использование позволяет избежать проблем с продолжительным временем загрузки данных, характерную для большинства продуктов подобного рода.
Преимущества технологии AJAX более подробно описаны далее: • Экономия трафика. Использование AJAX позволяет значительно, сократить трафик при работе с веб-приложением, благодаря тому, что часто вместо загрузки всей страницы достаточно, загрузить только небольшую изменившуюся часть.
• Уменьшение нагрузки на сервер. AJAX позволяет несколько снизить нагрузку на сервер, к примеру, в Gmail когда вы отмечаете прочитанные письма, серверу достаточно внести изменения в базу данных и отправить клиентскому скрипту сообщение об успешном выполнении операции, вместо необходимости повторно создавать страницу и отсылать ее клиенту.
• Увеличение реакции интерфейса. Поскольку нужно загрузить только изменившуюся часть, то пользователь видит результат своих действий быстрее.
JSON
JSON (англ. JAVASCRIPT Object Notation) - текстовый формат обмена данными, основанный на JAVASCRIPT и обычно используемый именно с этим языком. Как и многие другие текстовые форматы, JSON легко читается людьми.
Несмотря на происхождение от JAVASCRIPT (точнее, от подмножества языка стандарта ECMA-262 1999 года), формат считается языконезависимым и может использоваться практически с любым языком программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON.
Практическая польза использования JSON открывается при использовании технологии AJAX. Формат JSON является более кратким и удобочитаемым по сравнению с XML, является «родным» для Javascript. Кроме того, в JSON код возможна вставка вполне работоспособных функций.
JSON строится на двух структурах: • Набор пар имя/значение. В различных языках это реализовано как объект, запись, структура, словарь, хеш-таблица, список с ключом или ассоциативный массив.
• Пронумерованный набор значений. Во многих языках это реализовано как массив, вектор, список, или последовательность.
Это - универсальные структуры данных. Теоретически, все современные языки программирования поддерживают их в той или другой форме. Так как JSON используется для обмена данными между различными языками программирования, то имеет смысл строить его на этих структурах.
В JSON используются их следующие формы: • Объект - это неупорядоченное множество пар имя/значение, заключенное в фигурные скобки { }. Между именем и значением стоит символ :, а пары имя/значение разделяются запятыми.
• Массив (одномерный) - это множество значений, имеющих порядковые номера (индексы). Массив заключается в квадратные скобки [ ]. Значения отделяются запятыми.
• Значение может быть строкой в двойных кавычках, или числом, или true, или false, или null, или объектом, или массивом. Эти структуры могут быть вложены друг в друга.
• Строка - это упорядоченное множество из нуля или более символов юникода, заключенное в двойные кавычки, с использованием escape-последовательностей начинающихся с обратной косой черты (backslash). Символы представляются простой строкой.
WDDX
WDDX - (англ. Web Distributed Data EXCHANGE - обмен данными распределенными во Всемирной паутине) - механизм обмена данными в гетерогенной среде, независящий от языка программирования, платформы и способа транспортировки. Представляет из себя спецификацию определенного формата XML 1.0 DTD и имеет множество интерфейсов (библиотек) в большинстве современных языков программирования.
WDDX поддерживает примитивные типы данных, такие как целые и вещественные числа, строки и булевые значения, а также более сложные - структуры, множества и другие.
Формат был разработан в 1998 году Симеоном Симеонвым в фирме Allaire Corporation.
Данный формат может быть использован для сериализации данных в и удобства их дальнейшей обработки. Например, код скрипта на сервере обрабатывает данные, которые затем сериализуются в WDDX и далее обрабатываются при помощи XSLT-процессора для придания этим данным нормального для человеческого восприятия вида (для получения HTML-страницы, отображаемой в браузере, например).
Для примера приведу вид WDDX структуры:
3.1415926
Москва
Киев
Минск
MYSQL
Также нельзя не упомянуть одну из наиболее популярных свободнаых систем управления базами данных - MYSQL. MYSQL является собственностью компании MYSQL AB, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор. Помимо этого компания MYSQL AB разрабатывает функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
MYSQL является решением для малых и средних приложений. Входит в LAMP. Обычно MYSQL используется в качестве сервера, к которому обращаются локальные или удаленные клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MYSQL в автономные программы.
Гибкость СУБД MYSQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MYISAM, поддерживающие полнотекстовый поиск, так и таблицы INNODB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MYSQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MYSQL постоянно появляются новые типы таблиц.
3. Спецификация системы
В этом разделе будет рассказано о том, какие технологии в проектировании были использованы при создании системы
.Для эффективного решения задач проектирования сложных систем (таких, как и разрабатываемая система) существуют так называемые шаблоны (паттерны) проектирования, цель которых - по другому взглянуть на объектно-ориентированное программирование и его основные положения применительно к решаемой задаче.
Любой паттерн проектирования, используемый при разработке информационных систем, представляет собой формализованное описание часто встречающейся задачи проектирования, удачное решение данной задачи, а также рекомендации по применению этого решения в различных ситуациях. Кроме того, паттерн проектирования обязательно имеет общеупотребимое наименование. Правильно сформулированный паттерн проектирования позволяет, отыскав однажды удачное решение, пользоваться им снова и снова. Следует подчеркнуть, что важным начальным этапом при работе с паттернами является адекватное моделирование рассматриваемой предметной области. Это является необходимым как для получения должным образом формализованной постановки задачи, так и для выбора подходящих паттернов проектирования.
Сообразное использование паттернов проектирования дает разработчику ряд неоспоримых преимуществ. Приведем некоторые из них. Модель системы, построенная в терминах паттернов проектирования, фактически является структурированным выделением тех элементов и связей, которые значимы при решении поставленной задачи. Помимо этого, модель, построенная с использованием паттернов проектирования, более проста и наглядна в изучении, чем стандартная модель. Тем не менее, несмотря на простоту и наглядность, она позволяет глубоко и всесторонне проработать архитектуру разрабатываемой системы с использованием специального языка. Применение паттернов проектирования повышает устойчивость системы к изменению требований и упрощает неизбежную последующую доработку системы. Кроме того, трудно переоценить роль использования паттернов при интеграции информационных систем организации. Также следует упомянуть, что совокупность паттернов проектирования, по сути, представляет собой единый словарь проектирования, который, будучи унифицированным средством, незаменим для общения разработчиков друг другом.
Поскольку одной из целей работы является разработка платформы, которая может в дальнейшем легко изменяться и дополняться, был применен паттерн проектирования MVC.
MVC
Model-view-controller (MVC, «Модель-представление-поведение») - архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты.
Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента
• Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контролера), изменяя свое состояние.
• Представление (View). Отвечает за отображение информации (пользовательский интерфейс).
• Поведение (Controller). Интерпретирует данные, введенные пользователем, и информирует модель и представление о необходимости соответствующей реакции.
Важно отметить, что как представление, так и поведение зависят от модели. Однако модель не зависит ни от представления, ни от поведения. Это одно из ключевых достоинств подобного разделения. Оно позволяет строить модель независимо от визуального представления.
Рисунок 1 Model-View-Controller
Применительно к интернет-приложениям бытует мнение, что части контроллер и представление объединены, потому что за отображение и одновременно за ввод информации отвечает браузер. С этим можно согласиться, но в этом случае мы потеряем одно очень важное преимущество: нельзя будет отделить алгоритмы обработки данных от алгоритмов их представления, что существенным образом скажется на расширяемости создаваемой системы. Об этом будет рассказано чуть ниже.
Диаграмма работы MVC-системы
Описанные выше положения определяют примерную структуру системы в соответствии с использованием паттерна программирования MVC. Комментарии по дальнейшей разработке системы описаны в следующей главе.
Ниже приведена диаграмма работы MVC-системы. Диаграмма работы создаваемой системы будет немного сложнее, но по ключевым моментам будет очень похожа на приведенную ниже:
Рисунок 2 Работа MVC-системы
Mod_rewrite
Одним из ключевых моментов в спецификации разрабатываемой системы является то, что выполнение тех или иных функций осуществляется в зависимости от запрошенного пользователем адреса (URL, введенного в браузере). Система имеет одну точку входа - файл index.php, на который должны перенаправляться все запросы пользователя. В нем должен создаваться основной объект, управляющий работой системы, анализируя введенный пользователем URL. Для этого используется модуль сервера Apache под названием mod_rewrite.
Этот модуль использует механизм основанный на правилах (синтаксический анализатор основанный на регулярных выражениях) для преобразований запрошенных URL на лету. Он поддерживает неограниченное количество правил и неограниченное количество связанных с правилом условий для реализации действительно гибкого и мощного механизма для URL преобразований. URL преобразования могут зависеть от разных критериев, например переменных сервера, переменных окружения, HTTP заголовков, времени и даже запросы к внешним базам данных в разных форматах могут быть использованы для достижения действительно точного соответствия преобразованных URL вашим ожиданиям.
Настройка модуля для разрабатываемой системы будет выглядеть примерно следующим образом: SETENV APPLICATION_ENV development php_flag magic_quotes_gpc Off
REWRITEENGINE On
REWRITECOND %{REQUEST_FILENAME} -s [OR]
REWRITECOND %{REQUEST_FILENAME} -l [OR]
REWRITECOND %{REQUEST_FILENAME} -d
REWRITERULE ^.*$ - [NC,L]
REWRITERULE ^.*$ /index.php [NC,L]
Сперва мы проверяем, существует ли запрашиваемый файл, используя директиву REWRITECOND, и, если нет, то перенаправляем запрос на index.php. Такая проверка на существование файла необходима, так как иначе index.php будет пытаться обрабатывать все запросы к сайту, включая запросы на изображения. А это нам как раз и не надо.
Таким образом, в корневой директории сервера будет находиться файл .htaccess (файл конфигурации Apache-сервера, в котором прописаны настройки для модуля mod-rewrite) и файл index.php, в который является точкой входа в приложении и создает объект Application, управляющий дальнейшей работой приложения.
Zend Framework
Разрабатывать систему было решено на Zend фреймворке, так как это позволило добиться колоссальных сокращений сроков разработки требуемой системы.
Zend Framework - это свободный фреймворк на PHP для разработки веб-приложений и веб-сервисов.
Фреймворк пытается следовать духу PHP, предоставляет простые интерфейсы и мощную функциональность для разработки приложений. Он предоставляет расширения для построения современных, быстрых и безопасных систем.
Основывается на идеях MVC. Разрабатывается компанией Zend, являющейся разработчиком самого PHP.
Помимо MVC-компонентов Zend Framework содержит множество библиотек, полезных для построения приложения. Также есть компоненты для интеграции со сторонними сервисами - например, YOUTUBE, del.icio.us и многими другими. Начиная с версии 1.6 поставляется с JAVASCRIPT фреймворком Dojo, а так же включает в себя компоненты для работы с ним.
Существует и другие фреймворки CAKEPHP, Symfony, CODEIGNITER, но ZENDFRAMEWORK на наш взгляд стал лидером как заслуживший признание временем.
Jquery
С клиентской стороны было решено использовать JAVASCRIPT библиотеку Jquery, фокусирующуюся на взаимодействии JAVASCRIPT и HTML. Библиотека JQUERY помогает легко получать доступ к любому элементу DOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека JQUERY предоставляет удобный API по работе с Ajax.
Возможности
• Переход по дереву DOM, включая поддержку XPATH как плагина;
• Реализовано простая работа с событиями;
• Эффектные визуальные эффекты;
• AJAX-дополнения;
• Наличие огромного колва JAVASCRIPT-плагинов.
• Решена проблема «кроссбраузерности»
Также главным расширение для Jquery используемым в нашей системы стал JQUERY UI это открытая библиотека, содержащая компоненты интерфейса. С помощью которой удалось создать очень достойный интерфейс. Наполненный различными визуальными эффектами.
4. Разработка структуры системы
По сути система представляет из себя двухстраничный сайт
Рисунок 3 Главная страница проекта.
Страничку проекта - главная страница нашей системы на которой пользователь мог узнать основную информацию о системе
Рисунок 4 Страница создания сайта.
Страничку создания своего сайта - на которой пользователь может создать свой одностраничный (на данный момент) сайт.
Архитектура базы данных
Для нашего проекта была создана следующая структура базы данных:
Таблица Users
Представляет собой пользователей нашей системы
Таблица Sites
Содержит в себе информацию о созданных сайтах в системе
Таблица Blocks
Блоки это структурные единицы, из которых формируются страницы сайта
Таблица Widgets
Содержит в себе типы блоков.
Таблица Vault13
Содержит в себе информацию о загруженных файлах на сайтах пользователей
Построение структуры нашего проекта, было очень жестко завязано на рекомендация которые предоставляет Zend framework. Была использована следующая структура каталогов проекта.
1. Snail_Project
2. |- application
3. | |- Bootstrap.php
4. | |- configs
5. | | `- application.ini
6. | |- controllers
7. | | |- ERRORCONTROLLER.php
8. | | |- EXPORTCONTROLLER.php
9. | | |- SNAILCONTROLLER.php
10. | | |- STATCONTROLLER.php
11. | | `- INDEXCONTROLLER.php
12. | |- models
13. | | |- Supermodel.php
14. | | `- Statmodel.php
15. | `- views
16. | |- helpers
17. | `- scripts
18. | |- snail
19. | | `- error.phtml
20. | |- error
21. | | `- error.phtml
22. | `- index
23. | `- index.phtml
24. |- library
25. | `- zend
26. |- public
27. | |- CSS
28. | |- JS
29. | `- index.php
30. `- tests
31. |- application
32. | `- bootstrap.php
33. |- library
34. | `- bootstrap.php
35. `- phpunit.xml
Из данной структуры мы сразу видим основные каталоги и что в них находится.
И так по порядку
1. snail_project - основной каталог проекта в котором находятся абсолютно все файлы проекта.
2. application - директория в которой находятся все основные скрипты нашего проекта. Как видим большинство скриптов вынесено из публичной директории проекта, что очень важно для безопасности. Zend Framework основывается на MVC. Аббревиатура MVC - сокращение от » Model-View-Controller (модель-вид-контроллер), это паттерн проектирования, предназначенный для отделения логики приложения от логики представления. Следовательно мы видим директории для основных компонентов системы.
1. config - директория в которой находятся конфигурационные файлы
2. controllers - директория в которой будут находится все классы контролеров (controllers). Контролеры исполняют различные функции. Если кратко то они получают запрос на выполнение какой-либо функции, анализируют его, запрашивают данные из моделей, обрабатывают полученные данные и передают их в представления, которые в свою очередь являются ответом клиенту.
3. models - класс выполняющие рол
Вывод
В результате использования нашей системы вы получите сайт, который будет полностью независим от нашей системы.
Тестирование
По ходу решения сталкивались с многочисленными типичными ошибками в верстке, при написании скриптов, проектировании базы данных.
Использовалось только ручное тестирование системы в целом.
Сейчас проект находится в стадии бета тестирования базовой функциональности.В ходе работы была разработана платформа для создания сайтов различной направленности, которая, по сути, является Content Management System, то есть системой, содержащей в себе функции управления контентом сайта и администрирования, а также являющейся по сути онлайн сервисом, что позволяет избавить конечных пользователей от многих проблем, таких как обновление, установка.
Для системы уже создано достаточно много блоков, которые чаще всего бывают необходимы. Так же она является достаточно универсальной и расширяемой и позволяет без особых сложностей создавать новые блоки и встраивать их в систему.
Таким образом, созданная система - это интересный конструктор для знакомства пользователей с созданием сайта.
Хотелось бы в заключение сказать, что разработанная система в настоящее время успешно применяется при создании web-сайтов клиентами хостинговой компании, в которой я работаю. С помощью нее было разработано уже порядка ста различных сайтов, существующих в Интернете и в настоящее время.
Размещено на .ru
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы