Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在传递到Web服务之前对Web请求进行排队_Asp.net_Multithreading_C# 4.0_Queue_Msmq - Fatal编程技术网

Asp.net 在传递到Web服务之前对Web请求进行排队

Asp.net 在传递到Web服务之前对Web请求进行排队,asp.net,multithreading,c#-4.0,queue,msmq,Asp.net,Multithreading,C# 4.0,Queue,Msmq,我有一个在线评估应用程序,在登录和提交测试期间,大量点击,当CPU使用率为100%时,服务器无法处理所有请求,许多请求全部丢失,我想对所有请求进行排队,并在一段时间内逐个发送,这样请求就不会丢失,并在服务器后端处理所有请求我认为您的问题在于您正在处理两种截然不同的请求-登录和考试结果,而您正试图通过相同的渠道处理它们 这两个请求具有非常不同的特征: 登录请求很小 考试成绩要求很高 登录请求需要是实时的 考试结果请求不需要实时处理 登录请求涉及用户和安全(从业务角度) 考试申请处理问题和答案(从

我有一个在线评估应用程序,在登录和提交测试期间,大量点击,当CPU使用率为100%时,服务器无法处理所有请求,许多请求全部丢失,我想对所有请求进行排队,并在一段时间内逐个发送,这样请求就不会丢失,并在服务器后端处理所有请求

我认为您的问题在于您正在处理两种截然不同的请求-登录和考试结果,而您正试图通过相同的渠道处理它们

这两个请求具有非常不同的特征:

  • 登录请求很小
  • 考试成绩要求很高
  • 登录请求需要是实时的
  • 考试结果请求不需要实时处理
  • 登录请求涉及用户和安全(从业务角度)
  • 考试申请处理问题和答案(从商业角度)
从逻辑上讲,它们是如此的不同,以至于您在单个通道中拥有的是两个不同的服务(即使当前它们被捆绑在一起)。他们几乎没有共同之处

我会认真考虑把单通道分成两个通道,并在两个不同的服务器上理想地运行它们。此外,我会将入站队列添加到考试结果频道。这将有很多好处:

  • 登录请求不太可能超时,因为您已经消除了并发处理考试结果的可能性
  • 自然限制考试结果请求(通过队列)
  • 分离两个服务之间的依赖关系
  • 更高的系统稳定性、更低的支持成本、更低的拥有成本
  • 因为你的服务是如此的不同,这将使你更容易做到这一点。您应该能够轻松地分离代码库。您可以使用MSMQ(可能通过WCF netMsmqBinding)来处理请求队列


    希望这对您有所帮助。

    我认为您的问题在于,您正在处理两种截然不同的请求—登录和考试结果,并且您正试图通过相同的渠道处理它们

    这两个请求具有非常不同的特征:

    • 登录请求很小
    • 考试成绩要求很高
    • 登录请求需要是实时的
    • 考试结果请求不需要实时处理
    • 登录请求涉及用户和安全(从业务角度)
    • 考试申请处理问题和答案(从商业角度)
    从逻辑上讲,它们是如此的不同,以至于您在单个通道中拥有的是两个不同的服务(即使当前它们被捆绑在一起)。他们几乎没有共同之处

    我会认真考虑把单通道分成两个通道,并在两个不同的服务器上理想地运行它们。此外,我会将入站队列添加到考试结果频道。这将有很多好处:

  • 登录请求不太可能超时,因为您已经消除了并发处理考试结果的可能性
  • 自然限制考试结果请求(通过队列)
  • 分离两个服务之间的依赖关系
  • 更高的系统稳定性、更低的支持成本、更低的拥有成本
  • 因为你的服务是如此的不同,这将使你更容易做到这一点。您应该能够轻松地分离代码库。您可以使用MSMQ(可能通过WCF netMsmqBinding)来处理请求队列


    希望这对您有所帮助。

    我在使用asp.net C#4.0时可能会考虑使用消息队列系统?这样您就不会丢失任何请求。@Fuji我是否可以发送请求,而不必考虑以前的请求是否已完成执行,在某个时间段内是否可以使用消息队列系统?我是否可以使用asp.net C#4.0来研究使用消息队列系统?这样您就不会丢失任何请求。@Fuji我是否可以发送请求,而不管以前的请求是否已完成执行,在某段时间内,使用消息队列系统发送请求?谢谢hugh,我的一些主机位于IIS 6.0上,并且IIS 6.0是否支持MSMQ?从IIS 7.0开始,MSMQ将支持搜索,有没有可能在IIS 6.0中实现MSMQ?Hi-Haneep-不确定是否支持IIS6。然而,我从来没有在IIS中托管msmq-虽然可以通过WAS,但我不喜欢它作为解决方案。您可以在windows服务中承载msmq服务,队列地址将保持不变,这将简化您的wen部署。谢谢hugh,我的一些主机位于IIS 6.0上,并且IIS 6.0?是否支持msmq,当msmq从IIS 7.0开始支持搜索时,有没有可能在IIS 6.0中实现MSMQ?Hi-Haneep-不确定是否支持IIS6。然而,我从来没有在IIS中托管msmq-虽然可以通过WAS,但我不喜欢它作为解决方案。您可以在windows服务中承载msmq服务,队列地址将保持不变,这将简化您的部署。