Почему MVC вместо старого доброго ASP.NET? Все еще схватывание, почему я должен пойти этим путем?

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

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

На ноте стороны страница View MVC возвращает кошмары классического asp со всем встроенным кодом, что мы убежали от пути назад когда с кодом позади страниц. Да, MVC имеет Контроллер и Образцовые классы, которые являются большими, но мне все еще не нравятся классические теги asp в HTML.

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

16
задан Uğur Aldanmaz 22 September 2014 в 10:48
поделиться

6 ответов

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

Именно в этом и заключается самая большая проблема "классического" ASP.NET aka WebForms.

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

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

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

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

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

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

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

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

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

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

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

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

29
ответ дан 30 November 2019 в 16:13
поделиться

Следующая статья познакомила меня с MVC

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

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

To 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 web { {1}} формы. Вы получаете полный контроль над жизненным циклом запроса страницы и возможностью заменять несколько ключевых частей фреймворка (например, механизм просмотра , маршрутизацию и т. Д. ), ни одно из которых невозможно с веб-формами ASP.NET.

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

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

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

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

1
ответ дан 30 November 2019 в 16:13
поделиться

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

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

.
0
ответ дан 30 November 2019 в 16:13
поделиться

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

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

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

Райан

0
ответ дан 30 November 2019 в 16:13
поделиться

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

Плюс для СЛОЖНЫХ форм модель состояния ASP.NET - тоже ад;)

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

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

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

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

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

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

0
ответ дан 30 November 2019 в 16:13
поделиться

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

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

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

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

Ваш пример:

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

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

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

Еще одна вещь, которая мне нравится в MVC, это то, что с его помощью очень легко создавать CRUD-операции. (Например, NerdDinner.)
. VS генерирует 80% кода, необходимого для ваших представлений, которые затем вы можете очень легко настроить.

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

10
ответ дан 30 November 2019 в 16:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: