1.3.3 新的编译模型
在ASP .NET 2.0中有3种编译方式。在默认情况下,采用即时编译方式,在用户首次请求资源(如网站的一个页)时,将动态编译ASP .NET网页和代码文件。第一次编译页和代码文件之后,会缓存编译后的资源,这样将大大提高随后对同一页提出的请求的效率。这种编译方式和原来ASP .NET 1.1是一样的。
在这种编译方式下,所有的源代码,包括.aspx页面中的HTML代码和Code-behind代码文件中的代码都是直接部署到服务器上去的,这就造成了一个问题,开发人员的所有代码都可见,不利于知识产权保护。
第二种编译方式是部分预编译,这也是在ASP .NET 1.1中就有的,即将后台代码文件编译成.dll文件,而.aspx文件中的html代码保持原封不动,这样可以在一定程度上有效地保护开发人员的知识产权,同时还可以在不需要重新编译的情况下对页面作有限的修改,例如可以更改控件的排列、页的颜色、字体和其他外观元素。还可以添加不需要事件处理程序或其他代码的控件。但是同时带来的问题是:如果开发人员没有足够的意识而将过多的代码直接放到.aspx文件中,那也仍然不能够保护这部分代码的知识产权;同时由于可以修改.aspx页面的代码,如果在修改代码时不小心的话,可能会导致该页面运行出错。比起即时编译方式,可以通过预编译网站来稍稍提高网站的性能。对于经常更改和补充ASP .NET网页及代码文件的站点则更是如此。在这种内容不固定的网站中,动态编译新增页和更改页所需的额外时间会影响用户对站点质量的感受。
第三种编译方式是在ASP .NET 2.0里新增的,称为完全预编译。在这种编译方式里,所有的代码(包括.aspx里的HTML代码和后台代码文件里的代码)都被编译到.dll文件中,而生成的.aspx文件只起到一个占位符的作用,编译器将从输出中移除所有源代码和标记。在生成的布局中,为每个.aspx文件生成编译后的文件(扩展名为.compiled),该文件包含指向该页相应程序集的指针。采用这种编译方式的站点运行效率最高,能够最大限度地保护开发人员的知识产权。此选项不仅可为页面提供最大程度的保护,还可提供最佳启动性能。然而带来的相应问题是,这种编译方式最不灵活,除非重新编译站点,否则将不能修改站点的任何代码,包括调整页面布局或者样式都是不可以的。要更改网站(包括页的布局),必须更改原始文件,重新编译站点并重新部署布局。惟一的例外是站点配置。可以更改成品服务器上的Web.config文件,而无需重新编译站点。
除了上面所说的编译方式之外,ASP .NET的编译模型也发生了变化,由原来的代码后置(Code-Behind)变成了代码旁置,最直观的变化就是,在页面的后台代码文件当中再也看不到对页面上的服务器端控件的声明,毋庸置疑,这显然是利用分部类来实现的。这种代码隐藏模型如下:
代码隐藏文件包含一个继承自基页类的分部类。基页类可以是Page类,也可以是从Page派生的其他类。
(1).aspx文件在@ Page指令中包含一个指向代码隐藏分部类的Inherits属性。
(2)在对该页进行编译时,ASP .NET将基于.aspx文件生成一个分部类,此类是代码隐藏类文件的分部类。生成的分部类文件包含页控件的声明。使用此分部类,可以将代码隐藏文件用作完整类的一部分,而无需显式声明控件。
(3)最后,ASP .NET生成另外一个在步骤2中生成的类继承的类。生成的第二个类包含生成该页所需的代码。生成的第二个类和代码隐藏类将编译成程序集,运行该程序集可以将输出呈现到浏览器,ASP .NET 2.0的代码隐藏模型如图1-3所示。
|
| 回书目 上一节 下一节 |
|
· 网络工程师自测获奖名.. · 08年4月各大网上书店及.. · 系统分析师自测获奖名.. · Linux结课考试自测获奖.. · 上周Linux系统命令的使.. · 上周真题冲刺测试获奖.. |
· 全国计算机等考四级模.. · 08年3月各大网上书店及.. · 网络工程师模拟测试获.. · 全国计算机软考考试指.. · 3月24日WCF聊天活动 积.. · 全国计算机等级考试四.. |
|
||||
| · 网络故障排除宝典 · 访问控制列表(ACL)介绍 · 视频访谈:网管员如何踏.. · 首届中国IT工程师生态.. · 华为路由器配置 · 全面解析35岁技术人的.. · 企业数据恢复指南 · 龙芯要做中国的“奔腾” |
· 2008年上半年全国软考.. · 交换机故障解决指南 · Vista SP1对决XP SP3 · LAMP技术精解 · 微软出价446亿美元收购.. · AIX操作系统管理应用(.. · 华为员工自杀频频拷问.. · 三层交换技术专题 |
|||
|
||||
| · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 |
· Apache技术专题 · 国际文档格式标准开战 · 路由器设置与口令恢复 · 打造安全服务器 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 · ADSL应用面面俱到 |
|||
|
||||
| · iSCSI应用与发展 · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · iSCSI应用与发展 · 三层交换技术专题 · Apache技术专题 |
· 企业数据恢复指南 · RAID——磁盘阵列基础 · 路由器设置与口令恢复 · SOA 面向服务架构 · ADSL应用面面俱到 · ADSL应用面面俱到 · 反垃圾邮件技术应用 · 访问控制列表(ACL)介绍 |
|||