Советы по предотвращению больших скоплений грязи с помощью ASP.NET WebForms

Хотя в наши дни вокруг ASP.NET MVC, похоже, все шуметь, WebForms по-прежнему широко распространены. Как сохранить разумный проект? Соберем здесь несколько советов.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
735
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Начните с мастер-страниц в день №1 - возвращаться к модификациям становится непросто.

Ответ принят как подходящий
  • Создавайте пользовательские веб-элементы управления для всего, что будет отображаться на нескольких страницах и не является частью содержимого типа главной страницы. Пример: если ваше приложение отображает информацию о продукте на 10 страницах, лучше иметь пользовательский элемент управления, который используется на 10 страницах, а не 10 раз вырезать и вставлять код дисплея.
  • Добавьте в код как можно меньше бизнес-логики. Код, лежащий в основе, должен подчиняться вашему бизнес-уровню для выполнения работы, которая напрямую не связана с размещением вещей на странице и отправкой данных туда и обратно с бизнес-уровня.
  • Не изобретайте велосипед. Множество неаккуратных программных компонентов, которые я видел, состоят из кода, который выполняет то, что уже предоставляет фреймворк.
  • В общем, избегайте блоков скриптов в html.
  • Не делайте на одной странице слишком много вещей. То, что я видел снова и снова, - это страница с режимами добавления и редактирования. Отлично. Однако, если у вас есть много подрежимов для добавления и редактирования, вам лучше иметь несколько страниц для каждого подрежима с повторным использованием с помощью пользовательских элементов управления. Вам действительно нужно избегать использования множества вложенных IF, чтобы определить, что ваш пользователь пытается сделать, а затем показывать правильные вещи в зависимости от этого. Все быстро выходит из-под контроля, если у вашей страницы много возможных состояний.
  • Изучите / оцените жизненный цикл страницы и используйте его в своих интересах. Многие уродливые страницы с выделенным кодом, которые я видел, могли бы быть чище, если бы программист лучше понимал жизненный цикл страницы.

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

Dexter 23.09.2008 03:19

Вероятно, я не совсем понял, но я имел в виду использование элементов управления для повторяющихся вещей, таких как отображение и редактирование бизнес-объектов. Пример: Скажем, есть 10 страниц, на которых я могу просмотреть продукт. Лучше иметь один пользовательский элемент управления, чем вырезать и вставить HTML на 10 страниц. Ответ обновлен для уточнения.

Daniel Auger 23.09.2008 03:26

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

  1. Держите полученный HTML в чистоте: Тот факт, что вы не кодируете вручную каждый <div>, не означает, что сгенерированный код должен стать нечитаемым кошмаром. Избегание элементов управления, создающих некрасивый код, может впоследствии окупиться сокращением времени на отладку, облегчая выявление проблем.
  2. Минимизируйте внешние зависимости: Вам не платят за отладку чужого кода. Если вы делать решите полагаться на сторонние компоненты, получите исходный код, чтобы вам не приходилось тратить слишком много времени на исправление их ошибок.
  3. Не делайте слишком много на одной странице: Если вы обнаружите, что реализуете сложные «режимы» для данной страницы, подумайте о том, чтобы разбить ее на несколько одномодовых страниц, возможно, используя главные страницы для исключения общих аспектов.
  4. Избегайте обратной передачи: Это всегда была ужасная идея, и не стало менее ужасной. Головная боль, которую вы сэкономите, не используя элементы управления, зависящие от обратной передачи, - приятный бонус.
  5. Избегайте VIEWSTATE: См. Комментарии к # 4.

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

Paul Batum 23.09.2008 03:21

Да. Именно это и означает. Конечным результатом являются страницы с очень, очень небольшим количеством кода программной части период, поскольку все, что не имеет прямого отношения к построению страницы, находится где-то в своем собственном специализированном классе. Это ... очень освобождает.

Shog9 23.09.2008 03:24

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

Dexter 23.09.2008 03:31

Проверка достаточно проста: все формы отправляются обработчику, зависящему от действия (.ashx), с передачей параметра, определяющего страницу для перенаправления в случае успеха или неудачи. Каждому дается параметр сообщения, описывающий результат (успех, ошибка проверки, Армагеддон и т. д.)

Shog9 23.09.2008 03:36

Для обеспечения доступности и поддержки мобильных устройств и устройств, отличных от javascript, вы всегда должны убедиться, что ваши формы проверены на стороне сервера, а функции javascript (esp multi-dropdown) реплицируются на стороне сервера.

Toby Mills 23.09.2008 05:03

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

Greg 15.10.2008 08:43

Язык? Постбек никак не связан с выбором языка.

Shog9 16.10.2008 00:29

@ Shog9: Вы излишне усложняете парадигму веб-форм ASP.NET и тупо избегаете стандарта разработки, который большинство разработчиков ASP.NET обучены понимать без реальной цели. Как вы справляетесь с повторным отображением формы, если данные в вашем обработчике недействительны? Вы перенаправляете обратно на форму? А как быть с уже заполненными полями? Теперь вам нужно выполнить перенаправление с параметрами запроса, чтобы исходная форма могла заполнить себя заново? Постбэк - хорошая работоспособная концепция, но, как правило, ее неправильно понимают многие разработчики, которые начали с другого веб-языка.

Chris 19.12.2009 03:01

@Chris: на самом деле, вы поднимаете хороший вопрос - при сохранении большего, чем небольшого количества введенных пользователем данных, отправка обратно в aspx для ввода данных действительно упрощает много для восстановления значений полей формы. Я все еще не нравиться, но это один из многих компромиссов, которые необходимо сделать ... Тем не менее, стоит дважды подумать, прежде чем использовать этот метод, зарезервировав его только для тех сценариев, где он действительно окупается: много разработчики, которые запустили нет на другой платформе, оставляют себя беззащитными перед головной болью, когда слепо соглашаются с тем, что каждое действие должно приводить к обратной передаче.

Shog9 19.12.2009 05:17

Используйте контроль версий и структуру папок, чтобы в одной папке не находилось слишком много файлов. Нет ничего более болезненного, чем ждать, пока Windows Explorer что-то загрузит, потому что в папке более 1000 файлов, и он должен загрузить их все при открытии папки. Соглашение об именах переменных и методов также хорошо иметь заранее, если это возможно, чтобы не было этой мешанины кода, в которую разные разработчики вкладывают свои уникальные штрихи, и это болезненно видно.

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

Наконец, знайте, какие стандарты будут соблюдать ваши формы: это только для пользователей IE или какой-либо из IE, Firefox или Safari должен легко загружать форму и хорошо выглядеть?

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

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

o ASP.NET MVC Проблема с этим в том, что он находится в предварительном просмотре. Я разговаривал с Татхамом Одди и должен отметить, что он очень стабилен и удобен в использовании. Мне это нравится, он обеспечивает разделение проблем и делает это с минимальным дополнительным кодом для разработчика.

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

Следуя тому, что сказал Одд, я пробую версию MVP под названием Model Presentation, которая пока работает у меня хорошо. Я все еще понимаю это и адаптирую его для собственного использования, но он освежает от кода, который я использовал для написания.

Посмотрите здесь: Модель презентации

Другие вопросы по теме