我正在处理的应用程序中有一个swf,它展示了一个包含80个问题的测试。每个问题都通过WebORB和ASP.NET保存在SQL Server中。
如果候选人完成了测试,则需要验证会话。问题是有时会有350个候选人同时完成他们的测试,这时候Web服务器和SQL Server的CPU就会爆炸(即350个并发验证)。
现在,我该如何在这里实现排队?在数据库中,有一个表,其中每个会话都有一条记录。一列保存状态。1表示已完成,2表示已验证。
我可以通过两种方式来实现排队(据我所见,也许你有其他建议):
1. 一个进程检查具有状态1的记录的表。如果找到一个,则验证该会话。因此,会话一个接一个地进行验证。 2. 如果候选人完成其会话,则向MSMQ队列发送消息。另一个进程监听队列,并一个接一个地验证会话。
现在:
1. 哪种方法是最好的? 2. 您从哪里开始验证会话的过程?在您的global.asax(application_start)中?作为Windows服务?作为在application_start中启动的网站根目录中的exe?
对我来说,使用表格并查找具有状态1的记录似乎是最简单的方法。
如果候选人完成了测试,则需要验证会话。问题是有时会有350个候选人同时完成他们的测试,这时候Web服务器和SQL Server的CPU就会爆炸(即350个并发验证)。
现在,我该如何在这里实现排队?在数据库中,有一个表,其中每个会话都有一条记录。一列保存状态。1表示已完成,2表示已验证。
我可以通过两种方式来实现排队(据我所见,也许你有其他建议):
1. 一个进程检查具有状态1的记录的表。如果找到一个,则验证该会话。因此,会话一个接一个地进行验证。 2. 如果候选人完成其会话,则向MSMQ队列发送消息。另一个进程监听队列,并一个接一个地验证会话。
现在:
1. 哪种方法是最好的? 2. 您从哪里开始验证会话的过程?在您的global.asax(application_start)中?作为Windows服务?作为在application_start中启动的网站根目录中的exe?
对我来说,使用表格并查找具有状态1的记录似乎是最简单的方法。