【发布时间】:2011-01-30 18:00:55
【问题描述】:
我正在处理的应用程序的一部分是一个 swf,它显示了一个包含大约 80 个问题的测试。每个问题都通过 WebORB 和 ASP.NET 保存在 SQL Server 中。
如果候选人完成了测试,则需要验证会话。问题是有时 350 名考生同时完成测试,Web 服务器和 SQL Server 上的 CPU 会爆炸(同时进行 350 次验证)。
现在,我应该如何在这里实现排队?在数据库中,有一个表,其中包含每个会话的记录。一列保存状态。 1 已完成,2 已验证。
我可以通过两种方式实现排队(在我看来,也许你还有其他提议):
- 检查表中状态为 1 的记录的进程。如果找到,则验证会话。因此,会一个接一个地验证会话。
- 如果候选人完成其会话,则会向 MSMQ 队列发送一条消息。另一个进程监听队列并一个接一个地验证会话。
现在:
- 最好的方法是什么?
- 从哪里开始验证会话的过程?在您的 global.asax (application_start) 中?作为 Windows 服务?作为在 application_start 中启动的网站根目录上的 exe?
对我来说,使用表格并查找状态为 1 的记录似乎是最简单的方法。
【问题讨论】:
标签: asp.net sql-server queue msmq message-queue