Почему Microsoft выбрала MVC для ASP.NET?

Asked
Viewd2226

3

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

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

  • Мне было интересно, почему созданный MVC, а затем оформленный так, как будто он был самым новым в мире. Когда я перешел от простого кода программной части к j2ee, я обнаружил, что многие люди занимаются MVC уже более десяти лет. Я чувствую себя обманутым, если слишком долго придерживаюсь одного поставщика.

    johnny12 мая 2009, 21:25
  • Контроллер не возвращает представление. Контроллер возвращает данные представления, а механизм представления «обычно» отвечает за рендеринг представления, поэтому имя является точным. Я считаю, что http://www.castleproject.org/ был большим источником вдохновения для MS, создавшего ASP.NET MVC.

    Todd Smith12 мая 2009, 21:38

9 ответов

14

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

  • Что ж, это определенно позволяет им конкурировать в этой сфере, хотя я думаю, что это произошло потому, что веб-формы нарушены дизайном: P

    annakata15 июня 2009, 11:50
-3

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

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

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

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

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

  • Вы действительно думаете, что RoR вызвал у MS «панику»? Вам нужно больше выходить.

    NotMe12 мая 2009, 21:36
  • Не согласен с маркетинговым заявлением о панике. Это был проект Фила Хаака и Скотта Гатри, управляемый инсайдерами. Маркетинговая команда никоим образом не узнала об этом. Это было сделано специально для разработчиков.

    p.campbell12 мая 2009, 21:22
  • К трем комментариям выше не могли бы вы объяснить, как ASP.NET является MVC? Я сравниваю с исходной реализацией SmallTalk-80, поскольку все остальное - всего лишь мутации.

    4thSpace12 мая 2009, 23:11
  • Я сомневаюсь, что Microsoft когда-либо выпустит что-то столь масштабное, как ASP.NET MVC, в панике в ответ на что-то вроде RoR. MVC - это то, о чем люди просили, и это успешная методология веб-разработки. Это просто Microsoft, отвечающая на запросы клиентов с помощью успешной платформы разработки.

    jrista26 мая 2009, 02:52
  • Я также не согласен с приведенным выше утверждением. Я реализовал веб-формы в среде, где одни только такие концепции, как состояние представления, вызывают бесконечные проблемы. Я не понимаю, где легче поддерживать веб-формы. MVC ни в коем случае не является серебряной пулей, но определенно является хорошей альтернативой в некоторых ситуациях.

    BinaryMisfit12 мая 2009, 21:25
  • @ 4thSpace: Классическая реализация SmallTalk-80 была для текстовых экранов еще до Интернета. Несмотря на то, что мы представляем представления в виде расширенной разметки и javascript, концепция остается той же. Будь то текст на экране или красивые веб-страницы, это все равно представление. Отвечаете ли вы на низкоуровневые команды клавиатуры или на высокоуровневые действия, они по-прежнему обрабатываются централизованным контроллером. Модель есть модель… MVC или нет. ;) Просто потому, что вещи между представлением и контроллером изменились (действия через URL-адрес или нажатие клавиш клавиатуры), фактические концепции остались прежними.

    jrista26 мая 2009, 02:56
8

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

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

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

0

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

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

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

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

Удачи!

  • Спасибо, но его вывод очень ошибочен: «Эта структура (например, ASP.NET MVC) использует шаблон MVC, а не шаблон MVP, потому что он не пытается имитировать разработку полнофункционального клиента, и поэтому шаблон MVC является более подходящим. . » Современные веб-приложения, как и современные клиентские приложения, используют MVP. Это происходит в веб-приложениях, потому что веб-браузер обрабатывает вводимые пользователем данные. Вам будет сложно найти приложение, использующее MVC, то есть контроллер напрямую обрабатывает ввод пользователя.

    4thSpace26 мая 2009, 05:08
4

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

1

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

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

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

2

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

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

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

  • У модели обратной передачи есть свои недостатки, такие как раздувание HTML и все это состояние просмотра, которое создается по умолчанию. Самым большим преимуществом шаблона проектирования MVC является отсутствие файла с выделенным кодом, что облегчает автоматическое модульное тестирование с использованием таких инструментов, как MBUNit. Статья, которую я написал, была примером сохранения модели обратной передачи, а также реализации проекта, который также допускает полное автоматическое модульное тестирование.

    user10098521 мая 2009, 20:44
  • Я думаю, что одной из причин, по которой они внедрили MVC, был отказ от модели обратной передачи.

    rojoca14 мая 2009, 01:01
13

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

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

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