Перемещение ViewState из страницы?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

10
задан surfmuggle 8 October 2014 в 12:26
поделиться

13 ответов

Как Вы обрабатываете Состояние сеанса? Существует встроенное "хранилище состояние отображения в состоянии сеанса" поставщик. Если Вы храните состояние сеанса в некоторых быстро из proc системы, которая могла бы быть наилучшим вариантом для состояния отображения.

править: чтобы сделать это добавляет следующий код к Вашим классам Page / глобальный базовый класс страницы

    protected override PageStatePersister PageStatePersister {
        get { return new SessionPageStatePersister(this); }
    }

Также... это ни в коем случае не идеальное (или даже хороший) решение большого состояния отображения. Так же всегда минимизируйте размер состояния отображения как можно больше. Однако SessionPageStatePersister относительно интеллектуален и старается не хранить неограниченное количество состояний отображения на сессию, а также старается не хранить только единственное состояние отображения на сессию.

5
ответ дан 4 December 2019 в 00:27
поделиться

Сохраните состояние отображения на сессии, возражают и используют распределенный кэш или государственную службу для хранения сессии, отдельной от нас серверы, такие как скорость microsofts.

0
ответ дан 4 December 2019 в 00:27
поделиться

У меня могло бы быть простое решение для Вас в другом сообщении. Это - простой класс для включения в приложение и несколько строк кода на самой странице asp.net. При объединении его с системой распределенного кэширования, Вы могли бы сохранить много теста, поскольку состояние отображения является большим и дорогостоящим. Скорость Microsoft могла бы быть хорошим продуктом для присоединения этого метода также. Если Вы действительно используете его и сохраняете тонну денег, хотя я любил бы немного упоминания в это. Также, если Вы не уверены в чем-либо сообщенном мне, и я могу говорить с Вами лично.

Вот ссылка на мой код. текст ссылки

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

0
ответ дан 4 December 2019 в 00:27
поделиться

Вы рассмотрели, нужно ли Вам действительно все то состояние отображения? Например, при заполнении datagrid от базы данных все данные будут сохранены в состоянии отображения по умолчанию. Однако, если сетка только для представления данных, Вам не нужна форма все и следовательно никакое состояние отображения.

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

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

0
ответ дан 4 December 2019 в 00:27
поделиться

О нет, бюрократизм. Хорошо это будет трудной задачей для заполнения. Вы упомянули здесь использование сервера состояния для обслуживания состояния сеанса. Как у Вас есть эта установка? Возможно, можно ли сделать что-то подобное здесь также?

Править

Awh @Jonathan, Вы отправили, в то время как я вводил этот ответ. Я думаю, идя тем путем, мог обещать. Одна вещь состоит в том, что это определенно будет интенсивно использующим память.

@Mike я не думаю, храня его в информации о сессии, будет хорошей идеей, из-за интенсивности памяти состояния отображения и также сколько раз необходимо будет получить доступ к состоянию отображения. К SessionState получают доступ намного менее часто как состояние отображения. Я разделил бы два.

Я думаю, что окончательное решение сохранило бы ViewState на клиенте некоторые как и возможно стоящее взгляда на. С Google Gears это могло быть возможно теперь.

0
ответ дан 4 December 2019 в 00:27
поделиться

Я попытался найти некоторые продукты, которые я исследовал в прошлом, которое работает точно так же, как StrangeLoops (но базирующееся программное обеспечение) похоже, что они пошли все из бизнеса, единственной вещи из моего списка что все еще существует ScaleOut, но они специализированы на кэшировании состояния сеанса.

Я понимаю, как трудно это должно продать аппаратные решения высшему руководству, но это всегда - хорошая идея, по крайней мере, заставить управление принимать слушание торгового представителя аппаратных средств. Я очень скорее помещаю некоторые аппаратные средства, которые подарят мне непосредственное решение, потому что они позволяют мне (или купите меня некоторое время) получить некоторое другое реальное сделанное задание.

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

Сообщите мне, находите ли Вы другое программное решение.

0
ответ дан 4 December 2019 в 00:27
поделиться

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

Я действительно должен придумать программный продукт, потому что это - единственный мир, я имею некоторый контроль.

Yay для предприятия :(

0
ответ дан 4 December 2019 в 00:27
поделиться

Следующие работы вполне хорошо для меня:

string vsid;

protected override object LoadPageStateFromPersistenceMedium()
{
  Pair vs = base.LoadPageStateFromPersistenceMedium() as Pair;
  vsid = vs.First as string;
  object result = Session[vsid];
  Session.Remove(vsid);
  return result;
}

protected override void SavePageStateToPersistenceMedium(object state)
{
  if (vsid == null)
  {
    vsid = Guid.NewGuid().ToString();
  }
  Session[vsid] = state;
  base.SavePageStateToPersistenceMedium(new Pair(vsid, null));
}
2
ответ дан 4 December 2019 в 00:27
поделиться

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

2
ответ дан 4 December 2019 в 00:27
поделиться

Как ранее указано, я использовал базу данных для хранения ViewState в прошлом. Хотя это работает на нас, мы не близко подходим к 2 миллионам уникальных посетителей в час.

Я думаю, что аппаратное решение является определенно способом пойти, использовать ли ли продукты StrangeLoop или другой продукт.

2
ответ дан 4 December 2019 в 00:27
поделиться

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

Если я предложу хорошее решение, то я удалю любой IP, защитил код и произвел его для общедоступного использования.

0
ответ дан 4 December 2019 в 00:27
поделиться

Я знаю, что это немного устарело, но я пару дней работал над «виртуальным устройством» с открытым исходным кодом, используя squid и ecap для:

1. ) gzip 2.) обработать ssl 3.) заменить viewstate токеном на запрос / ответ 4.) memcache для кеширования объектов

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

0
ответ дан 4 December 2019 в 00:27
поделиться

Некоторое время назад я писал об этом в блоге - решение находится на http://www.adverseconditionals.com/2008/06/storing-viewstate-in-memcached-ultimate. html

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

0
ответ дан 4 December 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: