Нужно ли заботиться о безопасности потоков в ASP.NET с AJAX? - PullRequest
7 голосов
/ 17 декабря 2010

Вопрос в том, возможно ли, чтобы запросы на один и тот же сеанс выполнялись из нескольких потоков? Являются ли методы в ASP.NET реентерабельными? Особенно мы используем AJAX, что означает, что асинхронные запросы выполняются.

Будет ли это означать наложение блокировок на операции над объектами, размещенными в сеансе?

Я знаю, что блокировки необходимы при обработке статических и прикладных переменных, но вопрос такой же, как и для объектов сеанса?

Ответы [ 2 ]

3 голосов
/ 17 декабря 2010

ASP.NET обычно использует один поток на запрос. Он может использовать более одного потока, например, при обслуживании асинхронных страниц , но даже тогда только один поток будет обрабатывать запрос в любой момент времени.

Однако безопасно использовать состояние сеанса из нескольких потоков, поскольку доступ к объекту сеанса сериализуется. От MSDN :

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

2 голосов
/ 17 декабря 2010

Вопрос в том, возможно ли, чтобы запросы на один и тот же сеанс выполнялись из нескольких потоков?

Если вы используете HTTP-сессию на своей странице, запросы на этот же сеанс будут помещаться в очередь механизмом ASP.NET. Они никогда не будут работать параллельно. Например, если вы отправляете несколько запросов AJAX на страницу ASP.NET, которая использует сеанс, эти запросы будут выполняться последовательно.

Если вы не используете Session, то несколько параллельных запросов будут выполняться параллельно.

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