Используйте кусок кода критической секции, чтобы управлять потоком по одной через секцию кода. Вы можете сделать это, используя оператор lock
или быть немного более хардкорным и используя мьютекс напрямую. Это гарантирует, что вы будете возвращать разные номера каждому абоненту.
Что касается хранения, использование базы данных является излишним для возврата автоматически увеличивающегося числа - хотя SQLServer и Oracle (и, скорее всего, другие, но я не могу говорить за них) оба предоставляют функцию автоматического увеличения ключей, так что вы могли Вызванный веб-сервис генерирует новую запись в таблице базы данных, возвращает ключ, и вызывающий абонент может использовать этот номер в качестве ключа для этой записи (если вы сохраняете больше данных позже после первоначального вызова). Таким образом, вы также позволяете базе данных беспокоиться о генерации уникальных чисел, вам не нужно беспокоиться о деталях - хотя это не очень хороший вариант, если у вас еще нет базы данных.
Другой вариант - сохранить его в локальном файле, хотя это будет дорого прочитать файл, увеличить его число и записать обратно в критическую секцию.