Почему Microsoft выбрала MVC для ASP.NET? - PullRequest
3 голосов
/ 13 мая 2009

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

В частности, является ли действие контроллера в ASP.NET MVC, возвращающее представление, создающее это представление? В MVC контроллер не создает представления и не обращается к ним. Насколько точно называть ASP.NET MVC реализацией MVC? Или каково будет точное название для этого?

Ответы [ 9 ]

14 голосов
/ 13 мая 2009

Я думаю, что именно Ruby on Rails вдохновил MS на создание asp.net MVC.

13 голосов
/ 14 мая 2009

ASP.NET MVC - это просто признание Microsoft успеха реализации MVC в таких веб-фреймворках, как Ruby on Rails и Django. Осознание того, что многим веб-разработчикам нужен более практичный подход к веб-разработке, который охватывает «самоуверенную» модель программирования (соглашение о конфигурации) и отклоняется от абстракции с состоянием, которую обеспечивает ASP.NET WebForms.

Это точная реализация шаблона Smalltalk MVC? Это результат паники? Нет. Это результат успеха как Ruby on Rails, так и Django? Да.

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

8 голосов
/ 13 мая 2009

Достаточно близко, и это стратегия продаж.

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

Microsoft чаще выигрывает благодаря позиционированию продукта, чем благодаря точной идентификации технологии. (Плюс длительная доставка, ИМХО.)

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

ScottGu ускользает от ответа в первой части своего поста о первой демонстрации MVC здесь . Короткий ответ: люди просили об этом, и Microsoft решила пойти на это. Он подходит к текущей модели .Net для добавления как можно большего количества опций, позволяя платформе выйти на больший целевой рынок, а также предоставляет разработчикам нужные инструменты для правильного проекта.

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

MVC в реализации ASP.NET MVC не является старой моделью MVC. В том, что я называю «классическим» MVC, представление имеет прямой, но только для чтения, доступ к модели, в ASP.NET MVC считается плохой формой доступа к вашей бизнес-модели непосредственно из представления. То, что вы в конечном итоге, очень похоже на Supervising Controller + Passive Вид:

public class MvcExampleController : Controller
{
    public ActionResult ActionMethod(BoundInputData inputData)
    {
        var results   = DoActualWorkInTheModelWith(inputData);
        var viewModel = CreateViewModelFromThe(results);

        return View(viewModel);
    }
}

Для меня это больше похоже на Контролирующий контроллер, чем на классический MVC. Как только работа завершается в модели, представление передается ViewModel (иначе PresentationModel). ViewModel обычно имеет отношение 1 к 1 с элементами пользовательского интерфейса в представлении и может или не может выглядеть как объекты в реальной модели. Вид, который действует на ViewModel, а не на настоящую модель, пахнет для меня как пассивный вид.

Я не буду вдаваться в то, является ли это «реальной» реализацией MVC или нет, но если вы утверждаете, что ASP.NET MVC не использует современные шаблоны веб-дизайна, я должен не согласиться.

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

Вы можете свернуть свой собственный MVC с текущей платформой ASP.NET и при этом сохранить модель обратной передачи.

http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx

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

Лучшее предположение, все слышали о MVC. MVC уже давно считается «лучшей практикой», поэтому целое поколение (или два, или три) разработчиков видят MVC и думают о счастливых мыслях.

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

Короче, я очень сомневаюсь, что для этого есть веская техническая причина.

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

Это отличный вопрос, многие люди задавали этот вопрос в первые годы существования MVC. Вот ответ Фила Хаака, одного из ведущих разработчиков проекта!

http://haacked.com/archive/0001/01/01/everything-you-wanted-to-know-about-mvc-and-mvp-but.aspx

Проверьте это, прочитайте ссылки и перейдите оттуда.

Кроме того, ответом на дискуссию может быть S # arp Architecture. Они создали слой поверх MVC, чтобы сделать его более похожим на MVP. Проверьте их, если вы ищете что-то подобное.

Удачи!

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

Я думаю, что это было скорее «маркетинговое решение для паники», чем техническое решение. RoR воровал рынки каждую секунду, а MSFT полностью запаниковал, поэтому MSFT почувствовали, что должны доставить что-то, что дало бы им возможность снова вернуть часть ажиотажа в «свой лагерь» ...

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

Для разработчика среднего уровня (.Net) действительно трудно не чувствовать себя динозавром, когда разработчик среднего уровня RoR запускает рейк и создает всплеск менее чем за 15 минут, имея рабочее и действующее доказательство концепции перед. Чистый разработчик даже закончил запуск vstudio.exe ...;)

Полагаю, это спорная точка зрения, но она моя, и я буду защищать ее до самого конца ...;)

Сегодня существует бесчисленное множество примеров того, что да, MVC и строительные леса дадут вам начальное повышение скорости, да. Но для удобства обслуживания, повторного использования кода, инкапсуляции и, в основном, для каждой действительно важной вещи - MVC просто не является «серебряной пулей», и в большинстве случаев веб-формы намного лучше в долгосрочной перспективе (если не используются как туалетная бумага) конечно)

...