您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > .NET

新世界中的.NET大统一平台架构解析

时间:2021-06-08 09:32:20  来源:  作者:张传宁IT讲堂

微软在.NET跨平台之路上付出了巨大的艰辛,同时做了海量的工作。首先推出了统一的API标准规范库 .NET Standard,并不断补充完善标准库,截止目前(2021-5-26)最新版本为 .NET Standard 2.1。之后发布了跨平台解决方案 .NET Core,同时建立.NET基金会,并大力发展生态建设,世界知名IT公司纷纷加入并贡献,社区发展异常活跃。收购Xamarin公司后,Mono也正是加入微软大家庭,填补了微软技术栈在移动App开发领域的技术空白。

自此微软.NET进化成了如下图所示的全新大统一架构

新世界中的.NET大统一平台架构解析

 

.NET Framework

新世界中的.NET大统一平台架构解析

 

 .NET Framework开发平台包括公共语言运行库(CLR)和基类库(BCL),前者负责管理代码的执行,后者提供了丰富的类库来构建应用程序。微软最初设计.NET Framework是为了使应用具有跨平台的可能性,但是微软在将他们的实现努力投入,发现这一平台在 windows上工作得最好。

  自.NET Framework4.5.2成为 Windows操作系统的官方组件以来,NET Framework已经安装在超过10亿台计算机上,所以对它的改动必须尽可能少。即使是修复bug也会导致问题,所以更新频率很低。在计算机中,为.NET Framework编写的所有应用程序都共享相同版本的CLR以及存储在全局程序集缓存(GAC)中的库,如果其中一些应用程序需要特定版本以保证兼容性,就会出问题。

  实际上,.NET Framework仅适用于 Windows系统,因为是旧平台,所以不建议使用它创建新的应用程序。

  应用场景:针对传统的桌面端解决方案,采用WPF与WinForm。

.NET Core

  现代移动技术和计算的发展使得 Windows作为操作系统变得不那么重要了。正因为如此,微软一直致力于将.NET从它与 Windows的紧密联系中分离出来。在将 .NET Framework重写为真正跨平台的同时微软也利用这次机会重构并删除了不再被认为是核心的主要部分。

  新产品被命名为 .NET Core,其中包括名为 CoreCLR 的 CLR 跨平台实现和名为 CoreFX 的精简类库。

新世界中的.NET大统一平台架构解析

 

  微软负责.NET的项目经理 Scott Hunter认为:“.NET Core客户中有40%是全新的平台开发人员这正是我们想要的结果。我们想引入新人。”

  .NET Core的运行速度很快,因为它可以与应用程序并行部署,所以.NET Core可以频繁地更改,因为这些更改不会影响同一台计算机上的其他 .NET Core 应用程序。微软对 .NET Core 所做的改进无法添加到NET Framework中。

  应用场景:针对跨平台(Windows、linuxmacOS)的解决方案,如物联网IoT、人工智能AI、AR、MR、Web等。

Xamarin

  第三方公司开发了名为 Mono 项目的 .NET Framework实现。Mono是跨平台的,但是它远远落后于.NET Framework的官方实现。Mono 作为 Xamarin移动平台以及 Unity 等跨平台游戏开发平台的基础,已经找到了自己的价值。

新世界中的.NET大统一平台架构解析

 

  微软在2016年收购了 Xamarin,并且在 Visual Studio2019中免费提供曾经昂贵的 Xamarin扩展。微软将只能创建移动应用程序的 Xamarin Studio开发工具更名为 Visual Studio2019 for Mac,并赋予它创建其他类型应用程序的能力。有了 Visual Studio201 99 for Mac,微软就能够将 Xamarin Studio编辑器的部分功能替换为 Visual Studio2019 for Windows的部分功能,以提供更接近的体验和性能。

  应用场景:针对移动端的解决方案,如IOSAndroid、tvOS 和 watchOS。

.NET Standard

.NET平台发展至今,微软控制着三个技术平台,如上图所示。

  • .NET Framework:用于旧应用
  • .NET Core:用于跨平台和新应用
  • Xamarin:用于移动应用

  以上每种.NET平台都有优点和缺点,因为它们都是针对不同的场景设计的。这导致如下问题:开发人员必须学习三个.NET平台,每个.NET平台都有令人讨厌的怪癖和限制。因此,微软定义了.NET Standard,它是一套所有.NET平台都可以实现的API规范,从而用来控制它们的兼容性级别。例如,与 .NET Standard1.4兼容的平台表明提供基本的支持。

  在.NET Standard 2.0及以后版本中,微软已将这三种.NET平台融合到现代的最低标准,这使开发人员可以更容易地在任何类型的.NET之间共享代码。在.NET Core2.0及以后版本中,微软增加了许多缺失的API,开发人员需要将为.NET Framework编写的旧代码移植到跨平台的.NET Core中。但是有些AP已经实现了,可以抛出异常来指示开发人员,不应该实际使用它们。这通常是由于运行 .NET Core的操作系统不同导致的。

  理解 .NET Standard 只是一种标准是很重要的。不能像安装html5那样安装.NET Standard。要使用HTML5,就必须安装实现了HTML5标准的Web浏览器。

  要使用 .NET Standard,就必须安装实现了.NET Standard规范的.NET平台。 .NET Standard2.0是由最新版本的 .NET Framework、.NET Core和 Xamarin实现的。

  最新的.NET Standard2.1仅由. NET Core3.、Mono和 Xamarin实现。C#8.0的一些特性需要.NETStandard2.1,.NET Framework4.8没有实现.NET Standard2.1,所以应该把 .NET Framework 当作旧技术。

新世界中的.NET大统一平台架构解析

 

.NET Standard 具体介绍与使用,请参考我的博客《.NET平台系列20 .NET Standard 应用详解》系列

https://www.cnblogs.com/SavionZhang/p/14822232.html

  • .NET Standard 简介
  • .NET Standard 版本支持
  • .NET Standard SDK 样式项目中的目标框架
  • .NET Standard中配置TargetFrameworks输出多版本类库
  • .NET Standard 类库使用技巧
  • .NET Standard 的未来

Common Infrastructure

  公共基础设施,简称CI。位于架构的最底层,构建于操作系统之上。主要包含开发语言、编译器、运行时。详细介绍请参考我的博客

  • 《.NET平台系列2 .NET Framework 框架详解》

https://www.cnblogs.com/SavionZhang/p/14689688.html

  • 《.NET平台系列7 .NET Core 体系结构详解》

https://www.cnblogs.com/SavionZhang/p/14781418.html

开发工具

  • Visual Studio 微软官方推出的宇宙第一IDE,它是一个完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等。
新世界中的.NET大统一平台架构解析

 

从 Visual Studio 第一代产品到目前的 Visual Studio 2019,它们与Windows系统紧密绑定,跨平台需求出现以后,微软又开发了支持跨平台的开发工具 Visual Studio for Mac。下载地址:Windows 版& Mac 版 Visual Studio 2019 (microsoft.com)

新世界中的.NET大统一平台架构解析

 


新世界中的.NET大统一平台架构解析

 

  • Visual Studio Code 微软在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的轻量级工具 Visual Studio Code,它是针对于编写现代Web和云应用的跨平台源代码编辑器, 可在桌面上运行,并且可用于Windows,macOS和Linux。它具有对JAVAScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如C++,C#,Java,Pythonphp,Go)和运行时(例如.NET和Unity)扩展的生态系统。

随着VS产品的不断升级,功能越来越强大,自然就导致该产品比较庞大,稍显笨重,对开发者的电脑硬件配置要求也不断提高。并且包括Visual Studio 2019在内,VS一直都是32位的应用程序,主进程最多只能4GB,因此限制了VS的使用场景。2021年4月18号微软宣布将于今年夏季发布首个64位的 Visual Studio 2022。

新世界中的.NET大统一平台架构解析

 

官方放出的测试视频,Visual Studio2022打开一个包含 1600 个项目和约 30 万个文件的解决方案,最高内存占用到5G+都没问题!Visual Studio 2022还将大幅提升文件打开速度、代码调试性能、代码搜索性能,还将有着更强大的AI IntelliCode 引擎做代码预测,还有更好的macOS支持等各种改进,在宇宙第一IDE的道路上继续狂奔!



Tags:.NET   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
编译和反编译.NET 中的编译是把开发人员写的 C# 代码转化为计算机可理解的代码的过程,也就是中间语言代码(IL代码)。在这个过程中,C# 源代码被转换为可执行文件(exe或者dll 文件)...【详细内容】
2022-07-15  Tags: .NET  点击:(1)  评论:(0)  加入收藏
我们在开发 webapi 项目时如果遇到 api 接口需要同时支持多个版本的时候,比如接口修改了入参之后但是又希望支持老版本的前端(这里的前端可能是网页,可能是app,小程序 等等)进行...【详细内容】
2022-07-14  Tags: .NET  点击:(3)  评论:(0)  加入收藏
什么是.NET.NET 是由 Microsoft 创建的开源开发平台,用于生成多种不同类型的应用程序,主要支持C#、F#及VB。.NET程序运行原理.NET程序的运行是由其虚拟机CLR(公共语言运行时)把...【详细内容】
2022-06-21  Tags: .NET  点击:(26)  评论:(0)  加入收藏
项目介绍一套基于.NetCore+Vue2/Vue3+Element plus+uniapp,采用前后端分离方式,全自动生成PC与移动端代码的快速开发脚手架;支持移动端(uniapp)ios/android/h5/微信小程序。 Vu...【详细内容】
2022-06-13  Tags: .NET  点击:(56)  评论:(0)  加入收藏
多年前借鉴b/s优势实现基于.net的c/s框架 本框架未采用.NET固有的WCF通讯解决方案,而使用传统http数据加密方式.框架初始和传统客户端升级方式一样检查新版本,如有则下载升级...【详细内容】
2022-06-05  Tags: .NET  点击:(30)  评论:(0)  加入收藏
Asp.Net Core Identity 是.Net自带的身份认证系统,支持用户界面 (UI) 登录功能,并且管理用户、密码、配置文件数据、角色、声明、令牌、电子邮件确认等等。使用Visual Studio...【详细内容】
2022-06-05  Tags: .NET  点击:(35)  评论:(0)  加入收藏
安装Hangfire新建ASP.NET Core空 项目,.Net Core版本3.1 往*.csproj添加包引用,添加新的PackageReference标记。如下所示。请注意,下面代码段中的版本可能已经过时,如有需要,请使...【详细内容】
2022-05-07  Tags: .NET  点击:(76)  评论:(0)  加入收藏
 B/S架构的Web程序几乎占据了应用软件的绝大多数市场,但是C/S架构的WinForm、WPF客户端程序依然具有很实用的价值,如设计类软件 AutoCAD与Autodesk Revit、WPS、IT类的集成开...【详细内容】
2022-04-27  Tags: .NET  点击:(153)  评论:(0)  加入收藏
前几天有个老项目找到我,有多老呢?比我工作年限都长,见到这个项目我还得叫一声前辈。这个项目目前使用非常稳定,十多年了没怎么更新过,现在客户想加一个小功能:在线预览Word文档。...【详细内容】
2022-04-27  Tags: .NET  点击:(65)  评论:(0)  加入收藏
之前,我们已经了解了ASP.NET Core中的身份认证,现在,我们来聊一下授权。老规矩,示例程序源码XXTk.Auth.Samples已经提交了,需要的请自取。概述ASP.NET Core中的授权方式有很多,我...【详细内容】
2022-04-20  Tags: .NET  点击:(143)  评论:(0)  加入收藏
▌简易百科推荐
编译和反编译.NET 中的编译是把开发人员写的 C# 代码转化为计算机可理解的代码的过程,也就是中间语言代码(IL代码)。在这个过程中,C# 源代码被转换为可执行文件(exe或者dll 文件)...【详细内容】
2022-07-15  IT狂人日记    Tags:.NET   点击:(1)  评论:(0)  加入收藏
我们在开发 webapi 项目时如果遇到 api 接口需要同时支持多个版本的时候,比如接口修改了入参之后但是又希望支持老版本的前端(这里的前端可能是网页,可能是app,小程序 等等)进行...【详细内容】
2022-07-14  IT技术资源爱好者    Tags:.Net   点击:(3)  评论:(0)  加入收藏
什么是.NET.NET 是由 Microsoft 创建的开源开发平台,用于生成多种不同类型的应用程序,主要支持C#、F#及VB。.NET程序运行原理.NET程序的运行是由其虚拟机CLR(公共语言运行时)把...【详细内容】
2022-06-21  威步上海    Tags:.NET   点击:(26)  评论:(0)  加入收藏
Asp.Net Core Identity 是.Net自带的身份认证系统,支持用户界面 (UI) 登录功能,并且管理用户、密码、配置文件数据、角色、声明、令牌、电子邮件确认等等。使用Visual Studio...【详细内容】
2022-06-05  海椰人  博客园  Tags:.Net   点击:(35)  评论:(0)  加入收藏
安装Hangfire新建ASP.NET Core空 项目,.Net Core版本3.1 往*.csproj添加包引用,添加新的PackageReference标记。如下所示。请注意,下面代码段中的版本可能已经过时,如有需要,请使...【详细内容】
2022-05-07  壮志林云    Tags:.NET   点击:(76)  评论:(0)  加入收藏
 B/S架构的Web程序几乎占据了应用软件的绝大多数市场,但是C/S架构的WinForm、WPF客户端程序依然具有很实用的价值,如设计类软件 AutoCAD与Autodesk Revit、WPS、IT类的集成开...【详细内容】
2022-04-27  IT技术资源爱好者  博客园  Tags:.NET   点击:(153)  评论:(0)  加入收藏
前几天有个老项目找到我,有多老呢?比我工作年限都长,见到这个项目我还得叫一声前辈。这个项目目前使用非常稳定,十多年了没怎么更新过,现在客户想加一个小功能:在线预览Word文档。...【详细内容】
2022-04-27  海椰人  博客园  Tags:.Net   点击:(65)  评论:(0)  加入收藏
之前,我们已经了解了ASP.NET Core中的身份认证,现在,我们来聊一下授权。老规矩,示例程序源码XXTk.Auth.Samples已经提交了,需要的请自取。概述ASP.NET Core中的授权方式有很多,我...【详细内容】
2022-04-20  日行四善  博客园  Tags:授权   点击:(143)  评论:(0)  加入收藏
序言本文将分别介绍 Authentication(认证) 和 Authorization(授权)。并以简单的例子在 ASP.NET Core 6.0 的 WebAPI 中分别实现这两个功能。 相关名词Authentication 和 Author...【详细内容】
2022-04-18  芦荟柚子茶  博客园  Tags:ASP.NET   点击:(197)  评论:(0)  加入收藏
前言由于客户网络安全限制,连接到互联网的设备不能访问内网。需要先从客户端应用中导出数据到文件,再将文件复制到U盘,最后通过内网机器上传数据。如何保证,在复制、传输过程中,...【详细内容】
2022-03-22  My IO    Tags:.NET Core   点击:(125)  评论:(0)  加入收藏
站内最新
站内热门
站内头条