1. 在.NTE之前
使用Win32 API 接口编程。这个接口不是面向对象的,编程工作量大。
MFC(微软基础类库),COM(组件对象模型)编程模式也已经陈旧,代码复杂,丑陋。
下一代平台服务:集成,面向对象,跨平台
2. .NET 平台
2002年发布第一版
多平台,行业标准,安全性
.NET 框架组成,3个部分
公共语言运行库CLR(Common Language Runtime)
包含:内存管理和垃圾回收; 代码安全验证; 代码执行和线程管理,异常处理
基类库BCL( Base Class Library) 是.NET框架使用的最大的类库
编程工具(Visual Studio集成开发环境)
编程环境
面向对象的开发环境
自动垃圾收集(GC )
互操作性(不同的.NET语言,Win32 dll, COM之间的互操作P/Invoke)
不需要COM(摆脱COM的束缚)
简化的部署(复制就可执行,并行执行特性)
类型安全
基类库BCL (通用基础类,集合类,线程和同步类,XML类)
3. 编译成CIL
CIL 公共中间语言(Common IntermediateLanguage) 或IL
4. 编译本机代码并执行
程序的CIL直到被调用运行时才会被编译成本机代码。步骤:
检查程序集的安全特性
在内存种分配空间
把程序集中的可执行代码发送给即时JIT(Just-in-time)编译器,把其中的一部分编译成本机代码
托管代码:为.NET框架编写的代码称为托管代码managed code,需要CLR。
非托管代码:不在CLR控制之下运行的代码,如Win32 dll, unmanaged code.
编译和执行
无论源文件的语言是什么,都遵循同样的编译和执行过程。
5.CLR
.NET框架的核心组件,它在操作系统的顶层,负责管理程序的执行。
内存管理;异常处理;垃圾回收;反射服务;JIT编译器;类加载器;安全服务
6.CLI
公共语言基础结构 Common Language Infrastructure,它把.NET框架的所有组件连结成一个内聚的,一致的系统。
一组阐述了系统的架构,规则和约定的规范,重要组成部分:
CLR(公共语言运行库);CLS(公共语言规范);BCL(基类库),CTS(公共类型系统)
CIL(公共中间语言指令组) ;元数据定义以及语义
CTS-Common Type System 公共类型系统
- 定义内置类型,以及每种类型固有的,独有的特性
- 兼容编程语言提供的类型通常映射到CTS中已定义的内置类型的某一特殊子集
- 最重要特征之一所有类型都是继承自公共基类Object
- 确保系统定义类型和用户定义类型能够被任何.NET兼容语言所使用
CLS – Common Language Specification 公共语言规范
详细说明了一个.NET兼容编程语言的规则,属性和行为。
7. C#的演化
每个新版本都会添加一焦点特性。
C# 1.0
C# 2.0 泛型
C# 3.0 LINQ
C# 4.0 命名参数,可选参数
C# 5.0 异步
C# 6.0 语言增强,Roslyn
C# 7.0 值元组,模式匹配
8.C#和Windows的演化
Windows 10 通用平台UWP-Universal Windows Platform
https://www.tiobe.com/tiobe-index/
目前编程语言使用分布如下: