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

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");

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

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

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

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

(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:\tmp\VS2010IDE”是指预编译后的程序文件的目的位置,「-f」是强制覆盖目标目录。

结果如图1-43所示。

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

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

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

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

时间: 2024-10-30 01:29:04

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

《圣殿祭司的ASP.NET4.0专家技术手册》----1-2 .NET 4.0平台新功能概览

1-2 .NET 4.0平台新功能概览 圣殿祭司的ASP.NET4.0专家技术手册 .NET平台版本从1.0.1.1.2.0.3.0.3.5不断演进.最新4.0版的重要改进如下: NET Framework 4.0 Visual C# 2010 Visual Basic 2010 Visual F# 2010(或F# 2.0) 新的CLR 4.0运行时 DLR动态语言运行时(Dynamic Language Runtime) ASP.NET 4.0 ASP.NET MVC 2.0(最新版为4.0

《圣殿祭司的ASP.NET4.0专家技术手册》----1-3 ASP.NET 4.0技术概览

1-3 ASP.NET 4.0技术概览 圣殿祭司的ASP.NET4.0专家技术手册 1-3 ASP.NET 4.0技术概览ASP.NET 4.0技术概览 ASP.NET 4.0是在ASP.NET 2.0及3.5基础上,添加了一些新技术,一方面保持适当幅度创新,另一方面也保持对旧版本的兼容与延续性.例如,图表控件的内建.Silverlight 5.ASP.NET AJAX 4.0.jQuery.C# 4.0.VB 10.F#.IronPython.IronRuby.LINQ.Entity Fram

《圣殿祭司的ASP.NET4.0专家技术手册》----2-9 集合初始化程序

2-9 集合初始化程序 圣殿祭司的ASP.NET4.0专家技术手册集合初始化程序(Collection Initializer)与上一节的对象初始化程序很像,只不过集合初始化程序的对象是集合类,且是实现IEnumerable功能的集合. 而使用集合初始化程序来初始化集合,究竟有什么好处?好处是较传统语法精简快速. 范例2-6 集合初始化程序的应用在此将建立List集合,而集合element成员为模特的名字,且看传统泛型List集合语法相较C# 3.0集合初始化程序的差异及精简程度,请参考Coll

《圣殿祭司的ASP.NET4.0专家技术手册》----1-1 ASP.NET平台的三分天下

1-1 ASP.NET平台的三分天下 圣殿祭司的ASP.NET4.0专家技术手册 如果访问微软www.asp.net网站,会发现ASP.NET技术目前有3位成员:Web Form.MVC和Web Pages,如图1-1所示.它们各有不同的定位与特色,彼此的开发方式也不相同.目前,使用人数与市场占有率最高的仍是Web Form,而MVC近两年有不少技术玩家和项目采用,至于Web Pages,则是另外的Web Matrix开发工具预定的网页开发技术,它走更易于使用的开发路线. 你心里可能有疑问:"为

《圣殿祭司的ASP.NET4.0专家技术手册》---- 1-6 VS 2010 SP1安装与三个扩展管理工具

1-6 VS 2010 SP1安装与三个扩展管理工具 圣殿祭司的ASP.NET4.0专家技术手册 2011年3月,微软推出VS 2010 SP1软件补丁,里面包含许多新功能与问题修正,其中与Web开发相关新功能有: IIS 7.5 Express精简版网页服务器的支持(IIS 7.5 Express需额外下载安装): SQL Server CE 4.0的支持(SQL Server CE 4.0需额外下载安装): Razor语法支持: 可部署的依赖性支持(Deployable dependenci

《圣殿祭司的ASP.NET4.0专家技术手册》----2-4 DLR动态执行环境

2-4 DLR动态执行环境 圣殿祭司的ASP.NET4.0专家技术手册 在.NET 4.0平台下有3个重要动态角色:①dynamic动态类型.②IronPython与IronRuby动态语言.③DLR(Dynamic Language Runtime)动态执行环境,前两者之所以能够存在,在于DLR的创建,DLR克服了原本.NET平台无法支持动态语言的限制,在DLR基础架构的支持下,便能衍生出动态类型.动态语言的诸多应用,如图2-2所示. 微软列举DLR的好处有: 简化将动态语言移植到.NET F

《圣殿祭司的ASP.NET4.0专家技术手册》----2-3 C# 4.0静态基础融入动态能力

2-3 C# 4.0静态基础融入动态能力 圣殿祭司的ASP.NET4.0专家技术手册 在了解静态与动态语言后,大家直觉上可能会以为这是二元的对立,非黑即白,不是静态语言,就是动态语言.但您是否想过静态和动态之间是可以兼具或混合的可能性?例如,静态语言为获取动态语言优点,而融入了一些动态语言的功能,然后又保持静态语言的优势,如类型安全.优化.高效率. 是的,.NET 4.0正是以这个方向去改造,在原本C#.VB静态语言基础上,加上动态语言的一些特性与优势,这样就达到以静态为主,动态为辅之目的,让C

《圣殿祭司的ASP.NET4.0专家技术手册》----1-8 .NET 4.0内建的图表控件

1-8 .NET 4.0内建的图表控件 圣殿祭司的ASP.NET4.0专家技术手册 以往ASP.NET 3.5要使用图表控件,必须再另外下载安装,但到了.NET 4.0,图表控件已变成内建,在ASP.NET 4.0项目中就可以直接使用,如图1-17所示,省去了很多麻烦. .NET 4.0图表控件联机帮助文件: http://msdn.microsoft.com/zh-tw/library/dd456632.aspx .NET 3.5图表控件范例程序: http://goo.gl/Pz4I1 .N

《圣殿祭司的ASP.NET4.0专家技术手册》----2-1 C# 4.0语言新功能

2-1 C# 4.0语言新功能 圣殿祭司的ASP.NET4.0专家技术手册 C# 4.0新增的语言功能,除了命名实参和可选实参(VB早已支持)较为常用,其他功能几乎是从动态基础衍生出来的便利性或灵活性,新功能如下: 命名实参和可选实参(Named and Optional Arguments): Dynamic动态类型(Dynamic Type): 共变量与反变量(Covariance and Contravariance): Office可程序性支持(Office Programmabilit