Создание приложения ASP.NET - лучшие практики

Мы создаем приложение ASP.NET и хотели бы следовать рекомендациям. Некоторые из лучших практик:

Код на стороне сервера:

Используйте блоки поймать, чтобы поймать и регистрировать ошибки низкого уровня тоже.Используйте объекты Cache для заполнения выпадающих списков и т. Д., Где мы выигралиНе ожидайте изменений в базовых данных / базе данных.В случае каркаса регистрации ошибок, отправьте оповещения по электронной почте вместе с регистрацией ошибок.

HTML-код: - Не делайт встроенный CSS. - Поместите код JavaScript (если он необходим странице) в конец страницы, если только он не нужен странице для действий во время загрузки.

Теперь перейдем к вопросу: не могли бы вы поделиться этими рекомендациями, если у вас уже есть их полный список?

 mattruma06 нояб. 2009 г., 18:12
Это должно быть помечено как вики сообщества.
 Jon Seigel06 нояб. 2009 г., 17:30
Этодействительно широкий вопрос.
 this. __curious_geek06 нояб. 2009 г., 17:41
Широкий, но полезный и хороший.

Ответы на вопрос(7)

Некоторые из лучших практик, которые ясо временем мы узнали и написали для использования в моей компании ... многие из них в основном применимы к веб-формам, а не к MVC.

Дон»писать код .NET непосредственно в разметке ASPX (если только он не предназначен для привязки данных, то есть Evals). Если у вас есть код позади, это помещает код для страницы в более чем одно место и делает код менее управляемым. Поместите весь код .NET в свой код.SessionPageStatePersister может использоваться вместе с ViewState, чтобы сделать ViewState полезным без увеличения размеров страницы. Перезаписать страницуs PageStatePersister с новым SessionPageStatePersister сохранит все данные ViewState в памяти и будет хранить только зашифрованный ключ на стороне клиента.Создайте BasePage, от которого ваши страницы могут наследовать, чтобы повторно использовать общий код между страницами. Создайте MasterPage для ваших страниц для визуального наследования. Страницы с совершенно разными визуальными стилями должны использовать другую мастер-страницу.Создайте перечисление имен ключей параметров страницы в каждой WebForm, которые передаются через URL, для настройки строго типизированных параметров страницы. Это предотвращает необходимость использования жестко закодированных строк ключей параметров страницы и их возможного неправильного набора, а также позволяет строго типизированный доступ к параметрам с других страниц.Используйте кэш ASP.NET для кеширования часто используемой информации из вашей базы данных. Создайте (или повторно используйте из другого проекта) общий уровень кэширования, который обернет кэш ASP.NET.Оберните объекты ViewState свойствами на своих страницах, чтобы избежать ошибок в написании и т. Д. При обращении к элементам из коллекции ViewState.Старайтесь не помещать большие объекты и графы объектов во ViewState, используйте его в основном для хранения идентификаторов или очень простых объектов DTO.Оберните ASP.NET-сессию с помощью SessionManager, чтобы избежать ошибок разработки в написании и т. Д. При обращении к элементам из Session.Широко используйте значения конфигурации ключ / значение applicationSettings в web.config - оберните Configuration.ApplicationSettings классом, который можно использовать для простого извлечения параметров конфигурации без необходимости запоминать ключи из web.config.Избегайте простоты установки свойств отображения в элементах управления вашего пользовательского интерфейса, вместо этого используйте стили и классы CSS - это сделает ваши стили более управляемыми.Создайте UserControls в своем приложении, чтобы повторно использовать общие функциональные возможности пользовательского интерфейса на своих страницах. Например, если выпадающий список, содержащий коллекцию категорий, будет использоваться во многих местах на сайте - создайте элемент управления CategoryPicker, который будет связывать себя при загрузке страницы.Используйте Свойства на ваших элементах управления UserControls, чтобы настроить такие вещи, как значения по умолчанию, различные отображения между страницами и т. Д. Свойства типа значения можно определить в ваших элементах управления UserControls, а затем задать их в разметке ASP.NET с помощью свойств уровня класса в UserControls.Используйте элементы управления проверкой ASP.NET для выполнения простых проверок или используйте CustomValidator для выполнения сложных проверок.Создайте страницу обработки ошибок, на которую можно перенаправлять, когда на вашем сайте возникает необработанное исключение. Перенаправление может происходить через событие Page_Error на вашей странице, событие Application_Error в вашем Global.asax или в разделе внутри web.config.При работе со страницами, которые используют высокодинамичный дисплей, управляемый данными, используйте сторонний (бесплатный) элемент управления DynamicControlsPlaceholder, чтобы упростить код, необходимый для сохранения состояния динамически добавленных элементов управления между постбэками.

Вот несколько похожих вопросов, которые могут вам помочь.

.NET лучшие практики?

Лучший способ изучить лучшие практики .NET / OOP?

Вероятно, это должна быть и вики сообщества.

Я неЯ думаю, блоки try / catch всегда подходят для низкоуровневых методов. Конечно, вы хотите отлавливать (и регистрировать / предупреждать, даже лучше!) Любые ошибки, прежде чем они попадут к пользователю. Но часто для низкоуровневого метода лучше просто позволить его ошибкам подняться на более высокий уровень. Проблема, с которой я столкнулся при низкоуровневом перехвате ошибок, состоит в том, что он часто позволяет продолжить более масштабную операцию, но затем результат, который не совсем корректен, представляется пользователю или сохраняется в базе данных, а в долгосрочной перспективе - 'это гораздо сложнее исправить. Это'Кроме того, в вашем коде просто много лишних беспорядков, чтобы вы могли попробовать / поймать на каждом уровне, если вы 'не собираюсьДелать что-нибудь" с ошибкой, покаs подняты на более высокий уровень.

ASP.NET

Если вы нене использовать состояние сеанса, нене забудьте выключить его.использованиеServer.Transfer вместоResponse.Redirect если возможно.Установите срок действия в IIS.Используйте GZip для сжатия текстовых файлов.Используйте проверку на стороне сервера и на стороне клиента вместе.Используйте Url Rewriter или Routing, чтобы создать дружественный URL для SEO.

дизайн

Напишите каждый класс и его свойства вашего CSS-файла в одной строке. (Чтобы уменьшить размер файла)Используйте CSS Sprites. (Уменьшить запрос)
 James11 авг. 2011 г., 03:28
Голосовал за упоминание Server.Transfer. Это действительно упускается из виду. Переадресация - ужасный шаг, чтобы обойти сеть »родная модель запроса.

Формы:

ЗадаватьPage.Form.DefaultFocus а такжеPage.Form.DefaultButton улучшить пользовательский опыт

ПроверьтеPage.IsValid в вашем обработчике кнопки Сохранить, прежде чем продолжить.

Генеральный:

Понять и реализовать методы, найденные в статьеTRULY Понимание ViewState "

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

Используйте гиперссылки вместо публикации и использования Response.Redirect, когда это возможно.

а. Поймите и используйте второй параметрResponse.Redirect (Это "Указывает, должно ли прекращаться выполнение текущей страницы ")

ИспользоватьЖизненный цикл страницы должным образом.

ИспользоватьКэш для каждого запроса (HttpContext.Items) вместо Cache, где это имеет смысл.

Web.Config:

Развернуть с

Зарегистрируйте свои элементы управления науровень web.config вместоуровень страницы (т.е. @Register).

Темы:

При использовании тем, поместите ваши статические изображения в тему.

а. Дон»t ссылки на изображения непосредственно из вашей разметки, ссылки на них из файла скина или CSS-файла в вашей теме.

например:

 Earlz29 июл. 2010 г., 01:39
+1 за редко (но чрезвычайно полезный) используемыйContext.Items

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

Код завершен 2

Прагматичный программист

Если вы ищете специальную книгу .NET, вы можете оценить следующую книгу:

Руководство по архитектуре приложений Microsoft [доступно онлайн бесплатно вне формата печати]

Создать базовую страницу для всех ваших страниц asp.net. Эта страница будет производной от System.Web.UI.Page, и вы можете поместить ее в YourApp.Web.UI. Пусть все ваши страницы asp.net управляются из класса YourApp.Web.UI.Page. Это может уменьшить боль.

Использовать Application_OnError обработчик для изящной обработки любой ошибки или исключения. Вы должны зарегистрировать критическое исключение и отправить сведения об исключении вместе с датой и временем и IP-адресом клиента на идентификатор электронной почты администратора. даELMAH это верный путь.

Используйте темы ASP.NET, Многие разработчики нене используй это. Используйте их - они отличные.

Используйте MembershipProvider и RoleProvider, А такжеНикогда не используйте встроенный ProfileProvider - Они хранят все в простых строках. Это резко замедлит производительность при выполнении R / W

использованиеподжигатель для отладки на стороне клиента. Старайтесь следовать стандартам YSlow для веб-приложений. использованиеYSlow расширение для FireBug.

использованиеJQuery для клиентских скриптов.

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

Посмотри наPostSharp, Может улучшить сопровождение вашего кода и сделать вас более продуктивным.

Никогда не развертывайте приложение asp.net в конфигурации отладки на производстве. УзнатьВот какиеScottGu должен сказать об этом.

пользовательПроекты веб-развертывания, Он может преобразовывать разделы web.config и заменять их настройками рабочего сервера. Он объединит все скомпилированные классы с выделенным кодом в одну сборку, что очень выгодно.

Используйте домены без cookie для обслуживания статических ресурсов, таких как изображения, скрипты, стили и т. д. Каждый клиентский запрос отправляется вместе с целой кучей файлов cookie.не нужны куки при обслуживании картинок или скриптов. Поэтому разместите эти ресурсы в домене без файлов cookie.

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

 Kb.06 нояб. 2009 г., 18:32
@curious_geek +1 для Firebug. Можно'без программы (ни Решарпер)
 Zote06 нояб. 2009 г., 17:46
Измените пункт 2 на ELMAH.

Ваш ответ на вопрос