ASP.NET — избегание вызовов базы данных для отображения представлений сетки

Мы работаем над представлениями сетки в приложении ASP.NET.

Здесь мы хотели бы избежать вызовов базы данных для привязки набора данных/таблицы данных к представлению сетки всякий раз, когда пользователь нажимает на сортировку (сортировку столбцов), ссылки на страницы или всякий раз, когда он обновляет запись.

Не могли бы вы сообщить мне, как лучше всего справиться с этим?

Было бы здорово, если бы вы также предоставили справочный документ или веб-ссылки (при необходимости).

Большое спасибо, С уважением, Нани.


person Community    schedule 23.09.2009    source источник


Ответы (3)


Если вы хотите, чтобы ваши пользователи имели расширенные возможности сортировки, разбиения на страницы и редактирования без частых обращений к базе данных, вам лучше создать толстый клиент Windows. Веб-приложения в целом лучше подходят для тонких клиентов.

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

person MusiGenesis    schedule 23.09.2009
comment
@Jeff: гм, +1 в сотой степени все еще 1. :) - person MusiGenesis; 23.09.2009

Здесь у вас есть несколько вариантов, но все они имеют свои подводные камни и зачастую хуже, чем просто повторное обращение к базе данных. Некоторые возможности:

  • Сохраните DataSource в Cache. Подробный обзор см. в разделе Кэширование данных приложений.

  • Для небольших объемов сериализуемых данных вы можете сохранить их в Page в ViewState. Недостатком этого является то, что увеличивается размер HTML-кода, который вы отправляете клиенту, поэтому вам нужно сбалансировать это со временем, которое вы можете сэкономить, не обращаясь к базе данных снова. Understanding ViewState Скотта Митчелла — отличное введение в это.

  • Просто для полноты картины — это ужасно: вы можете сохранить GridView DataSource в пользовательской Session. Это занимает память вашего веб-сервера; вам, вероятно, не следует использовать эту технику, кроме как для прототипирования (в этом случае вы можете снова обратиться к базе данных).

Наконец, вы должны абсолютно серьезно отнестись к советам в этих >другие ответы.

person Jeff Sternal    schedule 23.09.2009

Я думаю, вам будет трудно сделать эту оптимизацию какой-либо полезной. Занимают ли функции сортировки/обновления/страницы GridView много (чрезмерного) времени для выполнения? Возможно, вам также придется взглянуть на дизайн базы данных.

person Matthew Jones    schedule 23.09.2009