Веб-приложение и состояние в памяти - PullRequest
2 голосов
/ 03 марта 2011

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

Насколько я знаю, я не могу полагаться на оперативную память, потому что перезапуск очистит мое состояние. Единственное решение, которое я нашел, - это создание стандартного приложения (или службы Windows), мониторинг которого будет осуществляться через NamedPipe, в котором будет храниться вся информация. (Для надежности я также реализую пользовательский цикл, в котором первый процесс завершается только после того, как все группы пользователей завершили свои действия).

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

Спасибо.

1 Ответ

0 голосов
/ 03 марта 2011

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

Но вы сказали, что не можете использовать базу данных, и она должна быть в памяти. Первой моей мыслью было сделать что-то похожее на то, что вы описали (с помощью отдельного приложения на сервере, к которому веб-приложение обращается). Вы также можете достичь своей цели, используя кэш, но я не уверен на 100% в этом. http://msdn.microsoft.com/en-us/library/ms972379.aspx - Кэширование статьи

О, идея! Создайте временный XML-файл на сервере для отслеживания каждого из этих многопользовательских сеансов и загрузки / разбора при каждом запросе. Но все же, это не в памяти, так что, может быть, это не хорошо.

Жизненный цикл HttpApplication не распространяется на нескольких пользователей. Меня не смущает объект HttpApplicationState:

[Эта статья] (http://msdn.microsoft.com/en-us/library/ms972109.aspx) говорит, что оно распространяется на каждого пользователя приложения. По сути, это словарь.

Я также думаю, что вам может пригодиться обзор жизненного цикла приложения ASP.NET. Статья, которую я использую для справки: http://msdn.microsoft.com/en-us/library/ms178473.aspx. Удачи, и дайте нам знать, что вы в конечном итоге делаете

...