ziad imad Ответов: 1

Какова наилучшая практика для создания ASP.NET приложение, которое имеет много вызовов к базе данных одновременно


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

Что я уже пробовал:

Я попытался загрузить все данные в DOM и нарисовать каждый шаг с помощью JavaScript, но страница была медленной, а также у меня есть некоторые проблемы, когда я снова отправляю все данные страницы в базу данных

1 Ответов

Рейтинг:
5

Afzaal Ahmad Zeeshan

Цитата:
asp.net веб-приложение, которое имеет много пользователей, работающих одновременно
(около 500 пользователей)
Это не должно быть проблемой в среднем ASP.NET веб-приложение. Ваше приложение должно работать просто отлично.
Цитата:
каждая страница имеет много шагов и каждый шаг должен получить данные из базы данных
Опять же, это тоже прекрасно. Просто запросите таблицу базы данных и отобразите данные на странице. Если вы беспокоитесь о производительности, то попробуйте кэшировать данные, если вы чувствуете, что данные могут быть действительны в течение 10-15 минут. Но из-за следующей части вашего вопроса я сомневаюсь в этом.
Цитата:
затем сохраните все данные со всех шагов в базе данных
Для этого шага вам нужно будет использовать TRANSACTION объект в SQL. Поскольку несколько пользователей (500, согласно вашему вопросу) делают изменения одновременно, транзакция должна выполняться только в том случае, если все изменения (в каждой таблице) были сделаны. Если какое-либо изменение нарушает согласованность данных, то оно должно завершиться неудачей.

Транзакции (Transact-SQL) - SQL Server | Microsoft Docs[^]

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

Хранимые процедуры (компонент Database Engine) - SQL Server | Microsoft Docs[^]
Цитата:
Я попытался загрузить все данные в DOM и нарисовать каждый шаг с помощью JavaScript
Используйте фреймворк front-end для этого подхода и загружайте данные по частям. React framework может быть реализован с каждой страницей как отдельный компонент, который загружает свежую копию данных для состояния пользовательского интерфейса.
Цитата:
но страница была медленной
Возможно, браузер был недостаточно хорош, возможно, машина была медленной или ресурсы были низкими. Просто потому, что ваша страница была медленной, не означает, что код был неправильным — общее предложение состоит в том, чтобы никогда не загружать все данные на веб-странице &madsh; вы должны заглянуть в инструменты браузера, чтобы проверить, как работает страница.
Цитата:
кроме того у меня есть некоторые проблемы при отправке всех данных страницы еще раз в базу данных
Затем не нажимайте данные сразу, загружайте данные по частям. Возможно, выполнить один запрос за раз.

Вы уверены, что ваша машина достаточно мощна, чтобы поддерживать компонент database engine, веб-сервер и сеанс отладки в браузере?


ziad imad

да машина была очень хороша я даже использовал сервер для iis и еще один для базы данных
но проблема с javascript потому что я делаю много обработки на DOM

MadMyche

Таким образом, вы знаете, что проблема заключается в JS на странице; но вы помечаете все это так, как будто проблемы находятся внутри ASP.NET а SQL?

Afzaal Ahmad Zeeshan

Как я уже сказал, Попробуйте использовать front-end framework и распределить работу между различными компонентами, которые загружают данные по мере необходимости и отбрасывают их (или сохраняют в API localStorage) по мере необходимости.

Загрузка полного пакета данных в один экземпляр DOM - это не очень хорошо. Под этим я подразумеваю рендеринг данных в DOM, просто загрузка и хранение пакета в памяти - это совсем другая история.