Каковы ключевые факторы, обеспечивающие успешную масштабируемость приложений ASP.NET? - PullRequest
3 голосов
/ 18 ноября 2008

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

Ответы [ 4 ]

3 голосов
/ 11 декабря 2008

Это наши внутренние ASP.Net Что делать и чего не делать для массово посещаемых веб-приложений:

Общее руководство

  • Не использовать сеансы - SessionState = Off
  • Полностью отключить ViewState - EnableViewState = False
  • Не используйте полные элементы управления ASP.Net UI, придерживайтесь базовых (DataGrid против простого повторителя)
  • Используйте самый быстрый и самый короткий доступ к данным механизмы (придерживаться sqlreaders на передний сайт)

Архитектура приложения

  • Создание менеджера кэширования со слоем абстракции. Это позволит вам заменить простой System.Web.Cache на более сложное решение распределенного кэширования в будущем, когда вы начнете масштабировать свое приложение.
  • Создание выделенного менеджера ввода-вывода с уровнем абстракции для поддержки будущего роста (S3, кто-нибудь?)
  • Внедрите временную трассировку в свои основные трубопроводы, которую вы можете включать и выключать, это позволит вам обнаруживать горлышки бутылок, когда это происходит.
  • Используйте механизм фоновой обработки и переместите все, что не требуется, чтобы отобразить текущую страницу для ее пережевывания.
  • Еще лучше - рассмотрите возможность запуска событий из вашего приложения в другие приложения, чтобы они могли выполнять эту асинхронную работу.
  • Подготовьтесь к масштабируемости базы данных, разместите свой собственный слой, чтобы впоследствии вы могли решить, хотите ли вы разбить свою базу данных или поочередно работать с несколькими серверами чтения в сценарии ведущий-ведомый.

Прежде всего, учитесь на чужих успехах и неудачах и оставайтесь позитивными.

3 голосов
/ 18 ноября 2008

Мои первые три решения

  1. Отключение или сохранение состояния сеанса в базе данных.
  2. Хранение как можно меньше в состоянии сеанса.
  3. Хорошая N-уровневая архитектура. Отделение бизнес-логики и использование веб-сервисов вместо прямого доступа к DLL гарантирует, что вы сможете масштабировать как бизнес-уровень, так и уровень представления. Скорее всего, ваша база данных сможет обрабатывать все, что вы на нее бросите, хотя вы, возможно, тоже можете кластеризовать ее, если это необходимо.

Вы также можете посмотреть на разделение данных в базе данных.

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

1 голос
/ 18 ноября 2008

Есть так много соображений, что можно написать книгу на эту тему. На самом деле, есть отличная книга и она бесплатна. ; -)

Microsoft выпустила Повышение производительности и масштабируемости приложений .NET в виде электронной книги в формате PDF.

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

1 голос
/ 18 ноября 2008

Убедитесь, что у вас есть надежная политика кэширования для переходных / статических данных. Вызовы в базе данных обходятся дорого, особенно с отдельными физическими серверами, поэтому будьте агрессивны с вашим кэшированием.

...