《圣殿祭司的ASP.NET4.0专家技术手册》----1-12 ASP.NET程序的编译模型-阿里云开发者社区

开发者社区> 异步社区> 正文

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

简介: ASP.NET 4.0支持两种编译模型:动态编译(Dynamic Compilation)与预编译(Precompilation),让你来决定不同网站何时该用何种编译模型,不但灵活性提升,且若采用预编译网站,执行性能还可以更高。
+关注继续查看

本节书摘来自异步社区《圣殿祭司的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
文件,那样不会有任何的作用。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4014 0
ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 使用 EF 框架查询数据 上一章节我们学习了如何设置和初始化数据库,以及如何创建迁移代码和应用迁移代码。
1442 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3960 0
ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 迁移数据 上一章节中我们配置了 Identity ,也让我们的应用程序正常运行起来了,在访问未授权页面的时候会跳转到 /Accout/Login 页面。
868 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
5688 0
ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 基础教程总结 ASP.NET Core 基础教程总算是有了个简单的完结。
1044 0
ASP.NET Core Razor 编辑表单 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Razor 编辑表单 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Razor 编辑表单 上一章节我们介绍了标签助手和 HTML 助手,也使用标签助手和 HTML 助手分别创建了一个职工列表,感觉好像有点喜欢上标签助手和 HTML 助手了,正好之前我们只讲解了如何列出数据,没有讲解如何创建表单来添加和修改数据 要不本章节我们就来讲讲? 顺带多用用标签助手和 HTML 助手 本章中,我们将继续讨论标签助手。
1426 0
ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 MVC 前面几章节中,我们都是基于 ASP.
1496 0
ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 用户注册 上一章节我们终于迁移完了 Identity 的数据,也创建了用户表,现在,磨拳擦掌,是时候把注册功能给完善了。
1235 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
11934
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载