欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

多个 .NET 框架

程序员文章站 2022-04-10 13:53:10
[toc] 目前存在多个 .NET 框架。 Microsoft 的宗旨是在最大范围的操作系统和硬件平台上提供 .NET 实现。 下表列出了最主要的 .NET 实现: 实现|描述| | .NET Core|真正跨平台和开源的 .NET 框架,为服务器和命令行应用程序提供了高度模块化的 API 集合 M ......

目前存在多个 .net 框架。 microsoft 的宗旨是在最大范围的操作系统和硬件平台上提供 .net 实现。 下表列出了最主要的 .net 实现:

实现 描述
.net core 真正跨平台和开源的 .net 框架,为服务器和命令行应用程序提供了高度模块化的 api 集合
microsoft .net framework 第一个、最大和最广泛部署的 .net 框架
xamarin .net 的移动平台实现,支持 ios 和 android,支持单一代码库的移动应用开发,同事允许访问本机平台 api
mono 最早的 .net 开源实现,是 xamarin 和 unity 的基础。目前 mono 已被 .net core 代替
unity 跨平台 2d/3d 游戏引擎,用于为游戏机、pc、移动设备和网站开发电子游戏

应用程序编程接口

数据类型(比如 system.console)的所有方法(常规地说是成员)定义了该类型的应用程序编程接口(application programming interface,api)。

api 定义软件如何与其他组件交互,所以单独一个数据类型还不够。通常,是一组数据类型的所有 api 结合起来为某个组件集合创建一个 api。

以 .net 为例,一个程序集中的所有类型(及其成员)构成了该程序集的 api。类似地,.net core 或 microsoft .net framework 中的所有程序集构成了更大的 api。

通常将这一组更大的 api 称为框架,所以我们用“.net 框架” 一词指代 microsoft .net framework 的所有程序集公开的 api。

api 通常包含一组接口和协议(或指令),帮助你使用一系列组件进行编程。事实上,对于 .net 来说,协议本身就是 .net 程序集的执行规则。

c# 和 .net 版本控制

.net 框架的开发周期有别于 c# 语言,这造成底层 .net 框架和对应的 c# 语言使用不同版本号。例如,使用 c# 5.0 编译器将默认基于 microsoft.net framework 4.6 来编译。 下表简单总结了 microsoft .net framework 和 .net core 的 c# 和 .net 版本。

版本 描述
c# 1.0 和 net framework 1.0/1.1(visual studio 2002 和 2003) c# 的第一个正式发行版本。microsoft 团队从无到有创造了一种语言,专门为 .net 编程提供支持
c# 2.0 和 .net framework 2.0(visual studio 2005) c# 语言开始支持泛型,.net framework 2.0 新增了支持泛型的库
.net framework 3.0 新增一套api来支持分布式通信(windows communication foundation,wcf)、富客户端表示(windows presentation foundation,wpf)、 工作流(windows workflow,wf)以及 web 身份验证(cardspaces)
c# 3.0 和 .net framework 3.5(visual studio 2008) 添加对 linq 的支持,对集合编程 api 进行大幅改进。.net framework 3.5 对原有的 api 进行扩展以支持 linq
c# 4.0 和 .net framework 4(visual studio 2010) 添加对动态类型的支持,对多线程编程 api 进行大幅改进,强调了多处理器和核心支持
c# 5.0 和 .net framework 4.5(visual studio 2012) 添加对异步方法调用的支持,同时不需要显式注册委托回调。框架的另一个改动是支持与 windows runtime(winrt) 的互操作性
c# 6.0 和 .net framework 4.6/.net core 1.x(visual studio 2015) 添加字符串插值、空传播(空条件)成员访问、异常过滤器、字典初始化器和其他许多功能
c# 7.0 和 .net framework 4.7/.net core 1.1/2.0(visual studio 2017) 添加元组、解构器、模式匹配、嵌套方法(本地函数)、返回引用等功能

随 c# 6.0 增加的最重要的一个框架功能或许是对跨平台编译的支持。换言之,不仅能用 windows 上运行的 microsoft .net framework 编译,还能使用 linux 和 macos 上运行的 .net core 实现来编译。

虽然 .net core 的功能比完整的 microsoft .net framework 少,但足以使整个 asp.net 网站在非 windows 和 iis 的系统上运行。这意味着同一个代码库可编译并执行在多个平台上运行的应用程序。

.net core 是一套完整 sdk,包含从 .net compiler platform(即“roslyn”,本身在 linux 和 macos 上运行)到 .net core “运行时”的一切,另外还提供了像 dotnet 命令行实用程序(dotnet.exe,自 c# 7.0 引入)这样的工具。

.net standard

有这么多不同的 .net 实现,每个 .net 框架还有这么多版本,而且每个实现都支持一套不同的、但多少有点重叠的 api,造成框架分叉得越来越厉害。

这增大了写跨 .net 框架可重用代码的难度,因为要检查特定 api 是否支持。为降低复杂度,microsoft 推出了 .net standard 来定义不同版本的标准应支持哪些 api。换言之,要相容于某个 .net standard 版本,.net 框架必须支持该标准所规定的 api。

但由于许多实现已经发布,所以哪个 api 要进入哪个标准的决策树在一定程度上基于现有实现及其与 .net standard 版本号的关联。

原文链接: