2009-05-25 13 views
7

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

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

EDIT: Я специально говорю о приложениях с графическим интерфейсом здесь!

+0

Отъезд: http://stackoverflow.com/questions/759314/whats-an-alternative-to-mvc –

ответ

25

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

+1

Ха Я созерцаю обновление моего вопроса, чтобы указать графические приложения ..! – joshcomley

+0

@ Джош - Согласен. Как бы то ни было, вопрос немного напоминает вопрос: «Каковы некоторые рабочие места, где использование отвертки было бы плохо», - ограничение вопроса на случаи, когда использование отвертки было бы даже значимым, приведет к лучшим ответам. Айден забавна, но не особенно полезна, кроме как указать на очевидные ограничения инструмента. – tvanfosson

4

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

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

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

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

Приложение WebDAV не принесет больших пользы от MVC.

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

+0

Почему у вас нет моделей в CMS? Разумеется, каждая «функция» CMS могла бы иметь контроллер для этого? – joshcomley

+0

Исправлено: вы можете сделать ваши страницы администратора использующими MVC, но пользовательские страницы - это просто страницы текста, там нет отдельных «функций», вместо этого есть несколько меню, заголовок, какой-то текст, шаблон, который подходит им всем , – alamar

+0

@alamar - звучит как модель для меня. – tvanfosson

2

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

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

+0

Зависит от того, созданы ли сторонние компоненты для работы в мире MVC. Они могут быть созданы для работы с конкретными моделями и не требуют отдельных контроллеров с собственным контроллером/действием, обеспечивающим требуемую модель. У меня уже есть несколько экземпляров пользовательских элементов управления, которые в конечном итоге могут быть реорганизованы в общие компоненты. – tvanfosson

+0

См. Typo3 Tree of Plugins или Vanilla's Garden Framework, как они решают эту проблему на PHP. В Ruby/Rails вы используете mixins/modules для наследования «общего» кода контроллера. Если вы хотите, например, повторно использовать аутентификацию пользователя, тогда вы можете либо использовать фильтр в самом контроллере, либо объявить свой код в Application/Base контроллере вашей инфраструктуры. Подводя итог: работа с сторонними компонентами - это только и во всех сценариях, если они не имеют интерфейсов. – Radek

0

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

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

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

+0

Я не после списка приложений, я получаю некоторые общие обоснования для использования MVC – joshcomley

11

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

+0

Хорошая точка. Вопрос возникал из-за того, что я не мог найти способ подгонки, поиск в Google и несколько последующих чтений находит способ использовать MVC - естественным и полезным способом. – joshcomley

+1

+1 Согласен. MVC - это описание проблемного класса, а не решение за пределами этого класса. –

1

Я не обязательно знаю, что MVC действительно является bad Идея для приложения с графическим интерфейсом.Но есть альтернативы, которые, возможно, лучше (и, возможно, хуже, в зависимости от того, о чём вы спрашиваете). Наиболее распространенным является MVP. См. Здесь для объяснения: Everything You Wanted To Know About MVC and MVP But Were Afraid To Ask.

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

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

1

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

+1

Stackoverflow построен с использованием MVC, и Джефф сказал, что производительность имеет решающее значение. SO действительно очень быстро, поэтому я не думаю, что производительность - это проблема. – Alex

+0

Да, по моему опыту, MVC подходит к хорошей практике, и я никогда не видел накладных расходов на производительность от использования самой парадигмы MVC. – joshcomley

-6

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

+0

Итак ... Господин опытный разработчик ... Полагаю, я должен научиться использовать SQL и Javascript для написания сетевого драйвера? – Arafangion

+0

Я согласен с «Опытным разработчиком». Комплексные проекты требуют хорошего управления командой и взаимозаменяемых разработчиков, но не шаблонов проектирования, которые только добавляют сложность и почти ничего не дают взамен. Если StackOverflow написан с использованием MVC, то не MVC является причиной того, что StackOverflow - такой отличный продукт, но команда и организация за ним – PatlaDJ

+0

В любом случае, это было о MVC, я НЕ согласен со следующим утверждением: «Прекратите тратить время на обучение Java и C#, сосредоточьте внимание на том, что действительно важно, Javascript и SQL. " :))) – PatlaDJ