ASP.NET Web 窗体的优势之一就是增加动态编译后,您可以很轻松地更改 .aspx 页,保存更改时页面将动态更新,而不需要重新编译(只要不使用模块化代码)。但动态编译并不是对每个应用程序都适合,而且第一次访问某个应用程序时,动态编译会导致浏览器的初始性能降低。另外,很多时候您可能希望部署一个没有源代码的应用程序。如果您遇到上述情况,您会更高兴地了解到 ASP.NET Whidbey 具有支持预编译 Web 站点的功能。ASP.NET Whidbey 支持两种预编译模式:在位预编译和部署预编译。
在位预编译
在位预编译使您可以对 Web 站点中的所有页面进行手动批编译。这也是用户在您的应用程序中首次单击某个页面后发生的操作(前文提到的后一种情况除外),用户只需坐下来等待批编译完成。使用在位预编译有两个主要原因:首先,它可以避免第一次请求页面时批编译的性能降低;其次,它使您可以“先于”用户发现编译错误。
在位预编译也很容易实现,只需浏览到 Web 站点的根目录,添加特定的处理程序名称 precompile.axd(熟悉 ASP.NET 跟踪功能的用户会发现该名称与 trace.axd 处理程序的名称类似):
http://localhost/mywebsitename/precompile.axd
其中 mywebsitename 是您 Web 站点的名称。预编译站点之后,对站点内页面的请求也应随即完成,而不会有任何编译滞后。
部署预编译
第二种预编译模式使您可以创建整个 Web 站点的可执行版本,部署这种版本不需要任何源代码(包括 HTML 和其他静态文件)。因此,部署预编译可以防止别人随意访问由代码表示的知识产权信息。生成的程序集和 Stub 文件集可以通过 XCOPY、FTP、Windows 资源管理器等部署到生产服务器上。为了预编译站点以进行部署,ASP.NET Whidbey 提供了一个名为 aspnet_compiler.exe 的命令行实用程序。要在文件系统 Web 站点上调用 ASP.NET 预编译器,需要打开一个命令窗口,浏览到 .NET Framework 的安装位置(\Microsoft.NET\Framework\<版本>),然后输入以下命令: