Как я могу сериализовать обработку веб-службы .net? - PullRequest
0 голосов
/ 12 апреля 2011

Я планирую использовать веб-сервис .net для пакетной обработки записей базы данных. Запросы веб-службы поступают из хранимой процедуры SQL Server, которая вызывается агентом SQL Server каждую минуту. Я хочу, чтобы за один раз запускался только один пакет, потому что весь смысл в том, чтобы избежать перегрузки сервера.

Есть ли хороший способ сериализации запросов или, возможно, отклонения запросов, если они уже выполняются?

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

Есть мысли?

Ура, Ян.

1 Ответ

1 голос
/ 12 апреля 2011

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

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

...