Параллельное использование ASP.NET - PullRequest
1 голос
/ 24 марта 2009

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

  • Существуют ли передовые практики по этой теме
  • Документация
  • Примеры
  • «худшие практики ...» или вещи, которые вы видели, которые могут привести к катастрофе ...?

Мне любопытно, например, о синглетах (даже если они считаются плохой практикой - не начинайте обсуждение этого), статических функциях (вам нужно следить здесь?), ...?

Ответы [ 2 ]

2 голосов
/ 24 марта 2009

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

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

0 голосов
/ 24 марта 2009

Одной из огромных проблем, которая доставила нам много горя, было использование модулей и классов в нашем основном веб-сервисе. Это было до того, как мы действительно узнали, что мы делаем, и с тех пор было исправлено.

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

Это не было поймано в тестировании и было трудно воспроизвести, пока мы не выяснили, как правильно загрузить тестирование наших веб-сервисов. Потребовалось около 10-20 запросов в секунду, прежде чем мы смогли точно воспроизвести его.

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

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