Где MVC плохая вещь? - PullRequest
7 голосов
/ 25 мая 2009

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

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

РЕДАКТИРОВАТЬ: я специально говорю о приложениях GUI здесь!

Ответы [ 8 ]

25 голосов
/ 25 мая 2009

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

11 голосов
/ 25 мая 2009

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

4 голосов
/ 25 мая 2009

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

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

То, CMS Администратор будет отлично работать на основе MVC, просто пользовательская часть этого не сделает.

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

Приложение WebDAV также не получит значительных преимуществ от MVC.

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

2 голосов
/ 25 мая 2009

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

Каждый компонент, который вы получаете, будет иметь свои «собственные» объекты контроллера, и вы не сможете разделить «контроль» прохождения модели -> пользовательского интерфейса.

1 голос
/ 25 мая 2009

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

1 голос
/ 25 мая 2009

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

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

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

0 голосов
/ 25 августа 2010

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

0 голосов
/ 25 мая 2009

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

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

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

...