天天看點

.NET平台系列19 新世界中的.NET大統一平台架構解析

系列目錄     【已更新最新開發文章,點選檢視詳細】

  微軟在.NET跨平台之路上付出了巨大的艱辛,同時做了海量的工作。首先推出了統一的API标準規範庫 .NET Standard,并不斷補充完善标準庫,截止目前(2021-5-26)最新版本為 .NET Standard 2.1。之後釋出了跨平台解決方案 .NET Core,同時建立.NET基金會,并大力發展生态建設,世界知名IT公司紛紛加入并貢獻,社群發展異常活躍。收購Xamarin公司後,Mono也正是加入微軟大家庭,填補了微軟技術棧在移動APP開發領域的技術空白。

自此微軟.NET進化成了如下圖所示的全新大統一架構。

.NET平台系列19 新世界中的.NET大統一平台架構解析

.NET Framework

 

.NET平台系列19 新世界中的.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平台系列19 新世界中的.NET大統一平台架構解析

  微軟負責.NET的項目經理 Scott Hunter認為:“.NET Core客戶中有40%是全新的平台開發人員這正是我們想要的結果。我們想引入新人。”

  .NET Core的運作速度很快,因為它可以與應用程式并行部署,是以.NET Core可以頻繁地更改,因為這些更改不會影響同一台計算機上的其他 .NET Core 應用程式。微軟對 .NET Core 所做的改進無法添加到NET Framework中。

  應用場景:針對跨平台(Windows、Linux、macOS)的解決方案,如物聯網IoT、人工智能AI、AR、MR、Web等。

Xamarin

  第三方公司開發了名為 Mono 項目的 .NET Framework實作。Mono是跨平台的,但是它遠遠落後于.NET Framework的官方實作。Mono 作為 Xamarin移動平台以及 Unity 等跨平台遊戲開發平台的基礎,已經找到了自己的價值。

.NET平台系列19 新世界中的.NET大統一平台架構解析

  微軟在2016年收購了 Xamarin,并且在 Visual Studio2019中免費提供曾經昂貴的 Xamarin擴充。微軟将隻能建立移動應用程式的 Xamarin Studio開發工具更名為 Visual Studio2019 for Mac,并賦予它建立其他類型應用程式的能力。有了 Visual Studio201 99 for Mac,微軟就能夠将 Xamarin Studio編輯器的部分功能替換為 Visual Studio2019 for Windows的部分功能,以提供更接近的體驗和性能。

  應用場景:針對移動端的解決方案,如iOS、Android、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平台系列19 新世界中的.NET大統一平台架構解析

.NET Standard 具體介紹與使用,請參考我的部落格:

  • .NET Standard 簡介
  • .NET Standard 版本支援
  • .NET Standard SDK 樣式項目中的目标架構
  • .NET Standard中配置TargetFrameworks輸出多版本類庫 
  • .NET Standard 類庫使用技巧
  • .NET Standard 的未來

Common Infrastructure

  公共基礎設施,簡稱CI。位于架構的最底層,建構于作業系統之上。主要包含開發語言、編譯器、運作時。詳細介紹請參考我的部落格《.NET平台系列2 .NET Framework 架構詳解》、《.NET平台系列7 .NET Core 體系結構詳解》。

開發工具

  • Visual Studio 微軟官方推出的宇宙第一IDE,它是一個完整的開發工具集,它包括了整個軟體生命周期中所需要的大部分工具,如UML工具、代碼管控工具、內建開發環境(IDE)等。
.NET平台系列19 新世界中的.NET大統一平台架構解析

從 Visual Studio 第一代産品到目前的 Visual Studio 2019,它們與Windows系統緊密綁定,跨平台需求出現以後,微軟又開發了支援跨平台的開發工具 Visual Studio for Mac。下載下傳位址:Windows 版& Mac 版 Visual Studio 2019 (microsoft.com)

.NET平台系列19 新世界中的.NET大統一平台架構解析
.NET平台系列19 新世界中的.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,Python,PHP,Go)和運作時(例如.NET和Unity)擴充的生态系統。
.NET平台系列19 新世界中的.NET大統一平台架構解析

随着VS産品的不斷更新,功能越來越強大,自然就導緻該産品比較龐大,稍顯笨重,對開發者的電腦硬體配置要求也不斷提高。并且包括Visual Studio 2019在内,VS一直都是32位的應用程式,主程序最多隻能4GB,是以限制了VS的使用場景。2021年4月18号微軟宣布将于今年夏季釋出首個64位的 Visual Studio 2022。

.NET平台系列19 新世界中的.NET大統一平台架構解析

官方放出的測試視訊,Visual Studio2022打開一個包含 1600 個項目和約 30 萬個檔案的解決方案,最高記憶體占用到5G+都沒問題!Visual Studio 2022還将大幅提升檔案打開速度、代碼調試性能、代碼搜尋性能,還将有着更強大的AI IntelliCode 引擎做代碼預測,還有更好的macOS支援等各種改進,在宇宙第一IDE的道路上繼續狂奔!

參考文獻:

  • 解微軟對 .NET Core和.NET Framework的定位 https://devblogs. microsoft. com/dotnet/update-on-net-core-3-0-and-net-framework-4-8
  • Mono:https://www.mono-project.com/
  • Unity:https://www.mono-project.com/
  • https://visualstudio.microsoft.com/zh-hans/downloads/
  • https://devblogs.microsoft.com/visualstudio/visual-studio-2022/
  • https://github.com/dotnet/standard/blob/master/docs/versions.md.

成在管理,敗在經驗;嬴在選擇,輸在不學!  貴在堅持!

歡迎關注作者頭條号 張傳甯IT講堂,擷取更多IT文章、視訊等優質内容。

.NET平台系列19 新世界中的.NET大統一平台架構解析

個人作品

1、BIMFace.Community.SDK.NET

     開源位址:https://gitee.com/NAlps/BIMFace.SDK

     系列部落格:https://www.cnblogs.com/SavionZhang/p/11424431.html

     系列視訊:https://www.cnblogs.com/SavionZhang/p/14258393.html

2、ZCN.NET.Common

     開源位址:https://gitee.com/NAlps/zcn.net.common

.NET平台系列19 新世界中的.NET大統一平台架構解析

技術棧

 1、Visual Studio、.C#/.NET、.NET Core、MVC、Web API、RESTful API、gRPC、SignalR、Python

 2、jQuery、Vue.js、Bootstrap

 3、資料庫:SQLServer、MySQL、PostgreSQL、Oracle、SQLite、Redis、MongoDB、ElasticSearch、TiDB、達夢DM、人大金倉、 神通、南大通用 GBase、華為 GaussDB 、騰訊 TDSQL 、阿裡 PolarDB、螞蟻金服 OceanBase、東軟 OpenBASE、浪潮雲溪資料庫 ZNBase

 4、ORM:Dapper、Entity Framework、FreeSql、SqlSugar、分庫分表、讀寫分離

 5、架構:領域驅動設計 DDD、ABP

 6、環境:跨平台、Windows、Linux(CentOS、麒麟、統信UOS、深度Linux)、maxOS、IIS、Nginx、Apach

 7、移動App:Android、IOS、HarmonyOS、微信、小程式、快應用、Xamarin、uni-app、MUI、Flutter、Framework7、Cordova、Ionic、React Native、Taro、NutUI、Smobiler

 雲原生、微服務、Docker、CI/CD、DevOps、K8S;

 Dapr、RabbitMQ、Kafka、分布式、大資料、高并發、負載均衡、中間件、RPC、ELK;

 .NET + Docker + jenkins + Github + Harbor + K8S;

出處:www.cnblogs.com/SavionZhang

作者:張傳甯   微軟MCP、系統架構設計師、系統內建項目管理工程師、科技部創新工程師。

          專注于微軟.NET技術(.NET Core、Web、MVC、WinForm、WPF)、通用權限管理系統、工作流引擎、自動化項目(代碼)生成器、SOA 、DDD、 雲原生(Docker、微服務、DevOps、CI/CD);PDF、CAD、BIM 審圖等研究與應用。

          多次參與電子政務、圖書教育、生産制造等企業級大型項目研發與管理工作。

          熟悉中小企業軟體開發過程:需求分析、架構設計、編碼測試、實施部署、項目管理。通過技術與管理幫助中小企業快速化實作網際網路技術全流程解決方案。

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

如有問題,可以通過郵件[email protected]聯系。共同交流、互相學習。

如果您覺得文章對您有幫助,請點選文章右下角【推薦】。您的鼓勵是作者持續創作的最大動力!

繼續閱讀