Как, где хранить объекты в разных областях в Asp.net 2.0
-
08-07-2019 - |
Вопрос
нужно попросить вас о помощи.
У меня запущено веб-приложение в Net 2.0.
Я хочу спросить, какое хранилище (кеш, сессия, файл) я должен использовать для своих объектов, поскольку они имеют разную область использования. Можно разделить на несколько групп:
1) объекты, связанные непосредственно с посетителем (например, сведения о посетителе, полученные после аутентификации)
2) объекты, которые используются для каждого посетителя, поэтому сфера его применения (некоторые исходные данные, общие данные)
Большинство этих объектов получают данные из веб-службы, что дорого.
Итак, какой мой лучший выбор, учитывая скорость, память, доступность и что еще я должен посмотреть.
Любая помощь приветствуется. Спасибо, Х.
Решение
Объекты, связанные непосредственно с посетителем, должны храниться в Session
, хотя чрезмерное использование Session
и многих пользователей может привести к проблемам с масштабируемостью.
Объекты, которые являются общими для каждого посетителя, должны храниться в Cache
, поэтому они будут выходить за рамки, если к ним не часто обращаются, чтобы можно было восстановить память (не говоря уже о добавлен стимул зависимостей). В тех случаях, когда вы знаете, что объект должен быть доступен немедленно, независимо от того, сколько времени прошло с момента последнего обращения к нему, вы должны сохранить этот объект в Application
.
Другие советы
Элемент 1. Сеанс, скорее всего, будет наилучшим, поскольку он предназначен для каждого пользователя, однако обязательно ограничьте количество элементов в нем, так как существуют проблемы с масштабированием и соображения, касающиеся веб-фермы.
Элемент 2. В зависимости от того, что вам нужно, это будет элемент кэша или уровня приложения, который вы хотите добавить, в зависимости от необходимости истечения срока действия и т. д. Ключевое отличие заключается в том, что в кэше есть элементы срока действия и использования, которые могут его удалить, приложение для вещей, которые всегда остаются там.
В целом, в веб-приложении я настоятельно рекомендую файлы ПРОТИВ, так как вам придется беспокоиться о безопасности потоков.
Объекты, относящиеся к посетителю, должны храниться в сеансе. Это уникально для каждого посетителя, но, как правило, часто сбрасывается, это также плохо масштабируется при переходе в среду с несколькими серверами.
Объекты, относящиеся к приложению в целом, должны храниться в кэше ASP.NET.