·来源于唐老狮的视频教学,仅作记录和感悟记录,方便日后复习或者查找


一.什么是.Net

.Net是指微软一整套技术体系的统称与代号

包含的内容有:

  • 框架体系:.Net Frameword, .Net Core, Mono
  • 开发语言:C#,VB,F#等(其中C#是主推的主流语言)
  • 开发工具:VS,VScode等

做这一套体系的目的:

  • ①实现跨语言:只要是面向.Net平台的编程语言(C#,F#,C++,VB)用其中一种语言编写的程序可以无缝切换到另一个应用程序中
  • ②实现跨平台:只要一次编译,就可以把应用程序不经代码修改地运行在任意有.Net框架实现的操作系统上。(即代码不依赖于操作系统和硬件设备)

(搞垄断,希望大家都统一用他家的产品和开发工具与框架)


二..Net跨语言的实现

如何实现的跨语言:

  • CLS(Common Language Specification):公共语言规范。参考每种语言的共性定义出的一套规则。只要开发者都遵守这个规则来进行编码,那么代码就能够被任意.Net平台支持的语言所通用,即可以通过不同的编程语言(C#,VB,J#等)来创建应用程序。【对于普通开发者】
  • CTS(Common Type System):公共类型系统。设计面向.Net语言的时候要遵守的规范体系。CLS是CTS的子级。如果一个语言它支持CTS,那么它就是面向.Net平台的语言。【对于要设计面向.Net的语言的开发者】
  • CLI(Common Language Infrastructure):公共语言基础。是微软将CTS等内容提交给国际组织计算机制造联合会ECMA的一个工业标准

总结:

为了实现跨语言,微软制定了上述的一些列规范。

只要语言遵守.Net的规范,那这个语言就可以和其他面向.Net的语言之间实现跨语言操作。即可以在.Net平台下开发应用程序。

CLI包含CTS,是微软把CTS提交给国际组织的一个工业标准


三..Net跨平台的实现

我们可以看出来,.Net的跨语言实现是让所有需要在.Net平台上进行开发的语言遵守CLI标准

不过在早期的.Net中其实是指支持Windows平台的,也就是只能够让不同的语言共同去开发windows程序。而实现了的跨平台功能就和.Net Frameword,.Net Core,以及Mono是有关的

1..Net Framework

定义:.Net Framework是一个开发框架。可以快速开发部署网站父物和应用程序。它是Windows中的一个组件。部分开源。主要用于开发Windows下的应用程序

包含:

  • ①公共语言运行时(Common Language Runtime, CLR)
  • ②虚拟执行系统
  • ③.Net Framework类库等

体系结构:

制作应用程序

基于CLS的开发语言 + 各种类库 = 可以在CLR上编译为机器码的程序集

①只要支持CLS的语言都可以用于开发Windows下的应用程序

②BCL(基础类库)和FCL(框架类库)是这个框架体系中为我们提供的各种API

③程序集的表现是.dll或者.exe格式的文件,其中最为关键的信息是:

  • PE头,CLR头(就是一些程序的格式信息,比如入口方法,版本号等)
  • CIL代码(通用中间代码):是介于源代码和机器码之间的代码,可以通过CLR产生机器码(总之就是会把所有不同语言经过转化后得到的统一规范的中间代码)

让应用程序在操作系统上运行

CLR(Common Language Runtime):是公共语言运行时

  • 它是.Net Framework的基础,所有.Net技术都建立在此之上。
  • 它提供内存管理,线程管理等服务。看起来和虚拟机一样,因此又被称为.Net虚拟机

因此如果想要应用程序能够在目标操作系统上运行,就需要使用.Net提供的CLR环境来支持,即必须在操作系统上安装.Net Framework

它会把程序集中的IL(中间代码)翻译成最终在操作系统上执行的机器码

总结:

.Net Framework是一个能够支持在Windows平台下进行跨语言开发应用程序的的框架结构。它部分开源。但是它不支持跨平台开发

2..Net Core

定义:.Net Core是2016年推出的.Net Framework的新一代版本。类似.Net Framework的兄弟

  • 它是.Net Framework的翻版实现,是一个开源项目
  • 它是基于.Net Framework来进行设计的主要目的就是跨平台
  • 它是.Net技术框架在Windows,Mac OS,类Linux系统下的具体实现

原理:给不同的操作系统都实现相应的CLR(.Net虚拟机)。这样在不同平台上就都可以通过CLR进行跨语言开发。同时又实现了跨平台的特性

.Net Framework诞生于2002年,.Net Core诞生于2016年,中间14年的空窗期的跨平台实现主要由Mono来负责

3..Mono

说明:Mono是一个Xamarin公司(已被微软收购)赞助的开源项目。

  • 基于.Net的CLI(公共语言基础)提供了对.Net Framework的另一种实现
  • 它和.Net Framework的区别是具备跨平台能力【可以在Windows,Mac OS, Linux操作系统,PS3,XBOX,Wii等主机平台上运行】
  • 它1.0版本出现于2004年

原理:

①利用.Net平台制定的CLI把很多语言编译成通用规范的CIL公共中间语言

②再利用CLR公共语言运行时转化为对应操作系统的原生代码

(这套规则是在.Net Framework的基础上进行的修改与添加)

老实说它这个原理和.Net Core看起来很像的


四.总结

①.Net是微软旗下一系列开发框架,开发语言,开发工具的产品代号。

②对于跨语言的实现,主要通过让语言遵守CLI标准,即可让该语言成为面向.Net的语言。从而使得该语言开发的应用程序能够被编译为统一规范标准的通用中间语言CIL。并通过CLR通用语言运行时(.Net虚拟机)去把CIL转化为操作系统可执行的机器码(典型的是.Net Framework框架把CIL转化为Windows操作系统下的可执行机器码)

③对于跨平台的实现,主要是通过.Net CoreMono这两个完全开源的框架实现的。

④.Net Core是.Net Famework的翻版实现,它最大的特点是在不同的平台上实现了对应的CLR(.NET 虚拟机)从而让应用程序能够在不同平台上被编译执行

⑤Mono是一个很早(2004年)的开源项目,是对.Net Framework的修改与添加,它是通过利用CLI对.Net Framework进行了另一种实现的框架。它利用CLI把不同语言编译成统一规范的CIL,然后再利用CLR转化为对应操作系统上可执行的机器码

⑥Mono 使用​​同一套运行时代码​​,.NET Core 为每个目标平台(Windows、Linux、macOS)​​独立实现了一套完整的运行时(CoreCLR)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93444.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93444.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93444.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 提高大型语言模型的数学推理能力的学习定理基本原理(AAAI2025)

笔记整理:兰雅榕,浙江大学硕士生,研究方向为知识图谱、大语言模型论文链接:https://ojs.aaai.org/index.php/AAAI/article/view/33662发表会议:AAAI 20251. 动机提高开源大型语言模型(LLM)的数学…

母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南

母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南 1. 引言 1.1 研究背景与意义 母猪姿态转换行为识别是智能养殖领域的重要研究方向,通过计算机视觉技术自动识别母猪的站立、躺卧、行走等姿态变化,对于监测母猪健康状态、评估福利水平…

K8S集群环境搭建(一)

虚拟机镜像 ubuntu 24 虚拟机网络 虚拟网络–配置 nat模式主机ip配置宿主机ip配置 10.0.0.12 master 2c 10.0.0.15 node1 10.0.0.16 node2 10.0.0.17 node3 10.0.0.20 registersudo vi /etc/netplan/00-installer-config.yaml # 替换为实际文件名 sudo netplan applynetwork:v…

css预编译器实现星空背景图

打造梦幻星空背景:用CSS预处理器轻松实现动态效果 星空背景能为网页增添神秘感和视觉吸引力。通过CSS预处理器(如Sass/Less)可以高效实现可定制化的星空效果,避免重复编写纯CSS代码。以下是 Vue3 组件皮肤具体实现方法和代码示例。…

焊接机器人保护气体效率优化

在现代工业制造领域,焊接机器人的应用日益广泛,而保护气体在焊接过程中起着至关重要的作用。如何优化保护气体的效率,成为焊接技术发展的一个关键考量因素。WGFACS节气装置的出现,为焊接机器人在保护气体效率优化方面带来了显著的…

Portkey-AI gateway 的一次“假压缩头”翻车的完整排障记:由 httpx 解压异常引发的根因分析

笔者最近在本地搭建了Portkey AI Gateway(模型路由网关),然后按照文档中的方式进行测试。结果发现,网关能够接收到请求,但是Python测试的程序却运行报错。Python代码报错信息如下: Traceback (most recent …

什么是Session? PHP编程中Session用法详解

一、Session的基本概念 Session 是 Web 开发中用于在服务器端存储用户临时数据的一种机制,它允许服务器在不同的 HTTP 请求之间识别和跟踪特定用户的状态,本质上是‌服务器为每个用户开辟的临时私有存储空间‌。由于 HTTP 协议本身是无状态的&#xff…

【大模型】AI平台 joyagent 2.0 的部署与测试

github链接:https://github.com/jd-opensource/joyagent-jdgenie 本篇博客记录下自己在配置joyagent的过程,以【手动初始化环境,启动服务】为例,后端调用的deepseek-chat大模型。 前言 JoyAgent是由京东云开源的企业级多智能体系统…

计算机视觉(一):nvidia与cuda介绍

背景与意义 计算机视觉 (Computer Vision, CV) 需要对图像和视频进行处理、特征提取和模型训练,计算量巨大。GPU (图形处理单元) 擅长并行计算,非常适合深度学习、卷积操作、矩阵乘法等场景。NVIDIA 作为 GPU 领域的领导者,推出了 CUDA (Comp…

阿里云杭州 AI 产品法务岗位信息分享(2025 年 8 月)

(注:本岗位信息已获jobleap.cn授权,可在 CSDN 平台发布) 一、基本信息 招聘方:阿里云工作地点:杭州信息收录时间:2025 年 08 月 14 日 二、职位主要职责 为 AI 相关产品全流程提供法务支持&…

医疗智慧大屏系统 - Flask + Vue实现

下面我将实现一个完整的医疗智慧大屏系统,使用Flask作为后端框架,前端使用Vue.js结合ECharts进行医疗数据的可视化展示,文章末尾提交源码下载。 系统设计思路 前端部分: 使用Vue.js构建响应式界面 使用ECharts实现各类医疗数据可…

库制作与原理(下)

库制作与原理 (下) 1. 目标文件 编译和链接这两个步骤,在 Windows 下被我们的 IDE 封装的很完美,我们一般都是一键构建非常方便,但一旦遇到错误的时候呢,尤其是链接相关的错误,很多人就束手无策了。在 Linux 下&#x…

STL 容器

STL是C的核心组成部分,其主要包括了容器、迭代器、算法三大组件。 其中容器负责存储数据,迭代器是容器和算法的桥梁,负责对容器中的元素进行操作。本文重点介绍容器部分内容。 STL主要容器 STL容器根据特性进行分类,可以分为序列式…

微信小程序 拖拽签章

微信小程序 拖拽签章 效果 主要实现的功能点 文件按比例加载图片(宽高设定拖拽范围) 弹层展示印章模板 模板拖拽到文件图片上 实时获取拽拽位置 难点 弹层中的元素如何拖拽到文件图片上 实现历程 版本1.0 以前我们拖拽一个图层到另一个图层上,pc端使用的是mousedown mou…

人工智能加速计算套件

按照甲方要求的技术指标的人工智能加速计算套件1套。每套包含以下内容: 1、显卡 不低于6542Y;容量不低于 48GB GDDR6显存;CUDA核心不低于14080 个 ;第四代Tensor Core不低于440 个;单精度性能不低于69.3 TFLOPS&#x…

端到端测试:复杂系统的终极体检术

当你的应用像多米诺骨牌一样牵一发而动全身,如何确保用户一路畅通无阻?一、为什么我们需要端到端测试? 想象一下:你精心开发的电商应用,用户登录顺利,商品浏览流畅,却在最后支付时卡壳——原因是…

Perf使用详解

Perf 工具深度解析 Perf(Performance Counters for Linux)是 Linux 系统的性能分析工具,基于内核的 perf_event 子系统,通过硬件性能计数器(PMC)、软件事件和跟踪点(tracepoints)实现…

Windchill 11 Enumerated Type Customization Utility-枚举类型自定义实用程序

一、Enumerated Type Customization Utility 枚举类型自定义实用程序,可用于添加或编辑枚举类型的值,在Windchill 12.0中可直接在类型和属性管理中编辑,如下图所示,而在Windchill 11.0中只能通过windchill shell启动程序&#xff…

git疑问,暂时记录

有时候把dev本地分支搞乱了,多出几个提交,好像在远程仓库,rebase dev到本地dev,就恢复了,然后再把我开发分支合并过去就ok,就不会多出几个重复的提交 在自己分支开发提交数据后,不push到远程仓库 然后合并到dev分支,推dev分支到远程仓库然后在自己分支,rebase到自己分支,然后再…

Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害预警与应急响应中的应用

Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害预警与应急响应中的应用引言:Java 筑起气象防灾减灾的数字长城正文:Java 构建的气象智慧防御体系一、气象大数据的 Java 基座:从采集到存储的全链路优化1.1 多源异构数据的实时汇聚1.2…