预编译Web应用程序-ASP.NET


  本文标签:预编译Web应用程序 ASP.NET

  ASP.NET 1.x的开发人员常常听到用户抱怨首次调用应用程序的时候会碰到初始化延迟  。毕竟,初次请求会引发一个系列过程,包括运行库初始化、分析、把ASPX页面编译成中间语言、把方法即时编译成本地代码等等  。

  自从ASP.NET面市以来,开发人员一直都在要求(微软)出台一个解决办法,而ASP.NET 2.0利用预编译提供了一个有效的解决方案  。

  预编译Web应用程序

  在首次启动应用程序的时候,ASP.NET会动态地分析和编译所有的ASP.NET文件(aspx页面)  。运行环境要对编译的结果进行缓冲,以便更好地服务未来所有的请求  。

  在服务器重启或者Web服务器重启之后,第一次启动应用程序也意味着这一过程要重新开始  。而且,对应用程序任何文件的改变都会被系统检测到,而在文件发生改变之后首次运行应用程序也会让这一过程再次发生  。

  很多Web开发人员都很讨厌这种初始化延迟  。而预编译通过(预先)编译应用程序避免了这种延迟  。

  命令行

  通过安装在.NET框架2.0里的aspnet_compiler.exe程序就能够启动预编译  。它位于框架安装目录下(版本号会根据安装的框架的版本而有所不同)  。下面就是这个程序默认的路径:

  C:< windows base directory>Microsoft.NET

  Frameworkv2.0.5072aspnet_compiler.exe

  您可以用-?这个命令参数查看该程序的所有参数列表,下面我就解释一下一些可用的参数:

  m:这个参数表示您将使用完整的、应用程序将被预编译的IIS元数据库路径  。IIS元数据库的路径是/LM/W3SVC/1/Root/应用程序名  。

  v:使用需要预编译Web应用程序的虚拟IIS路径  。虚拟路径的格式是:/应用程序名  。

  p:使用需要预编译Web应用程序的物理IIS路径  。它是包括驱动器名和指向应用程序目录的完整路径  。举个例子c:inetpubwwwroot应用程序名  。v这个参数必须和p一起用,所以编译器能够解析任何应用程序的根参考  。

  f:表示目标目录是否要被覆盖  。

  u:用来设置预编译完的应用程序是可以更新的  。这表示所有的标记文件(ASPX、ASCX等等)都可以在目标目录里进行更新  。

  targetDir:用于预编译应用程序文件的目标目录  。下面的命令用虚拟路径和指定的目标路径预编译了一个应用程序:aspnet_compiler.exe –v /应用程序名 c:目标目录名  。

  如果没有指定目标目录,那么结果文件会被放在ASP.NET的临时文件目录里,就像在ASP.NET运行库在首次调用应用程序的时候处理编译一样  。临时目录默认的路径如下:

  c:WindowsMicrosoft.NETFramework

  v2.0.50727Temporary ASP.NET Files应用程序名

  预编译另外一个好处是能够捕捉在应用程序启动阶段发生的任何错误  。错误会显示在工具里,但是不会终止编译过程  。