Xpoint
   [напомнить пароль]

Теория проектирования веб-движков

2003-01-23 17:43:23 [обр] gook [досье]
Господа интересует абстрактная информация по проектированию движков, т.е. не преимущества/недостатки того или иного движка, а что то классическое и абстрактное по теории сайтостроения и/или веб-движков.
спустя 59 секунд [обр] Сергей Золотухин [досье]
спустя 18 минут [обр] gook [досье]

2 Сергей Золотухин: Нет это не то, это я видел, мне не нужно перечисление и правильная/неправильная концепция различных движков, я же написал нужна АБСТРАКТНАЯ информация по движкам (т.е. - ТЕОРИЯ веб-движков - если такая существует).

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

Чтобы стало совсем понятно - скажу, что одним из мест моей работы является МГУ им. М.В. Ломоносова - хотелось бы почитать нечто такое чтобы позволило сделать законченную публикацию на эту тему. Например: описание строго по теории + сделанный пусть и не универсальный движок который полностью соответсвует теории и главное четкое понимание того почему именно надо делать движок таким а не другим. Я назвал бы это - оптимальным написанием (программированием) веб-движка.

спустя 30 минут [обр] VIG [досье]

Мнэ-э-э ... как мне кажется, подобной "теории" существовать не может ... в смысле: а) она или тривиальна, или б) является "ботаникой", т.е. систематизированным перечислением существующих классов/родов/видов/подвидов ...

Примерно так:

  1. Теоретически велосипедом называется устройство, состоящее из:

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

  1. Велосипеды бывают:

  1. Детские.
  2. Дорожные.
  3. Горные.
  4. Гоночные.
  5. Подводные.
  6. ...
  1. Детские велосипеды бывают:

    1.1. ...
    1.2. ...
    1.3. ...

И так далее, пока у "теоретика" хватает материала и усидчивости ...

спустя 26 минут [обр] Дунька [moderated] [досье]

Гы-гы.

gook: Вообще, теорию неплохо бы начать с определения. Что такое "веб-движок"? PHP, например — движок ли, и если нет, то почему?

спустя 2 минуты [обр] gook [досье]

2 VIG: С определением которое Вы дали велосипедам и устройствам подобным им все понятно :) Пожалуйста не обижайтесь на меня но такие определения и теории - очень любили марксисты (надеюсь Вы к ним не относитесь), они тоже для того чтобы дать определение некоего предмета в начали абстраргировались от него и классифицировали предмет с аналогичной группой предметов имеющих хотя бы одно такое же свойство, т.е. находили множество или группу к которой можно отнести предмет , а потом опять переходили к частностям т.е. пытались вычленить в этой группе предметов именно требуемый предмет по другому свойству - уникальному, присущему лишь ему а не группе.
Одним словом:

  1. от частного к общему
  2. от общего к частному

Правда потом признавали что существуют два понятия которые так не удается описать/стандартизировать/классифицировать и т.д. (это материя и Бог)

Приблизительно этим Вы предлагаете заняться мне. Пользуясь таким "псевдонаучным" методом я бы мог легко "развить" теорию движков :))
Мне нужна более существенная вещь чем просто описание и т.д. и т.п.

спустя 7 минут [обр] gook [досье]

2 All: Наверное просто пока :) теории движков не существует, мало времени прошло да и нет однозначного понимания как это надо делать.

Мне почему это все напоминает ситуацию в шахматах - сотни лет люди играли в шахматы и даже не предполагали что существует в каждый момент некая оптимальная стратегия (пусть даже и не одна)

спустя 1 час 49 минут [обр] VIG [досье]

gook:

Я вовсе не пытался заставить Вас заниматься "этим", просто хотел показать, что "общая теория веб-движков" (равно как и "общая теория велосипедов", а то и "общая теория всего") неизбежно будет бессодержательной ... Вы правильно подметили сходство с марксистско-ленинскими "философиями" ...

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

  1. Что есть, с интересующей Вас точки зрения "веб-движок"? Я, например, понятия не имею, что сие за зверь, в строгом смысле, хотя могу запросто употребить это словосочетание неформально.
  2. Какие аспекты этого объекта/явления Вас интересуют?
  3. Какие характеристики выбранных аспектов Вас интересуют (чтобы изучать пути-возможности улучшения этих характеристик) ?

Не следует стремиться сразу объять необъятное ... а потихоньку, маленькими шажочками ... глядишь, когда-нибудь куда-нибудь и придем ... может быть ...


P.S. Если уж употребляете слово "оптимальный", то неплохо бы усвоить следующее:

  1. Не бывает оптимального "вообще". Надобно говорить [и думать] оптимальное, относительно такого-то критерия.
  1. Не бывает нескольких оптимальных стратегий. А бывают, опять же, различные стратегии, каждая из которых оптимальна по отношению к какому-либо критерию.
спустя 2 часа 21 минуту [обр] Давид Мзареулян [досье]

gook:
Я бы посоветовал почитать документацию (не всю, конечно - просто введения в архитектуру) по двум продуктам - по Zope и по Communiware. Они, в определённом смысле, характерные представители двух полюсов "движкового мира" - полюса "объектных оболочек" и полюса "конструкторов сайтов-коммьюнити". Не воспринимайте как рекламу именно этих продуктов (к Зопе я отношусь нейтрально-положительно, а к Коммуниверу - нейтрально-отрицательно:)) - просто по ним, по крайней мере, документация есть в свободном доступе, и на русском. Также можно почитать про Individ-овскую "сайтистику" - это "третий полюс", "закрытые движки для веб-публикаций".

Поняв, чем отличаются эти полюса, Вы без труда сформулируете "теорию", которая достаточно полно покроет промежуток:) А в готовом виде я пока такой теории не встречал...

спустя 12 часов [обр] Michail Kotelnikov [досье]

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

  1. "Движок для программиста"

= язык программирования, заточенный под веб. Примеры: PHP, Parser...
= стандарты и компоненты разработки для како-го либо языка (языков) (.NET, J2EE).
= сервер веб-приложений, неважно, на чем написанный, но обеспечивающий набор программных компонент (API) и инструментарий разработчика. (Часто реализуют стандарты разработки приложений, упомянутые в предыдущем пункте. Например WebLogic, WebSphere, JRun, JBoss... - соответствуют спецификации J2EE.)
См. например:
http://directory.google.com/To....../Internet/Servers/Application/
http://www.serverwatch.com/stypes/index.php/YXBwbGljYXRpb24=
http://www.flashline.com/components/appservermatrix.jsp

  1. "Движок для администратора сервера"

Этого рода приложения обычно делаются на основе того или иного сервера приложений и расчитаны на то, что большая часть работы по управлению информацией на сайте (и не только на сайте) может быть выполнена администратором, а не обязательно программистом. То есть чтобы получить базовый сайт часто не надо писать программыный код. (Например тот же Zope.)
= Content management systems.
В России я знаю 2x серьезных производителей систем управления информации:
http://www.quantumart.com и http://www.reksoft.ru/.
По поводу управления информацией:
http://directory.google.com/To......Management/Content_Management/
http://www.intranetjournal.com/tools/cm/
http://www.la-grange.net/cms
http://www.rpbourret.com/xml/ProdsCMS.htm
http://www.cmsinfo.org/
http://www.cmswatch.com/
http://www.contentmanager.eu.com/links.htm
= Системы для построения "бизнеса on-line", движки интернет-магазинов...
http://directory.google.com/To....../Software/Business/E-Commerce/
(Тут я совсем не компетентен.)
= Штучки-дрючки для on-line общения и быстрого изменения информации самими же пользователями.
В эту категорию можно отнести все от livejournal.com (там же и код исходный можно скачать) и WikiWiki (http://directory.google.com/Top/Computers/Software/Groupware/Wiki/)
до Communiware...

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

То есть диапазон определений "движка сайта" весьма широк - от языка программирования, который умеет определять сессии пользователей и отсылать html страницу пользователю - до систем, манипулирующих корпоративной информацией с использованием веб-интерфейса (ERP, CRM...).

спустя 1 день 18 часов [обр] Дмитрий Котеров [досье]

VIG:
Я с Вами не согласен насчет бессодержательности такой теории. Просто она пока не разработана еще, мы живем в начале новой эры (если уж на то пошло). Хотите верьте, а хотите — нет, но я практически уверен, что лет через несколько все сайты будут строиться на основе одной и той же технологии (и даже, возможно, одной и той же системы). Как я уже однажды писал, пока для такой схемы нет «физической базы» — не написана необходимая СУБД, которая бы отвечала всем требованиям.

Что касается движков, то, прежде всего, нужно обратиться к классификации. На первом месте тут, как мне кажется, стоит классификация Sun по подчиненности контроллеров, вкратце:
— система с ведущим контроллером;
— система с ведомыми контроллерами.

Контроллер — это кусок программы, не содержащий оформительской части. Шаблон (или документ) — наоборот, часть, которая не содержит программной логики (или содержит ее в минимальных количествах из рационализаторских соображений; такая логика должна полностью базироваться на данных, пришедших от контроллера).

Если информация о том, какие контроллеры вызывать, содержится в теле шаблона (в любом виде), то это — модель ведомых контроллеров. Ее еще иногда называют компонентной моделью. Я называю системы, построенные на ее основе, шаблонизаторами (если только верно, что именно я первым «изобрел» этот термин в 98-м году).

Если же то, какие шаблоны подключать, записано в контроллере (или во внешнем хранилище, не связанном с шаблоном двусторонними связями), то это — модель ведущего контроллера. (Системы ведущего контроллера я шаблонизаторами не называю; тем не менее, некоторые так их величают — и зря.)

Далее уже классификация внутри этой схемы.

спустя 2 часа 2 минуты [обр] VIG [досье]

Дмитрий Котеров:

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

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

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

Вопрос: Как "правильно"? Иметь процедуры и данные, которые этими процедуры обрабатываются, или же некий более-менее универсальный язык описания данных плюс интерпретатор этого языка плюс нужные объекты-компоненты-библиотеки?

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

спустя 10 часов [обр] Дмитрий Котеров [досье]

VIG:
Сайт — это в большинстве случаев лучшая демонстрация компонентной идеологии. То есть, вся программа (читать — сайт) в идеале строится из независимых кирпичиков.

Модель ведомых контроллеров — это, собственно, и есть компонентная идеология. Конечно, должно быть и некоторое ядро (можно считать, «ведущеконтроллерная» часть, вероятно, ее-то Вы и имели в виду под словом «баланс»), которая обеспечивает функционирование системы. Но система все равно называется «с ведомыми контроллерами», с «точностью до константы» ядра (ибо ядро не меняется, а компоненты постоянно добавляются/удаляются).

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

спустя 17 часов [обр] Евгений Бондарев aka Eugene Bond [досье]

ИМХО, все зависит от того, что видит автор вопроса в качестве примера такого движка.
Это может быть либо система Дмитрия Котерова (или аналогичная) или что-то типа PHPNuke.

gook: вам что ближе по-идеологии движка?

Для меня лучший движок - это пиво. С ним процесс про_двигается_ быстро и непринужденно.

спустя 16 минут [обр] gook [досье]

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

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

Опять вернусь к своему примеру - в недалеком прошлом мне пришлось переделывать (писать с нуля) движок для крупной торговой фирмы (до того как я стал с ними сотрудничать - они покупали дизайн+движок+веб-интерфейс к базе, у одной московской конторы - которая имеет несравненно больший опыт, чем я, и имеет весомое портфолио, но результат оказался плачевный -т.к. фирма оказалась "подвешенной" от конторы в смысле любых изменений по сайту, кроме планового обновления, результат - через три недели пришлось делать новый сайт с нуля, а четырехзначную сумму -оплату за сайт, отнести к убыткам), я же сделал в силу своих ограниченных способностей немного подругому, всю инфу свалил в базу, а сайт сделал в виде одного единственного шаблона (правда очень многое в этом шаблоне может меняться вплоть до графического интерфейса) + 6 модулей - вызываемых в зависимости от раздела и выполняющих абсолютно различные действия. все это сводит воедино маленький скриптик на Перле который собственно и управляет информацией.

Дальше и возник вопрос:
- То что было сделано - правильно? Или правильнее было сделать что то иное, ну например ведь всегда есть вариант (прошу не смеятся) - тоже самое вывалить в виде статических страничек :))
Ну либо статического шаблона + SSI.

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

спустя 2 минуты [обр] coverless [досье]
2gook: Любая ИС разработана правильно, если она удовлетворяет условиям ТЗ. Теоретическую базу под сделанное подводить IMHO бесполезно.
спустя 2 часа 27 минут [обр] gook [досье]
2 Евгений Бондарев: Насчет пива с вами согласен - лишь отчасти :) Конечно в ограниченном размере алкоголь стимулирует мыслительный процесс, но если перегнуть палку то эффект обратный :(
спустя 13 минут [обр] Евгений Бондарев aka Eugene Bond [досье]
gook:
А если сильно перегнуть, то и необратимый...
Но имелись в виду, естественно, конструктивные количественные объемы.
спустя 38 минут [обр] Сергей Сирик [досье]
Евгений Бондарев:
Конструктивные - это которые из пустой тары позволяют конструировать нечто :?)
спустя 50 минут [обр] Дмитрий Котеров [досье]

gook:

Кстати мне кажется что любой ведомый контроллер можно свести к ведущему

Я выше писал об этом — можно, но только с точностью до константы. Название «ведущий» или «ведомый» дается по структуре изменяемых частей системы (а не статичных, как ядро). Новый модуль можно дописать и добавить, не трогая существующие; написать же новое ядро и поставить его рядом нельзя по поределению.

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

Я, кстати, выше не совсем точно. Я говорил, что можно разделить работу на две части: «контроллер» и «шаблон». В действительности лучше делить на три части: «контроллер»,
«документ» и «шаблон», при этом «шаблон» — неотъемлемая часть
«документа» (а вовсе даже не «контроллера»). Это все про ведомые контроллеры.

спустя 1 месяц 21 день [обр] Sergei Erjemin (webdragon) [досье]

По сути прав coverless:

Любая ИС разработана правильно, если она удовлетворяет условиям ТЗ.

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

По каким критериям оценивать движjr? А совокупность алгоритмов присущих движку? Если иходить из критериев потребления ресурсов, то получим оптимальный по ресурсоемкости движок (только ресурсов много и самый дешевый движок, может оказаться самым прожерливым по памяти и медленным).

спустя 4 часа 56 минут [обр] Сергей Чернышев AKA Drouk S. ;) [досье]
Sergei Erjemin (webdragon):
Ну, есть необходимые требования, которые образуют слово "движок" (в отличии от других систем/методов разработки с сайтов). Так что можно сделать "сертификацию" по необходимым критериям (а уж кто еще круче сделает, тот молодец), но единого критерия идеального движка, конечно, не получить.
спустя 6 дней [обр] coverless [досье]
2Сергей Чернышев AKA Drouk S. ;): Нет таких требований. Так же, как нет веб-программистов. Это все выдуманные вещи. Если человек пишет ИС под интранет, html клиентом - он веб программист, или не веб программист. А если та же система будет доступна через GUI под тем же самым интранетом что-нибудь существенно изменится ?
спустя 19 часов [обр] Сергей Чернышев AKA Drouk S. ;) [досье]

coverless:
А я разве сказал что это веб-критерии? Основными китериями являются модульность и scalaility а гуи или html это другой вопрос уже.

На самом деле, можно говорить и о веб-критериях ибо очень общее название "движок" можно преобразовать, например, в "движок обычного сайта мелкой фирмы с администрированием через веб-интерфейс" и мы покроем примерно 90% от всго спроса и поэтому писать список критериев для такого движка уже очень даже имеет смысл.

А насчет веб-программистов, то их действительно нет - бывает только Internet-enabled business и под него нужны особые качества продюсеров проекта, менеджеров и архитекторов... Но это так - отступление.

спустя 18 минут [обр] coverless [досье]
Сергей Чернышев AKA Drouk S. ;): это IMHO такая штука, которую все вроде понимают, но формализовывать бессмысленно. Это как секс - все знают, что это такое, но он всегда разный :)
спустя 29 минут [обр] Виктор Ганский aka GunSky [досье]
coverless:
Вы не женаты? :))
спустя 1 час 24 минуты [обр] gook [досье]
Виктор Ганский aka GunSky:
имхо это уже глу-уубокий офф, но не рейтинговать такой ответ выше моих сил :)
спустя 6 часов [обр] coverless [досье]
Виктор Ганский aka GunSky: увы, женат и давно - именно поэтому так и говорю.
спустя 1 день 11 часов [обр] Сергей Чернышев AKA Drouk S. ;) [досье]
coverless:
Ну не правда - не все так плохо. Вполне все можно описать.
Вопрос только в том, что если стоит вопрос "сделать максимально качественно и идеально по отношению к задаче", то тогда, действительно, все писать нужно с нуля и то некоторые части увсе равно универсальны (например, веб-сервер и СУБД), но так вопрос стоит очень редко ибо все понимают разницу в цене.
Powered by POEM™ Engine Copyright © 2002-2005