Философия 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)