Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >.NET 体系概览图集- 2024 最全总结

.NET 体系概览图集- 2024 最全总结

作者头像
郑子铭
发布于 2024-05-28 08:57:58
发布于 2024-05-28 08:57:58
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

前言

C# 是一种简单、现代、面向对象和类型安全的编程语言。.NET 是由 Microsoft 创建的开发平台,平台包含了语言规范、工具、运行,支持开发各种应用,如Web、移动、桌面等。

.NET框架有多个实现,如.NET Framework.NET Core(及后续的.NET 5+版本),以及社区版本Mono

除此以外,C#.NET体系还有很多概念,本文就来简单了解下C#、.NET Framework、CLR、.NETCore、CTS、JIT等概念。

一、.NET发展历史: Framework ⇒ Core

简单梳理一下.NET框架的发展:.NET Framework.NET (Core)。表格原文(https://www.yuque.com/kanding/ktech/csharp.net)。

LTS:long time support,长期支持版本(3年左右),非LTS版本支持周期18个月左右。

RC:Release Candidate,候选正式版本,可作为正式版本使用。

推荐一个在线的版本,做的非常漂亮:(https://time.graphics/embed?v=1&id=593132)

.NET Framework(1.0 —— 4.8.1):.NET Framework是基于Windows系统的.NET框架,从2002年发布,到最新的4.8.版本,已经停止发展。

最后的4.8.*版本依然还在维护,还是可以使用的,支持的最低操作系统是Windows 7。

如果要运行在XP系统上,则只能使用.NET Framework4版本,支持最低Windows XP SP3。

.NET Framework是基于Windows系统的,因此也只能在Windows系统上运行。

.NET Core(Core1/2/3,5/6/7/8/9):从2016年发布首个.NET Core1,和后面的.NET Core2/3、.NET 5/6/7/是一个体系的,只是从.NET5开始更改了命名。

这是微软推出的新一代.NET框架,用来代替原有的.NET Framework,核心特点就是开源、跨平台,这也是.NET未来重点发展、投资的地方。

开源,采用MIT和Apache协议作为开源协议,对商业十分友好。

跨平台,支持Windows、MacOS、Linux,支持x64,、x86、ARM架构。

二、.NET Framework框架

.NET Framework 是运行在 Windows 系列操作系统上的一个系统应用程序。

它是 .NET 的核心部分,提供了建立和运行 .NET 应用程序所需要的编辑、编译等核心服务。

它包括2个重要组成部分:公共语言运行时 (Common Language Runtime,CLR) 和 .NET Framework 类库(Framework Class Library,FCL)。

对于Framework

.NET Framework设计之初就是基于Windows系统的,其API与Windows底层接口紧密关联,所以DotNET应用也只能运行在Windows系统上了。

同时,.NET Framework也作为Windows操作系统的组件内置在操作系统中。

同一台电脑上可以同时安装多个版本的 .NET Framework 版本。

.NET Framework = 运行时CLR + 类库FCL

为了解决跨平台的问题,早期是社区开源的Mono,后来就是Mono被微软收购后,统一实现并开源了全新的.NET Core框架。不过两者很多技术、概念是一样的。

2.1、运行时(CLR)

公共语言运行时 (Common Language Runtime,CLR), CLR 本质上就是.NET 虚拟机(类似Java的虚拟机JVM),算是.NET的引擎,用来执行托管.NET代码,确切的说是编译后的IL代码。

提供管理内存、线程执行、代码执行、代码安全验证、异常处理、编译、垃圾回收等运行时服务。

类加载器(Class Loader):加载程序集的类(包括方法)、元数据,及其他程序所需组件。

即时编译器JIT(Just-In-Time,简称JIT ):负责将中间代码MSIL翻译成本机执行代码(MSIL to Native Code)。

代码管理器(Code Manager):管理代码的执行。

垃圾回收器GC(Garbage Collector):负责整个.NET运行时托管代码的内存分配与释放任务,它通过一定的优化算法选择收集对象和时间,并进行自动的垃圾收集。

  • 安全引擎(Security Engine):提供基于认证的安全机制,如用户身份。
  • 调试引擎(Debug Engine):使开发者能调试和跟踪应用程序代码。
  • 类型检查器(Type Checker):检查并禁止非安全的类型转换以及未初始化的变量的使用。
  • 异常管理器(Exception Manager):提供结构化的异常处理,与Windows结构化异常处理机制(SHE)集成,改进了错误报告。
  • 线程支持(Thread Support):提供了多线程编程的类和接口。

CLR是.NET的核心,当我们学习了基本C#语法后,想要进一步进阶,就必须了解CLR的机制了。

2.2、CTS(通用类型系统)与CLS(通用语言规范)

.NET CLR是支持多种语言的,如C#、F#、VB等,这些语言编译后都可以在CLR上执行,还支持不同语言的互操作,比如在C#类继承一个VB写的类,在C#中调用F#写的一个方法等。

实现这种不同语言之间交互的基础就是这些语言都遵循统一的规范和要求 —— CTS(通用类型系统),CTS定义了一套通用的数据类型系统,包括值类型、引用类型的结构。

比如C#中int、VB中的Interger都是整形,对应CTS中的Int32。

CLS是CTS的子集,规定了语言编译器必须遵循的一组规则,以便创建在 CLR 中运行的 .NET 应用程序。可以把CTS看做是规范,CLR是对CTS的具体实现。

CTS(Common Type System)通用类型系统

微软制定了一个正式的规范来描述类型的定义和行为,这就是通用类型系统

(Common Type System,CTS)。

所有.NET语言共享这一类型系统,实现它们之间无缝的互操作,比如可以在VB.NET中派生一个由C#编写的类。

  • CTS 提供了2种类型:引用类型、值类型。
  • CTS 规范规定,一个类型可以包含零个或多个成员。这些成员包括:字段(Field)、属性(Property)、方法(Method)、事件(Event)。
  • CTS 指定了类型可见性规则以及类型成员的访问规则,private、public 等。
  • CTS 还为类型继承、虚方法、对象生存期等定义了相应的规则。
  • CTS 规定:所有类型最终必须从预定义的 System.Object 类型继承,这里包括值类型也是从Object继承而来的。
CLS(Common Language Specifition)公共语言规范

公共语言规范(https://learn.microsoft.com/zh-cn/dotnet/standard/language-independence)(Common Language Specifition,CLS)是CTS的一个子集,从类型、命名、事件、属性等方面对语言进行了共性的定义及规范。

CLS制定了一种以.NET平台为目标的语言所必须支持的最小特征,以及该语言与其他.NET语言之间实现互操作性所需要的完备特征。

例如,CLS并不去关心一种语言用什么关键字实现继承,只是关心该语言如何支持继承。

CLS 遵从性的规则仅适用于组件的公共接口,而非其私有实现。CLS规范是提交给ECMA组织管理的, 有关规则的完整列表,请参阅 ECMA-335 标准:公共语言基础结构(https://www.ecma-international.org/publications-and-standards/standards/ecma-335/)。

符合 CLS 的类型

描述

Byte

8 位无符号整数

Int16

16 位带符号整数

Int32

32 位带符号整数

Int64

64 位带符号整数

Half

半精度浮点值

单精度

单精度浮点值

双精度

双精度浮点值

布尔值

true 或 false 值类型

Char

UTF 16 编码单元

小数

非浮点十进制数字

IntPtr

平台定义的大小的指针或句柄

字符串

零个、一个或多个 Char 对象的集合

2.3、DotNET Framework 类库(FCL/BCL)

类库(Framework Class Library,FCL)就是.NET Framework内置的各种组件服务,如ASP.NET、MVC、WCF和WPF等组件,满足不同编程应用场景的需求。

基础类库BCL(Base Class Library)是FCL的一个子集,顾名思义就是一些比较基础、通用的类库,如基本数据类型、集合、线程、安全、字符串操作、网络操作、IO、XML操作等等,大多都包含在System命名空间下,如System.TextSystem.IO

其他一些常用的名词,如核心 .NET 库、框架库、运行时库、共享框架,大多都指的是BCL。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 这些都是DotNET内置的类库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading.Tasks;

BCL作为FCL的基础,使用了CTS 数据类型和标准的应用程序格式编制,能被任何一种 .NET 编程语言的应用程序所使用。

2.4、语言&运行机制

.NET是为了支持多种语言而设计的,如Microsoft自己发布的VB.NET、Managed C++、C#、J#和JScript.NET,还有其他厂商开发的语言,如Cobol、Smalltalk、Perl和 Eiffel等几十种编程语言。

无论使用哪种语言来编写源代码,都会通过编译器编译成中间代码MSIL(Microsoft Intermediate Language)。

语言的集成性主要是公共语言规范(CLS)和通用类型系统(CTS)一起确保了语言的相互操作性。

CLS是一个最低标准集,所有面向.NET的编译器都必须支持它,每个语言都符合这个规范,从而满足了语言的互相调用和互操作。

.NET语言程序运行的逻辑如下图:

每种语言都有自己的编译器,将源代码编译成中间语言(MSIL,或IL),然后在CLR上运行,主要分为两个阶段:

  • 编译阶段:由MSBuild把源代码编译为中间语言IL代码,编译后就是EXE、DLL格式的文件。
  • 运行阶段:CLR把中间语言CIL代码编译为平台专用的机器代码,最终在CPU上运行的就是机器码(汇编代码)。

Microsoft中间语言(MSIL),也称为通用中间语言(CIL/IL:Common Intermediate Language),是一组与平台无关的指令,在CLR中运行时由JIT按需编译为机器码执行。

下图为一个打印hello world的IL代码,通过内置工具ildasm可以查看。

三、.NET Core 框架

.NET Core是一个免费、跨平台、开源的开发平台,用于一站式构建不同类型的应用程序。

.NET Core 是以.NET Framework 为基础,但是经过重新设计、实现的的新一代框架,实现了原.NET Framework 中的几乎所有功能,核心特点就是开源、跨平台

开源,采用MIT和Apache协议作为开源协议,对商业十分友好。

跨平台,支持Windows、MacOS、Linux,支持x64,、x86、ARM架构。

友好通用,除了跨平台,.NET Core 通过 .NET Standard与.NET Framework、Xamarin和Mono兼容,支持WEB、移动、桌面、微服务容器、云端Azure、物联网IOT、机器学习、游戏Unity等多种应用开发模型。

支持多种语言,C#、VB、F#,基于一致的API标准模型——.NETStandard,使得不同语言的程序集和库可共享通用。

现代高效:结合C#8+、VS2019+,提供现代化的语言框架、高效的开发体验。

高性能,根据 TechEmpowers发布的一份报告,.NET Core比其他同类框架都要快得多。

轻量,.NET Core可以打包在应用程序中,也可以安装在并行用户、机器范围内或服务器上,可以部署在Docker容器中。

.NET Core 从 2016 年发布首个.NET Core1,后面陆续发布了.NET Core 2、.NET Core 3,及后续的.NET 6、.NET 7、.NET 8、.NET 9。

跳过了版本号 4.x,以避免与 .NET Framework 4.x 混淆。

从.NET 5开始,名称中删除了Core,以强调这是.NET未来的主要实现。

ASP.NET Core 5.0 基于 .NET 5.0,但保留名称Core以避免将其与 ASP.NET MVC 5 混淆。

同样,Entity Framework Core 5.0保留名称Core以避免将其与 Entity Framework5、Entity Framework6 混淆。

3.1、统一的.NET框架

.NET框架体系经过多年发展,衍生了多个版本 —— 使用 .NET Framework 来构建 Windows 桌面应用程序,使用 Xamarin 来构建 iOSAndroid 应用程序,使用 .NET Core 来构建跨平台的 Web 应用程序。

每一个框架都有自己的BCL、运行时CLR,长此以往,这也是造成如今.NET市场越来越差的原因之一。

so,为解决这个问题,.NET Core就肩负了这个一统江湖的使命!

  • .NET 3 添加了对WinForm、WPF、EF的支持。
  • .NET 5 统一了Mono和.NET Core BCL的代码库。
  • 在.NET 6中,运行时和工具也统一了,完成了One .NET愿景。
  • .NET 7 统一了所有不同的 .NET 开发工具组件,使开发人员能够在相同的基础类库 (BCL)、运行时和编译器上构建所有类型的应用(桌面、移动、Web 等)。

从.NET 5,到.NET 7,统一的愿景基本已达成,一站式构建 Web、桌面和移动等应用,支持传统的WPF、Winfrom(当然这两者只限于Windows系统),还引入了.NET Multi-platform App UI (.NET MAUI)作为Xamarin Forms的继任者。

3.2、.NET Core体系结构

运行时.NET Runtime有两种,CoreCLR,功能和.NET Framework的CLR差不多;.NET Native RunTime(CoreRT/NativeAOT)是直接将C#代码编译为机器码的运行时,还只是一个实验性的运行时。

Core CLR 是一个跨平台的运行时,移植了 .NET Framework 的 CLR 的功能,包含核心程序库 mscorlib、JIT 编译器、垃圾收集器 (GC) 以及其他运行 MSIL 所需要的运行期环境。

BCL/CoreFX,类库,即 Base Classlibrary 基础类,包含 File、System、Console、XML、ADO.NET、日期时间等类库。Core FX就是.NET Core的BCL。

App Model,一站式构建 Web、桌面和移动等应用的模型。

3.3、JIT、AOT编译

通常情况下,我们写的C#代码被编译为中间代码IL,在运行期间由CLR的JIT编译器编译为机器码执行。

这样势必造成运行的一些延迟,如果知道目标平台,则可以为该目标平台提前编译为机器码,这就是所谓的提前编译(AOT),它的优点是启动时间更快。

JIT(Just In Time Compiler,即时编译),顾名思义,在需要(运行代码)的时候才会被编译为机器码。当然编译好后会被缓存,以便于后续执行,这也是为什么.NET程序预热后执行更快的原因,不过程序关闭就没了。

AOT编译(Ahead of Time Compilation,预先编译或静态编译),在构建(发布)时将高级语言编译为本地机器码,让程序更快的启动、运行。可以将.NET Core程序编译成原生(机器)代码,不依赖 .NET 运行时而运行在宿主机器上。

CoreRT是应用了AOT编译的.NET本地运行时,是微软2014年推出的一项实验性技术,现在被库runtimelab取代,是一个NativeAOT的实验性运行时。

不同于CoreCLR,CoreRT不是虚拟机,也没有生成和动态运行代码的能力,因为它不包括JIT。它具有RTTI(运行时类型标识)和反射的能力,同时还具备垃圾回收(Garbage Collector)功能。

Core RT 会在不同的平台使用不同的 AOT 技术:

  • Windows 上使用的是 .NET Native。
  • macOS 与 Linux 上使用的是 LLILC (同时支持 JIT 和 AOT)。

四、.NET Framework vs .NET Core

4.1、对比 VS

比较

.NET Core

.NET Framework

历史

2016年,.NET Core 是 .NET 的最新实现。

2002年,.NET Framework 是 .NET 的第一个实现

开源

完全开源

部分组件是开源的

维护团队

.NET基金会(.NET Foundation)

微软.NET团队

跨平台

支持跨平台,Windows,Linux和macOS

仅Windows平台

第三方支持

有大量的第三方包,但少于.NET Framework

历史悠久,有许多第三方软件包、库可用

应用内部署

支持In-app模式部署

需要单独安装SDK,不支持打包到应用内

移动开发

支持,Xamarin、MAUI

不支持

性能和可扩展性

更高性能和可伸缩性

一般,性能和可伸缩性方面效率较低

微服务实施

.NET Core 支持微服务的实现

不支持

REST 服务实现

可以使用 .NET Core 创建一个 REST API。

它支持 REST API 服务实现

何时使用

创建跨平台应用程序。- 要创建微服务,一定要使用 .NET Core。将应用程序部署到 Dockers 容器。创建高性能且可扩展的应用程序。并行运行多个 .NET 版本,请选择 .NET Core。如果你想要一个命令行界面(CLI)控制,那么.NET core是最好的选择。

仅在Windows平台上运行。好像不算理由。基于 WinForms 或 WPF 应用程序,.NET7已支持。WebForm、WCF,新项目没必要了,过时了。.NET Core 不支持的第三方包。不适用于 .NET Core 的 .NET 技术。要访问特定于 Windows 的 API,如注册表、WMI,Core有NUGET 包可用

参考原文:

.NET Framework Vs .NET Core Vs .NET Standard

https://www.c-sharpcorner.com/article/net-framework-vs-net-core-vs-net-standard2/,2021年9月的文章,那时.NET5还没发布的。

.NET Core vs .NET Framework

https://www.interviewbit.com/blog/net-core-vs-net-framework/

4.2、被遗弃的功能

.NET Framework 中有一些技术在 .NET 中已经废弃或调整了:

Windows相关API不支持:.NET Framework是深度集成Windows系统的,而.NET Core是跨平台的,因此就有大量的系统相关的API不支持。

  • Windows 兼容性包的 Nuget包Microsoft.Windows.Compatibility提供了约 20,000 个 API,包括WCF、ACL、Windows加密、WMI、EventLog、注册表、Windows服务等,及一些跨平台 API。
  • Windows 注册表可通过Nuget查找Microsoft.Win32.Registry代替,其他如果在项目中发现缺少引用,请搜索 NuGet。
  • Web 浏览器控件:桌面开发中的浏览器控件,之前是基于IE内核的,已经过时。新提供的 Microsoft.Web.WebView2 可以通过Nuget获得。
  • 应用配置 App.config 升级为 appsettings.json,如果还想要用,则可添加System.Configuration.ConfigurationManager NuGet 包。
  • 应用程序域 (AppDomain) ,不支持创建其他应用域,也尚未计划在将来添加此功能。对于代码隔离,将流程或容器用作备用。若要动态加载程序集,请使用 AssemblyLoadContext 类。
  • .NET Remoting,.NET 6 及更高版本不支持 .NET 远程处理。对于简单的跨进程通信,可将进程间通信 (IPC) 机制视为远程处理的备用方案。对于跨计算机的通信,可将基于网络的解决方案用作备用方案。
  • 不支持 System.EnterpriseServices (COM+)。
  • 代码访问安全性,WPF for .NET 删除与 CAS 相关的代码,公开定义的 CAS 相关类型被移出 WPF 程序集,并移入了 Core .NET 库程序集中。
  • Windows Workflow Foundation (WF) 和 Windows Communication Foundation (WCF),在.NET 5 及更高版本不支持 WF 和 WCF, 有关替代方法,请参阅 CoreWF 和 CoreWCF。
  • 保存反射生成的程序集,.NET 6 及更高版本不支持保存由 System.Reflection.Emit API 生成的程序集,作为替代方法,请考虑 ILPack 库。

为了保障兼容性,.Net Core 依然是可以调用 .NET Framework 的库,只是如有有不支持的API或依赖会抛出异常。

4.3、桌面开发能用.NET Core吗?

开发服务端后台服务肯定是首选.NET Core的,那传统的的Windows桌面程序(WinForm、WPF)呢?能不能用最新的.NET Core呢?—— 答案当然是可以的!

优点

可以使用更新的C#语法、.NET特性,提升开发效率。

性能提升明显。

可以打包运行库的依赖,不用单独安装运行库了。

WebView2,基于Edge的现代浏览器内核。

缺点

.NET Framework配套的第三方库比较丰富,可能没有.NETCore版本的。

对操作系统的兼容,.NETFramework4支持XP系统,Core最低支持Win7。

尽管 .NET Core 是跨平台的,但其 WPF、Wiform 仅在 Windows 上运行!

从 .NET Framework 升级到 .NET Core VS2022内置的升级工具,相关参考:

  • 如何将 WPF 桌面应用升级到 .NET 7
  • 如何将 Windows 窗体 桌面应用升级到 .NET 7
  • 从 .NET Framework 移植到 .NET,基本都可以兼容,99%的API都是一样的
  • 桌面指南 (WPF .NET)

不要升级 Visual Basic Windows 窗体项目。扩展似乎存在 bug!

五、还有一些概念了解一下?

.NET应用:就是使用了.NET框架开发的应用程序,基于CLR运行。

Assembly:程序集,源代码编译的产出,一般表现为.DLL或者.EXE格式,必须依靠CLR才能顺利执行。它们都是标准的PE格式的文件,主要包括PE(Portable Executable)头、CLR头(托管代码的一些信息,如类型元数据)、IL代码、其他资源数据。

DLL:Dynamic Link Library,动态链接库,包含了已编译的C#代码、元数据和资源,可以在多个应用程序之间共享和重用。

命令行 CLI是一种跨平台工具,用于开发、构建、执行发布 .NET 应用程序。是.NET Core SDK的一部分,可以用dotnet指令来检查是否正确安装。

MSBuild (Microsoft Build Engine)是由Microsoft开发的构建工具和构建系统。它用于自动化软件项目的构建过程,包括编译源代码、打包、运行测试、部署和生成文档等。使用 MSBuild,我们可以构建Visual Studio项目和解决方案,而无需安装Visual Studio IDE

5.1、托管代码和非托管代码

托管代码(Managed Code)是指在受管理环境中运行的代码,通常指的是.NET语言(C#、VB)开发的代码,在CLR运行时环境中运行。由CLR来负责内存管理、垃圾回收、类型安全性和异常处理等任务,所以我们写(C#)托管代码时,就可以随意申明变量、创建对象,而不用去管内存的分配、管理和回收,使得代码更容易编写、维护和调试。

Java也算一种托管代码

相对而言,非托管代码(Unmanaged Code)就是没有专门的执行管理环境,通常使用低级编程语言(如C、C++)编写,开发人员需要手动处理内存管理、异常和资源释放等问题。

在实际的C#的开发中,我们也会经常用到非托管资源,如IO、文件流操作,就需要注意要手动释放(非托管)资源,避免内存溢出。

5.2、.NET Standard

.NET Standard是针对多个.NET框架 实现推出的一套正式的 .NET API 规范,目的是在多个.NET 框架间共享代码,如在.NET Framework 、 .NET、Mono间共享代码,提高 .NET 生态系统中的一致性。

.NET Standard 是一组标准化的 API规范,“.NET Standard Library”指的也是这个API标准库,注意只是一组规范,具体实现就是 .NET Framework、NET Core 和 Mono了,看看其源码就知道了。

所以:

.NET Standard是针对跨平台框架的一种规范,在跨平台框架开发是才会涉及。

从 .NET 5 和 .NET 6 开始,微软就统一了所有平台、应用终端,不再需要.NET Standard了,它以后不会更新了。

对于.NET Framework,在4.5 版本才正式支持.NET Standard的规范,.NET Core天生就支持了。

5.3、.NET的ECMA标准

ECMA(European Computer Manufacturers Association,欧洲计算机制造商协会)是一个国际性的标准化组织,致力于制定和推广信息和通信技术的标准。

.NET体系中的C#语言、公共语言基础(CLI)也是有标准规范的,参考Ecma 标准。.NET主要的的规范标准包括:

C# 语言标准(版本 6.0):ECMA-334.pdf

公共语言基础结构:ECMA-335.pdf,这也是CLR的标准。

CLI(Common Language Infrastructure)公共语言基础结构:是一系列规范标准的总称,包括CTS、CLS、CIL、元数据、执行系统等多种规范,.NET、Mono就是他的实现,由国际标准组织ECMA维护。

学习C#、CLR不需要去看上述规范,这个不适合,如果你是要自己实现一门高级语言,或写一个C#编译器则可以去看看。

5.4、Mono/Xamarin

Mono 是另一个 .NET Framework 的跨平台开源版本,并不属于微软,而是由社区的力量所主导。

Mono 项目始于 2001 年,由Xamarin牵头维护 mono/mon,2016年Xamarin被微软收购,之后逐步成为.NETCore的一部分。

Mono就像流落民间的王子,靠着乡亲们的力量慢慢成长,最后被国王召回,继承大统。

Mono 基于C#的ECMA标准和公共语言运行时(CLR),包括Mono运行时、C#编译器、类库和一些附加工具。

Mono兼容.NET标准,并支持跨平台开发。可以在多个操作系统上运行,包括Linux、macOS和Windows。Mono比较流行的应用场景就是Unity游戏开发和移动端应用开发。

  • Unity游戏引擎使用Mono作为其脚本引擎的一部分,所以Unity游戏开发的主要语言就是C#。
  • Xamarin(杂么瑞):就是基于Mono,专门用来开发移动端App应用程序,实现一次开发多端应用。其继任者是微软在.NET 7中推出的MAUI(maui /ˈmaʊɪ/ n.毛伊岛)。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
.NET Core与.NET Framework、Mono之间的关系
随着微软的.NET开源的推进,现在在.NET的实现上有了三个.NET Framework,Mono和.NET Core。经常被问起Mono的稳定性怎么样,后续Mono的前景如何,要回答这个问题就需要搞清楚这三个.NET 实现之间的关系和将来如何演进。 到目前为止(2015.2.17),微软在Windows平台上的.NET Framework的实现最为完整,但是.NET Framework和windows操作系统有很深的绑定,难以跨平台。Xamarin主导的Mono项目在.NET 的基础类库实现上有一些不够完
张善友
2018/01/29
1.6K0
C#图解教程第一章 C#和.NET框架
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编程
房上的猫
2018/03/14
1.3K0
C#图解教程第一章 C#和.NET框架
☀️ 学会编程入门必备 C# 最基础知识介绍(一)
所以就单独写几篇博客先来系统的介绍一下C#的基础知识,既方便自己深入学习,也能给需要的人提供帮助,一举两得。
呆呆敲代码的小Y
2021/08/12
1.2K0
.NET面试经典三问:什么是.NET?什么是.NET Framework?什么是.NET Core?
本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包括:CLS、CTS(CLI)、FCL、Windows下CLR的相关核心组成、Windows下托管程序运行概念、什么是.NET Framework,.NET Core,.NET Standard及一些VS编译器相关杂项和相关阅读链接。完整的从上读到下则你可以理解个大概的.NET体系。
BlueSocks
2022/04/01
1.1K0
.NET面试经典三问:什么是.NET?什么是.NET Framework?什么是.NET Core?
.NET6 平台系列3 .NET CLR 详解
  运行时(Runtime Environment,简称Runtime ),是指那些支持在特定的平台上,用于运行特定编程语言编写的软件的库和程序集,它一般要处理软件和操作系统之间的接口细节。例如,系统调用、程序的启动和终止、内存管理等。 运行时分3种:纯静态环境(如Fortran)、基于堆栈环境(如C、C++、Pascal)、纯动态环境(如SmallTak、Java)。
张传宁IT讲堂
2021/04/28
2.9K0
.NET6 平台系列3 .NET CLR 详解
【C# Personal Handbook】运行环境
来源 : https://docs.microsoft.com/tr-tr/dotnet/framework/get-started/overview CLR 组件
AI.NET 极客圈
2022/11/11
4910
【C# Personal Handbook】运行环境
《C#图解教程》读书笔记之一:C#和.NET框架
  C#语言是在微软公司的.NET框架上开发程序而设计的,首先作者给大家纠正了一下C#的正确发音:See Sharp(而不是很多人说的什么C井之类的,每次听到C井我都只能呵呵一笑)。
Edison Zhou
2018/08/20
7890
《C#图解教程》读书笔记之一:C#和.NET框架
.NET Core跨平台的奥秘[上篇]:历史的枷锁
微软推出的第一个版本的.NET Framework是一个面向Windows桌面和服务器的基础框架,在此之后,为此微软根据设备自身的需求对.NET Framework进行裁剪,不断推出了针对具体设备类型的.NET Framework版本以实现针对移动、平板和嵌入式设备提供支持。除此之外,在Windows平台之外一致游荡着一只特立独行的猴子(Mono)。.NET平台看起来欣欣向荣,而实际上却日薄西山,就在这个时候微软走了一条唯一正确的道路,那就是基于跨平台理念重新设计的.NET Core,以及由此驱动地对整个.
蒋金楠
2018/01/15
1.3K0
.NET Core跨平台的奥秘[上篇]:历史的枷锁
.NET面试题系列[1] - .NET框架基础知识(1)
面试出现频率:从来没人问过。事实上我都不知道怎么问,考背书吗?倒是可以问问知不知道现在.NET最新版本是什么,考察面试者是否对新技术足够敏感。
s055523
2018/09/14
1.8K0
.NET面试题系列[1] - .NET框架基础知识(1)
C#温故而知新—闲话.Net
在Java搞得如火如荼时,微软为了巩固自己的霸主地位,自然要来分一杯羹,于是.NET应运而生。 .Net的战略。 NET是一种面向网络、支持各种用户终端的开发平台环境。.NET的特点: 软件即服务(SaaS) 微软的.NET战略意味着:微软公司以及在微软平台上的开发者将会制造服务,而不是制造软件。在未来几年之内,微软将陆续发布有关.Net的平台和工具,用于在因特网上开发web服务。那时,工作在.Net上的用户、开发人员和ET工作人员都不再购买软件、安装软件和维护软件。取而代之的是,他们将定制服务,软
JadePeng
2018/01/18
7100
C#温故而知新—闲话.Net
.NET6 平台系列2 .NET Framework框架详解
  .NET Framework 是 Windows 的托管执行环境,可为其运行的应用提供各种服务。 它包括两个主要组件:公共语言运行时 (CLR),它是处理运行应用的执行引擎;.NET Framework 类库,它提供开发人员可从其自己的应用中调用的已测试、可重用代码库。 .NET Framework 提供的用于运行应用的服务包括:
张传宁IT讲堂
2021/04/26
2.4K0
.NET6 平台系列2 .NET Framework框架详解
.NET 架构组件
.NET 应用程序是为 .NET 的一个或多个实现开发并在其中运行的。.NET 的实现包括 .NET Framework、.NET 5(和 .NET Core)和 Mono。.NET 的多个实现有一个通用的 API 规范,称为 .NET Standard。本文简要介绍了这些概念中的每一个。 .NET 标准 .NET Standard 是一组由 .NET 实现的基类库实现的 API。更正式地说,它是 .NET API 的规范,它构成了您编译代码所依据的统一契约集。这些契约在多个 .NET 实现中实现。 .NET Standard 是一个目标框架。如果您的代码以 .NET Standard 版本为目标,则它可以在支持该 .NET Standard 版本的任何 .NET 实现上运行。 .NET Standard 的创建是为了在不同的 .NET 实现之间实现可移植性,但现在 .NET 5 提供了一种更好的方式来跨多个平台和工作负载共享代码。有关详细信息,请参阅.NET 5 和 .NET Standard。 .NET 实现 .NET 的每个实现都包括以下组件: 一个或多个运行时。示例:.NET Framework CLR、.NET 5 CLR。 一个类库。示例:.NET Framework 基类库、.NET 5 基类库。 可选地,一个或多个应用程序框架。示例:ASP.NET、Windows Forms和Windows Presentation Foundation (WPF)包含在 .NET Framework 和 .NET 5 中。 可选的,开发工具。一些开发工具在多个实现之间共享。 Microsoft 支持四种 .NET 实现: .NET 5(和 .NET Core)及更高版本 .NET 框架 单核细胞增多症 UWP .NET 5 现在是主要实现,也是持续开发的重点。.NET 5 基于单一代码库构建,该代码库支持多个平台和许多工作负载,例如 Windows 桌面应用程序和跨平台控制台应用程序、云服务和网站。 .NET 5 .NET 5 是 .NET 的跨平台实现,旨在大规模处理服务器和云工作负载。它还支持其他工作负载,包括桌面应用程序。它在 Windows、macOS 和 Linux 上运行。它实现了 .NET Standard,因此面向 .NET Standard 的代码可以在 .NET 5 上运行。ASP.NET Core、Windows Forms和Windows Presentation Foundation (WPF)都可以在 .NET 5 上运行。 有关更多信息,请参阅以下资源: .NET介绍 在 .NET 5 和 .NET Framework 之间为服务器应用选择 .NET 5 和 .NET 标准 .NET 框架 .NET Framework 是自 2002 年以来一直存在的原始 .NET 实现。4.5 版及更高版本实现了 .NET Standard,因此面向 .NET Standard 的代码可以在这些版本的 .NET Framework 上运行。它包含其他特定于 Windows 的 API,例如用于使用 Windows 窗体和 WPF 进行 Windows 桌面开发的 API。.NET Framework 已针对构建 Windows 桌面应用程序进行了优化。 有关详细信息,请参阅.NET Framework 指南。 单核细胞增多症 Mono 是一种 .NET 实现,主要用于需要小型运行时。它是为 Android、macOS、iOS、tvOS 和 watchOS 上的 Xamarin 应用程序提供支持的运行时,并且主要专注于小空间。Mono 还支持使用 Unity 引擎构建的游戏。 它支持所有当前发布的 .NET Standard 版本。 从历史上看,Mono 实现了 .NET Framework 的更大 API,并在 Unix 上模拟了一些最流行的功能。它有时用于在 Unix 上运行依赖于这些功能的 .NET 应用程序。 Mono 通常与即时编译器一起使用,但它也具有在 iOS 等平台上使用的完整静态编译器(提前编译)。 有关更多信息,请参阅Mono 文档。 通用 Windows 平台 (UWP) UWP 是 .NET 的一种实现,用于为物联网 (IoT) 构建现代的、支持触控的 Windows 应用程序和软件。它旨在统一您可能想要定位的不同类型的设备,包括 PC、平板电脑、手机,甚至 Xbox。UWP 提供了许多服务,例如集中式应用程序商店、执行环境 (AppContainer) 和一组 Windows API,以代替 Win32 (WinRT) 使用。应用程序可以用 C++、C#、Visual Basic 和 JavaScript 编写。 有关详细信息,请参阅通用 Win
呆呆
2022/01/04
1K0
C# 学习笔记(1)—— 起步
C#是微软公司开发的一种面向对象语言且运行于.Net Framework之上的高级程序设计语言。因为基于.Net Framework,使得C#拥有丰富的类库和图形控件。当我们开发应用程序可以利用这些现有的控件快速开发。
Karl Du
2023/10/20
3030
C# 学习笔记(1)—— 起步
.NET Framework 框架的一些简单介绍
1)OMC(对象组件模型)的CORBA 2)Microsoft的COM/DCOM 3)Sun公司的JavaBeans
庞小明
2019/07/02
1.4K0
.NET Framework与.NET Core
 C#是微软发布的面向对象的,运行与.NET Framework之上的高级程序设计语言,属于编译型语言,也是目前.NET Framework的主角。C#语言语法简单而优雅,同时也有着很高的开发效率,尤其是在网络编程方便有着广泛的应用。目前C#已经成为一种跨平台的语言,可以运行于Windows、Linux、Mac等其他平台上。.NET Framework包含公共语言运行时(CLR)和.NET Framework 类库,其中包括各种功能和对许多行业标准的支持。NET Framework 提供许多服务,包括内存管理、类型和内存安全、安全性、网络和应用程序部署。它提供易于使用的数据结构和API,将较低级别的Windows操作系统抽象化。可在.NET Framework中使用各种编程语言,包括C#、F#和Visual Basic。
AI.NET 极客圈
2019/07/19
1.9K0
.NET Framework与.NET Core
初识 C#
C#语言与.NET初步认识 C c#是微软公司在2000年6月发布的一种能全新的、简单的、安全的、面向对象的程序设计语言,是专门为.NET的应用而开发的语言。它吸收了C++、VB、Delphi、Java等语言优点,体现了当今最新的程序设计技术的功能和精华。C#读作——CSharp. NET 也称doNet,一般值Net Framework 框架,是一种平台。是微软为开发应用而创建的一个平台。 作用 - 桌面应用程序——WinForm(Client/Server),例如:QQ - Web 应用程序——
ruochen
2021/05/22
8550
初识 C#
[读书笔记]C#学习笔记一: .Net Framwork
前言:  一次偶然的机会  在园子里看到@Learning hard 出版的一本书: <<C#学习笔记>>, 然后买来 一直到现在读完, 感觉很不错, 适合入门, 书中内容是从C#1.0 到5.0. 很全面也很细致. 下面就来分享一下这本书中自己感觉需要记录的一些东西.  这里先贴上@Learning hard本人在博客园的主页: http://www.cnblogs.com/zhili/     以及本书中的一些知识点: http://www.cnblogs.com/zhili/category/421
一枝花算不算浪漫
2018/05/18
6780
Mono 和 .NET Core比翼双飞
大家好,今天给大家分享.NET 蓝图之下的Mono和.NET Core 话题,微软在Build 2019 大会上给.NET 做了一个五年规划,所以分享的主题就是《Mono和.NET Core 比翼双飞》,将在完成这个五年规划的时候合体。
张善友
2019/07/02
1.2K0
.NET平台系列19 新世界中的.NET大统一平台架构解析
  微软在.NET跨平台之路上付出了巨大的艰辛,同时做了海量的工作。首先推出了统一的API标准规范库 .NET Standard,并不断补充完善标准库,截止目前(2021-5-26)最新版本为 .NET Standard 2.1。之后发布了跨平台解决方案 .NET Core,同时建立.NET基金会,并大力发展生态建设,世界知名IT公司纷纷加入并贡献,社区发展异常活跃。收购Xamarin公司后,Mono也正是加入微软大家庭,填补了微软技术栈在移动APP开发领域的技术空白。
张传宁IT讲堂
2021/06/10
2.1K0
.NET平台系列19 新世界中的.NET大统一平台架构解析
深入.NET框架
1.1 .NET框架的优点   面向对象   对Web应用的强大支持   对Web Service(Web服务)的支持   实现SOA,支持云计算   支持构建.NET程序的炫彩外衣 二:  .NET框架结构   1.NET运行在操作系统之上,是.NET最基础的框架。他提供了创建,部署和运行.NET应用的环境,主要包括公共语言运行时(CLR)和   框架类库(.NET FrameWork 类库(FCL)),并且支持多种开发语言。例如:(C#,VB,.NET,C++)等。       2..NET最主要的两个
房上的猫
2018/03/14
9360
深入.NET框架
相关推荐
.NET Core与.NET Framework、Mono之间的关系
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验