可以将 ASP.NET 编译为机器代码吗?

问题描述 投票:0回答:7

是否可以将 ASP.NET Web 应用程序编译为机器语言?如果是这样,有什么性能优势吗?

asp.net .net
7个回答
7
投票

是的,你可以:NGen.exe

这里是关于 NGen 和 ASP.NET 的 Stackoverflow 讨论


4
投票

你可以(正如查尔斯在他的回答中所表明的那样),但这样做并没有真正的优势。当用户第一次从您的网站请求某些内容时,IL 代码会编译为字节代码。这称为“及时”编译。执行此步骤后,您网站的两个版本将具有相同的性能。


2
投票

最后,ASP.NET 应用程序(无论是“ASP.NET Web 应用程序”还是“ASP.NET 网站”)被编译为 IL,然后当使用该 IL 片段时,它会被进一步透明地编译为机器代码通过 .NET 运行时 (CLR)。

性能优势...就在那里:)它比解释型网站等运行得更快。

但是,如果您打算将其程序集 (DLL) 编译为本机格式,以便无法对其进行反汇编,则有一些商业工具可用于混淆和 IL/本机代码替换。


2
投票

虽然实际上可以使用 www.xenocode.com 等工具从 .net 项目构建后生成 .net 独立的可执行文件,但我不知道这是否适用于 ASP.NET 项目,我也怀疑是否会出现这种情况。首次加载任何资源后是否有真正的性能优势。


2
投票

如果我没记错的话是可以这样做的。然而,除了学术目的之外,你不应该追求这个想法。没有显着的速度增益。

当您编译 EXE 时,它会被编译为 CIL(通用中间语言)。这是一种独立于平台的格式。当您第一次启动 EXE 时,.NET 框架会将该 EXE 编译为运行应用程序的特定计算机的机器代码。然后将结果缓存起来。这样,只有第一次启动会慢一点,但后续启动会更快。

如果您想要提高速度,特别是对于 Web 应用程序,请投入时间来识别应用程序中的瓶颈,例如数据库查询等。此外,请查看可以在哪里应用缓存。这些是提高性能的更好方法。


0
投票

这只是我,没有考虑太多。

Web 应用程序需要 Web 服务器才能运行,并且 Web 服务器不读取机器代码,而操作系统会读取机器代码,您可能会认为在 Windows 环境中...

但是,话又说回来...... EXE 已经是机器代码,由 .NET Framework 编译和转换......

所以...o.O


0
投票

Mono支持AOT编译(编译为机器代码);但您仍然需要保留一些程序集信息,并且其使用存在限制。

请参阅 http://www.mono-project.com/AOT 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.