Практическое применение MVC || Когда использовать или не использовать MVC - PullRequest
30 голосов
/ 15 ноября 2008

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

Из всего, что я слышал и читал о MVC, похоже, что это будущее разработки ASP.NET. Но так как я обычно не балуюсь веб-разработкой .NET, меня интересует следующее: когда уместно использовать MVC, а когда нет, и почему? Примеры отличного (и ужасного) использования MVC были бы захватывающими.
Хотя я понимаю, что существуют другие реализации MVC для других языков, например RoR, меня больше интересует его влияние на программистов .NET.

Если это уже прошло, мои извинения!

Ответы [ 5 ]

18 голосов
/ 15 ноября 2008

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

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

Есть две вещи, в которых много путаницы. Независимо от общепринятой "мудрости":

Рамки! = MVC

База данных! = "Модель"

Фреймворки веб-разработки "полного стека" обычно добавляют множество функций и могут или не могут быть ориентированы на MVC по своей сути. Одна из функций, которую добавляют многие фреймворки, - это доступ к базе данных или функциональность реляционного сопоставления объектов, а также из-за того, что фреймворки и MVC запутываются, данные базы данных и аспект модели MVC также путаются. Модель обычно можно рассматривать как базовые данные для приложения, но она НЕ ДОЛЖНА поступать из базы данных. Хорошим примером может служить вики, в которой базовая модель / данные состоят из данных редакции файла, например, из RCS.

Надеюсь, это поможет, и я уверен, что у других будет много чего добавить.

16 голосов
/ 21 апреля 2009

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

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

Мне было очень трудно подбирать WebForms из-за вышеупомянутой абстракции - (я думаю, что доказательством сложности WebForms является то, что я никогда не встречал никого, кого бы я считал WebForms "гуру", т. Е. Знает жизненный цикл страницы наизусть / привязку данных и т. д.).

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

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

10 голосов
/ 15 ноября 2008

ASP.NET MVC - это не будущее разработки ASP.NET, это просто новый способ разработки веб-сайтов с помощью ASP.NET. Microsoft дала понять, что в будущем они продолжат поддерживать и улучшать как WebForms, так и MVC.

Я не могу думать ни о каких веб-сайтах, если бы не было целесообразно использовать MVC. То же самое можно сказать и о WebForms.

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

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

3 голосов
/ 21 апреля 2009

Основываясь на своем собственном опыте, я могу вам сказать, что, если у вас нет опыта работы с Winforms или Webforms, вы можете чувствовать себя более комфортно под зонтиком MVC, потому что вы ничего не «ожидаете» от мира ASP.NET Webforms .

С другой стороны, в качестве рекомендации, я рекомендую вам ознакомиться с другими структурами MVC, такими как Django или RoR, которые являются более зрелыми, чтобы «быть водой» в мышлении MVC. Я доволен ASP.NET MVC, но поиск других решений поможет вам лучше понять парадигму фреймворка.

3 голосов
/ 21 апреля 2009

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

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

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

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