成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于.NET生態,你了解多少?

譯文
開發 前端
本文將系統性地向您介紹.NET生態中.NET Framework、.NET Core和Mono For Xamarin三大運行時的各種特點、用途與工具,并展望.NET生態的發展。

【51CTO.com快譯】如果您是一名開發人員,那么一定聽說過.NET技術吧。它是由Microsoft創建的開源式開發人員平臺,可用于構建諸如:Web、移動、桌面、游戲等許多不同類型的應用。通常,它由不同的工具、編程語言和庫所組成。其中,.NET Framework是.NET生態系統中最受歡迎的技術之一。近年來,.NET Core和.NET Standard Library(標準庫)也在該生態系統中相繼出現。面對這么多的技術棧,我們該如何選擇呢?下面,我們將深入探討它們的各種特點、用途與對應工具。首先,我們從.NET的簡史開始。

.NET的發展歷史

在九十年代,Microsoft開始致力于開發名為.NET Strategy的產品。該策略涵蓋了所有的Microsoft產品線。在2000年,.NET框架被命名為下一代Windows服務(NGWS)。.NET框架的第一個beta版發布于2000年末,而.NET 1.0的第一版是在2002年2月13日發布的。下面是其后續版本及其特點:

  • .NET Framework 2.0(2005年11月):包含通用集合、迭代器、以及可為空的類型。
  • .NET Framework 3.0(2006年11月):包含WPF、WCF和WWF。
  • .NET Framework 3.5(2007年11月):包含AJAX、LINQ、ASP.NET MVC。
  • .NET Framework 4.0(2010年4月):包含MEF、DLR、任務并行庫、Razor視圖引擎、新的C#/VB語言功能。
  • .NET Framework 4.5(2012年8月):支持異步與zip壓縮。
  • .NET Core 1.0(2014年11月):包括對跨平臺的支持、ASP.NET 5和.NET Native。
  • .NET Core 2.0(2017年8月):具有重大的性能改進,并實現了.NET Standard 2.0。
  • .NET Framework 4.8(2019年4月):包括JIT增強功能,針對WPF應用的High DPI增強功能,可訪問性的改進,性能更新,以及安全性增強。
  • .NET Core 3.0(2019年9月):提供C#8.0的新功能,實現了.NET Standard 2.1。讓Windows桌面支持Windows Forms和WPF。

.NET生態系統概述

目前,包含不同運行時(runtime)的.NET生態系統,由Microsoft開發平臺中的如下組件構成:

  • .NET Framework(WPF、Windows Forms、ASP.NET)是以Windows為中心。
  • .NET Core(ASP.NET Core、Universal Windows Platform)是跨平臺工具,可與其他版本并行使用。
  • Mono For Xamarin(IOS、OS X、Android)同樣可以跨平臺。

上述三大運行時都實現了.NET Standard Library,同時它們也是.NET API的規范。因此,為某個運行時創建的代碼,同樣可以被其他運行時所執行。而且所有運行時都使用工具和基礎架構來編譯和運行代碼。其中涉及到的語言有C#和Visual Basic,編譯器有Roslyn,還有垃圾回收,以及諸如MS Build或(Core)CLR之類的構建工具。

下面,我們將重點討論.NET的三大主要運行時:

.NET Framework

.NET Framework是用于在Windows上構建和運行應用程序的軟件開發框架。目前,它部分開源(請參見--https://github.com/microsoft/referencesource)。.NET Framework是由公共語言運行庫(Common Language Runtime,CLR)、. NET Framework類庫和應用負載(WPF、Windows Forms和ASP.NET)所組成。其中,CLR是通用基礎架構的一部分,既可以運行代碼,又可以執行JIT(just-in-time)、以及垃圾回收(C#、VB.NET、F#)等。

由CLR管理的代碼被稱為托管代碼。這些代碼被編譯為通用中間語言(Common Intermediate Language,CIL),并存儲在擴展名為.exe或.dll的程序集中。當應用程序運行時,CLR會執行匯編,并使用JIT編譯器將機器代碼轉換為可以在特定計算架構上運行的代碼。

.NET Framework庫包含各種功能的類、接口和數據類型(如:字符串、文件系統支持等)。它允許用戶創建不同類型的應用程序,例如:控制臺應用、Windows Form、Windows Communication Foundation(WCF)、Windows Workflow Foundation(WF)、Windows Presentation Foundation(WPF)、ASP.NET應用(如:各種表單、Web API)、以及Azure應用(如:WebJobs、Cloud Services)。不過其中大多數都僅限于Windows平臺,并使用Windows API。

雖然Windows已經預安裝了其中的某些版本,但是如果您要運行并使用由.NET Framework生成的應用的話,仍需要事先完成相應的安裝。.NET Framework通常被安裝在C:\Windows\Microsoft.NET\Framework(或Framework64)上。該文件夾內包含了所有已安裝的主要版本。

.NET Core

作為.NET生態系統中的一種運行時,.NET Core于2016年被發布并開源(請參見--https://github.com/dotnet/core)。它并非.NET Framework的新版本,也不會替代.NET Framework,而是被獨立地構建出來,旨在跨平臺進行應用程序的開發。.NET Core由可運行CLR和Library的App Host(dotnet.exe)所組成。它擁有公共語言運行時(CoreCLR)和.NET Core Class Library。

CoreCLR使用JIT Compilation和垃圾回收來運行代碼。它支持C#、VB.NET和F#。作為.NET Framework庫的子集,.NET Core Class Library包括并提供不同的功能類。它支持不同類型的應用負載,包括:ASP.NET Core(如:MVC和API)、各種控制臺應用,以及UWP。其中,UWP為所有在Windows 10上運行的設備,提供了通用類型的系統、API和應用模型。從.NET Core 3.0 SDK開始,它能夠支持包括Windows Forms Designer在內的各種Windows Forms應用。

.NET Core可以運行在不同的平臺上,其中包括:Windows客戶端、服務器端、物聯網、Linux、Ubnutu、FreeBSD、Tizen、Mac OSX等。.NET Core通常被安裝在C:\Program Files\dotnet\shared\Microsoft.NETCore.App[versions]中。并且,它可以根據機器或用戶的不同,實現多版本的并行安裝。

此外,由于.NET Core能夠將應用打包到.exe文件中,因此它可以創建一個自包含的版本,而無需在主機上安裝.NET Core。例如,您可以運行shell命令“dotnet publish -r linux-x64 --self-contained true”。當然,其缺點是會導致部署的體量變大。

Mono For Xamarin

Mono是.NET Framework運行時的一個克隆。您可以在https://github.com/mono/monowww.mono-project.com處查看到它的源代碼。微軟于2016年收購了Xamarin,并使其成為.NET平臺的完全開源分支。目前,它是由Mono運行時和Xamarin Class Library所組成,可以運行IOS、OS X和Android等應用負載。

與.NET Core相似,Mono包含垃圾回收、JIT、AOT、以及對C#(并非VB.NET和F#)的完全支持。與C++代碼相似,Mono AOT編譯器能夠將.NET代碼內置到可以在單機上運行的可執行文件中。同時,Mono For Xamarin具有一個支持創建應用程序(可用于I/O、集合等)的類庫。

Mono For Xamarin可以被用來運行Apple IOS、MAC OS X、Android等應用負載,而且可以在這些平臺之間共享代碼,以作為原生應用。每個應用程序都可以與Mono運行時、以及一個類庫捆綁在一起,而無需在設備上額外安裝Mono。

其他框架

.NET Compact Framework和.NET Micro Framework

.NET Compact Framework和.NET Micro Framework兩種框架都是通過精簡​​運行時,運行在受限制的設備(如:PDA、移動電話控制器等)上。其中,.NET Micro Framework針對的是256KB閃存和64KB內存。

Silverlight

于2007年發布的Silverlight是一種流行的跨平臺.NET技術。它能夠為瀏覽器構建諸如:播放與下載視頻,創建豐富的UI和動畫等富媒體體驗。不過,Microsoft已決定于2021年10月停止支持Silverlight。

社區項目

除了Microsoft官方提供的運行時,開發者社區也提供了諸如:DotGNU Portable.NETDotNetAnywhereCosmosOSCrossNet.NET等運行時。它們的構建方式略有不同。

.NET Standard

無論是.NET Framework、.NET Core還是Xamarin,不同的運行時會使用各自不同的類庫。而由于它們使用的是不同API,因此不同的運行時無法彼此共享代碼。為此,Microsoft于2016年發布了.NET Standard Library。它通過一組正式的規范,說明了各個運行時都能夠使用和實現的API。而特定的運行時也能夠實現特定版本的.NET Standard。例如:.NET Framework 4.6.1就能夠實現.NET Standard 2.0。同時,它也是Portable Class Libraries(PCL)的一種發展方向。

.NET Standard和Portable Class Libraries (即,可在不同平臺上使用的庫)之間的區別是:

  • .NET Standard代表了Microsoft定義的一組API,而PCL使用的API則取決于所選擇的平臺。
  • .NET Standard與平臺無關,而PCL針對的是有限的平臺集。

.NET Standard的每個版本都有一組API(如:System.Drawing),由于它們都帶有以前版本的所有API,因此能夠向后兼容。同時,那些特定的.NET運行時版本實現的是特定的.NET Standard版本。也就是說,較低版本的.NET Standard能夠覆蓋更多平臺。

工具類

.NET Framework工具

對于.NET Framework,您可以請使用MSBuild。它既可以在Visual Studio構建代碼時被調用,也可以從命令行中被調用。MSBuild能夠判斷如何構建、以及由誰負責編譯。例如:如果代碼是由C#或VB.NET編寫的,那么它將調用.NET編譯器平臺--Roslyn。而由于編譯的結果是帶有中間語言(intermediate language,IL)的二進制文件(如:.EXE或.DLL),因此它們可以被CLR所解釋。如前所述,CLR包含了一個JIT編譯器,可以編譯出能夠被操作系統理解的原生代碼。而且CLR帶有垃圾收集器(Garbage Collector )之類的工具,可以按需清理內存。

.NET Core工具

MSBuild也可以被用于.NET Core工具以及.NET Compiler Platform(Roslyn)。在使用IL生成二進制文件時,我們可以使用Core Common Language Runtime (CoreCLR)。與.NET Framwork CLR不同的是,CoreCLR可以在多個框架上運行,并通過JIT編譯器,將IL編譯為Windows、MacOS和Linux的原生代碼。當然,CoreCLR和原生代碼都是由應用主機進程--dotnet.exe進行加載的。

而在編譯UWP時,我們可以使用AOT-Compiled(.NET Native)來進行編譯,該編譯器從IL生成原生代碼,并將代碼作為可部署的程序包來生成,而不是在運行時進行編譯。此法提高了整體性能。

.NET Core帶有一個被稱為dotnet cli的全新命令行界面。您可以用dotnet new來創建新的項目;用dotnet build來構建應用;用dotnet run來運行;用dotnet publish來部署。當然,您也可以用dotnet –info來檢查SDK與運行時被安裝的位置。

Mono For Xamarin工具

在此,MSBuild再次被用于僅針對C#文件的構建過程。例如,我們可以通過Xamarin Compiler來編譯Android設備上的C#代碼。而作為JIT-Compiler的Mono運行時,會按需生成特定于目標Android設備的原生代碼。當然,它也帶有垃圾收集器(Garbage Collector )之類的工具。

而對于iOS上的C#代碼,我們則可以通過Xamarin Compiler對其進行預編譯,并使用ARM匯編語言,來生成IOS原生的軟件包。

Visual Studio IDE

Visual Studio是由Microsoft提供的IDE,可用于橫跨各種平臺(包括Android和iOS),構建、調試和發布應用程序。通過與.NET的集成,Visual Studio可以提供特定于語言環境的各項功能。

Windows版的Visual Studio提供一個免費的社區版。而Visual Studio for Mac則是基于Xamarin公司(前身為Xamarin Studio)的MonoDevelop來構建的IDE。

類庫

.NET生態系統涉及到許多類庫,其中大多數可以在NuGet包中找到。此處的NuGet是.NET的軟件包管理器,它包含了90,000多個軟件包。

語言

我們可以用C#、F#或Visual Basic來編寫各種.NET應用。其中:

選擇與使用

我們該如何選擇和使用上述三種運行時呢?下面是我的一些建議:

  • .NET Framework可用于:
  1. 生成Forms(表單)應用。
  2. 無法跨平臺運行的Windows環境中。
  • .NET Core可用于:
  1. 構建占用空間較小的高性能應用。
  2. 跨平臺運行的場景中。
  • Mono for Xamarin可用于:
  1. 構建利用原生功能和跨平臺場景的移動應用中。

通過使用.NET Core,您可以構建框架依賴型(framework-dependent)或自包含型(self-contained)應用。其中,框架依賴型應用適合于獨立于操作系統,但需要進行小型部署的場景。而自包含型應用,可以控制版本,并且不需要安裝.NET Core,當然要求的部署體量會更大,而且需要指定目標操作系統。

就ASP.NET和ASP.NET Core而言,ASP.NET是一種傳統技術,只能運行在Windows上,不過其功能比較豐富。而ASP.NET Core是為高性能的應用而設計的,能夠實現跨平臺的獨立運行。不過它的功能和第三方庫(如:表單)遠不及ASP.NET。

此外,我們還應當事先判斷是否需要共享代碼。如果是,我們就應該使用.NET Standard Library;如果否,則需要在特定運行時中,使用其他的類庫。

展望

Microsoft Build 2019大會曾宣布.NET Core和.NET Framework將在.NET 5中被統一,將只有一個.NET SDK來服務Windows、Linux、macOS、iOS、Android等平臺。該框架將包含全新的.NET API、運行時功能、以及語言功能。此外,.NET 5還會對RyuJIT的代碼質量、垃圾收集、以及JSON序列化等予以改進。

此外,Microsoft也宣布(請參見--https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/)將推出一個用于創建跨平臺應用的全新UI框架--.NET MAUI。它將是Xamarin.Forms的演化版,旨在簡化開發人員的工作流程和項目結構,將多個平臺封裝到一個項目之中。據說,.NET MAUI的通用版本將在2021年11月發布的.NET 6中被提供。

一些實用的資源

原文標題:A Brief Walk Through the .NET Ecosystem,作者:Milan Milanovic

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:華軒 來源: 51CTO
相關推薦

2023-12-24 12:56:36

協程

2023-09-07 10:26:50

接口測試自動化測試

2023-05-05 07:10:42

IPv6互聯網

2019-05-31 08:33:23

2021-08-16 05:39:33

云計算云計算環境信創云

2023-10-25 08:17:06

Lite模式代理類

2023-10-29 08:35:47

AndroidAOP編程

2012-12-27 10:58:24

KVMKVM概念

2021-06-06 18:22:04

PprofGopher邏輯

2020-03-25 08:47:22

智能邊緣邊緣計算網絡

2021-03-29 14:16:20

云計算

2021-09-18 11:36:38

混沌工程云原生故障

2024-05-06 00:30:00

MVCC數據庫

2015-11-09 10:44:37

DevOpsIT運維

2021-12-09 07:47:58

Flink 提交模式

2023-08-17 10:12:04

前端整潔架構

2022-06-07 07:37:40

線程進程開發

2022-02-08 12:06:12

云計算

2019-08-07 17:18:18

云計算云原生函數

2011-08-23 11:03:35

ATM
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 伊人狠狠干 | 男女在线网站 | 欧美成人一区二区三区 | 天堂av在线影院 | 四虎成人在线播放 | 亚洲国产成人一区二区 | 亚洲一区二区久久 | 欧美日本韩国一区二区 | 91在线视频免费观看 | 国产成人精品一区二区三 | 欧美国产日韩一区二区三区 | 成人激情免费视频 | 在线免费激情视频 | 99热在线播放 | 国产高清精品一区二区三区 | 中文字幕亚洲一区 | 中文在线一区二区 | 亚洲一区二区中文字幕 | 毛片一级片| 久久综合久久综合久久 | 亚洲天天干| 伊人二区 | 成人欧美一区二区三区 | 91色网站 | 欧美日韩视频一区二区 | av在线播放网址 | 一级片网站视频 | 91精品国产综合久久精品图片 | 黄色大片观看 | 91极品视频 | 国产精品久久久久久238 | 成人在线中文字幕 | 高清视频一区 | 国产精品久久久久久久久大全 | 成人精品一区二区三区中文字幕 | 91亚洲精品久久久电影 | 91影院在线观看 | 亚洲国产中文字幕 | 日本午夜视频 | 亚洲精品www | 精品日韩一区二区 |