Советы от ASP.NET MVC и уроки для разработчиков ASP.NET WebForms
Каковы некоторые полезные вещи, которые разработчики ASP.NET MVC могли бы предложить, чтобы помочь разработчикам ASP.NET WebForms лучше писать коды/веб-приложения?
Я парень WebForms, но со всей новой шумихой вокруг MVC я бы оценил некоторые комментарии о полезных советах, трюках и стратегиях, которые могут быть использованы в приложении webforms.
Ответы
Ответ 1
Что-то, что мне пришло в голову, когда я узнал о новой структуре MVC, заключается в том, что WebForms была, я думаю, попыткой MVC во многих отношениях. Разметка и код-код включают View и Controller, и вам остается писать собственную модель.
Эта идея сочетается с важными соображениями, которые я получил от изучения MVC. Наиболее важным из которых является закрепление основного домена вашей системы в целом и обеспечение того, чтобы вся общая логика была определена на уровне, который можно повторно использовать в этой области. Это ваша модель, и мне нравится называть логику, которая живет на этом уровне Domain Logic (я использую термины, я знаю). Ваша модель должна быть повторно использована в разных приложениях (основное приложение web/winforms, приложения winforms для утилиты и конфигурации, службы фоновой обработки, веб-сервисы и т.д.). Ваши приложения должны оставаться очень специфичными для их целей: они состоят из Presentation Logic (их взглядов) и Application Logic (их контроллеров). Все, что пересекает линию, требующую использования в других приложениях, легко классифицируется как Domain Logic и не должно быть частью кода приложения для любого конкретного приложения.
Надеюсь, это имеет смысл.
Суть его в том, что даже если вы не используете чистую инфраструктуру MVC или объектную модель или что-то еще, этот высокоуровневый взгляд на дизайн может быть применен с большим эффектом. Изолировать общую логику в доменном слое, который многократно используется для разных приложений, и ваши приложения намного проще писать, расширять и поддерживать.
Ответ 2
- Забыть о жизненном цикле страницы
- Нет ViewState (по умолчанию это)
- Нет обратных ссылок
- Вам необходимо знать основы протокола HTTP (GET/POST). То же самое происходит с HTML (DropDownList является актуальным тегом)
Ответ 3
Я бы порекомендовал начать работу с просмотра скринкастов на сайте Microsoft Learn:
Видеоролики ASP.NET MVC
Там вы узнаете различия между моделью обратной передачи WebForms и тем, как MVC направляет ваши URL-адреса на действия и методы.
Второе важное отличие состоит в том, чтобы помнить, что в ASP.NET MVC вы не используете элементы управления, которые выполняют обратную передачу. Это может показаться немного более похожим на классический ASP, где код встроен на страницу в блоках на стороне сервера, но это того стоит. У вас будет полный контроль над созданным HTML, и это очень хорошо для таких вещей, как поисковая оптимизация.
Ответ 4
Некоторые советы
- Не используйте стандартные элементы управления. Вместо этого обратите внимание на jQuery, MooTools.
- Использование сильно типизированных моделей
- Хорошей практикой является использование некоторых IoC, таких как Spring.NET
Ответ 5
Я также прихожу из webforms, но изучал asp.net MVC с момента предварительного просмотра 3.
Я не совсем уверен, как принести что-либо из MVC в webforms, это две совершенно разные структуры. Я, вероятно, слишком новичок в этом, чтобы понять, как любой из них может быть применен к веб-формам, но сейчас кажется, что у них очень мало общего.
Некоторые из сильных сторон MVC - это жесткая структура того, как вам нужно делать вещи и куда вы кладете код. Он также устраняет форму runat = server, и я считаю, что это не способствует использованию каких-либо элементов управления сервером asp.net(вам нужно самому написать весь HTML). Это в значительной степени определение webforms прямо там. MVC в значительной степени заменяет веб-формы своей собственной инфраструктурой.
Если вы когда-либо делали классический ASP или PHP, я бы назвал ASP.net MVC более структурированной структурой для того, что люди могут делать с этими более старыми языками сценариев. Это похоже на фреймворк FuseBox, но еще более структурированный и развитый.