您知道C#是一种编译语言。但是当我们开发web应用程序时,我们使用ASP.NET + C#,在这种情况下,我们可以说ASP.NET是编译的吗?
如果不编译ASP.NET,那么ASP.NET和C#在一起开发web应用程序时,会不会影响到ASP.NET的性能?
发布于 2011-06-16 16:12:59
是的,ASP.NET应用程序正在编译成IL并使用它运行。编译要么发生在第一次请求中(这就是为什么第一次请求比后续请求花费更长的时间),要么可以在部署时进行预编译。
例如,参见http://www.informit.com/articles/article.aspx?p=1073232
发布于 2011-06-16 16:12:23
如果您使用ASPX/ASCX文件的ASP.NET预编译,那么是的:我们可以说应用程序是编译的。
但是,如果不使用ASP.NET预编译,那么当第一次加载页面时,性能会受到影响,因为ASP.NET必须动态编译它。同样,缺少预编译意味着在调用web应用程序的特定组件之前,您可能不会捕捉到标记中的错误。
为了最大限度地提高性能和早期检测错误,您应该始终预编译ASP.NET web应用程序。
标记中有在运行时(而不是在编译时)绑定的组件,如ObjectDataSource控件,但这与编写C#代码以执行反射没有什么不同。
编译后的结果只能在您的代码(或ASP.NET框架)使用类型系统的特性时进行静态验证。破坏类型系统的代码(例如,通过后期绑定和反射)将运行得更慢,并引入编译器无法捕捉的错误。
发布于 2012-06-05 22:33:49
我假设您所指的是包含标记的实际.aspx页面的内容?
不直接编译.aspx页面。相反,在运行时,ASP.NET引擎根据该文件生成C#代码,将其放置在一个名为“临时ASP.NET文件”的文件夹中,然后编译该C#代码。因此,是的,它是汇编的。
在这篇文章中有一点是关于这一点的:https://stackoverflow.com/q/2374086/158483
您还可以启用预编译,以便在编译时已经进行此编译。但是,如果不启用预编译,则仍在编译。它只是在很久之后才被编译。
https://softwareengineering.stackexchange.com/questions/84518
复制相似问题