Здравствуйте.
Я написал WEB framework для собственных нужд, так как существующие меня не устраивали и хочу немного рассказать про него.

Вступление

WEB framework состоит из двух частей, одна серверная(написана на php), вторая клиентска(написаная на js). Серверная и клиентская части frameworka самодостаточны и являются работоспособны независимо одна от другой, но все же являются одним целым. Framework называется «W» и распространяется под лицензией MIT, исходный код можно скачать отсюда, отсюда.

Особенности

  • Соответствует шаблону проектирования(патерну) MVC, более правильней MC-CV(M и одна часть C — находятся на сервере, а вторая часть C и V находятся на клиенте);
  • Все http и https запросы протоколах к серверу выполняются асинхронно, все запросы, кроме первого(первый запрос загружает клиентскую часть frameworka);
  • Данные форм также отправляются на сервер асинхронно(на данный момент отсутствует возможность загрузки файлов на сервер стандартными средствами(html и js));
  • Каждый запрос возвращает минимально необходимое количество данных!
    Клиентская часть реализована на js с использование библиотеки jQuery в виде jQuery плагинов;
    • warea — основной jQuery плагин для обеспечения асинхронной работы frameworka;
    • wajax — jQuery плагин выполнения асинхронный запросов по https протоколу(корректно работает в msie8, chrome8, opera11 и ff4(!));
    • wform — jQuery плагин для работы с формами;
  • Серверная часть реализована на php в виде глобального объекта, к которому по древовидной иерархии подключаются все классы на индексной странице или по мере необходимости(что-то типа прототипа), что позволяет иметь доступ к любому объекту из любой части программы не прибегая к статическим свойствам и методам в классах;
    • упрощенный интерфейс работы с БД;
    • средства для работы Memcache(наличие средств блокировки ключей хэш таблицы);
    • встроенная система кэширования;
    • поддержка статические и динамические иерархий привилегий(динамические привилегии применимы к соц. Сетям, когда одну и туже страницу можно видеть по разному с одинаковой привилегией(статической), если в друзьях или в друзьях друзей);
    • глобальная система конфигурации;
    • полноценная поддержка UTF8;
    • наличие валидатора;
  • Контроллер определяется настройками, а не произвольным кодом. Более правильным будет: Контроллер — это инструкция которая определяет какие данные и от каких экшенов передавать клиенту;
  • Встроенная система кэширования данных моделей, которая зависит от GET параметров экшена(модуль, компонент. В состав экшена входят — модель, настройки, вид(обрабатывается на клиенте) и файлы локализации(обрабатываютс на клиенте)) и привилегий(статической и динамической);
  • формирование html фрагмента из данных полностью происходит клиенте, с сервера принимаются лишь «сырые» данные, возвращенные из каких либо хранилищ(чаще всего это БД);
  • поддержка локализаций, реализуется и обрабатывается на клинте;
  • ...

Итог

Что было более понят что и зачем, вот пример сайта написанного на W frameworke, вот архив с демо версией и инструкцией по установке. Какая либо документация на данный момент отсутствует. И еще одно, в силу конструктивных особенностей сайтов написанных на W frameworke, мой framework предназначен для написания каких либо интернет сервисов.

Если кому то понравился мой W framework или кто то будет его использовать — это будет круто. Со мной связаться можно здесь.