Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

MVC, реализованный ASP.NET MVC - это не старый шаблон MVC.В том, что я назову "классическим" MVC, представление имеет прямой доступ к модели, но только для чтения, в ASP.NET В MVC считается дурным тоном обращаться к вашей бизнес-модели непосредственно из представления.В итоге вы получаете что-то очень похожее на Контролирующий контроллер + Пассивный Вид:

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 не использует современные шаблоны веб-дизайна, я должен не согласиться.

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

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

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

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

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

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

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

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

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

Удачи вам!

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top