Делать MVC или не делать это? - PullRequest
4 голосов
/ 24 декабря 2009

Я новичок в структуре MVC и чувствую, что это сложнее, потому что это новый способ работы. Есть ли кто-нибудь, кто имеет опыт работы с MVC и страницами? Является ли сейчас MVC способом сделать это священным Граалем или все еще стоит делать обычные объектно-ориентированные разработки (или даже процедурные страницы webdev)? MVC причуда?

Ответы [ 7 ]

6 голосов
/ 24 декабря 2009

Краткий список плюсов и минусов для MVC

Плюсы

  • Testablily
  • Разделение проблем - способствует разделению между основными компонентами
  • Помогает вам сосредоточиться на одной задаче / области за раз
  • Естественно подходит для взаимодействия с Интернетом и компьютером
  • Хорошо сочетается с другими шаблонами проектирования, единая ответственность Принцип и т. Д.

Против

  • Может потребоваться больше кода и усилий
  • Может уменьшить четкость для простых страниц (в этих случаях попробуйте продолжить использование простых страниц)
  • займет больше обучения

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

Это тоже не новая идея. Он существует в той или иной форме с 1979 года ( @ ссылка Сарфраза Ахмеда ) и используется в различных веб-и настольных платформах.

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

Удачи

2 голосов
/ 24 декабря 2009

Для MVC или нет в основном в соответствии с потребностями вашего проекта. Иногда у меня есть простые вещи, которые не нуждаются в модели, но все же могут получить выгоду от расположения контроллера / представления. В этих случаях я мог бы пойти с микро-фреймворком (для PHP это был бы лимонад) или даже меньше. Тем не менее, большинство моих веб-проектов - приложения MVC.

Я начал создавать веб-сайты в 1996-1997 годах, все было как-то новым, и не было никакого смысла в том, что может быть хорошей или плохой идеей в долгосрочной перспективе. Примерно в 2005 году, когда я ушел из армии и вернулся в веб-разработку, было не так приятно бороться с крысиным гнездом органически разработанного кода. Поэтому, когда я познакомился с Ruby on Rails и концепцией MVC, я сразу понял, что это был переломный момент в игре.

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

С учетом всего вышесказанного, если вы хорошо освоите MVC на одном языке, это может дать вам умственную основу для изучения других языков. Что касается того, как долго MVC будет доминировать в качестве шаблона проектирования фреймворка, индустрия программного обеспечения похожа на пустыню, повседневные вещи меняются, а лучшие идеи затмеваются лучшими (XHR для веб-сокетов, встроенные объекты для собственных аудио / видео тегов), но я думаю, что бы ни свергло в итоге MVC, это будет чем-то похожим, потому что на самом деле не имеет значения, насколько прекрасна идея, если ее понимает лишь очень малая часть людей.

2 голосов
/ 24 декабря 2009

Если мы говорим о ASP.NET MVC, сама страница фреймворка обсуждает этот вопрос:

ASP.NET MVC Framework предлагает следующие преимущества:

  • Упростить управление сложностью можно, разделив приложение на модель, представление и контроллер.
  • Он не использует состояние просмотра или формы на основе сервера. Это делает инфраструктуру MVC идеальной для разработчиков, которым нужен полный контроль над поведением приложения.
  • Он использует шаблон Front Controller, который обрабатывает запросы веб-приложений через один контроллер. Это позволяет проектировать приложение, которое поддерживает богатую инфраструктуру маршрутизации. Для получения дополнительной информации см. Front Controller на веб-сайте MSDN.
  • Обеспечивает улучшенную поддержку разработки через тестирование (TDD).
  • Он хорошо работает для веб-приложений, которые поддерживаются большими командами разработчиков и веб-дизайнеров, которым требуется высокая степень контроля над поведением приложений.

Основанная на веб-формах структура предлагает следующие преимущества:

  • Он поддерживает модель событий, которая сохраняет состояние по HTTP, что выгодно для разработки бизнес-приложений для бизнеса. Приложение на основе веб-форм предоставляет десятки событий, которые поддерживаются сотнями серверных элементов управления.
  • Используется шаблон Page Controller, который добавляет функциональность отдельным страницам. Дополнительные сведения см. В разделе «Контроллер страниц» на веб-сайте MSDN.
  • Используются формы представления состояния или формы на основе сервера, которые могут упростить управление информацией о состоянии.
  • Хорошо работает для небольших команд веб-разработчиков и дизайнеров, которые хотят воспользоваться преимуществами большого количества компонентов, доступных для быстрой разработки приложений.
  • Как правило, он менее сложен для разработки приложений, поскольку компоненты (класс Page, элементы управления и т. Д.) Тесно интегрированы и обычно требуют меньше кода, чем модель MVC.
1 голос
/ 24 декабря 2009

Я думаю, что этот исчерпывающий список дает ответы на все ваши вопросы о MVC.

Так как вы не упомянули язык и если вы имеете в виду mvc в php, то это также отличный ресурс для новичков в mvc:

http://phpro.org/tutorials/Model-View-Controller-MVC.html

0 голосов
/ 30 декабря 2009

После некоторой борьбы с MVC я должен сказать, что теперь я очень предпочитаю архитектуру MVP (Model-view-Presenter). Разделение задач, разделение и асинхронизация намного проще достичь с помощью MVP, чем MVC, IMHO, потому что каждая реализация MVC не разделяет концепции одинаково, каждый контроллер не обрабатывает одни и те же вещи.

0 голосов
/ 26 декабря 2009

Большим преимуществом MVC (в целом) является то, что у вас гораздо меньше шансов на создание монолитных приложений. У вас есть единый путь запрос-действие-ответ, в отличие от чего-то вроде веб-форм ASP.NET или JSF (хотя JSF не так плох, как веб-формы). Для небольшого сайта в веб-формах очень легко превратиться в большой неуправляемый запутанный беспорядок в веб-формах, тогда вы должны начать вырабатывать пользовательские элементы управления, и ваша команда потеряна. Если вы понимаете, как работает сеть, MVC легко ... хотя тогда вы можете управлять состоянием.

0 голосов
/ 24 декабря 2009

Это с точки зрения ASP.NET WinForms -> ASP.NET MVC, однако ASP.NET MVC впервые услышал о паттерне MVC (программист noob), и мне кажется, что я обнаружил MVC на другом языке раньше ASP.NET MVC, я бы оставил ASP.NET/C# и перешел на эту платформу.

Изучение и использование MVC сделало меня лучшим программистом. Я всегда чувствовал, что ASP.NET ставит прозрачный барьер между мной и кодом (HTML или C #).

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

Для меня MVC был правильным выбором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...