在 IIS 应用程序 (asp .net) 上使用任务/线程池

发布于 2024-11-24 06:36:47 字数 231 浏览 0 评论 0原文

我们在 iis 7 上有一个 asp.net 应用程序。我们需要创建一个异步进程来进行计算(使用 Web 服务)并且不让客户端等待,我们使用 ThreadPool 来做到这一点(我更喜欢任务,但我是服务器旁边的人)。
我的问题是:
1. 如果在 iis 上使用线程池,它是否从客户端或操作系统的 iis 池中获取线程?
2. 你会使用任务还是线程池(任务为你提供了更多我知道的信息,但 UI 人员喜欢线程池)。
坦克

We have an asp.net application on an iis 7. we need to create an async process to do calculating (using a web service) and not keeping the client waiting, we used ThreadPool to do that (i prefer Tasks but i am a server side guy).
My questions are :
1. if using a thread pool on iis does it take threads from the iis pool from clients or from the OS ?
2. What would you use Tasks or ThreadPool (Tasks give you much more i know but the UI guys like the pool).
Tanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

软糯酥胸 2024-12-01 06:36:47

ASP.NET 主机为每个进程提供一个线程池。因此,如果您使用ThreadPool,那么它将从用于服务器请求的同一个池中获取。

也就是说,如果您要启动独立于单个客户端请求的后台操作,那么您应该使用 Win32 服务、Web 服务、消息队列系统或类似的系统。在 ASP.NET 中运行“后台”线程违背了 IIS 的整个体系结构;如果您保持 HTTP 的无状态性质,那么正确扩展和执行其他 IT 工作(例如,重新启动应用程序池)就会容易得多。

The ASP.NET host provides a single thread pool per process. So if you're using ThreadPool, then it's taking from the same pool that is drawn from for server requests.

That said, if you're starting background operations that are independent from a single client request, then you should be using a Win32 service, web service, message queue system, or something similar. Running "background" threads in ASP.NET goes against the entire architecture of IIS; it's much easier to scale properly and do other IT work (e.g., restarting app pools) if you maintain the stateless nature of HTTP.

隔岸观火 2024-12-01 06:36:47

任务,仍然消耗线程池中的线程。

到目前为止,据我了解您的问题,第 3 方服务执行 CPU 密集型计算,您需要异步等待它完成。

如果您想推迟页面呈现,直到计算完成,异步页面会有所帮助。
这种方法将在等待时将处理线程返回到线程池。

您能否提供有关所需解决方案的更多详细信息,以获得更准确的答案?

Task, still consumes threads from thread pool.

As far, as I understood you question, 3rd party service performs CPU-heavy calculation, and you need asynchronously wait it to complete.

In case, if you want to postpone page rendering, until computation is complete, Async pages will help.
This approach will return processing thread to thread-pool, while waiting.

Could you provide more details about required solution, for more precise answer?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文