【Asp.net精品源码栏目提醒】:网学会员,鉴于大家对Asp.net精品源码十分关注,论文会员在此为大家搜集整理了“【精品】DOTNET框架基本原理 - 其它资料”一文,供大家参考学习!
.NET 技术——.NET框架开发平台体系架构 .NET是微软推出的第三代网络平台。
它激 发了新的程序开发方式,在新的架构中,.NET 强调语言归语言,系统归系统,在平台上推出 新的 .NET Framework(.NET框架),通过一 致的 Common Language Runtime 执行应用程 序。
.NET 技术——.NET框架开发平台体系架构 .NET架构 VB C C JScript … 公共语言规范(Common Language Specification)
ASP.NET Windows Forms ADO.NET and XML 基类库(Base Class Library) 公共语言运行时CLR Windows COM Services.NET 技术——.NET框架开发平台体系架构 1、将源代码编译成托管模块 .NET框架的核心是通用语言运行时(Common Language Runtime简称CLR),顾名思义它是一个可被 各种不同的编程语言所使用的运行时。
实际上,CLR在 运行时对开发人员用何种编程语言来完成源代码一无所 知;也就是说我们可以使用任何自己喜欢的编程语言来 写代码(我们使用的编译器能编译面向CLR的代码)。
编译器可以看作是一个语法检查器和“正确代码”的分 析器。
它们对我们的源代码进行检查,确保我们编写的 有东西有意义,最后输出描述我们意图的指令序列。
.NET 技术——.NET框架开发平台体系架构 下图演示了源代码文件的编译过程:.NET 技术——.NET框架开发平台体系架构 不管我们使用的是何种编译器,最后生成的都是一个托管模块 (managed module)。
托管模块是一个需要CLR才能执行的标准Windows 移植可执行portable executable简称PE文件。
表:托管模块的组成部分 部分 描述 该表头指出了文件的类型:GUI、CUI,或者DDL程序集文 PE表头 件,文件创建时间等信息 包含托管模块所需要的CLR版本号、托管模块入口点方法 CLR表头 (Main方法)的MethodDef元数据标记等信息 每个托管模块都包含有一些元数据表,描述源代码中定义/ 元数据 用的类型和成员 中间语言IL 编译器在编译源代码时产生的指令。
CLR在运行时会将IL代 代码 编译成本地CPU指令.NET 技术——.NET框架开发平台体系架构 2、将托管模块组合为程序集 实际上,直接和CLR打交道的对象是程序集 (assembly)。
它由一个或多个托管模块,以及一些资源文 件的逻辑组合,是组件复用及实施安全策略和版本控制的最 小单位。
程序集可以是一个或多个文件。
默认情况下,编译器会将产生的托管模块转换为一个程 序集。
也就是说,C编译器产生的是一个包含了清单 (manifest)的托管模块。
清单仅仅是另外一些元数据表的 集合。
这些表描述了组成程序集的文件,程序集所有文件中 实现的仅有导出类型,以及一些和程序集相关的资源文件或 数据文件。
.NET 技术——.NET框架开发平台体系架构 程序集中的模块也包含它所引用的程序集的一些信 息。
这些信息使得一个程序集得以实现自描述(self- describing)。
换句话说,CLR知道执行一个程序集所 需要的所有内容,不需要再在注册表或活动目录中获取 额外的信息。
.NET 技术——.NET框架开发平台体系架构 3、加载通用语言运行时 4、执行程序集代码.NET 技术——.NET框架开发平台体系架构 5、.NET框架类库 在.NET框架中包括有一组.NET框架类库 (Framework Class Library简称FCL)程序集,其中含 有几千个类型的定义,每个类型提供某种功能;相关的 型放在一个由命名空间(namespace)组织的集合中提供 给开发人员。
.NET框架类库是一个由.NET Framework SDK中包 含的类、接口和值类型组成的库。
该库提供对系统功能 访问,是建立.NET Framework应用程序、组件和控件的 基础。
.NET 技术——.NET框架开发平台体系架构 6、通用类型系统 大家应该很清楚CLR的所有内容都是围绕着类型展 开的。
类型为应用程序和组件提供了它们所需要的功能 类型也作为一种机制使得不同语言之间的代码进行无缝 地集成。
由于类型是CLR的基础,Microsoft为此专门 制定了一个正式的规范——通用类型系统(Common Type System,简称CTS)来描述类型的定义和行为。
.NET 技术——.NET框架开发平台体系架构 7、通用语言规范 大家清楚各种编程语言之间有着很大的差别,如果 希望创建的类型可以被其他编程语言方便地访问,只能 使用编程语言中那些对其他语言来说也可用的特性。
为 了解决这一问题,Microsoft定义了一个通用语言规范 (Common Language Specification,简称CLS),该规 范为编译器厂商详细描述了面向CLR的编译必须支持的 一个最小特性的集合。
.NET 技术——.NET框架开发平台体系架构 8、与非托管模块互操作 .NET框架提供了许多较其他开发平台优越的特性。
然而,很少有公司能够负担得起重新设计并实现所有现存代码。
Microsoft意识到了这一点,并为此对CLR做了特殊的设计,从而使 其允许应用程序同时包含托管和非托管部分。
CLR支持三种互操作 形: 方式 描述 托管代码使用一种称作P/Invoke机制来调用DLL(传 托管代码调用DLL 的动态链接库文件)中的函数。
实际上,许多FCL中定义 中的非托管函数 的类型内部都调用了从Kernel32.dll,User32.dll等导出 的函数。
托管代码使用现存 请参见与.NET框架SDK一起发布的TlbImp.exe工具 的COM组件 非托管代码使用托 请参见与.NET框架SDK一起发布的TlbExp.exe和 管类型 工具
上一篇:
Chapter11_预编译和命名空间
下一篇:
政府形象媒体危机的处置策略研究