Почему MVC вместо старого старого ASP.NET? Все еще не понимая, зачем мне идти по этому маршруту?

Я знаю, что этот вопрос был задан раньше, и я прочитал все ответы, но они все еще не дают мне ответов, которые я ищу. Мне нужно что-то конкретное. Я вызвался представить презентацию MVC другим разработчикам в нашей группе, которые заставляют меня изучать ее. Большой вопрос, который у всех есть, это: "Что может сделать MVC для таблицы, которую мы не можем сделать в asp.net или MVC, может сделать быстрее. Я только что прошел через Nerd Dinner и фактически создал полный веб-сайт, который вроде имитирует Nerd Dinner. Но так же хорошо, как это сделал Скотт Гатри, есть большие пробелы, на которые не отвечают, например, как я могу нарисовать текстовое поле на странице с помощью кнопки и сделать простой поиск. В asp.net я будет бросать текстовое поле, кнопку и сетку на странице и связывать ее с sproc и прочь. Я думаю, что мне нужен действительно хороший учебник о том, как использовать MVC без использования Linq-to-Sql.

Я знаю, что я как-то болтаю об этом, но это очень серьезный вопрос, который все еще кажется без ответа.

С другой стороны, страница просмотра MVC возвращает кошмары классического asp со всем встроенным кодом, который мы убирали с пути назад, когда с кодом за страницами. Да, MVC имеет классы Controller и Model, которые великолепны, но мне все еще не нравятся классические asp-теги в html.

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

Ответ 1

как я могу нарисовать текстовое поле на странице с помощью кнопки и выполнить простой поиск. В asp.net я бы бросил текстовое поле, кнопку и сетку на странице и привязал ее к sproc и прочь, я иду

Это самая большая проблема, стоящая за "классическим" ASP.NET, а также WebForms.

Вы не должны думать о страницах, кнопках и событиях.

Вы должны изучить основы работы веб-сайта. Тогда вы поймете, что Интернет говорит в терминах протокола HTTP, его команд GET, POST и других. Презентация представляет собой HTML, CSS и Document Object Model, в которых JavaScript запускается. И на самом деле нет страниц, url - это просто указатель на ресурс, который не обязательно отображается на физическом файле (.html или .aspx) на сервере.

Страница просмотра MVC возвращает кошмары классического asp со всем встроенным кодом, который мы убрали с пути назад, когда с кодом за страницами.

Я также пришел в MVC после пребывания в WebForms, и я обнаружил, что мне очень нравится встроенный код. Это делает структуру представления очень ясной, что нельзя сказать о связи статической разметки (aspx) + манипуляции с серверными элементами управления в коде. Последний на самом деле кошмар - ваш код генерирует вывод разметки, но вы не видите, где и как.

Что может привести MVC к таблице, которую мы не можем сделать в asp.net или MVC, может делать быстрее

Он удаляет уродливую абстракцию состояния, которую нам предоставили WebForms. Теперь ты вернулся туда, где он начал. Теперь у вас есть:

  • Возможность отделить вашу презентационную часть (представления) от логики приложения. Перед тем, как все было смешано, код за столом разговаривал с базой данных, вызывая другие службы, изменяя разметку. Это было беспорядок. Это привело к множеству серьезных приложений, написанных, но с трудом поддерживаемых.

  • Возможность автоматического тестирования вашей логики приложения. С помощью WebForms и кода, как бы вы ссылались на определенный сценарий? Вы должны использовать такие инструменты, как Selenium, чтобы имитировать действия пользователей. Теперь, когда ваши представления - это всего лишь пассивный слой презентации, у вас больше нет этой проблемы. Вы очень легко проверяете свою бизнес-логику и модельный вывод. Представления отображаются, чтобы отобразить результаты. Если модель получила правильные данные в определенном сценарии, представление отобразит ее правильно. Если нет, то нет. Период. Нет необходимости проверять представления.

  • Контроль над разметкой. То есть, если вам все равно. Если вы бывший разработчик Windows, который не наплевает на то, что документы HTML действительны, будучи семантически корректными и оптимизированными для веб-движков, тогда он вам бесполезен. Я имею в виду, что "страницы" отображаются некорректно, клики пользователей обрабатываются, как в настольном приложении, что еще, правильно? Но если бы вас интересовали все эти вещи, вы бы посмотрели на окончательный вывод разметки и увидите, что он уродливый, с большим количеством ошибок, ограничений, которые вы просто не можете исправить. Потому что это как элементы управления, кнопки, сетки данных и т.д. Отображают себя. Попытка исправить их потребует переопределения разметки для этих элементов управления, что является тяжелой задачей. Почему бы просто не бросить его и сделать все вручную?

Что MVC берет из таблицы?

Обработка на стороне сервера "событий управления", например, при программировании Windows. Если вы разрабатываете настольное приложение для веб-среды, например, такое типичное "деловое" программное обеспечение с десятками и сотнями элементов управления, чтобы свести вас с ума, тогда MVC сведёт вас с ума, потому что вам придется подключать каждый отдельный элемент управления индивидуально с помощью JavaScript.

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

Ответ 2

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

В то время как WebForms пообещала, что это сделает веб-разработку очень близкой к разработке Windows со сложной моделью событий, элементами управления и всем этим. Зачем? Поскольку в то время база разработчиков Microsoft была в основном разработчиками VB и С++, которые думали о формах, элементах управления, и это обеспечило легкий способ для них начать разработку для Интернета.

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

Пример: StackOverflow был создан с использованием ASP.NET MVC.

Ваш пример:

как я могу наложить текстовое поле на странице с помощью кнопки и выполните простой поиск. В asp.net я бы бросить текстовое поле, кнопку и сетку страницу и привязать ее к sproc и Я иду.

Вы создаете Action для него в текущем Controller, бросаете форму на странице с Html.BeginForm, которая указывает на это действие (помните, с MVC, вы можете иметь несколько форм на страницах), бросать текстовое поле и кнопку отправки.

Затем, по вашему вкусу, вы можете либо создать отдельное представление для результатов поиска, либо повторно использовать существующее представление. Новое действие можно назвать тем же, что и старый, с [HttpPost] на нем (или [HttpGet], если вы этого предпочтете), поэтому URL-адрес больше не будет путать пользователей. Затем вы можете вызвать свой SPROC в своем действии, и вам хорошо идти.
(Все это достигается за считанные минуты.)

Другим, что мне нравится в MVC, является то, что в основном ОЧЕНЬ ЛЕГКО создавать CRUD-операции с ним. (Как NerdDinner.)
VS генерирует 80% кода, необходимого для ваших просмотров, что вы можете легко настроить.

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

Ответ 3

Громоздкий позади код - одна из самых больших проблем с Webform. Подход RAD хорош для создания проекта быстрее, но растущий объемный код не поддерживается, многоразовым и проверяемым. Существует 5 проблем, которые MVC разрешает WebForm.

Проблема 1: - Webform была основанным на представлении решением для действия на основе действий

Проблема 2: - Плотная связь между кодом и представлением

Проблема 3: - HTML не единственный тип ответа в Webform, он не был гибким.

Проблема 4: - Гибкая комбинация представления и данных невозможна с веб-формами

Проблема 5: - За кодом был тяжелый громоздкий класс, который не может быть создан.

Все приведенные выше моменты были объяснены в этой статье кодекса http://www.codeproject.com/Articles/821275/Why-ASP-NET-MVC-ASP-NET-MVC-vs-ASP-NET-webforms

enter image description here

Ответ 4

В следующей статье я начал с MVC

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

Имея это в виду, я разработал быстрая метрика, чтобы определить, является ли ASP.NET MVC подходит именно вам. То, как я вижу это связано с тремя основными причинами: разработчик должен выбрать ASP.NET MVC для веб-форм ASP.NET. Если ни одна из этих причин не является Принуждение к вам, тогда вы должны придерживаться веб-форм ASP.NET:

Unit Test Это, на мой взгляд, наиболее убедительная причина для использования ASP.NET MVC. Когда дело доходит до единицы тестирование ASP.NET MVC просто ударяет Веб-формы ASP.NET выходят из воды. Он даже не закрывается. В то время как ASP.NET веб-формы требуют, чтобы вы всевозможные обручи для тестирования вокруг жизненный цикл событий страницы, ASP.NET MVC рамки практически испытания. Есть интерфейсы всюду кричит "издеваться надо мной!".

Есть причина, по которой самая большая Сторонники ASP.NET MVC также имеют тенденцию быть Сторонники TDD; это потому, что ASP.NET MVC фактически разрешает TDD. Лично я думаю, что здесь все ревность исходит. Проще говоря: это действительно, очень сложно сделать TDD с Веб-формы ASP.NET и действительно, действительно легко сделать это в ASP.NET MVC.

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

В дополнение к этому вы также получаете полный контроль над отображаемым HTML. В общем, отображаемый HTML из Приложения веб-форм ASP.NET отвратительная. Веб контролирует его использует генераторы мусора и скрытые поля в изобилии, что не только препятствовать работе сайта, но также создайте стили CSS и Javascript развитие боли. ASP.NET MVC заставляет вас быть более ваш HTML. Нет повторителей или datagrids, которые магически генерируют разметка для вас. Нет скрытые поля для сохранения состояния вы. Это только вы, HTML и несколько методов расширения (которые вы не используете даже придется использовать).

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

Я должен также указать, что обучение ASP.NET MVC невероятно привлекателен процесс с ASP.NET MVC рамочная команда была настолько интерактивной в процессе. Я думаю, что большая часть привлекательности ASP.NET MVC заключается в том, что вклад сообщества не только принимая во внимание, активно ищут. рамки вызвали так много дискуссии и дискуссии по практики, которые просто следуют представляет вам концепции, которые вы могли бы ранее не знали. я на самом деле Структура ASP.NET MVC по этой причине в одиночестве. Потоки на TDD, BDD, ORM, AJAX и т.д. Вы процесс обучения стоит того.

Итак, у вас это есть. Помимо эти три, я не могу придумать никаких другие причины, по которым разработчик Изучите ASP.NET MVC. Может быть, поэтому уровень принятия не так высок как мы думаем, это должно быть. стимул для использования структуры по существу сводится к единице тестирования, контроля/расширяемости и скука/любопытство. Хорошие причины, чтобы быть уверенным, но вряд ли игровые выключатели для подавляющее большинство разработчиков есть.

Ответ 5

Контроль над выходом HTML - это одно. Все эти причудливые контролируют СЕРЬЕЗНО УСПЕХ с точки зрения SEO.

Плюс для форм COMPLEX, модель состояния ASP.NET также является адом;)

Во всяком случае, примером является ваше окно поиска... это отстой;)

Я бы использовал MVC следующим образом:

Поиск - это URL-адрес: /Поиск по ключевому слову или /search/keyword/pagenr (например, поиск/программирование/5

Хорошая вещь: я могу легко получить результаты поиска, зашифрованные google - некоторые сайты, которые я знаю, получают большинство хитов от чего-то подобного.

Сложнее ли программировать, чем asp.net - зависит от того, нужен ли вам эффективный HTML или нет. Модель управления из ASP.NET не приводит к определенному HTML-методу.

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

Ответ 6

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

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

Я очень рекомендую увидеть статью Википедии о MVC. Это может быть проще понять, используя пример графического интерфейса пользователя (GUI), а не простой веб-пример.

Райан

Ответ 7

MVC рассматривается как альтернатива добрым старым asp.net, а не следующим шагом. IMHO MVC имеет явное преимущество, если вы хотите написать модульные тесты для своих страниц.

Но я не согласен с тем, что MVC добавляет что-либо к классическому asp.net во имя производительности, качества кода или производительности. Вы можете достичь такой же производительности с помощью asp.net, отключив viewstate, когда это не необходимо, или вы можете больше контролировать вывод HTML, используя легкие серверные элементы управления. (Например, вместо ретранслятора DataGrid).