Динамическое управление состоянием элементов управления - Просмотр состояния в сравнении с базой данных
-
21-09-2019 - |
Вопрос
Каков наилучший вариант для хранения данных, относящихся к динамическим элементам управления?Вот мой сценарий.
- В любое время можно вернуться примерно к 5-15 основным таблицам.
- Динамические элементы управления могут быть типа TextBox, DropDownList, ListBox, GridView.
- Основные параметры не изменятся при обратной отправке, но страница будет подвергаться множеству обратных отправлений за один сеанс.
- Я использую SQLServer 2005 с .NET 2.0
Будучи более опытными пользователями, предлагаете ли вы заполнять элементы в этих элементах управления из базы данных или разрешаете viewstate каждого элемента управления поддерживать список элементов?Я смотрю на это с точки зрения повышения производительности.Кроме того, не могли бы вы, пожалуйста, обосновать свои предложения.
Любые другие предложения также приветствуются.Дайте мне знать, если вам понадобится дополнительная информация.
Спасибо - Раджа
Решение
Это зависит от обстоятельств.Как упоминал Аарон, все, что вы храните в viewstate, должно быть загружено с клиента обратно на сервер.Для internet site обычно это делает viewstate невероятно плохим местом для хранения табличных данных.Для intрасетевой сайт, где клиент, вероятно, имеет пропускную способность для загрузки 100 Мбит / с, что не так важно, и Viewstate может быть лучшим местом;это особенно верно, если запрос к базе данных для восстановления этих данных является дорогостоящим.
Тем не менее, многие сайты интрасети в конечном итоге переносятся для поддержки домашних работников и внезапно оказываются в ситуациях, связанных с Интернетом, поэтому вы все равно можете помнить об ограничениях производительности, связанных с Интернетом.В этом случае, если ваш запрос к базе данных окажется узким местом, вы можете рассмотреть либо индексированное / материализованное представление, либо даже отдельные таблицы, куда вы можете временно вставить эти данные для быстрого извлечения, чтобы ускорить работу с этой целью.
Другие советы
В вашем случае я бы определенно обратился к базе данных за данными, а не хранил какие-либо табличные данные в ViewState.Все, что хранится в ViewState, отправляется обратно на сервер от клиента при каждой обратной отправке.Он незашифровывается, используется, повторно шифруется, затем отправляется обратно, что намного дороже, чем запрос к вашей базе данных.
Такие мелочи, как идентификаторы и еще много чего, хороши для хранения в ViewState, но не целых таблиц данных.