.Net相关知识

devtools/2024/11/14 13:01:12/

目录

什么是.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公共语言运行时实现跨语言和跨平台


http://www.ppmy.cn/devtools/132824.html

相关文章

ansible进阶功能

目录 handlers-触发器 when-判断 循环 单变量循环 多变量循环 Jinja2-模板 include-引用 roles-角色 vault-加密 handlers-触发器 配合notify使用,通过notify监控是否发生改动,从而触发handlers。 handlers是在task全部执行完之后再执行。 下…

【Python】爬虫使用代理IP

1、代理池 IP 代理池可以理解为一个池子,里面装了很多代理IP。 池子里的IP是有生命周期的,它们将被定期验证,其中失效的将被从池子里面剔除池子里的ip是有补充渠道的,会有新的代理ip不断被加入池子中池子中的代理ip是可以被随机…

Ubuntu 22.04.5 LTS配置 bond

本次纯实验,不会讲解bond功能,配置bond mode 1 和 mode 4 如何配置 确定内核模块是否加载 实验使用root用户权限,非root用户使用sudo 调用root权限 rootubuntu22:~# lsmod | grep bonding rootubuntu22:~# modprobe bonding rootubuntu22:~# …

web安全漏洞之命令注入

命令注入 1.什么是命令注入 通常情况下,开发者使用一些可以执行命令的函数且未对用户输入进行安全检查时,可以造成命令注入。从CTF的角度来讲, 命令注入可以实现: 1、直接读取flag 2、反弹shell 3、利用题目环境漏洞, 控制整个题目环境, 干…

电子学会2024年3月青少年软件编程(图形化)等级考试试卷(二级)真题,含答案解析

我们今天分享的资料是:电子学会2024年3月青少年软件编程(图形化)等级考试试卷(二级)真题,含答案解析 电子学会 2024 年 3 月青少年软件编程(图形化)等级二级考试的主要考点包括: 坐标值的应用:熟练掌握坐标的概念及每个积木的使用,能利用坐标精确控制角色的位置。外…

IP SSL证书

随着互联网技术的发展,网络安全成为企业和个人用户关注的重点。SSL证书作为确保网络通信安全的重要工具,在各类网站和服务中得到广泛应用。然而,除了常见的基于域名的SSL证书外,还有一种特殊的证书类型——IP SSL证书,…

SpringBoot项目编译报错 类文件具有错误的版本 61.0, 应为 52.0

springboot项目在编译时报错: /Users/Apple/Developer/art/caicai/cai-api/dubbo-samples/1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-provider/src/main/java/org/apache/dubbo/springboot/demo/provider/ProviderApplication.java:22:32 java…

微信小程序 高校教材征订系统

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 系统分为三个角色,分别是教材科、系教学秘书、教研室主任。系统主要完成功能是教材科要发布教材征订信息&am…