Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Open Web Platform - создадим новый принцип веб-разработки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
dilesoft
Отправлено: 02 Июля, 2011 - 09:07:01
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Цитата:
Не следует привлекать новые сущности
без самой крайней на то необходимости.

Уильям Оккам


Сейчас веб-разработка сталкивается с большой проблемой - сверхнизкое повторное использование кода.

Как происходит, когда разработчик начинает делать свой проект, скажем, на PHP. Сначала он идет, например, на PHP Classes. Там очень много классов. Все разные. Каждый написано по-своему. У некоторых внешний интерфейс через один класс, у других через пять, у третьих через десять и два конфига. В результате требуется изучать архитектуру каждого класса, и, что самое важное, сайт из таких “компонентов” быстро не построишь.

Тогда разработчик идет смотреть готовый фреймворк. Фреймворков на рынке с десяток. Все разные. Все сложные. Все несовместимые друг с другом. Все они, повторяю, сложные, у каждого достаточно запутанная архитектура, своя реализация MVC, разные подходы работы с БД, с шаблонами, с кодогенерацией.

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

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

Есть, конечно, более “компонентные” решения, вроде Joomla и Drupal, но они не являются открытыми стандартами, они являются продуктами со своей историей и они тяжеловесны.

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

Это то, как разработка ведется сейчас. А теперь, как она будет вестись на платформе, которую я хочу создать.

Итак, Open Web Platform (OWP). OWP является компонентной системой. А именно: каждый блок проекта является “компонентом”, который общается с другими компонентами не напрямую, а через общий интерфейс “ядра платформы”. Пример:

PHP:
скопировать код в буфер обмена
  1.        
  2.         owp_core::call("auth", "login",
  3.                 array("user" => "me", "password" => “123”)
  4.         );
  5.         $user_id = owp_core::call("auth", "user_id");


В этом примере некий управляющий компонент shell обращается к компоненту auth, который производит авторизацию пользователя, после чего возвращает user_id. Компонент shell ничего не знает о компоненте auth. Не знает, на каком тот написан языке. Из каких состоит классов. Как он разработан. Где он находится в файловой системе. Он даже может оказаться на другом сервере. Компоненту shell и его разработчикам это безразлично - они знают имя компонета auth и вызовы, которые можно ему направлять, этого совершенно достаточно.

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

[img]https://docs.google.com/document/pubimage?id=13OoGuRS2Mc6qOBivYW8K2NnroreEBTXj5usp23o8558&image_id=1wvsx9R61vjXvEN-4-tAY6JqGgALobA[/img]

Все единообразно. Если посмотреть на Class Diagram любого сколь-либо сложного “обычного” проекта, мы всегда увидим клубок ниток. Здесь мы имеем единую шину, к которой динамически подключаются разные устройства-компоненты.

Каждый компонент может быть написан как угодно. Это не важно. Главное, чтобы они все реализовывали единый внешний интерфейс, вроде такого:

PHP:
скопировать код в буфер обмена
  1. interface owp_app {
  2.        
  3.         public function __construct($app, $process_name);
  4.        
  5.         public function start();
  6.        
  7.         public function autoload();
  8.        
  9.         public function stop();
  10.        
  11.         public function install();
  12.        
  13.         public function uninstall();
  14.        
  15.         public function call($method, $data);
  16. }


Что находится “за” этим интерфейсом - не важно. Вам достаточно написать мануал (не сложнее команды man в Linux) для вашего компонента, после чего вы можете делать с бекэндом все, что захотите.

При этом компонент даже не обязательно должен быть написан как на PHP, как здесь. Ядро может иметь “драйвера” для различных языков разработки и вызывать компоненты между языками.

Оцените, как при таких условиях упрощается рефакторинг. При рефакторинге “внутри” компонента другие не затрагиваются никак, поэтому проблем не возникает. Если же рефакторинг касается внешнего интерфейса, то этот интерфейс простой, поэтому его изменение сводится к простому “поиск и замена” по всему проекту.

И это еще не все преимущества такого подхода. У нас есть компоненты, они все однотипны. Одни компоненты могут использовать другие. Значит, можно создать единый репозиторий с зависимостями, как для Linux. Тогда установка одного компонента автоматически повлечет за собой установку связанных. Поскольку все они независимы друг от друга, вы вообще не заметите то, что что-то там установилось. Все просто работает.

Разные компоненты могут нести разный функционал. Одни могут быть “базовыми”, вроде mysql-компонента, другие реализовывать логику проекта, третьи генерировать HTML-блоки для вторых (VC и M из MVC соответственно). Однако архитектурно они все являются однотипными.

Теперь посмотрим, что будет, если мы хотим сделать сайт. Мы заходим в глобальный репозиторий компонентов и скачиваем оттуда все необходимое. При этом все вспомогательные компоненты, необходимые для работы нужных нам, будут рекурсивно установлены автоматически. Мы не должны думать, что нужно для работы наших компонентов. Оно уже установлено. Теперь нам остается только дописать “свои” компоненты, которые используют установленные и реализуют уникальный функционал нашего сайта. Всё.

А теперь сравните это с описанием “современной” разработки из первых абзацев.

Итак, сейчас я занимаюсь разработкой такой платформы. Она частично написана. Однако, для того чтобы такая платформа стала мировым стандартом, мне нужны мнения разработчиков. Только они знают, как надо скорректировать код и архитектуру такой платформы, чтобы им было удобно ей пользоваться. Я с радостью выслушаю все требования, которые вы выскажите. Я особенно буду рад, если встреча произойдет вживую, с перекрестным изучением кода (у меня есть возможность организовать это в офисе на берегу Москвы-реки, с хорошей экологией и бесплатным Wi-Fi).

Жду ваших писем.

Дмитрий Лейкин

Email: dilesoft@gmail.com
Skype: dilesoft
ICQ: 67937292
Телефон: +7 (903) 125 33 68
 
 Top
scray
Отправлено: 02 Июля, 2011 - 12:53:29
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Жаль не open-source проект... покапатся в коде хотелось бы. А так довольно сложно сказать не видя в живую код и архитектуру
 
 Top
dilesoft
Отправлено: 02 Июля, 2011 - 12:59:22
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




scray пишет:
Жаль не open-source проект... покапатся в коде хотелось бы. А так довольно сложно сказать не видя в живую код и архитектуру


Проект разумеется Open Source! Я пока не выкладываю исходники, ибо их мало и они не причесаны...
 
 Top
scray
Отправлено: 02 Июля, 2011 - 14:01:47
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Когда планируете выложить исходники? И есть ли возможность получить их для изучения на данном этапе?(удаленно)
 
 Top
Slavenin
Отправлено: 02 Июля, 2011 - 14:26:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




Цитата:
Напрасно пытаться посредством большего делать то, что может быть сделано посредством меньшего

Оккам Уильям Подмигивание
 
 Top
White
Отправлено: 02 Июля, 2011 - 15:09:30
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)





dilesoft пишет:
Не следует привлекать новые сущности
без самой крайней на то необходимости.

Уильям Оккам


пожалуй более правильный перевод "Entia non sunt multiplicanda sine necessitate" - "Не до́лжно множить сущее без необходимости"

а может не зря где-то между языками низкого уровня и сверхвысокоуровневыми затесались те, что используются в 80% всех программ? (PHP, C++,...)



-----
if(time()>1356048000) die();
 
 Top
Slavenin
Отправлено: 02 Июля, 2011 - 19:15:05
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




а вообще, хорошая идея, только вот не до конца понятно, что должно получится на выходе? что-то среднее между cms и фреймворком? Однако
 
 Top
White
Отправлено: 02 Июля, 2011 - 21:49:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




Slavenin пишет:
что-то среднее между cms и фреймворком?


CMF (content management framework), которых и так не мало
modx например, в котором прекрасно реализованы многие из данных идей, кроме "драйверов" для других языков.
насколько я понял автор хочет возложить на php помимо функций собственного компилятора еще и функции интерпретатора других языков. Собственно получим 3 уровень абстракции (язык высокого уровня который интерпретируется другим языком высокого уровня и компилируется в машинный код).


-----
if(time()>1356048000) die();
 
 Top
dilesoft
Отправлено: 02 Июля, 2011 - 21:52:08
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Нет, не CMF. Речь не о контенте, речь о системе межкомпонентного взаимодействия.
 
 Top
komprenda
Отправлено: 02 Июля, 2011 - 22:21:35
Post Id


Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Май 2011  


Помог: 3 раз(а)




из вышенаписанного я ничего не понял(одна вода). кстати у гугла+ и есть такой блевотный дизайн, синие ссылки вообще не видны на чёрном фоне.
 
 Top
White
Отправлено: 03 Июля, 2011 - 10:10:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




dilesoft пишет:
Нет, не CMF. Речь не о контенте, речь о системе межкомпонентного взаимодействия.


а cmf и не управляет контентом, а управляет компонентами, которые управляют контентом. Вышеприведенный пример modx - легковесная, все компоненты доступны в репозиториях и устанавливаются через админку, и именно они отображают контент, система лишь снабжает их всем необходимым.


-----
if(time()>1356048000) die();
 
 Top
Мелкий Супермодератор
Отправлено: 03 Июля, 2011 - 10:22:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




White пишет:
Вышеприведенный пример modx - легковесная, все компоненты доступны в репозиториях и устанавливаются через админку

Замечу, что репозитории в админке - это MODx Revo, которая далеко не так легковесна, как Evo. Но у последней автоматической установки из репозиториев нету, загружаются пакеты ручками.

dilesoft пишет:
А теперь сравните это с описанием “современной” разработки из первых абзацев.

В первых абзацах я вижу только типичный маркетинговый бред, описывающий худший вариант джуниоров. Всё, что выше джуниора - уже имеют килобайты своих наработанных решений и кода, как своего, так и любимых CMS, CMF, Framework. CMS и CMF имеют всё, что надо, для повторения уже созданных сайтов, для чего-то совсем нетипичного - на фреймворке (своём/чужом) всё равно писать самостоятельно, т.к. адаптация чужих решений времени займёт столько же, если не больше.

(Отредактировано автором: 03 Июля, 2011 - 10:33:15)



-----
PostgreSQL DBA
 
 Top
White
Отправлено: 03 Июля, 2011 - 10:42:40
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




Мелкий пишет:
которая далеко не так легковесна

опять же речь о написанном автором сравнении с Joomla и Drupal
4.8 MB явно не тяжеловес, да и нагрузка на ЦП опять же в сравнении с вышеуказанными значительно меньше.
Мелкий пишет:
репозитории в админке - это MODx Revo

Свое знакомство с этой системой начал именно с Revo

P.S. Это не реклама MODx, просто интересно, что такого нового предлагает ТС


-----
if(time()>1356048000) die();
 
 Top
Мелкий Супермодератор
Отправлено: 03 Июля, 2011 - 11:03:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)





White пишет:
опять же речь о написанном автором сравнении с Joomla и Drupal
4.8 MB явно не тяжеловес, да и нагрузка на ЦП опять же в сравнении с вышеуказанными значительно меньше.

Ну уж джумлу переплюнуть сложно. Drupal - не в курсе, но учитывая, что на СПИКе выступавший друпалист так и смог назвать сис.требования, аргументируя тем, что всегда можно поставить ещё один сервер, - там тоже всё печально Закатив глазки
Я только про разницу Revo и Evo.

White пишет:
Свое знакомство с этой системой начал именно с Revo

А я 3 месяца назад с обеими сразу...

Да и почему бы не порекламировать MODx? Подмигивание Может, будет меньше джумлы.


-----
PostgreSQL DBA
 
 Top
OrmaJever Модератор
Отправлено: 03 Июля, 2011 - 11:36:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)





Мелкий пишет:
Да и почему бы не порекламировать MODx? Может, будет меньше джумлы.

А как же быть тем людям которые програмируют на джумле? Хи


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB