目录
什么是.Net?
微软做.Net平台的目的
如何实现的跨语言?
简单总结
.Net Framework
体系结构
总结
.Net Core
Mono
跨平台方式
Framework、Core和Mono总结
总结
什么是.Net?
微软的 .Net既不是编程语言也不是框架!
而是类似于 互联网时代、次时代、21世纪、信息时代之类的宣传口号。
它是一整套技术体系的统称,或者说它是微软提供的技术平台的代号。包含的内容有
框架体系:.Net Framework、.Net Core、Mono等等
开发语言:C#、VB、F#等等(C#是.Net平台主推的开发语言)
开发工具:Visual Studio、Visual Studio Code 等等
可以简单理解.Net本质上就是微软为自己的一系列产品取的一个代号
微软做.Net平台的目的
1.跨语言
只要是面向.NET平台的编程语言(C#、VB、C++、F#等等),用其中一种语言编写的内容可以无缝地用在另一种语言编写的应用程序中。
2.跨平台
一次编译,不需要任何代码修改,应用程序就可以运行在任意有.NET框架实现的操作系统上,即代码不依赖于操作系统,也不依赖硬件环境。
如何实现的跨语言?
CLS(Common Language Specification)公共语言规范
Net专门参考每种语言并找出了语言间的共性,定义了一组规则。与其说是规则,不如说它是一组语言互操作的标准规范。只要开发者都遵守这个规则来编码,那么代码就能被任意.Net平台支持的语言所通用,即可以通过不同的编程语言(C#、VB、J#等等)来创建应用程序。
CTS(Common Type System)
公共类型系统
当你需要设计面向.Net的语言时需要遵循一个体系,这个体系就是CTS刚才提到的CLS公共语言规范就是是CTS公共类型系统的子级。
一个编程语言,如果它能够支持CTS,那么我们就称它为面向.NET平台的语言。
CLl(Common Language Infrastructure)
公共语言基础结构
是微软将CTS等内容提交给国际组织计算机制造联合会ECMA的一个工业标准。
简单总结
微软为了实现跨语言,制定了一些规范
只要一门语言支持CTS(公共类型系统)的规则
那么我们就能够使用它在.Net平台下开发应用程序
CLS(公共语言规范)是CTS的一个子级,是一组语言互操作的标准规范
我们经常可以看到的CLI公共语言基础结构,它包含CTS公共类型系统
它是微软将CTS等内容提交给国际组织计算机制造联合会ECMA的一个工业标准
.Net Framework
.Net Framework 在2002年推出1.0版本
.NET Framework 是一个可以快速开发、部署网站服务及应用程序的开发框架是 Windows 中的一个组件,部分开源,主要用于开发Windows下应用程序
包括
公共语言运行时(Common Language Runtime, CLR)
虚拟执行系统
.NET Framework 类库等
体系结构
制作应用程序
编程语言 + 调用各种类库 进行开发 生成程序集
1.只要支持CLS公共语言规范的语言都可以用于开发Windows下的各种应用程序和网站程序2.BCL(基础类库)和FCL(框架类库)是这个框架体系中为我们实现好的各种API
3.程序集的表现就是后缀为.dI或者.exe格式的文件其中包含的最关键信息:
PE头、CLR头(就是一些程序的格式信息,比如入口方法,版本号等等)
CIL代码(通用中间代码)是介于源代码和机器码之间的代码之后会通过CLR产生机器码
CIL代码你可以理解为由于可能使用不同的代码进行开发,所以会将这些代码翻译为统一规范的中间代码
总结
.Net Framework
是一个主要用于跨语言开发
Windows操作系统下的应用程序的框架结构他并不支持跨平台
.Net Core
.Net Core 是2016年推出的.Net Framework的新一代版本
它就像是.Net Framework的兄弟
是.Net Framework的翻版实现,它是一个开源项目
它是基于.Net Framework来进行设计的,主要目的就是跨平台
是.Net技术框架组成在Windows、MacOS、类Linux系统下的具体实现
它的原理就是为不同的操作系统实现对应的
CLR公共语言运行时(.Net虚拟机)
这样就可以在不同的平台上将IL(中间代码)翻译成机器码最终在操作系统上运行了
Mono
Mono是一个由Xamarin公司(已被微软收购)所赞助的开源项目
它基于.Net的CLl(Common Language Infrastructure)公共语言基础结构提供了微软.Net FrameWork的另一种实现
它相对.Net FrameWork最大的区别就是具备跨平台的能力
它不仅可以运行在Windows、MacOs、Linux等操作系统
甚至还可以运行在PS3、XBOX、Wii等主机平台上
Mono的1.0版本出现在2004年
也就是说在.Net Core出现之前,Mono是.Net平台实现跨平台的不二之选
跨平台方式
Mono利用.Net平台制定的CLI公共语言基础结构规则
利用它我们可以把很多种语言编译成通用规范的CIL公共中间语言
再利用CLR公共语言运行时,将这些CIL公共中间语言转换为操作系统的原生代码(主要做的就是在各种操作系统上实现了对应的CLR内容)
这样用各种不同语言编写的逻辑就能够在指定操作系统上运行了
它的这一套规则是在.Net Framework规则上进行的修改和添加
Framework、Core和Mono总结
.Net Framework(2002年发布)部分开源,主要用于开发Windows平台下应用,包含Windows平台的所有特性
.Net Core(2016年发布)完全开源,可以针对多个平台开发应用,包含.Net Framework部分特性
Mono(2004年发布)完全开源,早期乃至现在也是.Net的跨平台解决方案
在.Net Core出现之前开发者都通过Mono来实现.Net的跨平台我们可以使用基于.Net平台的Mono开发便可以发布可以在主流的各种操作系统上运行的应用程序
总结
1.微软的.Net是什么
是一个包含编程语言.框架、IDE等产品的系列产品统称
2..Net跨语言的实现
CLI公共语言基础结构(CTS公共类型系统)
CLS公共语言规范是它的子级
3..Net跨平台的实现
基于.Net Framework的 Mono 和.Net Core他们两都基于CLI公共语言基础结构和CLR公共语言运行时实现跨语言和跨平台