Философия MVC применяется к веб-формам

Я новичок в программировании вообще (действительно начался только 2 1/2 года назад), и я пытаюсь решить, какой лучший способ - приблизиться к веб-приложению, которое я делаю на работе. Старший разработчик на работе поощряет меня зайти в MVC и после хорошего 24 часа заливки блогами, исходного кода и других материалов по этому вопросу, я начинаю понимать, почему я хочу его использовать.

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

То, что я действительно хотел бы знать, - это то, было ли это практичным или даже возможным делать WebForms, но все-таки следует философии MVC по разделению проблем. Я действительно просто добавлю ненужный слой к уже сложной странице .aspx + codebehind?

Каждый в блогосфере, похоже, думает, что они ДОЛЖНЫ использовать какую-то структуру, если они хотят делать MVC. Что в WebForms не позволяет им просто делать это самостоятельно?

Ответ 1

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

Вы также можете посмотреть шаблон MVVM. Это то, что многие сделали с WebForms, и это очень похоже на шаблон MVC. Применив шаблон MVVM к веб-формам, вы продемонстрируете, как можно по-прежнему использовать веб-формы, но при этом получите большую пользу, которую можно найти в шаблоне MVC с ASP.Net MVC. Это был бы хороший способ показать другим разработчикам в команде, что можно сделать, чтобы сделать WebForms более удобными и тестируемыми, не отказываясь от WebForms напрямую.

Вот еще несколько ссылок на MVVM:

http://weblogs.asp.net/craigshoemaker/archive/2009/11/03/vm-workshop-model-view-viewmodel-mvvm-and-the-presentation-model-pattern-in-5-ui-platforms.aspx

http://russelleast.wordpress.com/2008/08/09/overview-of-the-modelview-viewmodel-mvvm-pattern-and-data-binding/

MVVM также очень популярен в приложениях Silverlight....

Существует также шаблон MVP. Здесь реализация с открытым исходным кодом для WebForms. Эта конкретная реализация используется DotNetNuke 5.3.

Еще немного объяснений от MS по MVP и .Net

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

Ответ 2

Да, каждая версия MVC еще более сильно отличается от веб-форм, чем предыдущая.

Если вы действительно не хотите использовать фактический MVC, посмотрите MVP (модель - представление - презентатор).

Ответ 3

ИМХО, я думаю, тебе стоит просто перейти на MVC.

Вот несколько причин, по которым я делаю переход:

  • Мне нравится иметь возможность контролировать мой вывод HTML. [Существуют определенные веб-элементы управления, которые отображают различные теги на основе браузера. Кроме того, приятно иметь контроль над идентификатором клиента.]
  • Мне нравится быть в состоянии управлять состоянием моих заявлений. [В отличие от того, чтобы WebForms пытались управлять им для меня, передавая большие порции данных, чем это строго необходимо.]
  • Я предпочитаю работать в тестовом режиме и обнаружил, что могу получить лучшее тестовое покрытие с помощью MVC.
  • Я обнаружил, что такие библиотеки, как JQuery, невероятно хорошо работают с MVC; Я обнаружил, что создание элементов пользовательского интерфейса, которые были проблемой в веб-формах, стало в MVC тривиальным.

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

Ответ 4

Да, вы все еще можете использовать WebForms и применять философию MVC. По большей части, веб-формы не мешают вам применять принципы MVC; это просто может привести вас на неверный путь. Если вы все еще являетесь магазином веб-форм, попробуйте применить некоторые из следующих вещей, которые соответствуют духу MVC. Это поможет сделать переход от WebForms к MVC в будущем менее резким.

  • Используйте маршрутизацию. В WebForms вы можете отобразить маршруты к страницам .aspx, а не Контроллеры, чтобы получить хорошие URL без расширений. Если вы используете .Net 3.5 вам понадобится пользовательский обработчик маршрута. В 4.0 маршрутизация есть встроенный.

  • Избегайте использования обработчиков событий в вашем коде. Page_Load будет достаточно в большинстве случаев.

  • Старайтесь не использовать ViewState и веб-элементы управления, чтобы поддерживать разметку в чистоте и стройности. Если у вас есть кнопка отправки в разметке, напишите ее как & lt; input type="button", а не так: <asp:Button... Вы можете открывать свойства и использовать циклы foreach, используя <%= %>, как вы видите в MVC, а не с помощью Label и Повторитель управления.

  • Используйте JQuery для настройки обработчиков событий, AJAX и манипулирования DOM на стороне клиента.

  • Примите концепцию ViewModel, связав объект ViewModel со своими страницами .aspx.

  • Если вам нужны WebControls, используйте ClientIDMode = "static" для управления по вашим идентификаторам в разметке (.Net 4.0)