0

我有一个允许一组学生预订“房间”的 asp.net 应用程序。每个房间都设置有自己的交换帐户,因此当学生预订房间时,会拨打 EWS 电话以在日历上创建约会。使用 jquery,我们显示开放时间段,以便学生只能预订可用时间。

在经历了同一时段的高流量和竞争之后,我不得不解决同时预订问题。我的想法是我可以暂停主线程,拨打电话以查找我刚刚进行的预订,从房间验证接受,将“已确认约会”返回给接受的用户,并将“拒绝约会”返回给接受的用户得到了下降。我发现部分成功是因为 EWS 在每次都返回响应时并不可靠。有时用户会收到未知的回复,而房间会通过电子邮件接受约会。该应用程序因 EWS 的响应而生死攸关,似乎在高流量和大量同时交易的情况下,EWS 无法响应我的呼叫。有趣的是,尽管所有其他流量很少的部门都喜欢这个应用程序,而且它对他们很有用:(

我的想法是我需要排队我的 EWS 呼叫。

谁能给我一些关于管理相同/不同资源和时间的 EWS 同时呼叫的指导?

有没有人排队过 EWS 用户事务(创建约会、确认约会和在条件调用时删除约会)?

4

1 回答 1

2

据我所知,没有办法在 EWS 中本地排队请求。您最好的选择可能是在您的服务器上使用某种形式的锁定来确保一次只执行一个请求。

或者,您可以利用 .NET 中的任务功能并以这种方式排列命令。使用LimitedConcurrencyLevelTaskSchedulerwill 意味着您可以限制正在执行的请求的数量。如果您发现一次可以处理 3 个请求,它还允许您进行配置。可以在此处找到更多详细信息和代码示例。

您必须记住,如果应用程序池因任何原因被回收,任何排队的请求都将不复存在。

于 2013-09-15T23:08:12.823 回答