Using tasks/ ThreadPool on IIS application (asp .n

2020-02-11 12:09发布

问题:

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

回答1:

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.



回答2:

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?