欢迎来到天天文库
浏览记录
ID:52472136
大小:352.37 KB
页数:12页
时间:2020-04-08
《DOTNET框架基本原理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.NET是微软推出的第三代网络平台。它激发了新的程序开发方式,在新的架构中,.NET强调语言归语言,系统归系统,在平台上推出新的.NETFramework(.NET框架),通过一致的CommonLanguageRuntime执行应用程序。.NET框架开发平台体系架构.NET架构WindowsCOM+Services公共语言运行时(CLR)基类库(BaseClassLibrary)ADO.NETandXMLASP.NETWindowsForms公共语言规范(CommonLanguageSpecification)VBC++C#JScript…1、将源代码编译成托管模块.NET
2、框架的核心是通用语言运行时(CommonLanguageRuntime,简称CLR),顾名思义它是一个可被各种不同的编程语言所使用的运行时。实际上,CLR在运行时对开发人员用何种编程语言来完成源代码一无所知;也就是说我们可以使用任何自己喜欢的编程语言来编写代码(我们使用的编译器能编译面向CLR的代码)。编译器可以看作是一个语法检查器和“正确代码”的分析器。它们对我们的源代码进行检查,确保我们编写的所有东西有意义,最后输出描述我们意图的指令序列。下图演示了源代码文件的编译过程:不管我们使用的是何种编译器,最后生成的都是一个托管模块(managedmodule)。托管模块是一个
3、需要CLR才能执行的标准Windows可移植可执行(portableexecutable,简称PE)文件。表:托管模块的组成部分部分描述PE表头该表头指出了文件的类型:GUI、CUI,或者DDL(程序集文件),文件创建时间等信息CLR表头包含托管模块所需要的CLR版本号、托管模块入口点方法(Main方法)的MethodDef元数据标记等信息元数据每个托管模块都包含有一些元数据表,描述源代码中定义/引用的类型和成员中间语言(IL)代码编译器在编译源代码时产生的指令。CLR在运行时会将IL代码编译成本地CPU指令2、将托管模块组合为程序集实际上,直接和CLR打交道的对象是程序集
4、(assembly)。它由一个或多个托管模块,以及一些资源文件的逻辑组合,是组件复用及实施安全策略和版本控制的最小单位。程序集可以是一个或多个文件。默认情况下,编译器会将产生的托管模块转换为一个程序集。也就是说,C#编译器产生的是一个包含了清单(manifest)的托管模块。清单仅仅是另外一些元数据表的集合。这些表描述了组成程序集的文件,程序集所有文件中实现的仅有导出类型,以及一些和程序集相关的资源文件或数据文件。程序集中的模块也包含它所引用的程序集的一些信息。这些信息使得一个程序集得以实现自描述(self-describing)。换句话说,CLR知道执行一个程序集所需要的
5、所有内容,不需要再在注册表或活动目录中获取额外的信息。3、加载通用语言运行时4、执行程序集代码5、.NET框架类库在.NET框架中包括有一组.NET框架类库(FrameworkClassLibrary,简称FCL)程序集,其中含有几千个类型的定义,每个类型提供某种功能;相关的类型放在一个由命名空间(namespace)组织的集合中提供给开发人员。.NET框架类库是一个由.NETFrameworkSDK中包含的类、接口和值类型组成的库。该库提供对系统功能的访问,是建立.NETFramework应用程序、组件和控件的基础。6、通用类型系统大家应该很清楚CLR的所有内容都是围绕着
6、类型展开的。类型为应用程序和组件提供了它们所需要的功能类型也作为一种机制使得不同语言之间的代码进行无缝地集成。由于类型是CLR的基础,Microsoft为此专门制定了一个正式的规范——通用类型系统(CommonTypeSystem,简称CTS)来描述类型的定义和行为。7、通用语言规范大家清楚各种编程语言之间有着很大的差别,如果希望创建的类型可以被其他编程语言方便地访问,只能使用编程语言中那些对其他语言来说也可用的特性。为了解决这一问题,Microsoft定义了一个通用语言规范(CommonLanguageSpecification,简称CLS),该规范为编译器厂商详细描述了
7、面向CLR的编译必须支持的一个最小特性的集合。8、与非托管模块互操作.NET框架提供了许多较其他开发平台优越的特性。然而,很少有公司能够负担得起重新设计并实现所有现存代码。Microsoft意识到了这一点,并为此对CLR做了特殊的设计,从而使其允许应用程序同时包含托管和非托管部分。CLR支持三种互操作情形:方式描述托管代码调用DLL中的非托管函数托管代码使用一种称作P/Invoke机制来调用DLL(传统的动态链接库文件)中的函数。实际上,许多FCL中定义的类型内部都调用了从Kernel32.dll,User32.d
此文档下载收益归作者所有