Не вижу смысла обсуждать так как возможно вы бы НЕ сделали то, что делаем мы с той же скоростью и ценой, а было бы дольше и дороже в разы.
И как я понимаю вы специалист НЕ по Web-приложениям и скорее всего работаете с кучей сложного кода, где скорее всего проблема работы с MVC не присутствует.
Есть пример кода с хорошей архитектурой по вашему мнению? Киньте ссылку.
Просто на словах вы так правильно все говорите, интересно какой код вы пишите для веб-приложений.
В вашем опыте не велика, а в нашем убытки от умников хоронят проекты и приносят огромные убытки по итогу.
Тема довольно сложная и как я вижу кроме нашей зарубы никто не участвует, поетому думаю нет смысла обсуждать сложные детали вопроса построения приложения на базе MVC паттерна
Кстати например Like используется одна во всех 3 случаях.
AJAX и API работают одинаково и Cron может GET запросом например давать данные.
Но в нашем случае выносить логику на 2 уровень имеет смысл лишь когда нужно, а не всегда. Тоесть это расширение возможностей для упрощения в большом кол-ве ситуаций.
Кстати сама идея переноса бизнес-логики в контроллер более удобная для веб-сайтов. Так как с ростом технологии AJAX очень много простых запросов к системе и проще отдавать результат сразу прям в контроллере, что бы не усложнять систему.
И так складывается, что практика противоречит теории.
… и нет, добавленные вами «Core Components» не имеют никакого отношения к шаблону MVC.
Тема статьи: Расширенная MVC архитектура
Если мы например добавляем перед запуском контроллера роутер как отдельный класс/объект + напаковуем в абстрактный класс контроллера кучу возможностей, в том числе в контроллере уже может быть например данные о пользователе из Базы данных. То это уже не MVC, а что-то новое на основе MVC
Кроме того, контроллер например может содержать такой код:
if ($_GET['stop_mirror_server']) {
$this->load->library('server_control');
$this->server_control->stop();
$this->load->model('mailer');
$this->mailer->send_stop_server_noty();
}
server_control может быть вообще адаптером который через командную строку потом вызовет shell который остановит сервер.
А то что надо сразу письмо отправить — это уже бизнес логика.
Суть статьи — предложить расширенное определение MVС для веб приложений.
Просто MVC мало. А «нужная инфраструктура» у каждого своя и часто перегружена и не оптимальна.
CodeIgniter был приобретен Канадский институтом http://www.bcit.ca/ Я думаю там не дураки собрались.)
У людей проблемы с понятиями. Когда слишком много информации, то многие путают их.
Суть в том, что модели бывают разные и стоит их разделить на типы моделей и разложить отдельно. Вынести общее в обязательное Core например. (Да, забыл учесть это изначально при публикации, уже исправил)
И указать что на практике в контроллере часто лежит бизнес-логика так как по сути обработка входной информации — это не математика, а логика которая прямо связана с бизнес-процессами.
Мы смогли сделать быстрее и дешевле, чем многие другие разработчики нам предлагали. Так как мы изначально построили систему так как описано выше.
А некоторые наши клиенты отказались и заказали в другом месте некоторые сайты, после чего вернулись с «говноархитектурой» которую больше никто не хочет править и надо переписывать весь Back-End.
Проблема в другом: Как переубедить тех, кто усложняет код и заставить их вдумываться в детали процесса проектирования программы, а так-же, что теория не панация и необходимо придумывать что-то новое и лучшее для реальных ситуаций.
«объекты, подключаемые к контроллеру»
Объект — это экземпляр класса. И они бывают разные по сущности. Это может быть библиотека, другой контроллер при HMVC или класс для управления сервисом или адаптер какой-то.
Пробовали разные Frameworks: PHP CodeIgniter, PHP Zend, PHP Yii, PHP Kohana, PHP Symphony, WordPress CMS, На Java пробовали Java Spring MVC, ASP.NET MVC рассматривали и при работе с Android SDK и Objective-C не нашли готовых решений для построения этой самой «нужной инфраструктуры»
По итогу пришли вот к тому, что написано выше. На счет SOA я уже понял, что многие его понимают буквально. Поетому уже изменил текст и детализировал как разновидности объектов подключаемые к контроллеру.
Казалось, что это только часть кода, а html-ки генерируются из БД где-то.
Ок, слишком простая программа для вопроса архитектуры.
Для пример если взять WordPress CMS или Java Spring MVC из коробки, то за 5 действий точно не уложится.
Иногда до 5 часов занимает такая простая 5 минутная задача на некоторых системах, которые НЕ допилены до удобной и расширяемой архитектуры.
Суть вопроса в том, что мало слова MVC, надо детализировать дальше, что бы потом за минимум шагов делать максимум функционала и одно другому не мешало.
Есть у вас какой-то пример кода Веб-сайта для рассмотрения еще?
Сразу видно, что кол-во не бизнес объектов зашкаливает в отличии от php решений например. Но это C# поетому часть кода нужна в принципе для работы веб-сайта в среде сервера.
Поетому можно дописать еще + Server Environment needs
Допустим как в любой CMS нам нужно ее расширить. Например сделать отдельную страницу /list/ в которую вывести из БД например таблицу товаров.
Вопрос: сколько надо сделать действий в NJekyll этом, что бы такую простое дело реализовать?
Например у нас будет так:
1) Создать контроллер list с index методом (Роутинг определяет метод контроллера для запуска)
2) Создать класс модели с методом SQL запроса или наследовать стандартный, там есть уже получение всей таблицы метод
3) Подключить класс в контроллер и положить в переменную массив
4) Создать View с циклом
5) Подключить VIew к контроллеру + прописать заголовок title странице желательно
Где SQL инъекция проходит? Какой файл и какая строка? (Код примера 2 летней давности если что)
Ок, негатива я наслушался, но по итогу никакого конструктивного совета не было.
Будем считать этот пост негативным)
И как я понимаю вы специалист НЕ по Web-приложениям и скорее всего работаете с кучей сложного кода, где скорее всего проблема работы с MVC не присутствует.
Есть пример кода с хорошей архитектурой по вашему мнению? Киньте ссылку.
Просто на словах вы так правильно все говорите, интересно какой код вы пишите для веб-приложений.
У нас не встречалось этой проблемы
В общем основная цель — это простота.
Если вы считаете, что то что написано бесполезно — Ок!
Возможно в вашей ситуации это не нужно. Вы уже достаточно минусов поставили не так ли?
Вот только судя по просмотрам, остальным в принципе пофиг)
А значит тема не особо актуальна.
Думаю на этой точке можно остановить спор.
В вашем опыте не велика, а в нашем убытки от умников хоронят проекты и приносят огромные убытки по итогу.
Тема довольно сложная и как я вижу кроме нашей зарубы никто не участвует, поетому думаю нет смысла обсуждать сложные детали вопроса построения приложения на базе MVC паттерна
AJAX и API работают одинаково и Cron может GET запросом например давать данные.
Но в нашем случае выносить логику на 2 уровень имеет смысл лишь когда нужно, а не всегда. Тоесть это расширение возможностей для упрощения в большом кол-ве ситуаций.
И так складывается, что практика противоречит теории.
Тема статьи: Расширенная MVC архитектура
Если мы например добавляем перед запуском контроллера роутер как отдельный класс/объект + напаковуем в абстрактный класс контроллера кучу возможностей, в том числе в контроллере уже может быть например данные о пользователе из Базы данных. То это уже не MVC, а что-то новое на основе MVC
Кроме того, контроллер например может содержать такой код:
server_control может быть вообще адаптером который через командную строку потом вызовет shell который остановит сервер.
А то что надо сразу письмо отправить — это уже бизнес логика.
Суть статьи — предложить расширенное определение MVС для веб приложений.
Просто MVC мало. А «нужная инфраструктура» у каждого своя и часто перегружена и не оптимальна.
У людей проблемы с понятиями. Когда слишком много информации, то многие путают их.
Суть в том, что модели бывают разные и стоит их разделить на типы моделей и разложить отдельно. Вынести общее в обязательное Core например. (Да, забыл учесть это изначально при публикации, уже исправил)
И указать что на практике в контроллере часто лежит бизнес-логика так как по сути обработка входной информации — это не математика, а логика которая прямо связана с бизнес-процессами.
Есть пример кода чистой MVC у вас?
Не соглашусь! Пример как это работает в CodeIgniter:
http://www.codeigniter.com/user_guide/libraries/loader.html
Баталии на эту тему проходили тут: https://toster.ru/q/2419
И это реально проблема! Сборка ответа на запрос пользователя из частей — это уже бизнес-логика так как сами части есть предметной областью чаще всего.
Поетому все таки в контроллере будет бизнес-логика 1 уровня, а уже в моделях 2-го и далее.
Ок, тогда вынесем в отдельный элемент архитектуры Core components как вариант. (Еще редактирую)
Мы остановились на PHP CodeIgniter, отказались от части его функционала, хорошее оставили и дописали большое кол-во того, что реально нужно.
Там обижают Yii. Говорят он хороший, но в нем тоже довольно много лишнего и некоторые вещи усложняются без весомых на то причин.
Что бы понять связь, нужно написать программу на том и на том.
Связь в том, что и там и там нужно дописывать ту самую «нужную инфраструктуру» что бы простые задачи решались в 5 шагов за 5 минут.
Android и iOS приложения имеют ту же проблематику и там она еще более ощутима. Там тоже необходимо строить нечто подобное для удобства разработки.
Оно уже решает задачу. К примеру мы делали проект Moow.life: http://moow.life/ и вот Android приложение: https://play.google.com/store/apps/details?id=com.moow
Мы смогли сделать быстрее и дешевле, чем многие другие разработчики нам предлагали. Так как мы изначально построили систему так как описано выше.
А некоторые наши клиенты отказались и заказали в другом месте некоторые сайты, после чего вернулись с «говноархитектурой» которую больше никто не хочет править и надо переписывать весь Back-End.
Проблема в другом: Как переубедить тех, кто усложняет код и заставить их вдумываться в детали процесса проектирования программы, а так-же, что теория не панация и необходимо придумывать что-то новое и лучшее для реальных ситуаций.
Объект — это экземпляр класса. И они бывают разные по сущности. Это может быть библиотека, другой контроллер при HMVC или класс для управления сервисом или адаптер какой-то.
По итогу пришли вот к тому, что написано выше. На счет SOA я уже понял, что многие его понимают буквально. Поетому уже изменил текст и детализировал как разновидности объектов подключаемые к контроллеру.
А как ее строить? По каким правилам и шаблонам?
Одного MVC НЕ достаточно. Поетому и цель найти какой-то удобный и оптимальный шаблон.
Но там не совсем так быстро все происходит.
А есть пример кода на нем?
Ок, слишком простая программа для вопроса архитектуры.
Для пример если взять WordPress CMS или Java Spring MVC из коробки, то за 5 действий точно не уложится.
Иногда до 5 часов занимает такая простая 5 минутная задача на некоторых системах, которые НЕ допилены до удобной и расширяемой архитектуры.
Суть вопроса в том, что мало слова MVC, надо детализировать дальше, что бы потом за минимум шагов делать максимум функционала и одно другому не мешало.
Есть у вас какой-то пример кода Веб-сайта для рассмотрения еще?
Сразу видно, что кол-во не бизнес объектов зашкаливает в отличии от php решений например. Но это C# поетому часть кода нужна в принципе для работы веб-сайта в среде сервера.
Поетому можно дописать еще + Server Environment needs
Допустим как в любой CMS нам нужно ее расширить. Например сделать отдельную страницу /list/ в которую вывести из БД например таблицу товаров.
Вопрос: сколько надо сделать действий в NJekyll этом, что бы такую простое дело реализовать?
Например у нас будет так:
1) Создать контроллер list с index методом (Роутинг определяет метод контроллера для запуска)
2) Создать класс модели с методом SQL запроса или наследовать стандартный, там есть уже получение всей таблицы метод
3) Подключить класс в контроллер и положить в переменную массив
4) Создать View с циклом
5) Подключить VIew к контроллеру + прописать заголовок title странице желательно
5 действий — 5-15 минут времени.
А сколько шагов надо сделать на NJekyll ??