第一章 .NET的原理(2.0)
2011-04-21 10:19
375 查看
.NET Framework的核心是其运行库的执行环境 公共语言运行库(CLR)。
在CLR的控制下运行的代码称为托管代码。
在CLR执行开发的源代码之前,需要编译它们。
编译分为2个阶段:
(1)把源代码编译为中间语言(IL)
(2)CLR把IL编译为平台专用的代码
NET平台中代码的物理单元是可移植可执行程序(protable executable,PE)格式,编译程序和库时,和平常一样生成EXE与DLL文件,但在.NET框架下,任何可执行程序项目都链接到公共语言运行库,并由它代理编译和执行。
.NET中程序编译的最主要部分是汇编(assembly),汇编包括一个manifest,它是一组元数据,标识汇编向其他应用程序提供的文件和类型;manifest还可以包含强名称(strong name)、组合汇编名、版本信息和可选文化信息。在使用强名称的汇编中,元数据包含一个公用密钥签名,公共语言运行库用其验证汇编自编译之后是否发生改变。
汇编还可以包括数字签名,例如用验证码(authenticode certificate)验证代码源,以解决在公共语言运行库保证汇编签名的真实性问题。
汇编分为专用汇编和共享汇编。专用汇编只在安装这个汇编的应用程序中使用,而共享汇编则安装在全局汇编缓冲区(global assembly cache,GAC)中,全局汇编缓冲区用汇编的引用计数和版本信息管理库,包括框架的基类库(base class library,BCL),并通过公共语言运行库避免因库的版本冲突而形成DLL Hell的情形。
选择专用汇编和共享汇编是一个重要决策。将汇编安装到全局缓冲区后,就可以在多个应用程序中使用汇编的一个备份,但是还需要用Windows Installer之类的安装程序将应用程序安装到计算机上。如果使用专用汇编,则得到Microsoft所谓的"XCOPY部署",这样用户可以将应用程序复制到目标计算机上,方便地进行安装。
在CLR的控制下运行的代码称为托管代码。
在CLR执行开发的源代码之前,需要编译它们。
编译分为2个阶段:
(1)把源代码编译为中间语言(IL)
(2)CLR把IL编译为平台专用的代码
NET平台中代码的物理单元是可移植可执行程序(protable executable,PE)格式,编译程序和库时,和平常一样生成EXE与DLL文件,但在.NET框架下,任何可执行程序项目都链接到公共语言运行库,并由它代理编译和执行。
.NET中程序编译的最主要部分是汇编(assembly),汇编包括一个manifest,它是一组元数据,标识汇编向其他应用程序提供的文件和类型;manifest还可以包含强名称(strong name)、组合汇编名、版本信息和可选文化信息。在使用强名称的汇编中,元数据包含一个公用密钥签名,公共语言运行库用其验证汇编自编译之后是否发生改变。
汇编还可以包括数字签名,例如用验证码(authenticode certificate)验证代码源,以解决在公共语言运行库保证汇编签名的真实性问题。
汇编分为专用汇编和共享汇编。专用汇编只在安装这个汇编的应用程序中使用,而共享汇编则安装在全局汇编缓冲区(global assembly cache,GAC)中,全局汇编缓冲区用汇编的引用计数和版本信息管理库,包括框架的基类库(base class library,BCL),并通过公共语言运行库避免因库的版本冲突而形成DLL Hell的情形。
选择专用汇编和共享汇编是一个重要决策。将汇编安装到全局缓冲区后,就可以在多个应用程序中使用汇编的一个备份,但是还需要用Windows Installer之类的安装程序将应用程序安装到计算机上。如果使用专用汇编,则得到Microsoft所谓的"XCOPY部署",这样用户可以将应用程序复制到目标计算机上,方便地进行安装。
相关文章推荐
- .NET 2.0 中 GetDelegateForFunctionPointer 函数实现原理浅析 [草稿]
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(五):WebGIS原理分析及思考
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(五):WebGIS原理分析及思考
- 分享一下我写的.net 2.0的orm类,实现mvc。可以用于webform等环境中,这是orm的原理部分。
- .Net 2.0 原汁原味读取注册表
- Mono 1.1.5 正式发布,密切关联.net 2.0
- 用.NET 2.0压缩解压功能处理大型数据
- .NET2.0抓取网页全部链接
- 用.NET 2.0压缩/解压封装的类
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速Web开发框架设计
- Selenium用户指南 - 第一章 Selenium 2.0 文档修订注解
- vs 2010 xp安装没有.NET 2.0 3.5 (WIN7没事情)
- .net 2.0 3.5 微信 jssdk 源码
- Teddy's Knowledge Base--基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V2.0.0 [开源]
- .net 2.0(c#)下简单的FTP应用
- .Net平台下CLR程序载入原理分析
- .net 2.0 "服务器应用程序不可用" 解决方案集
- 您可能不知道的.Net2.0小技巧
- .Net 2.0 新功能:委托中的协变与逆变(Covariance and Contravariance in Delegates)
- .NET 2.0里使用强类型数据创建多层应用