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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MVC + динамика(ajax), динамическая работа с данными 
V
    Опции темы
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   Вверх
Страницы: (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.0888 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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