Иногда наши веб-приложения работают очень быстро при локальном тестировании, но при тестировании в локальной сети иногда обнаруживаются проблемы с производительностью в глобальной сети; Эти проблемы обычно возникают из-за небрежности или ошибок в приложении и не связаны с архитектурой системы. Проблему можно обнаружить и решить путем отладки и тестирования в реальной среде.
Сегодня мы говорим о фундаментальном повышении производительности приложений ASP.Net за счет улучшения архитектуры.
Давайте сначала протестируем несколько простых приложений ASP.Net.
Тестовая среда: AthlonXP 3200+, DDR400 512M, WindowsXP SP2, собственный SQL Server 2000, таблица продуктов китайской базы данных Northwind (импортированная из Access), около 70 записей.
Серийный номер теста | Тип программы | Метод теста | Результат теста (Запросов в секунду) | SQLServer Занятые ресурсы | ASP.Net Занятые ресурсы |
1 | Веб-сервис | заполняет DataSet таблицей продуктов и возвращает количество записей | 250 раз | 100% | - |
2 | Веб-сервис | заполняет DataSet таблицей продуктов и возвращает DataSet | 138 раз | 54% | 46% |
3 | Веб-приложение | заполняет DataSet с таблицей продуктов и возвращает Bind DataGrid | 70 раз | 28% | 72% |
В первом тесте веб-сервис только считывает записи из базы данных, заполняет их в DataSet и возвращает количество записей (обратите внимание, что он не возвращает записи). Предполагается, что система занимает очень мало ресурсов. ресурсы полностью заняты SQL Server, и вывод неясен. Будут негативные последствия.
Во втором тесте, когда веб-служба возвращает набор данных, количество запросов в секунду сокращается почти вдвое. ASP.Net использует половину системных ресурсов для сериализации набора данных.
В третьем тесте, где веб-приложение привязывает DataSet к DataGrid и возвращает страницу, количество запросов в секунду сокращается почти на три четверти. Эти системные ресурсы используются ASP.Net для привязки DataSet к DataGrid. и верните страницу. Сериализуйте страницу.
Из приведенных выше тестов мы видим, что привязка и сериализация DataGrid будут занимать много системных ресурсов. Если вы хотите улучшить производительность системы, вам необходимо улучшить архитектуру.
1. Отделите операции с базой данных от страницы и поместите их на независимый уровень персистентности.
Таким образом, данные отображаются в виде таблицы через DOM или XSLT на стороне клиента, заменяя привязку DataGrid на стороне сервера, что значительно снижает нагрузку на сервер. А клиент получает данные с уровня персистентности через AJAX, что улучшит взаимодействие с пользователем.
2. Полностью отделить страницу от данных, чтобы можно было использовать кеш.
Некоторые страницы, применяющие AJAX, по-прежнему будут считывать исходные данные, поэтому страницу невозможно кэшировать. Эти страницы, как правило, более сложны и занимают больше ресурсов, чем обычные страницы. Если можно использовать кеш, производительность системы еще больше повысится.
Благодаря двум вышеуказанным пунктам производительность ASP.Net можно увеличить почти вдвое.
Вы можете протестировать его самостоятельно или посетить наш образец www.BizStruct.cn .