Todo lo anterior es probablemente cierto. Sin embargo, el factor más importante que afectó el rendimiento en el sitio ASP.NET en el que trabajé fue que todo lo relacionado con él era antiguo. La versión de .NET Framework, los servidores, la infraestructura de la base de datos y el código en sí estaban envejeciendo mal.
Sospecho que muchos sitios ASP.NET tienden a ser sitios corporativos. Estos no reciben mucho amor, ya que tienden a funcionar . La gente no los reescribe hasta que tienen que hacerlo, lo que a menudo es mucho tiempo en el futuro.
Sé que el sitio con el que trabajé que usaba ASP.NET obtuvo una gran velocidad con solo pasar a la versión más reciente del marco, que tenía JITing mucho más eficiente y valores predeterminados de almacenamiento en caché.
La otra cosa que he visto es que muchos sitios ASP.NET no saben cómo escalar correctamente. No tienen una configuración de equilibrio de carga adecuada porque diseñar su sitio para que funcione correctamente con jardines web no es común ni está bien documentado en la comunidad. Si no diseña su sitio para huertos web desde el principio, no puede usar el mecanismo de escalabilidad incorporado que tiene IIS. El equilibrio de carga de software con Windows NLB no es muy común y es complejo de administrar. (Esto se remonta al hecho de que ASP.NET tiende a ser un software corporativo, y tiende a ser administrado por la compañía que ejecuta el sitio en lugar de los profesionales de TI que saben cómo configurar estas cosas correctamente).
El equilibrio de carga de hardware con F5 es muy costoso, pero parece ser el mecanismo más común y simple para escalar los sitios ASP.NET dentro de las redes corporativas. Creo que entre la multitud de código abierto, la expectativa es que incorpore el equilibrio de carga desde el principio utilizando herramientas de código abierto disponibles de forma gratuita que se escalan automáticamente en función del uso. Esto no es común en el mundo ASP.NET por lo que he visto.