使用Asp.net 3.5的多线程与单线程

时间:2011-09-23 02:59:13

标签: .net asp.net multithreading

我目前正在使用Web应用程序,它有一个使用.net类实现的自定义工作流程。在该工作流程中,我们会根据某些业务逻辑更新一些数据库值并向用户发送电子邮件。

系统有400个并发用户和10000个用户群,用户也可以创建最多52个购买请求行的购买请求。此应用程序中的平均购买请求数据加载是10分钟内的10 -15购买请求。用户使用使用ASP.net 3.5实现的Web应用程序执行某些操作,并且基于用户输入将需要执行工作流程。

我的问题是由于我们的工作负担,

我们尝试在除UI线程之外的单独线程中执行工作流。在同一个UI线程上运行或工作流是一个很好的决定吗?

2 个答案:

答案 0 :(得分:2)

上次我不得不在类似的场景中工作时,我们实际上将工作流程视为与UI完全分离的应用程序。我们这样做的原因是因为如果UI上的某些内容失败,它不会影响我们的工作流程,反之亦然。单独的应用程序也是多线程的。经过一些工作,我被赶出了项目,但我知道我的同事做了更多的工作,他甚至添加了几个额外的控制台应用程序同时工作。你永远不能太小心。

答案 1 :(得分:2)

在处理Web应用程序时,您必须牢记线程是“这项任务需要很长时间才能完成”。如果不是,则没有理由剥离线程。线程不会神奇地使你的应用程序更快地运行,特别是如果你只需要等待结果。

如果工作确实需要花费大量时间,那么转到后台线程将允许回收IIS工作进程并接受新的传入请求。

关闭更多线程实际上可能会对系统造成更多负载,因为您现在正在激活2倍的线程,每个线程都有自己的堆栈和其他资源。只有从中获得实际收益才有意义。