Проблема с хранилищем Azure заключается в том, что нет способа обеспечить атомарные операции, поэтому нет способа "напрямую" заблокировать ресурс. Я имею в виду, вы не можете выполнить это атомарно:
- Проверьте, не заблокирован ли.
- Если не заблокировано, заблокируйте.
- Fetch
- Если заблокировано, верните «Заблокировано, попробуйте позже»
Итак, вы можете попытаться установить флаг «заблокирован» в вашей сущности таблицы, но когда запрос возвращается, говоря «заблокирован», веб-ролик может заблокировать его. Конечно, вы не можете заблокировать сразу без проверки.
В BLOB-объектах Azure есть что-то, называемое "арендой", но они не менее одной минуты, и не очень подходят для веб-страниц, где каждая страница может писать и читать.
Поскольку невозможно заблокировать ресурсы, вы заканчиваете приложением, которое запускается, когда у вас очень мало пользователей ... если нет, то вы единственный: D. Но когда вы выполняете нагрузочный тест, вы видите много проблем с параллелизмом, связанных с ETag. Я попытался использовать поставщика сеанса и отказался от .
Примеры работают довольно аккуратно, но если вы разместите несколько веб-роликов параллельно и выполните какой-либо тест с высокой нагрузкой, вы увидите проблемы.