IIS7 Integrated vs Classic Pipeline - which uses more ASP.NET threads?
Asked Answered
D

2

22

With integrated pipeline, all requests are passed through ASP.NET, including images, CSS.

Whereas, in classic pipeline, only requests for ASPX pages are by default passed through ASP.NET.

Could integrated pipeline negatively affect thread usage?

Suppose I request 500 MB binary file from an IIS server:

  • With integrated pipeline, an ASP.NET worker thread would be used for the binary download (right?).
  • With classic pipeline, the request is served directly by IIS, so no ASP.NET thread is used.

To me, this favors classic pipeline, as I would like as many threads as possible to serve ASPX pages.

Am I completely off base here?

Datha answered 25/2, 2010 at 21:30 Comment(0)
N
13

If you look at machine.config, web.config and applicationHost.config in IIS 7, you can see that the way static content is served does not change when you switch between classic and integrated pipeline. The only thing that changes is whether requests mapped to asp.net pass through a managed module or the native ISAPI filter module.

The only thing that could affect performance is if you modify the default settings for authorization modules and any custom modules you've added to execute when handling requests for static content. And even here the overhead is probably negligible.

Therefore a more appropriate benchmark would be IIS 6 vs IIS 7, and I suspect IIS 7 would be the clear winner.

Nerissa answered 23/3, 2010 at 21:34 Comment(0)
O
0

I'd say you're right, but I' look at it from another perspective.

Do you need to process the requests for the non-ASPX pages ? For example, to log them, or to forbid the response if some condition is not met.

If you need this processing capability, use integrated pipeline. If you don't, use the classic pipeline.

Ozalid answered 25/2, 2010 at 22:47 Comment(5)
I need to serve static content: CSS, JS, JPG, PNG, etc. These (especially images) account for a greater percentage of bandwidth than the ASPX page content.Datha
But do you need any processing by .NET code for this static content ?Ozalid
No, but my assumption here is that using integrated pipeline will cause static content to be delivered by ASP.NET, rather than directly by IIS.Datha
This is the way I understand it, too, and what I was trying to explain in the answer :-) Use classic pipeline mode.Ozalid
in IIS7 asp.net and IIS is so combined that the statement "delivered by ASP.NET, rather than directly by IIS" doesnt make much sense anymore. In IIS6 IIS used an ISAPI module to forward the request to the asp.net runtime, while in IIS7 asp.net is a first class citizen and you don't have that overhead anymore. Like Chris Eldredge points out, regarding to static files there is no difference.Eloiseloisa

© 2022 - 2024 — McMap. All rights reserved.