Динамическое управление состоянием элементов управления - Просмотр состояния в сравнении с базой данных

StackOverflow https://stackoverflow.com/questions/1969921

Вопрос

Каков наилучший вариант для хранения данных, относящихся к динамическим элементам управления?Вот мой сценарий.

  1. В любое время можно вернуться примерно к 5-15 основным таблицам.
  2. Динамические элементы управления могут быть типа TextBox, DropDownList, ListBox, GridView.
  3. Основные параметры не изменятся при обратной отправке, но страница будет подвергаться множеству обратных отправлений за один сеанс.
  4. Я использую SQLServer 2005 с .NET 2.0

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

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

Спасибо - Раджа

Это было полезно?

Решение

Это зависит от обстоятельств.Как упоминал Аарон, все, что вы храните в viewstate, должно быть загружено с клиента обратно на сервер.Для internet site обычно это делает viewstate невероятно плохим местом для хранения табличных данных.Для intрасетевой сайт, где клиент, вероятно, имеет пропускную способность для загрузки 100 Мбит / с, что не так важно, и Viewstate может быть лучшим местом;это особенно верно, если запрос к базе данных для восстановления этих данных является дорогостоящим.

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

Другие советы

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

Такие мелочи, как идентификаторы и еще много чего, хороши для хранения в ViewState, но не целых таблиц данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top