Где MVC-плохая вещь?

Я прочитал пару вопросов здесь и различные статьи о MVC и вижу, как его можно даже применить к интенсивным приложениям GUI, таким как приложение paint.

может ли кто-нибудь привести ситуацию, когда MVC может быть плохим, и его использование нецелесообразно?

EDIT: я конкретно говорю о приложениях GUI здесь!

8 ответов


Я попробовал MVC в драйвере сетевого ядра. Патч был отвергнут.


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


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

для создания CMS, например, MVC бесполезен. У вас нет никаких моделей, никаких контроллеров, только страницы текста с украшениями и меню. Проблема не более длительная обработка данных-теперь проблема заключается в правильном обслуживании этого текстового содержимого.

Tho, CMS Admin будет строить поверх MVC просто отлично, это просто пользовательская часть, которая не будет.

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

приложение WebDAV также не выиграет от MVC.

предостережение по Ruby для веб-программирования это рельсы лучше подходят для строительства Веб-приложение. Я видел, как многие проекты пытаются создать сервер WebDAV или систему управления контентом CMS с Rails и терпят неудачу. Хотя вы можете сделать CMS в Rails, есть гораздо более эффективные технологии для этой задачи, такие как Drupal и Django. На самом деле, я бы сказал, что если вы смотрите на усилия по разработке портала Java, вы должны оценить Drupal и Django для этой задачи.


все, что вы хотите бросить в сторонних компонентах, сделает его трудным для работы в шаблоне MVC. Хорошим примером этого является CMS.

каждый компонент, который вы получаете, будет иметь свои" собственные " объекты контроллера, и вы не сможете делиться "контролем" модели -> UI passing.


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

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

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


MVC не следует использовать в приложениях, где производительность критична. Я не знаю, применяется ли это по-прежнему с увеличением вычислительной мощности, но одним из примеров является приложение call-центра. Если сможешь спасти .5 секунд за вызов ввода и обновления информации эти сбережения складываются с течением времени. Чтобы получить последний бит производительность вашего приложения, вы должны использовать настольное приложение вместо веб-приложения и говорить непосредственно на базе.


когда это плохо? Где бы то ни было, есть другая структура кода, которая лучше подходит вашему проекту.

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

Если MVC подходит, используйте его, если нет, используйте что-то еще..


MVC и ORM-это шутка....они подходят только тогда, когда ваше приложение не является приложением базы данных или когда вы хотите сохранить агностику базы данных приложения. Если вы используете СУБД, которая поддерживает хранимые процедуры,то это единственный способ. Хранимые процедуры являются предпочтительным подходом для опытных разработчиков приложений. MVC и ORM продвигаются только компаниями, пытающимися продать продукты или услуги, связанные с этими технологиями (например, Microsoft пытается продать VS). Хватит тратить время на обучение. Java и C#, вместо этого сосредоточьтесь на том, что действительно важно, Javascript и SQL.