1.1 在.NET之前 C#发音:see shap 1.1.1 20世纪90年代后期的Windows编程 20世纪90年代后期各语言缺点: 1.纯Win32 API不是面向对象的,而且工作量比MFC的更发 2.MC是面向对象的,但是他却不一致,并逐渐变得陈旧 3.COM虽然概念上简单。但实际代码复杂,而且需要更多丑陋的,不雅的底层代码 共同缺点: 主要针对桌面程序而不是Internet的开发 1.2 进入Microsoft.NET .NET框架是一种比MFC或COM编程技术更一致并面向对象的环境 特点 多平台:可以在广泛的计算机上运行,包括从服务器,桌面机到PDA和移动电话 行业标准:使用行业标准的通信协议,比如XML,HTTP,OAP和WSDL 安全性:提供更加安全的执行环境(即使有来源可疑的代码存在) 1.2.1 .NET框架的组成
1.编程工具--产生可执行代码(code)-->公共语言运行库(CLR)--使用-->基类库(BCL) 2.编程工具--使用-->基类库(BCL) CLR(执行环境): Common Language Runtime,公共语言运行库 在运行期管理程序的执行,包括内容: 内存管理 代码安全验证 代码执行 垃圾收集 编程工具涵盖了编码和调试需要的一起,包括: Visual Studio集成开发环境 .NET兼容的编译器(例如:C#,VB.JScript和托管的C++) 调速器 服务器端改进,比如ASP.NET BCL(是.NET框架使用的一个大的类库): Base Class Library,基类库 可以在程序中使用 1.2.2 大大改进的编程环境 1.面向对象的开发环境 完全面向对象 形成良好的集成环境 为本地程序和分布式系统提供了一致的,面向对象的编程模型 为桌面,移动,Web开发提供了软件开发接口,涉及的对象范围广 2.自动垃圾收集 CLR有一项服务为GC(Garbage Collector,垃圾收集),"自动管理内存" 自动从内存中删除程序不再访问的对象 释放内存和检查内存泄漏 3.互操作性 允许在不同的.NET语言编写的软件模块间无缝地交互 一种.NET写的程序可以使用甚至继承用另外一种.NET语言写的类(只要遵循一定的规则) 很容易地集成不同编程语言生成的模块(有时被称为:"语言无关的") 平台调用(platfrom invake,P/Invoke) 允许调用并使用非.NET的,但通过Win32 DLL导出的纯C函数的代码(比如Windows API) 允许与COM的互操作 互相调用 4.不需要COM .NET框架摆脱了COM的束缚,不需要使用COM 5.简化的部署 更加容易 不需要使用注册表注册,一个程序只需要被复制到目标机器便可以运行 并行执行 允许一个DLL的不同版本在同一台机器上存在 6.类型的安全性 CLR检查并确保及其他数据对象的类型安全,即使是在不同编程语言编写的组件之间 7.基类库 提供了一个人广泛的基础类库 BCL/FCL 通用基础类:一组极为强大的工具,比如字符串操作,安全和加密 集合类:实现了列表,字典,散列表以及位数组 线程和同步类:用于创建多线程程序 XML类:创建,读取以及操作XML文档 1.3 编译成CIL 程序集代码:非本机代码,,,CIL(Common Intermediate Language,公共中间语言) 程序集包含: CIL 使用的类型的元数据 对其他程序引用的元数据 CIL术语: IL/MSIL 1.4 编译成本机代码并执行 程序的CIL调用时才会被编译 CLR执行步骤: 检查程序集的安全特性 在内存中分配空间 可执行代码发送给实时编译器,把其中一部分编译成本机代码 不被调用的代码不会被编译成本机代码,被调用的代码只被编译一次 CIL-->本机代码 CLR在它运行时进行管理(释放无主内存,检查数组边界,检查参数类型和管理异常等) 术语: 托管代码: 为.NET框架编写的代码 需要CLR 非托管代码: 不在CLR控制之下运行的代码,比如:Win32 C/C++ DLL 本机映像生成器或Ngen: 可以把一个程序集转换成当前处理器的本机代码(免除了运行时的JIT编译过程) 编程的执行综述:
1.5 CLR .NET框架的核心组件,在操作系统的顶层并管理程序的执行
提供服务: 自动垃圾收集 安全和认证 通过访问BCL得到广泛的编程功能 1.6 CLI 有序和协作:标准 公共语言基础结构 把所以.NET框架的组件连结成一个内聚的,一致的系统 展示了系统的概念和架构 必须坚持的规则和约定 组成:
开放的国际标准规范 CLI的重要组成部分: 1.公共类型系统(CTS) 定义了那些托管代码中一定会使用的类型的特征: CTS定义了一组丰富的内置类型,以及每种类型确定的,详细的特性 .NET兼容编程语言提供的类型通常映射到CTS中已定义的内置类型集的某一个特殊子集 *CTS最重要的特征之一是所有类型都继承自公共的基类--object* 2.公共语言规范(CTS) 详细说明了一个.NET兼容编程语言的规范,属性和行为 其主题包括数据类型,类结构和参数传递 1.7 缩写 1.程序集 公共中间语言: CIL IL MSIL 2.公共语言基础结构(CLI) 公共类型系统: CTS 公共语言规范: CLS 3.公共语言运行库(CLR) 垃圾收集: GC 实时编译器: JIT 基类库: BCL