Содержание
Перед разработчиком информационного веб-ресурса любой сложности встает множество серьезных и, вместе с тем, однотипных, а во многих случаях и просто идентичных задач. Многие из таких задачи трудно качественно решить в рамках одного проекта с ограниченным бюджетом и сроками реализации. Такие задачи носят фундаментальный характер, например, системы управления пользователями и правами, организация импорта и экспорта данных, обеспечение целостности данных, корректного сохранения изменений при совместной работе над ними и т.п. Для решения таких задач необходимо потратить массу времени и сил на предварительное и эксплуатационное тестирование - многие недочеты и проблемы обнаруживают себя только при практическом применении системы. Более качественного результата можно добиться при тестировании и применении разработанного унифицированного механизма в нескольких различных приложениях, в разных условиях и режимах эксплуатации. Круг таких задач достаточно широк и, зачастую, многие из них встают как перед разработчиком небольшого ресурса, так и веб-систем со сложной функциональностью.
В процессе работы над проектами разного уровня и масштаба был определен набор задач, решение которых предлагается в рамках Cairo - универсальной платформы для создания веб-ресурсов. Большая часть таких задач относится к сфере работы с данными и управления ими.
Cairo представляет собой платформу для разработки информационных веб-ресурсов. Ее код базируется на языке серверных сценариев PHP, что позволяет использовать платформу на различных системах, включая наиболее распространенные: Windows и Unix-подобные.
Платформа Cairo позволяет создавать гибкие, масштабируемые и концептуально целостные решения, которые включают в себя большое количество готовых отлаженных компонент и архитектурных подходов. На базе Cairo можно создавать разноплановые ресурсы с различной информационной структурой и наполнением, автоматически получая удобный интерфейс администратора, который позволит управлять как самими данными, так и их структурой. Универсальный интерфейс подстраивается под структуру данных каждого ресурса, он предоставляет удобный сервис по поиску, созданию и редактированию данных, изменению информационной структуры и другим аспектам управления иерархией данных.
Платформа Cairo аккумулировала в себе все наработки и достижения в создании удобных инструментов профессионального веб-разработчика. Непрерывно ведется работа над развитием платформы, расширением функциональности, оптимизацией графических и программных интерфейсов. Разработчики стремятся создать инструмент, способный снять с программистов огромное количество рутинной работы и освободить их время для творчества.
Множество современных решений для автоматизации построения веб-ресурсов основывается на модульной структуре. Решения данного типа состоят из десятков интегрированных модулей, каждый из которых отвечает за отдельный блок функциональности сайта. Примерами таких модулей являются: лента новостей, фотогалерея, форум, каталог товаров и т.д. Каждый модуль наделен функциональностью, строго ограниченной сферой его применения. В развитых системах подобного типа указанные модули опираются на несколько общих подсистем, таких как: подсистема управления шаблонами, подсистема управления пользователями и правами. За взаимодействие модулей отвечает ядро системы, однако, зачастую, модули слабо связаны между собой.
При таком подходе, веб-ресурс собирается из крупных функциональных блоков. В отдельном проекте разработчик использует только некоторые из имеющихся модулей, при этом, он ограничен стандартной функциональностью применяемых модулей. Если стандартной функциональности модуля оказывается недостаточно возникает задача разработки нового модуля, либо модификации существующего. Данная проблема часто возникает перед разработчиком, по этой причине страдает качество и значительно вырастают трудозатраты на разработку сайта основанного на наборе модулей.
Система Cairo зарождалась и развивалась в процессе решения практических задач, с чем связано применение кардинально иного подхода. В ее основе лежит идея о том, что большая часть разнородных функциональных модулей выполняет одни и те же функции, по большей части, обеспечивая работу со структурированными данными. В основе Cairo лежит ядро, которое позволяет работать с разнородной информацией, более того, оно позволяет изменять структуру информационного ресурса, не прекращая его работы.
Система Cairo включает в себя следующие элементы:
Cairo API;
универсальный веб-интерфейс для управления данными и их структурой;
Cairo Framework.
Система может с успехом использоваться без универсального веб-интерфейса, но его использование позволяет значительно упростить задачу управления данными.
Использование платформы позволяет увеличить надежность готового программного продукта. Это обусловлено тем, что большая часть системных задач уже решена, в т.ч. с учетом проблем безопасности и обработки ошибок. Разработчик имеет возможность решать, в какой степени функциональность системы Cairo будет использоваться при разработке отдельного веб-ресурса. В рамках одного проекта при работе с данными разработчик может в одном случае использовать файловую систему, в другом - СУБД, в третьем - механизмы работы с данными платформы Cairo.
Для работы с данными платформа предоставляет набор классов, которые обеспечивают интерфейс доступа к стандартной структуре данных. Используя предоставленные классы можно быстро и безопасно создавать сложные информационные решения. При этом будет включена автоматическая поддержка разграничения доступа и отслеживаться целостность данных.
Использование библиотеки стандартных классов позволит избежать многих проблем разработки и значительно сократить ее продолжительность. Применение элементов управления позволяет стандартизировать дизайн ресурса и быстро создавать приложения со сложной функциональностью. Рекомендуется везде, где это возможно, использовать стандартные решения, так как это позволяет повысить качество готового продукта и уменьшить время его создания.
При разработке веб-ресурса много усилий тратится на создание интерфейса администратора. Интерфейс администратора должен позволять управлять данными ресурса и, по мере необходимости, изменять структуру ресурса.
При модульном подходе каждый модуль включает в себя и интерфейс управления, который органично встраивается в систему управления. Такой подход позволяет создавать модули с произвольной функциональностью, но функциональность большинства модулей схожа и заключается лишь в управлении древовидной информационной структурой.
Универсальный веб-интерфейс, поставляемый в системе Cairo предоставляет единый доступ к разнородным данным. Такой подход удобен прежде всего тем, что нет необходимости исправлять код системы администрирования при каких-либо изменениях структуры данных. Разработчик ресурса может создать фотогаларею, файловый архив, ленту новостей и не писать при этом ни строчки кода для организации системы управления. Универсальный веб-интерфейс автоматически настроится на созданные структуры данных и предоставит удобный интерфейс администратора.
Использование универсального интерфейса позволяет сократить время обучения пользователей, т.к. все операции с данными одинаковы для всей системы. При добавлении новых элементов в информационную структуру нет необходимости переучиваться, управление этими элементами ничем не отличается от управления уже известными данными.
Cairo Framework представляет собой набор вспомогательных программных средств для веб-разработки. Это та часть системы, которая облегчает создание конечного сайта, его визуальной части.
Зачастую, реализуя визуальную часть веб-приложения, разработчик сталкивается со множеством задач, требующих значительных трудозатрат. Среди них можно выделить такие, как организация поиска, кеширование страниц и отдельных данных, сжатие изображений, а также написание форм ввода данных и организацию их проверки.
Cairo Framework предлагает набор средств, которой многие из таких задач снимает с плеч разработчика. Среди них:
Генерация форм (включая проверку ввода данных на стороне клиента и на стороне сервера);
Многоуровневое кэширование данных на стороне сервера;
Обеспечение корректной работы механизмов кэширования веб-браузера при генерации динамических страниц (путем выдачи соответствующих HTTP-заголовков);
Сжатие потока данных, передаваемых веб-сервером (GZIP);
Динамическое сжатие изображений, автоматическое кэширование эскизов изображений;
Организация индексного поиска по ресурсу данных с учетом морфологии;
а также многое другое.