Предложите проблемные ситуации

bbv

Guest
Предложите проблемные ситуации

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

Пожалуйста, предложите ситуации, уверен, они всем будут полезны...
 

bbv

Guest
Popoff
Для этого нужно подменить html шаблоны на wml.
 

BeGe

Вождь Апачей, блин (c)
Максимально быстрое построение большого дерева. (Если ты не используешь xml + xslt) это есть не маленькая проблема.

Вывод бинарной информации пользователю. Если какой-то модуль системы выводит бинарную информацию.......

Может ещё что-то приудмаю
 

Popoff

popoff.donetsk.ua
Автор оригинала: bbv
Popoff
Для этого нужно подменить html шаблоны на wml.
А ты подмени :) Вот тебе и радикальное изменение дизайна - часто оказывается, на таком простом изменении все перестает работать :) Если решить подобную задачу - раз плюнуть в твоей модели, значит хорошо, вероятнее всего логика действительно отделена от дизайна :) Если возникнут сложности или некоторую часть логики придется копировать или переделывать - значит в твоей модели не все хорошо :)
 

kvn

programmer
А ты подмени :) Вот тебе и радикальное изменение дизайна - часто оказывается, на таком простом изменении все перестает работать :)
ага.
чел. дело говорит.
 

bbv

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

BeGe
Для вывода бинарных данных не нужно представительной логики, модуль передаёт данные напрямую пользователю.

Для построения дерева, бизнес уровень готовит данные, помещая их, например, в многомерный массив. А если представительному уровню (шаблону) необходимо будет представить их в виде дерева, то он этим должен будет заняться, используя всё тот же php.

Так как логика необходима и в шаблонах, то и в них возможно написание php-скриптов (зачем придумывать псевдо язык для шаблонов, если php изначально предполагался для этого).
 

Popoff

popoff.donetsk.ua
Автор оригинала: bbv
Абсолютного разделения логики представления от бизнес логики невозможно достигнуть - в любом случаи будет существовать уровень на котором происходит соединение этих двух логик - он то и будет зависим от них. Этот уровень является всем известным процессом подключения шаблонов и инициализаций данных для них.
Поэтому, если представление меняется в корне, в нашем случаи необходимо реализовать вывод wml, то необходимо редактировать соединительный уровень - иными словами создавать интерфейс, через который будут взаимодействовать бизнес и представительный уровень. Эта задача выполняется совместно с дизайнером и программистом.
Не совсем согласен. Да, работа программиста может потребоваться, но в очень незначительных количествах и только для того, что бы учесть какие-нибудь особенности самого протокола вмл, которые не учитываются в html. Например, кодировка русских букв, отправляемые заголовки, разрезание больших страниц на несколько маленьких. Последнее, вероятно, самое сложное, с чем может столкнуться программист. Если больше ничего менять не нужно, то можете считать, что разделение логик произошло успешно. Если программисту потребуется изменить что-то еще, то Вашу модель нужно пересмотреть.

-~{}~ 26.06.05 15:50:

По поводу деревьев. У меня на сайте реализовано два способа представления деревьев: динамически подгружаемые, (например здесь: http://popoff.donetsk.ua/map.html) и статические (как, например, здесь: http://popoff.donetsk.ua/news/). Статическое - не означает, что оно не может измениться, это значит, что дерево генерируется полностью. На уровне подготовки данных я действительно передаю многомерный массив, в котором содержтся это дерево. В динамически подргураемых деревьях вообще нет никакой проблемы с шаблонами, а в статическом дереве я использую шаблон, который рекурсивно вызывает сам себя, передавая в глубь рекурсии вложенную часть дерева. Фактически, получается, не важно, для кого я буду генерировать это дерево: данное и скрипты для его загрузки остаются всегда одними и теми же. Исходники скриптов для построения обоих вариантов деревьев есть в моей системе popoff.donetsk.ua/light. :)
 

Crazy

Developer
Автор оригинала: bbv
Абсолютного разделения логики представления от бизнес логики невозможно достигнуть

...

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

bbv

Guest
Crazy
Эти два утверждения не могут друг друга взаимно исключать, так как для исключения первого необходимо привести все возможные ситуации и подходы к их решению, и только в том случаи, если все решения будут противоречить первому утверждению, то только тогда выполниться взаимное исключение :)

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

Crazy

Developer
Автор оригинала: bbv
Эти два утверждения не могут друг друга взаимно исключать
Ты их либо невнимательно читаешь, либо не понимаешь написанного. Try again.
 

bbv

Guest
Да, нельзя сделать вывод
Абсолютного разделения логики представления от бизнес логики невозможно достигнуть
основываясь на
если представление меняется в корне, в нашем случаи необходимо реализовать вывод wml, то необходимо редактировать соединительный уровень
Но я тебе это и объясняю: для противоречия первого не достаточно одного противоречивого второго утверждения!!! Надо было дополнить непротиворечивой ситуацией.

Вот, например ситуация, которая всё испортила :):
Сделана страница, выводящая новости: бизнес логика готовит данные и передаёт представительной логике, та формирует вывод.
Новостей стало много, понадобилась необходимость разделения их на страницы (как сделано на форумах, если тем или ответов в теме много) – по идеи это задача представительной логики, она пусть разделит переданные ей данные по страницам. Новостей становится всё больше и больше – их размеры измеряются уже в мегабайтах текстовой информации – необходимость подготавливать бизнес логикой только ту информацию, которую будем выводить – на лицо. Указания, какой набор новостей подготовить, должны следовать от представительной логики (через $_GET).
Появление обратной связи доказывает невозможность полного разделения бизнес логики от представительной.
 

Crazy

Developer
Автор оригинала: bbv
Но я тебе это и объясняю: для противоречия первого не достаточно одного противоречивого второго утверждения!!!
1. Фраза про "противоречие первого" и "противоречивое второе" -- бессмысленна.

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

Надо было дополнить непротиворечивой ситуацией.
Кому надо? У меня такой потребности нет.
 

bbv

Guest
Автор оригинала: bbv
Но я тебе это и объясняю: для противоречия первого не достаточно одного противоречивого второго утверждения!!!
Здесь я не то выразил - думал одно написал другое. :p


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

Что тебе ещё надо??
 

Crazy

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

Сделана страница, выводящая новости: бизнес логика готовит данные и передаёт представительной логике, та формирует вывод.
Новостей стало много, понадобилась необходимость разделения их на страницы (как сделано на форумах, если тем или ответов в теме много) – по идеи это задача представительной логики, она пусть разделит переданные ей данные по страницам. Новостей становится всё больше и больше – их размеры измеряются уже в мегабайтах текстовой информации – необходимость подготавливать бизнес логикой только ту информацию, которую будем выводить – на лицо. Указания, какой набор новостей подготовить, должны следовать от представительной логики (через $_GET).
Появление обратной связи доказывает невозможность полного разделения бизнес логики от представительной.
Разобрать твои ошибки на этом примере или придумаешь более другой? :)
 

Crazy

Developer
Ошибки:

1. Нет адаптера, связывающего слой представления и слой бизнес-логики.
2. Указания, какой набор новостей подготовить, идут не от представления, а от контроллера. Это известная проблема: работая с веб-приложениями многие не осознают разницу.
3. ЛЮБОЕ приложение (если мы не говорим о HelloWorld) имеет обратную связь. Если от пользователя в бизнес-слой не поступают данные, то это, мягко говоря, странное приложение.
4. Твое описание проблемы предполагает еще одно порочное предположение: что в бизнес-логике не могут быть сделаны измененния, которые будут использованы представлением. Это и есть основной источник геморроя, который ты сам себе создаешь.

Разделение архитектуры на слои, с частным случаем которого мы имеем дело, не имеет бессмысленной и недостижимой цели "сделать так, чтобы правки в одном слое всегда можно было сделать, не затрагивая другого". Целью является четкая локализация требуемых правок.

P.S. Между "на лицо" и "налицо" есть большая разница.
 

bbv

Guest
Если не трудно, напиши пример организации обратной связи.
 

Crazy

Developer
Автор оригинала: bbv
Если не трудно, напиши пример организации обратной связи.
Я легко могу ответить в точности на то, о чем ты спросил, но этот процесс лишен смысла.

Попробуй потратить чуть больше времени, формулируя осмысленный вопрос.
 
Сверху