powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / web-сервис и race-conditions
1 сообщений из 1, страница 1 из 1
web-сервис и race-conditions
    #36060884
the_flow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

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

Одновременные попытки нескольких операторов через web-сервис изменить файловую информацию о клиенте (переместить файлы, изменить название, удалить, перезаписать) чреваты рассинхронизацией каталога.

Я бы хотел повесить lock на выполнение операций, связанных с файловыми данными каждого конкретного клиента. Что вы думаете примерно о такой архитектуре решения:

WebMethodA (clientId, ... )
{
lock (LockManager.Current.GetCriticalSection(clientId))
{
// выполняю операцию "A" над данными clientId
}
}

WebMethodB (clientId, ...)
{
lock (LockManager.Current.GetCriticalSection(clientId))
{
// выполняю операцию "B" над данными clientId
}
}

-----------------

class LockManager
{
static LockManager Current { get; private set; }
static LockManager()
{
Current = new LockManager();
}

object GetCrititcalSection (clientId)
{
lock (this)
{
if (!_cs.Contains(clientId))
_cs.Add(clientId, new object());

return _cs[clientId]
}
}

Dictionary<id, object> _cs = new ... ;
}

Заранее спасибо!
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / web-сервис и race-conditions
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]