《圣殿祭司的ASP.NET4.0专家技术手册》----1-12 ASP.NET程序的编译模型

本节书摘来自异步社区《圣殿祭司的ASP.NET4.0专家技术手册》一书中的第1章,第12节,作者: 奚江华,译者: 武海军 , 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1-12 ASP.NET程序的编译模型

圣殿祭司的ASP.NET4.0专家技术手册
ASP.NET 4.0支持两种编译模型:动态编译(Dynamic Compilation)与预编译(Precompilation),让你来决定不同网站何时该用何种编译模型,不但灵活性提升,且若采用预编译网站,执行性能还可以更高。

1-12-1 ASP.NET网站动态编译

动态编译是用户第一次浏览网站时,ASP.NET会将网站程序编译成一个dll组件文件,后续的请求就会以此组件来响应,而编译过后的网站执行性能明显较未编译网站快上许多。

范例1-6 动态编译的证明
在此,示范程序若发生变动,则动态编译模型检测到变动,就会重新进行编译,而以新的内容响应请求,请参考DynamicCompilation.aspx程序,具体步骤如下。

在Page_Load中建立一行显示消息程序:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("ASP.NET动态编译Ver 1.0");
}

执行DynamicCompilation.aspx程序,结果如图1-39所示。

在不关闭浏览器的情况下,在Visual Studio中直接修改源程序,将原先的“ver 1.0”改为“ver 2.0”,然后保存,如图1-40所示。

Response.Write("ASP.NET动态编译Ver 2.0");


72310d44960de3075e12d3d786b00963ef28900d

最后重新整理浏览器,在Refresh的一瞬间,可感觉到浏览器会稍微停顿一下,是因为系统检测到源文件有变动,故重新进行动态编译的缘故,最终界面显示最新的文字信息,如图1-41所示。


33af10a787163eb2e3f6ed4e3756328814412b3c
1-12-2 ASP.NET网站预编译

预编译(Precompile)是使用“ASPNET_Compiler.exe”命令预编译整个网站,一般来讲,它有如下的好处:

节省网页第一次编译的时间。动态编译的虽然有效加速ASP.NET网站整体性能,但许多用户或不明究里的初学者却抱怨第一次执行感觉好慢,而预编译连第一次编译的等待工作都省掉了。


94b0e3dfcb2f4f04e7fe7ea398f6faa95eefe355

(2)保护网页程序代码知识产权。动态编译可将Code-Behind程序编译进dll中,但是,若是以In-Line Code或HTML卷标开发的程序则是一点保护作用也没有;此外即便用Code-Behind模式开发Web应用程序,仍然会有许多标签曝露在.aspx中,例如,SqlDataSource连SQL命令都会显示在HTML之中。故通过预编译不但可将程序代码编译进去,甚至连.aspx网页中的HTML标签也可以一并编译,对于程序代码的保护多了一层保障。

而以下是微软对于预编译好处的说法。

(1)由于页面和程序代码文件不需在第一次要求时编译,因此用户可得到更快的响应时间,这对于经常更新的大型网站特别有用。

(2)用户浏览网页之前,识别编译时期错误的方法。

(3)不需源代码,即可建立可部署到实际执行服务器已编译网站版本的能力。

范例1-7 使用aspnet_compiler.exe预编译
那到底“ASPNET_Compiler.exe”指令该怎么用呢?例如,在IIS有一个虚拟目录网站“VS2010IDE”,在此要将它进行预编译,具体步骤如下。

在Windows的开始→Microsoft Visual Studio 2010→Visual Studio Tools下有一个“Visual Studio命令提示字符(2010)”,如图1-42所示。

执行以下预编译命令:

Aspnet_Compiler –v VS2010IDE c:\tmp\VS2010IDE -f
参数说明

“-v”是虚拟目录参数,“VS2010IDE”是虚拟目录名称,“c:tmpVS2010IDE”是指预编译后的程序文件的目的位置,「-f」是强制覆盖目标目录。

结果如图1-43所示。


cba91631fb97dc866008e531fc98fed212ada358

用资源管理器查看C:TmpVS2010IDE目录,里面只有.dll及.compiled两种类型的程序,完全看不到当初的C#源代码,如图1-44所示。


dad2548abdee81ec2bb1bcadee6865f7abcf42fd

将预编译后的VS2010IDE目录,复制到另一台正式网页服务器的C:Inetpubwwwroot目录下,再到IIS建立一个虚拟目录指向“C:InetpubwwwrootVS2010IDE”路径即可,这样就完成了网站部署。

警告 (1)aspnet_compiler.exe对于静态文件,如Web.config、文本文件、图片文件等不会
进行编译操作,而像数据库联机字符串请用aspnet_regiis.exe工具进行加密。

(2)网站预编译完成后,以后也不会触发重新动态编译,故请不要事后再加入新的.aspx
文件,那样不会有任何的作用。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值