TechnologyIS Ответов: 1

Как я должен объявить datatable в ASP.NET чтобы избежать обмена данными с другими пользователями?


Всем привет
Я новичок в ASP.Сеть и этот сайт так что прошу простить очевидные промахи.

У меня был VB.Net Winforms app, основы которого я изменил на ASP.Сетевое приложение.
В версии Winforms у меня была таблица данных, данные которой были специфичны для пользователя и которую я объявил общедоступной. Я сделал то же самое в ASP.Net версия, но вскоре узнал, что это было неправильно, так как данные были разделены между пользователями.

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

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

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

Любой совет будет оценен по достоинству.

Большое спасибо

Что я уже пробовал:

Я искал различные ресурсы, в том числе и этот сайт. Не удалось получить четкое представление о проблеме

1 Ответов

Рейтинг:
8

F-ES Sitecore

Самый простой ответ заключается в том, что вы должны сохранить его в сеансе

Session("MyData") = myDataTable


Лучший ответ, вероятно, более сложен, чем это. Вам нужно попытаться перестать думать как настольное приложение, веб-сайт-это не настольное приложение. На веб-сайте нет персистентности, сервер не знает, кто вы между запросами, поэтому такие вещи, как сеанс, существуют для обеспечения этого персистентного хранилища, но если у вас есть 10 000 пользователей и ваш datatable имеет размер 1 Мб, то это очень много данных в памяти сервера. Это не имеет значения в настольном приложении, поскольку каждый пользователь хранит эти данные в своей локальной памяти, но в веб-приложении все эти данные хранятся на сервере.

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


TechnologyIS

Очень хорошо объяснил. Я попробовал оба варианта и выбрал второй.
Большое спасибо за вашу помощь