Подтвердить что ты не робот

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

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


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

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

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


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

4b9b3361

Ответ 1

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

  • Не записывайте код .NET непосредственно в ваша разметка ASPX (если только она не используется для привязка данных, т.е. Evals). если ты есть код позади, это ставит код для страницы в нескольких местах и делает код менее управляемым. Положил весь код .NET в вашем коде.
  • SessionPageStatePersister может использоваться совместно с ViewState сделать ViewState полезным без увеличение размеров страниц. Переопределение Страница PageStatePersister с новый SessionPageStatePersister будет хранить все данные ViewState в памяти, и будет хранить только зашифрованный ключ на стороне клиента.
  • Создайте базовую страницу, которую ваши страницы могут наследовать, чтобы повторно использовать общий код между страницами. Создайте MasterPage для своих страниц для визуального наследования. Страницы с совершенно разные визуальные стили должны используйте другой MasterPage.
  • Создайте перечисление имен ключей параметров страницы в каждом WebForm которые передаются через URL-адрес, чтобы настройка сильно типизированных параметров страницы. Это предотвращает необходимость жесткого кодирования строки параметров параметров страницы и их вероятной неправильной типизации, а также допускающий строго типизированный параметр доступ с других страниц.
  • Использовать кэш ASP.NET для частого кэширования информацию из вашей базы данных. Сборка (или повторное использование из другого проекта) общий уровень кэширования, который будет оберните кэш ASP.NET.
  • Оберните объекты ViewState с помощью свойств на своих страницах, чтобы избежать ошибки разработки в написании, и т.д. при ссылке на элементы из Коллекция ViewState.
  • Избегайте размещения больших объектов и графиков объектов в ViewState, используйте его в основном для хранения идентификаторов или очень простых объектов DTO.
  • Оберните сеанс ASP.NET с помощью SessionManager, чтобы избежать развития ошибки при написании и т.д., когда ссылки на объекты из сеанса.
  • Широко использовать ключ/значение приложенияSettings значения конфигурации в 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 контролирует упростить код, необходимый для сохранения состояние динамически добавленных элементов управления между postbacks.

Ответ 2

  • Создайте базовую страницу для всех ваших страниц 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

  • Используйте Firebug для отладки на стороне клиента. Постарайтесь следовать стандартам YSlow для веб-приложений. Используйте YSlow расширение для FireBug.

  • Используйте jQuery для клиентских сценариев.

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

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

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

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

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

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

Ответ 3

Формы:

  • Установите Page.Form.DefaultFocus и Page.Form.DefaultButton, чтобы улучшить работу пользователя

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

Общие:

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

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

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

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

  • Используйте жизненный цикл страницы.

  • Используйте кеш Per-Request (HttpContext.Items) вместо кеша, где это имеет смысл.

Web.Config:

Тема:

  • При использовании Темы добавьте свои статические изображения в тему.

    а. Не связывайтесь с изображениями непосредственно из вашей разметки, ссылайтесь на них из файла скина или файла css в своей теме.

    ex: <asp:Image SkinID="MyImage" runat="server" ImageUrl="Images/myImage.gif" />

Ответ 4

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

Ответ 6

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

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

Прагматический программист

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

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

Ответ 7

ASP.NET

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

Дизайн

  • Напишите каждый класс и его свойства вашего файла CSS в той же строке. (Чтобы уменьшить размер файла)
  • Используйте CSS-спрайты. (Чтобы уменьшить запрос)