Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MVC + динамика(ajax), динамическая работа с данными 
V
    Опции темы
AGENTxXx
  Дата 16.5.2012, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



Добрый вечер, Дорогие форумчане!

Столкнулся с неудобством подхода MVC и динамики, реализованной, например, ajax.
Дело в следующем: если есть устоявшаяся структура (а MVC как раз это предполагает), но хотелось бы сделать, например, удаление на лету сообщений. Для этого было бы гораздо удобнее сделать отдельный файл php со скриптом и с помощью функции ajax обращаться к нему.. Ну тут неувязочка... тот скрипт ни чего не знает о БД, о константах, которые используются.... т.е. придется все туда подключать... а через include иногда это невозможно... если например работаем с captch'ей. В общем, хотелось бы узнать у тех, кто работает в MVC, каким образом они делают подобную динамику.

Заранее большое спасибо всем! =)
PM MAIL   Вверх
Fortop
Дата 16.5.2012, 21:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



А причем тут MVC и ajax?

Одно другому никак не мешает.
Вызывайте через ajax свой контроллер и пусть он обращается к модели за удалением сообщения.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
MoLeX
Дата 17.5.2012, 05:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



AGENTxXx, при обращение через AJAX, в глобальной переменной $_SERVER появляется новое значение
Код

var_dump($_SERVER['HTTP_X_REQUESTED_WITH']);

вот по ней и смотрите как надо отдать ответ. А обращение оставьте по старому (через <a href="url">link</a>), просто повести обработчик на JS. Это позволит избежать проблем, когда у клиента отключен JS 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Aliance
Дата 17.5.2012, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Можно почитать про вещь, которая в контексте ZF называется contextSwitch. И реализовать у себя аналог.
PM MAIL WWW ICQ Skype   Вверх
AGENTxXx
Дата 17.5.2012, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



Fortop - в данном случае так и делал! Но считаю не очень эт удобно..
Ну раньше без MVC кода прогал, то было удобнее, через JS вызывал и все ок! А тут - придется к контроллеру опять обращаться.. Ну в общем понял, что все видно так и делают.

MoLeX - на счет - JS и href - спасибо. Что т в последнее время.. да и вообще так не делал))) Я обходился как то noscript и в нем замечанием)))

Aliance - хорошо, посмотрю. Может это именно то, что нужно! =)


PM MAIL   Вверх
ksnk
Дата 17.5.2012, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(AGENTxXx @  17.5.2012,  10:46 Найти цитируемый пост)
 А тут - придется к контроллеру опять обращаться.. Ну в общем понял, что все видно так и делают.

Вообще-то MVC для того и придуман, чтобы все так делали smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
AGENTxXx
Дата 17.5.2012, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



ksnk - в MVC ни чего не говорится о динамическом взаимодействии (ну где я читал, точно). А для каждого подхода - есть и свои хитрости. Это точно также, как MVC применили к PHP частично ущемляя подходы в стиле ООП - применяют в основном MVC для процедурного подхода в PHP
PM MAIL   Вверх
Guedda
Дата 17.5.2012, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Цитата(AGENTxXx @  17.5.2012,  15:07 Найти цитируемый пост)
 в MVC ни чего не говорится о динамическом взаимодействии

А при чем тут, извините, динамическое взаимодействие? Принцип хоть при динамическом, хоть при статическом, остается один и тот же - представление обращается к контроллеру (в данном случае). А как оно это делает (через пост, гет, аякс, мысленно) - это уже не парадигма MVC. Суть остается сутью. 
Цитата(AGENTxXx @  17.5.2012,  15:07 Найти цитируемый пост)
MVC применили к PHP

Пожалуйста, не говорите ерунды. Никто ничего ни к чему не применял. Вы о чем вообще?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Sentox
Дата 17.5.2012, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



AGENTxXx, 
Цитата

Это точно также, как MVC применили к PHP частично ущемляя подходы в стиле ООП - применяют в основном MVC для процедурного подхода в PHP 


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

AGENTxXx, 
Цитата

Столкнулся с неудобством подхода MVC и динамики, реализованной, например, ajax.


Да, это так, но только при одном условии, если слой View со своей бизнес логикой находится в основном на клиенте. Тогда удобней модель FrontController и PageController.
 Хотя в принципе можно построить любую схему только на основе слоя служб в виде контроллеров сценариев, бизнес-логики (например Strategy) и слоя данных (например на основе шлюзов данных или ещё лучше ActiveRecord + Gateway).

Добавлено @ 17:02
Цитата

Ну тут неувязочка... тот скрипт ни чего не знает о БД, о константах, которые используются.... т.е. придется все туда подключать... а через include иногда это невозможно... если например работаем с captch'ей. 


Этим как раз занимается слой служб ApplicationController.

Это сообщение отредактировал(а) Sentox - 17.5.2012, 17:05
PM MAIL   Вверх
Sentox
Дата 17.5.2012, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Guedda, 
Цитата

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


Если клиент (например на JS или на JAVA) содержит логику слоя представления и некоторую часть бизнес логики, смысл в MVC для сервера пропадает, да же становится не удобным и не нужным.

Это сообщение отредактировал(а) Sentox - 17.5.2012, 17:21
PM MAIL   Вверх
Fortop
Дата 17.5.2012, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Sentox @  17.5.2012,  17:20 Найти цитируемый пост)
Если клиент (например на JS или на JAVA) содержит логику слоя представления и некоторую часть бизнес логики, смысл в MVC для сервера пропадает, да же становится не удобным и не нужным.

это не смысл в MVC пропадает. Это вы нарушили его парадигму.



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Sentox
Дата 17.5.2012, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Цитата(Fortop @ 17.5.2012,  20:49)
Цитата(Sentox @  17.5.2012,  17:20 Найти цитируемый пост)
Если клиент (например на JS или на JAVA) содержит логику слоя представления и некоторую часть бизнес логики, смысл в MVC для сервера пропадает, да же становится не удобным и не нужным.

это не смысл в MVC пропадает. Это вы нарушили его парадигму.

Хммм .... вообще то я о построении архитектуры изначально. 
Если клиент "толстый" то MVC на сервере несостоятельно в этом контексте.  Впринципе довольно несложно рефакторить систему из MVC, если потребуется переход на толстый клиент. Сам принцип переноса слоя представления на клиент уже делает часть View на сервере просто ненужной и не используемой.

Это сообщение отредактировал(а) Sentox - 17.5.2012, 21:46
PM MAIL   Вверх
Fortop
Дата 17.5.2012, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Sentox @  17.5.2012,  21:06 Найти цитируемый пост)
Сам принцип переноса слоя представления на клиент уже делает часть View на сервере просто ненужной и не используемой.

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

В-третьих
Цитата(Sentox @  17.5.2012,  17:20 Найти цитируемый пост)
смысл в MVC для сервера пропадает

Цитата(Sentox @  17.5.2012,  21:06 Найти цитируемый пост)
 уже делает часть View на сервере


Вы уж определитесь, то ли MVC у вас становится ненужным как архитектура, то ли view 


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
AGENTxXx
Дата 17.5.2012, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



Guedda - не совсем понял ваше цитирование моих слов! Я с ними полностью согласен. MVC - для ООП, а в php часто пользуются процедурным подходом применяя MVC!

Так что давайте по делу! Есть ли те, кто не через контроллер делает, а другим подходом? =)

P.S. Ребята, я понимаю что вы все хотите помочь, но основной вопрос все же был - как сделать удобнее динамические обращения. Ну вот смотрите: есть у нас контроллер, к которому мы должны обратиться и он пошлет нас по адресу. Ну а контроллер весит например 500 кб, а нужная нам часть - всего 10 кб. В итоге затраты 490 кб лишних... В общем - то ли тех, кто на MVC и с динамикой - все устраивает, то ли я чтот не так делаю..... 
PM MAIL   Вверх
Sentox
Дата 17.5.2012, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Цитата(Fortop @ 17.5.2012,  22:02)
Вы уж определитесь, то ли MVC у вас становится ненужным как архитектура, то ли view

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

Цитата

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


Вы наверное немного недопонимаете концепцию слоёв и уровней. Слой системы может находится на физическом уровне клиента.
Я ж специально привёл примеры его программирования на других языках. Допустим тот же слой представления (часть View от MVC) будет на клиенте реализован в JS, тогда часть View просто не используется в этой архитектуре на PHP. И это всё 
Цитата

у вас 1но приложение


Пример: есть толстый клиент написанный на JS и выполняет полностью логику представления (шаблонизация)(кстати ещё лучше пример с пользовательскими скриптами для браузеров). Используя YII (MVC) уровень представления почти не используется только активно учавствует Controller<->ModelData. На сервере только хранятся шаблоны html, которые использует JS на клиенте. Тот же эффект и на клиенте JAVA да же со своими окнами но шаблоны в другом формате.

Это сообщение отредактировал(а) Sentox - 17.5.2012, 22:59
PM MAIL   Вверх
ksnk
Дата 18.5.2012, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(AGENTxXx @  17.5.2012,  22:29 Найти цитируемый пост)
Так что давайте по делу! Есть ли те, кто не через контроллер делает, а другим подходом? =)

 smile 
Это как? Без MVC? 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
MoLeX
Дата 18.5.2012, 05:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(AGENTxXx @  17.5.2012,  22:29 Найти цитируемый пост)
Ну а контроллер весит например 500 кб, а нужная нам часть - всего 10 кб. В итоге затраты 490 кб лишних...

эм. что именно весит - готовый ответ или исполняемый код?

Это сообщение отредактировал(а) MoLeX - 18.5.2012, 09:03


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Fortop
Дата 18.5.2012, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(AGENTxXx @  17.5.2012,  22:29 Найти цитируемый пост)
 Ну а контроллер весит например 500 кб, а нужная нам часть - всего 10 кб

Неправильно организовано приложение.
Осуществите декомпозицию. Вероятно у вас там смешаны в кучу и модели и несколько контроллеров.


Цитата(Sentox @  17.5.2012,  22:58 Найти цитируемый пост)
Вы наверное немного недопонимаете концепцию слоёв и уровней. Слой системы может находится на физическом уровне клиента.
Я ж специально привёл примеры его программирования на других языках. Допустим тот же слой представления (часть View от MVC) будет на клиенте реализован в JS, тогда часть View просто не используется в этой архитектуре на PHP. И это всё 

Вот сейчас мы и разберемся, кто недопонимает.


MVC как парадигма не зависит от языка.
Более того, MVC вполне свободно ложится на архитектуру клиент-сервер.

А вот тот факт, что вы ваше приложение не в состоянии воспринять как единое целое и ожидаете обязательного наличия реализации View на сервере показывает ваш уровень понимания MVC как архитектуры.

Тем не менее, MVC не единственная парадигма (просто в условиях публичного web наличие толстых клиентов редкость).
Существует еще к примеру multi-tier архитектура.
Только это не ваш случай.

P.S. А есть еще и MVP, почитайте и о нем тоже.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
AGENTxXx
Дата 18.5.2012, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



Что т я уже сам запутываюсь.

ksnk - думаю да, тут с этим может быть придется выйти за рамки

MoLeX - не совсем понял, что не так =)

Давайте опишу лучше то, как у меня организована связь, а вы меня покритикуете!
1. В модели есть функция, например, удаления новости.
2. Также в модели есть функция формирования новостей, которая вызывается в VIEWе
3. В Контроллере осуществляется подключение всех необходимых файлов: Переменных, файл конфига, файл БД, стандартные функции обработки, стандартные функции отображения.
4. Ajax функция - в отдельном js файле и подключается в файле index.php
5. При нажатии на кнопку удалить, я отправляю запрос controllerу, контроллер, по GET параметру находит, что такую то новость надо удалить и вызывает из модели функцию удаления.
6. Функция возвращает true или false.
7. Далее контроллер прерывается с помощью функции exit().
8. Конец =)

Кто может сказать, каким образом можно подлатать? Может быть выделить спец. контролл и модель, которая как раз будет заниматься динамикой => в контролле не будет лишней информации, а в запросе ajax добавится новый параметр, который как раз укажет, из какой, например, таблицы нужно удалять... и засунуть может все это в папку libs)))
PM MAIL   Вверх
MoLeX
Дата 18.5.2012, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



AGENTxXx, опечатался. 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Guedda
Дата 18.5.2012, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Цитата(AGENTxXx @  18.5.2012,  09:36 Найти цитируемый пост)
2. Также в модели есть функция формирования новостей, которая вызывается в VIEWе
3. В Контроллере осуществляется подключение всех необходимых файлов: Переменных, файл конфига, файл БД, стандартные функции обработки, стандартные функции отображения.

Насколько Вы здесь описали, я понимаю, вы путаете понятия моделей и контроллеров. А если не путаете, значит Вы полностью нарушаете парадигму MVC. Представление не должно обращаться к модели, а контроллеры не должны инициализировать БД.
Цитата(AGENTxXx @  18.5.2012,  09:36 Найти цитируемый пост)
Кто может сказать, каким образом можно подлатать? Может быть выделить спец. контролл и модель, которая как раз будет заниматься динамикой => в контролле не будет лишней информации, а в запросе ajax добавится новый параметр, который как раз укажет, из какой, например, таблицы нужно удалять... и засунуть может все это в папку libs))) 

Можно сделать отдельный контроллер с методами, с которыми будет работать только аякс. Один из выходов.  smile 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
AGENTxXx
Дата 18.5.2012, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



MoLeX - видно не совсем удачный пример привел! Я говорил про исходный код! 
Да, можно утверждать, что такого быть не может и значит что то сделано не правильно... но всякое ведь бывает... Подключаемые файлы могут спокойно исходный код до 500 кб догнать - это мое мнение!

Guedda - эм... Как я читал и смотрел, модель должна содержать функции для работы, контроллер - управление этими функциями, вью - отображение информации... Где здесь опечатка? Или что не правильно я понял?


Может кто нибудь дать хорошую ссылку на MVC - чтобы все же правильно все сделал... Видно я что то не допонимаю(((   Ну а то, что некоторые считают как раз нормальный вариант: "Можно сделать отдельный контроллер с методами, с которыми будет работать только аякс" - в общем, этот подход меня устраивает. Киньте ссылку плиззз, и можно тему будет закрыть! Всем большое спасибо!!!  smile 
PM MAIL   Вверх
Guedda
Дата 18.5.2012, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Цитата(AGENTxXx @  18.5.2012,  11:34 Найти цитируемый пост)
эм... Как я читал и смотрел, модель должна содержать функции для работы, контроллер - управление этими функциями, вью - отображение информации... Где здесь опечатка? Или что не правильно я понял?

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

Цитата(AGENTxXx @  18.5.2012,  11:34 Найти цитируемый пост)
Может кто нибудь дать хорошую ссылку на MVC

Как я понимаю, тебе необходима ссылка на страницу, где рассказывают о MVC? Для начала (особенно внимательно вчитайся в раздел "Концепция").


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Sentox
Дата 18.5.2012, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Цитата

А вот тот факт, что вы ваше приложение не в состоянии воспринять как единое целое и ожидаете обязательного наличия реализации View на сервере показывает ваш уровень понимания MVC как архитектуры.


 smile Я всё время показывал что наоборот View не обязателен при реализации его на клиенте

Цитата

MVC как парадигма не зависит от языка.
Более того, MVC вполне свободно ложится на архитектуру клиент-сервер.


Это понятно, только разговор про серверную часть. Если на сервере Controller<->Model а на клиенте View - это не есть MVC, никак.
Почему, я объясню. 
Потому как клиент может содержать и примитивную бизнес-логику по работе с данными минуя controller-model обращаясь непосредственно к данным, это во многих случаях оправдано. Да и тот факт, что следует применять концепцию паттернов (а MVC есть паттерн) в пределах одного физического уровня, указывает на то что это опять же не MVC, если слой представления перенсён на другой физический уровень. 
Отсюда следует что концепция слоёв и уровней это не то же самое что накладывание паттернов на одно приложение, если они да же распределены удалённо. Это очень усложняет систему и её поддержку. Применение паттернов должно быть применено в пределах одного физического уровня иначе система будет слишком жёсткая и связная.

Цитата

Тем не менее, MVC не единственная парадигма (просто в условиях публичного web наличие толстых клиентов редкость).
Существует еще к примеру multi-tier архитектура.
Только это не ваш случай.

Читаем мой пост выше про служебные слои, стратегии и модели данных.

Цитата

Существует еще к примеру multi-tier архитектура.


Это совершенно отдельный разговор распределённых систем, сюда вообще не входит.

Цитата

(просто в условиях публичного web наличие толстых клиентов редкость)

Тем не менее есть, я такую уже делал. У меня на клиенте был реализован паттерн MVC ! smile
Кстати пример такой системы - это gmail почта.

С уважением smile

Это сообщение отредактировал(а) Sentox - 18.5.2012, 13:46
PM MAIL   Вверх
Fortop
Дата 18.5.2012, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Guedda @  18.5.2012,  09:04 Найти цитируемый пост)
Представление не должно обращаться к модели

Разве? smile

http://en.wikipedia.org/wiki/Model%E2%80%9...80%93controller

Добавлено через 6 минут и 7 секунд
Цитата(Sentox @  18.5.2012,  13:42 Найти цитируемый пост)
Я всё время показывал что наоборот View не обязателен при реализации его на клиенте

У вас какой-то сторонний клиент вне вашего приложения? smile 
И при этом знает что-то о вашем приложении?
Покажите мне такой.


Цитата(Sentox @  18.5.2012,  13:42 Найти цитируемый пост)
Это понятно, только разговор про серверную часть.

Где?
Цитата(AGENTxXx @  16.5.2012,  21:39 Найти цитируемый пост)
Столкнулся с неудобством подхода MVC и динамики, реализованной, например, ajax.


Аякс у нас теперь серверная технология? Да вы гуру!  smile

 
Цитата(Sentox @  18.5.2012,  13:42 Найти цитируемый пост)
Читаем мой пост выше про служебные слои, стратегии и модели данных.

Он малость ужасен.

Цитата(Sentox @  17.5.2012,  16:54 Найти цитируемый пост)
Да, это так, но только при одном условии, если слой View со своей бизнес логикой находится в основном на клиенте. Тогда удобней модель FrontController и PageController.
 Хотя в принципе можно построить любую схему только на основе слоя служб в виде контроллеров сценариев, бизнес-логики (например Strategy) и слоя данных (например на основе шлюзов данных или ещё лучше ActiveRecord + Gateway).

Цитата(Sentox @  17.5.2012,  16:54 Найти цитируемый пост)
Этим как раз занимается слой служб ApplicationController.

Цитата(Sentox @  17.5.2012,  16:54 Найти цитируемый пост)
 MVC всего лишь структурное расслоение системы, а как использовать тот же слой служб контроллеров уже зависит от разработчика. Фактически и в основном, в этой модели, контроллеры являются службами содержащими сценарии, почему и называются контроллерами сценариев

Кто-нибудь понял что тут пытались сказать?

Цитата(Sentox @  17.5.2012,  16:54 Найти цитируемый пост)
контроллерами сценариев

Можно этимологию этого термина? Я несколько не понимаю что вы хотите сказать.

Добавлено через 7 минут и 30 секунд
Цитата(Sentox @  18.5.2012,  13:42 Найти цитируемый пост)
отдельный разговор распределённых систем, сюда вообще не входит.

Каких еще распределенных систем?  smile 


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Guedda
Дата 18.5.2012, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Цитата(Fortop @  18.5.2012,  14:47 Найти цитируемый пост)
Разве? 

Разве. Графическое представление MVC - везде и всегда:
user posted image

Видите стрелку Model->View?

Для меня Стив Барбек (?) не является "отцом" MVC и я привык доверять нескольким источникам сразу, а не словам какого-то незнакомого мне человека.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Sentox
Дата 18.5.2012, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Fortop, 
Цитата

Цитата(Sentox @  17.5.2012,  16:54 Найти цитируемый пост)
 MVC всего лишь структурное расслоение системы, а как использовать тот же слой служб контроллеров уже зависит от разработчика. Фактически и в основном, в этой модели, контроллеры являются службами содержащими сценарии, почему и называются контроллерами сценариев

Кто-нибудь понял что тут пытались сказать?


Наверное я поспешил что то показывать, ну ок.
К Фаулеру и Мартину стоит обратится за помощью. smile тогда можно будет о чём то общаться.
"Шаблоны корпоративных приложений" (М. Фаулер) , одно из лучших пояснений MVC да вообще очень хорошо расписан механизм построения архитектуры приложений и концепции расслоения системы.

Ах да, по поводу сценариев ещё стоит познакомится с UC UML

Цитата

Добавлено через 6 минут и 7 секунд
Цитата(Sentox @  18.5.2012,  13:42 Найти цитируемый пост)
Я всё время показывал что наоборот View не обязателен при реализации его на клиенте

У вас какой-то сторонний клиент вне вашего приложения? smile 
И при этом знает что-то о вашем приложении?
Покажите мне такой.


Ещё раз, gmail почтовик можно посмотреть.
Клиент знает о приложении только по его API, что делает его переносимым и не связным.
API закладываются в url ajax запросов

Это сообщение отредактировал(а) Sentox - 18.5.2012, 15:00
PM MAIL   Вверх
Sentox
Дата 18.5.2012, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Цитата(Guedda @ 18.5.2012,  13:57)
Цитата(Fortop @  18.5.2012,  14:47 Найти цитируемый пост)
Разве? 

Разве. Графическое представление MVC - везде и всегда:
[/IMG]

Видите стрелку Model->View?

Для меня Стив Барбек (?) не является "отцом" MVC и я привык доверять нескольким источникам сразу, а не словам какого-то незнакомого мне человека.

smile
Это уже потянет холивар.
Допустим в YII реализован MVC с доступом модели представления к модели данных, иногда это более чем нужно. 
Если не предоставить модели представления доступа к модели данных и наоборот получим более толстую модель контроллера, который должен обеспечить синхронность данных меду ними и взять на себя обязанность в этом. Я впринципе противник такой модели, считаю что контроллер должен заниматься только управлением и передачей моделеи представления к модели данных, что соответственно добавляет стрелку на рисунке между моделями.
Опять же повторюсь это холивар smile, и для каждой задачи свой подход наиболее удобен.

В завершении smile
MVC как и все паттерны не жёсткая парадигма, которая должна управлять разработчиками, наоборот она может гибко изменяться (как и все паттерны) взависимости от задач поставленных бизнеc-логикой, но не наоборот.

Это сообщение отредактировал(а) Sentox - 18.5.2012, 14:42
PM MAIL   Вверх
Fortop
Дата 18.5.2012, 15:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Guedda, у Фаулера я не встречал упоминания об ограничении обращения представления к модели.
Вы можете привести источники где это указано?

И, да, обычно ваша схема MVC дополняется как минимум пунктирной связью модель-представление smile
http://java.sun.com/blueprints/patterns/MVC-detailed.html
это достаточно авторитетный для вас источник? smile




--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
AGENTxXx
Дата 18.5.2012, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



Guedda - спасибо, почитаю там


Цитата(Sentox @  18.5.2012,  14:37 Найти цитируемый пост)
MVC как и все паттерны не жёсткая парадигма, которая должна управлять разработчиками, наоборот она может гибко изменяться (как и все паттерны) взависимости от задач поставленных бизнеc-логикой, но не наоборот.
 - с этим согласен =)



Цитата(Fortop @  18.5.2012,  13:47 Найти цитируемый пост)
Аякс у нас теперь серверная технология? Да вы гуру!  
 - видно я не знаю еще про технологию, которая неведанным образом передает ajax скрипт с сервера клиенту... Как еще другим образом из того, что я сказал можно было понять, что ajax - это серверная технология я не знаю..... Я бы сказал, что Ajax - это все же клиент-серверная технология! Или вас напрягает слово - "технология"? Если так, то хорошо, не технология, а подход! 

Из кучи информации, полезным в постах оказалась - ссылка и изображение! 

PM MAIL   Вверх
Guedda
Дата 18.5.2012, 15:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Цитата(Fortop @  18.5.2012,  16:07 Найти цитируемый пост)
достаточно авторитетный для вас источник?

Достаточно smile Спасибо за ссылку, почитаю. 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Fortop
Дата 18.5.2012, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Sentox @  18.5.2012,  14:06 Найти цитируемый пост)
Ах да, по поводу сценариев ещё стоит познакомится с UC UML

Вот не гуру UML smile что такое UC? 
use case? И с каких дел вы его сюда примешиваете?

Цитата(Sentox @  18.5.2012,  14:06 Найти цитируемый пост)
К Фаулеру и Мартину стоит обратится за помощью.  тогда можно будет о чём то общаться.

Хорошо smile я подожду.
Как осилите его. Пообщаемся smile

Цитата(Sentox @  18.5.2012,  14:06 Найти цитируемый пост)
Ещё раз, gmail почтовик можно посмотреть.
Клиент знает о приложении только по его API, что делает его переносимым и не связным.
API закладываются в url ajax запросов

Ох, какие сложности с прочтением моих вопросов.
Думаю срок на изучение Patterns of Enterprise Application Architecture вам надо утроить.
 
Я спрашивал про сторонний клиент.
Что в gmail стороннего?

Добавлено через 3 минуты и 59 секунд
Цитата(AGENTxXx @  18.5.2012,  10:34 Найти цитируемый пост)
Подключаемые файлы могут спокойно исходный код до 500 кб догнать - это мое мнение!

Он в опкод кешере. Поэтому это вас не должно волновать.

Плюс autoload позволяет подгружать лишь то, что действительно используется.
Если, конечно, у вас проведена декомпозиция и нет монстроузных классов.

Добавлено через 14 минут и 32 секунды
Цитата(AGENTxXx @  18.5.2012,  15:12 Найти цитируемый пост)
- видно я не знаю еще про технологию, которая неведанным образом передает ajax скрипт с сервера клиенту... Как еще другим образом из того, что я сказал можно было понять, что ajax - это серверная технология я не знаю..... 

Это было не вам smile
Это из высказываний Sentox следовало.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Sanchezzz
Дата 18.5.2012, 19:10 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



MVC лишние в PHP хуеву тучу времени отнимает при  доработке напилиного не одним месяцем работы, вполне достаточно
autoload + годами наработанные полезные функции, класс синглитон для PDO, гибкий собственный mod-rewrite или как у меня настраивается через веб интерфейс








--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Sentox
Дата 18.5.2012, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Fortop, 
Цитата

Цитата(Sentox @  18.5.2012,  14:06 Найти цитируемый пост)
Ах да, по поводу сценариев ещё стоит познакомится с UC UML

Вот не гуру UML smile что такое UC? 
use case? И с каких дел вы его сюда примешиваете?

Цитата(Sentox @  18.5.2012,  14:06 Найти цитируемый пост)
К Фаулеру и Мартину стоит обратится за помощью.  тогда можно будет о чём то общаться.

Хорошо smile я подожду.
Как осилите его. Пообщаемся smile


Если Вы хорошо знаете Фаулера, стоило бы знать его предпочтения в терминологии.
"Шаблоны корпоративных приложений" (Фаулер) часть 1. Обзор, гл. Уровень служб, стр.57

Цитата

Главная особенность модели заключается в том, что логика, относящаяся к отдельным транзакциям или вариантам использования, распологается в соответствующих сценариях транзакций, которые в данном случае называют контроллерами (или службами). Они выполняют роль входных контроллеров в типовых решениях модель-представление-контроллер (Model View Controller) и контроллер приложения (Application Controller) и поэтому называются также контроллерами вариантов использования (use case controller).


Осиливайте smile 
C растущим уважением!

Это сообщение отредактировал(а) Sentox - 18.5.2012, 21:51
PM MAIL   Вверх
Fortop
Дата 18.5.2012, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Sentox @  18.5.2012,  21:30 Найти цитируемый пост)
Если Вы хорошо знаете Фаулера, стоило бы знать его предпочтения в терминологии.

Точно стоило бы знать? smile

Даже в форме такого искажения? smile
Цитата(Sentox @  17.5.2012,  16:54 Найти цитируемый пост)
в виде контроллеров сценариев

Цитата(Fowler @  18.5.2012,  21:30 Найти цитируемый пост)
Главная особенность модели заключается в том, что логика, относящаяся к отдельным транзакциям или вариантам использования, распологается в соответствующих сценариях транзакций, которые в данном случае называют контроллерами (или службами)


Где ваша терминология и где Фаулер? smile

Вот вам еще образчик smile вашего понимания
Цитата(Sentox @  18.5.2012,  13:42 Найти цитируемый пост)
Да и тот факт, что следует применять концепцию паттернов (а MVC есть паттерн) в пределах одного физического уровня, указывает на то что это опять же не MVC, если слой представления перенсён на другой физический уровень. 

И сравните с описанным тут smile
http://java.sun.com/blueprints/patterns/MVC-detailed.html

Про UC UML я ответ услышу? Я действительно не понимаю о чем вы пытались мне сообщить smile
Или это опять ваша трактовка вот этого?
Цитата(Fowler @  18.5.2012,  21:30)
(use case controller)


Это сообщение отредактировал(а) Fortop - 18.5.2012, 23:33


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Sentox
Дата 19.5.2012, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Fortop, 
Цитата

Где ваша терминология и где Фаулер? smile


Я рад что Вас рассмешил smile
Значит на это позитивной для Вас ноте завершим дискуссию.
Как говаривал дядюшка Боб (Роберт Мартин), если дискуссия длится более получаса (в нашем случае три страницы  smile ) с совершенно бесполезным результатом лучше её закончить.

С уважением к Вам, без сарказма, не принимайте это как подкол. smile
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1060 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.