Вот вариант, но он не будет красивым.
Звучит так, как будто вам необходимо связать долгоживущий объект (объект с состоянием с вашим внутренним уровнем) с отдельными пользователями.
Вы могли бы сохранить этот объект в состоянии приложения и связать его с состоянием сеанса пользователя с помощью ключа.Вы должны предоставить упаковку, чтобы отслеживать их все.Когда сеанс умирает, вы можете захватить событие и уничтожить объект бэкэнда.
Состояние приложения - это хранилище ключей / значений, так же как и Session.Вы можете получить доступ через HttpContext.Application
. Большим недостатком этого является то, что объекты, которые вы помещаете туда, остаются там до тех пор, пока вы их не уничтожите, поэтому ваш код-оболочка и разрушающий сессию код должны быть на месте.Кроме этого, это может быть быстрый способ начать работу.
Как я уже сказал, это не будет оптимальным, но, вероятно, будет работать.
Подробнее о последствиях:http://msdn.microsoft.com/en-us/library/bf9xhdz4(VS.71).aspx
РЕДАКТИРОВАТЬ:
Вы также можете сделать эту работу в среде веб-фермы.Сохраните информацию, необходимую для воссоздания вашего унаследованного объекта с сохранением состояния в состоянии сеанса, которое может быть разделено между компьютерами с помощью встроенного поставщика SQL.Если пользователь подключается к серверу, на котором объект не существует, ваша оболочка состояния приложения может просто воссоздать его из информации о состоянии сеанса.
Это просто оставляет способ очистки объекта с состоянием на серверах, где он не существует.Т нужно.В вашей поисковой оболочке обновляйте хеш-таблицу или что-то с временем доступа каждый раз, когда к данному объекту с состоянием обращаются.Выполните процедуру периодической очистки в th-обертке, чтобы уничтожить объекты с состоянием, к которым не был получен доступ, чуть больше значения времени ожидания сеанса вашего веб-приложения.