Web Service返回唯一的自动递增的人类可读ID号

时间:2010-03-22 12:05:19

标签: web-services uniqueidentifier increment

我正在寻找创建一个简单的Web服务,在轮询时返回一个唯一的id。 ID必须是人类可读的(即不是guid,可能是000023格式),并且每次调用时都会增加1。

现在我需要考虑它可能同时被两个不同的应用程序调用,我不希望它为每个应用程序返回相同的数字。

除了使用数据库存储当前号码之外还有其他选择吗?

以前这已经完成了,如果有的话,任何人都可以指点我的源代码。

谢谢,

尼尔

2 个答案:

答案 0 :(得分:1)

使用关键部分代码段通过一段代码一次控制一个流程。您可以使用lock statement或稍微更硬一点并直接使用互斥锁来执行此操作。这样做可确保您为每个呼叫者返回不同的号码。

至于存储它,使用数据库对于返回自动递增的数字来说是过度的 - 尽管SQLServer和Oracle(很可能是其他人但我不能说它们)都提供了自动递增键功能,所以你可以拥有调用的Web服务,在数据库表中生成一个新条目,返回密钥,调用者可以使用该数字作为返回该记录的密钥(如果您在初始调用后保存更多数据)。这样你也让数据库担心生成唯一数字,你不必担心它的细节 - 虽然如果你还没有数据库,这不是一个好的选择。

另一种选择是将它存储在本地文件中,尽管读取文件,增加数量并将其写回来都很昂贵,所有这些都在关键部分内。

答案 1 :(得分:0)

您可以使用文件。

伪代码:

if (!locked('counter.txt'))
   counter = read('counter.txt')
else
   wait
   startAgain
lock('counter.txt')
counter++
print counter
write('counter.txt', counter)
unlock('counter.txt)