Связывание программно Vs.Источник данных объекта для производительности - PullRequest
2 голосов
/ 16 ноября 2010

Я использовал bind all GridViews, DetailViews и т. Д. На своей странице, используя ObjectDataSource (если это было невозможно сделать). Недавно я начал связывать все свои элементы управления программно. Я считаю, что это намного чище и проще, хотя некоторые могут не согласиться.

Связывание с ObjectDataSource, очевидно, имеет свои преимущества и недостатки, равно как и программное.

Скажем, я связываю GridView программно (например, GridView1.DataSource = SomeList), когда я меняю страницу в GridView, я также должен это кодировать. Каждый раз, когда страница меняется, мне приходится снова звонить GridView1.DataSource = SomeList. Очевидно, с ObjectDataSource мне не нужно это делать. Обычно я вставляю свой объект SomeList в ViewState, поэтому при смене страницы мне не нужно каждый раз обращаться к базе данных.

Мой вопрос таков: работает ли ObjectDataSource? Сохраняет ли он свои данные в ViewState и не попадает снова в базу данных, если вы не вызовете метод .Select? Мне нравится пытаться добиться максимальной производительности своих приложений и использовать базу данных как можно меньше раз, но мне не очень нравится идея сохранения огромного списка во ViewState. Есть ли лучший способ сделать это? Является ли кэширование для пользователя хорошей идеей (или возможно)? Должен ли я просто попадать в базу данных каждый раз вместо сохранения моего огромного списка в ViewState? Иногда лучше использовать базу данных, чем использовать ViewState?

1 Ответ

1 голос
/ 16 ноября 2010

Сохраняет ли он свои данные в ViewState и не ударил снова в базу данных, если вы не вызовете метод .Select?

Нет, данные не сохраняются в ViewState .В сетке представлений состояния представления и других аналогичных списках сохраняется общее состояние, например столбец сортировки, страница, общее количество страниц, состояние элемента управления, но не данные.

Кэшируется для каждого пользователя aХорошая идея

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

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

Должен ли я просто попадать в базу данных каждый развместо того, чтобы хранить мой огромный список в ViewState?

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

...