溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

.net core 全新的微軟跨平臺(tái)框架

發(fā)布時(shí)間:2020-07-09 11:23:25 來(lái)源:網(wǎng)絡(luò) 閱讀:2052 作者:CandyAllen 欄目:編程語(yǔ)言

.net core 全新的微軟跨平臺(tái)框架

什么是.Net Core平臺(tái)?

.Net Core是一個(gè)模塊化的,跨平臺(tái)的,開源實(shí)現(xiàn)的.Net Framework,它可以在Windows設(shè)備上運(yùn)行,也可以在Linux和OS X上運(yùn)行。不同于傳統(tǒng)的.Net Framework(特點(diǎn):龐大的,系統(tǒng)級(jí)的,是一個(gè)只能跑在Windows上的運(yùn)行時(shí)環(huán)境),你可以用.Net Core創(chuàng)造以多平臺(tái)為目標(biāo)的組件化的庫(kù)和應(yīng)用程序,并且.Net Core可以與應(yīng)用程序一起部署。

.Net Core特性

讓我們從宏觀上看看.Net Core的特性

跨平臺(tái)支持

.NET Core 應(yīng)用程序可以同時(shí)跑在32位和64位的Windows平臺(tái)上,也可以跑在OS X和Linux上。

相反的,基于傳統(tǒng).Net Framework編寫的應(yīng)用程序只能跑在Windows上。注意的是UWP通用應(yīng)用程序借助.Net Core的實(shí)現(xiàn),也只能跑在Windows桌面程序,平板和Windows phone手機(jī)上。

開放源代碼

.Net Core的RunTime(CoreCLR)和基礎(chǔ)類庫(kù)都是開放源代碼的,另外.Net Core的源代碼都是免費(fèi)獲得的,這些意味著:

  • 設(shè)計(jì)注釋,功能規(guī)格,還有特定實(shí)現(xiàn)文檔都是公開的

  • .Net Core的代碼評(píng)審(Code review)是公開的

  • 您可以通過(guò)使用GitHub的提供的功能,將bug公開,對(duì)源代碼提出您的建議,而且你可以提交新特性的請(qǐng)求,或者你自己寫的代碼都可以提交。

  • 你也可以下載所有的源代碼在你的機(jī)器上編譯。Runtime與基礎(chǔ)類庫(kù),還有一些工具可以在任何平臺(tái)上編譯。

改善的Console App

傳統(tǒng)的.Net Framework可以在Windows上創(chuàng)建運(yùn)行創(chuàng)建控制臺(tái)apps,.Net Core同樣可以,但是.Net Core改善了控制應(yīng)用程序:

  • 跨平臺(tái):控制臺(tái)程序可以跑在Windows,OS X和Linux

  • 原生編譯:將托管程序的好處與原生C/C++應(yīng)用程序的性能相結(jié)合

安裝簡(jiǎn)單

因?yàn)?Net Core不是一個(gè)操作系統(tǒng)的組件,現(xiàn)在安裝:

  • 不需要管理員權(quán)限

  • 不需要觸碰系統(tǒng)組件了,也就是說(shuō)不需要向操作系統(tǒng)的系統(tǒng)目錄和注冊(cè)表中寫文件了

  • 復(fù)制一些文件到目標(biāo)計(jì)算機(jī)更簡(jiǎn)單了,或者將原生framework編譯進(jìn)你的app。

這樣,新的開發(fā)者不到一分鐘就可以入門.Net了,包括下載Framework和tools??梢詮倪@里。

部署簡(jiǎn)單

作為運(yùn)維人員,去部署一個(gè)開發(fā)部門給你的.Net應(yīng)用程序的時(shí)候,你首先要做的就是去服務(wù)器檢查.Net framework版本是否符合要求,如果不符合就需要安裝一個(gè)能運(yùn)行這個(gè)程序的基礎(chǔ)版本,這些會(huì)給運(yùn)維人員帶來(lái)很大的困擾
相比之下,。Net core有兩種發(fā)布部署方式:

Portable Apps

在部署一個(gè)portable app的時(shí)候,你除了.Net Core庫(kù)之外,只需要部署你的程序和它的依賴就可以。
在目標(biāo)機(jī)器上為了將Portable Apps跑起來(lái)需要安裝.Net Core。你不需要提前去考慮你的app支持哪個(gè)平臺(tái),因?yàn)?Net Core就是一個(gè)獨(dú)立的組件。
在.Net Core里,Portable Apps是默認(rèn)的程序類型。

Self-contained Apps

Self-contained apps包含了所有的依賴,.Net Core runtime也會(huì)作為軟件的一部分.由于你的APP中內(nèi)置了.Net Core,所以不管你要部署的那臺(tái)機(jī)器上安裝沒(méi)安裝.Net Core都可以運(yùn)行,而且就算之前的機(jī)子上有人安裝了.Net Core,你的.Net Core類庫(kù)也是與別人的.Net Core類庫(kù)隔離開的。
這種方式的前提得是你的程序里內(nèi)置了對(duì)應(yīng)平臺(tái)的.Net Core,比如你要在OS X上部署,你的APP里需要內(nèi)置OS X對(duì)應(yīng)的.Net Core,如果你內(nèi)置的.Net Core是Linux版本的,那你就不能在OS X上邊部署,這就要求你必須先考慮好,你的應(yīng)用程序面向的平臺(tái)。

.Net Core組件(Components)

和傳統(tǒng)的.Net Framework非常像,.Net Core由一個(gè)叫CoreCLR的公共語(yǔ)言運(yùn)行時(shí)(Common language runtime)組成。和.Net Framework一樣,.Net Core中關(guān)鍵的也是類庫(kù)。.Net Core關(guān)鍵的是CoreFX,這是一個(gè)模塊化的類庫(kù)集,而非單一的.Net framework類庫(kù)。這樣就可以你的程序需要什么庫(kù)就加載什么庫(kù),不需要的不會(huì)加載。

公共語(yǔ)言運(yùn)行時(shí)(The Common Language Runtime)

.Net Core中的公共語(yǔ)言運(yùn)行時(shí)——CoreCLR是一個(gè)輕量級(jí)的運(yùn)行時(shí),提供了好多和傳統(tǒng).Net Framework的運(yùn)行時(shí)相同的服務(wù)。這些相同的服務(wù)包含:

  • 一個(gè)垃圾回收器,它提供了內(nèi)存自動(dòng)管理。垃圾回收器按需分配和釋放內(nèi)存;你不必通過(guò)程序去做這些。不像C++,需要自己去管理操作內(nèi)存的分配和釋放。.Net Core也用了和.Net Framework相同的垃圾回收器,更多信息請(qǐng)?jiān)L問(wèn)Garbage Collection

  • 一個(gè)just-in-time(JIT)編譯器,編譯IL或者.Net中間語(yǔ)言(intermediate language)到機(jī)器碼。在某些架構(gòu)中,JIT編譯器支持SIMD硬件加速。

  • 一個(gè)異常處理機(jī)制,允許你通過(guò)try/catch語(yǔ)句處理異常。

類庫(kù)(The Class Library)

.Net Core的類庫(kù)與.Net Framework的類庫(kù)除了有一處主要的不同點(diǎn)之外,其余的非常相似。
不同在于:
傳統(tǒng)的.Net Framework有很多類庫(kù)是屬于操作系統(tǒng)的一部分,并且它是通過(guò)Windows 自帶的Windows update更新。
在.Net Coe中,它是按照功能組織的模塊的個(gè)人庫(kù)。

Microsoft.NetCore.App 被包含在runtime里邊了,它包含了開發(fā)所有APP基本的類型,這些類型包括:

  • 基礎(chǔ)類型,比如bool類型,簽名與不簽名的整型,浮點(diǎn)型和char結(jié)構(gòu)

  • String類型:在.Net Core中,一個(gè)字符串是UTF-16編碼單元的序列。.Net Core還包括了許多編碼類型,這些編碼類型可以允許你將UTF-16編碼字符串轉(zhuǎn)換成其他編碼的字節(jié)數(shù)組,例如:你可以用UTF8Encoding class將.Net Core的string字符串轉(zhuǎn)換成utf-8編碼的字節(jié)數(shù)組,用來(lái)表示Linux上的string字符串。

  • 任務(wù)類型,例如Task和Task,用來(lái)支持異步編程。

  • 基本的線程類型

  • Console Class,用來(lái)支持開發(fā)console apps.

另外的一些庫(kù),需要通過(guò)Nuget包來(lái)安裝

.Net Core工具(.Net Core Tools)

.Net Core包含了一個(gè)跨平臺(tái)的命令行SDK,名字叫做.Net Core CLI(Command-Line Interface).這個(gè)CLI是編寫.Net Core應(yīng)用程序的一組對(duì)Unix友好的工具。它讓C#編譯器和Nuget包管理工具變得抽象,變得抽象的意思是你感覺(jué)不到編譯器和包管理工具的存在,應(yīng)用程序就編寫好了。他同樣可以與.Net原生工具緊緊集成在一起來(lái)產(chǎn)生高性能的原生app和庫(kù)。
CLI帶來(lái)的好處是開發(fā)者可以不用安裝大型的IDE就可以編譯和測(cè)試他們的代碼,這在不是自己的電腦或者生產(chǎn)服務(wù)器上是極好的。visual studio code與visual studio在底層都是用的CLI,你可以根據(jù)你的需要選擇不同的IDE.比如你可以直接通過(guò)文本器來(lái)使用CLI,或者你可以用IDE開發(fā),編輯器內(nèi)部調(diào)用CLI.

大多數(shù)情況下,你直接使用.Net Core CLI就是通過(guò)給dotnet.exe 提供參數(shù),下邊是dotnet.exe可以使用的命令:

  • dotnet --help:顯示關(guān)于.Net Core CLI命令行的信息

  • dotnet new:初始化一個(gè)C#項(xiàng)目

  • dotnet new --lang F#:初始化一個(gè)F#項(xiàng)目

  • dotnet restore:為你的app還原所有的依賴

  • dotnet build:編寫一個(gè).Net Core app

  • dotnet publish:發(fā)布一個(gè)portable或者self-contained app。(查看【部署簡(jiǎn)單】章節(jié))

  • dotnet run:從源代碼中運(yùn)行app

  • dotnet pack:在你的app中創(chuàng)建一個(gè)Nuget包

    dotnet.exe有擴(kuò)展模型,允許你添加額外的命令。

語(yǔ)言支持和開發(fā)環(huán)境(Language Support and Development Environments)

.Net Core是語(yǔ)言無(wú)關(guān)的:任何以.Net Core為目標(biāo)的語(yǔ)言都是可以用來(lái)開發(fā).Net Core應(yīng)用程序的,通過(guò)不同的編程語(yǔ)言開發(fā)的app,用其中的一種語(yǔ)言即可無(wú)縫地訪問(wèn)類型與成員。

當(dāng)前,你可以用下邊的兩種語(yǔ)言的任意一種開發(fā):

  • C#,基于.NET Compiler Platform,也成為Roslyn

  • F#.

我們打算在未來(lái)支持更多的語(yǔ)言。
你有多種開發(fā)環(huán)境可以選擇用來(lái)編寫app,包括:

  • 一個(gè)簡(jiǎn)單的文本編輯器,例如在Windows系統(tǒng)上的Notepad,或者Wordpad

  • 一個(gè)程序員的編輯器,例如需要C#擴(kuò)展的Visual studio Code

  • 一個(gè)集成開發(fā),調(diào)試,測(cè)試的環(huán)境,比如 Visual Studio 2015 Update 2

.NET Core and the .NET Framework

為了更好的感知.Net Core是什么,將它與.Net framework相比較:

.Net Core

包含CoreCLR,一個(gè)可提供基礎(chǔ)服務(wù)的輕量級(jí)運(yùn)行時(shí)(runtime),尤其自動(dòng)內(nèi)存管理,垃圾回收器,還有一個(gè)基礎(chǔ)的類型庫(kù)。

包含了CoreFx,一套個(gè)人模塊化組裝,你可以安裝需要將其添加到你的app中,與.Net Framework 4.x不同,.Net Framework 4.x總是使整個(gè).Net Framework類庫(kù)可用,.Net Core只需選擇你想要的。例如,如果你正在開發(fā)一款基于矢量的應(yīng)用,你可以下載System.Numerics.Vectors包,而不是需要一個(gè)很大類庫(kù)的花銷,這樣可以顯著的減少你app的體積和他的依賴項(xiàng)。

適用于各種各樣的現(xiàn)代應(yīng)用程序,對(duì)內(nèi)存和儲(chǔ)存有限制的小型設(shè)備起作用

可以利用若干的技術(shù)來(lái)開發(fā)應(yīng)用,比如asp.net core
開發(fā)web應(yīng)用,Windows communication Foundation(WCF)

開發(fā)與現(xiàn)有的WCF服務(wù)相關(guān)聯(lián)的應(yīng)用,workflow foundation(WF)構(gòu)建工作流。

可以變成app本地。換句話說(shuō)就是.Net Core版本可以緊緊與你的app相結(jié)合,這可以減輕好多版本問(wèn)題。

.NET Framework 4.x

包含公共語(yǔ)言運(yùn)行時(shí)(CLR),一個(gè)相當(dāng)大的運(yùn)行時(shí),可以提供內(nèi)存管理,隔離應(yīng)用程序域(application domain),大量的應(yīng)用程序服務(wù)。

包含了.Net Framework類庫(kù),這個(gè)類庫(kù)包含了成千上萬(wàn)個(gè)的類與成員,不僅非常大而且又是一個(gè)整體,不論你的app用了單個(gè)類型或者他們的成員(或者大多數(shù)app利用了一小部分函數(shù)),他們都是始終加載并且可以隨時(shí)訪問(wèn)的。

適用于傳統(tǒng)的Windows桌面應(yīng)用程序,包括Windows forms(winforms)和Windows Presentation Foundation(WPF)應(yīng)用程序,可以運(yùn)用許多技術(shù)來(lái)開發(fā)應(yīng)用程序,例如,ASP.NET和ASP.NET Web Form構(gòu)建web應(yīng)用程序,Windows Communication Foundation (WCF)構(gòu)建包含soap的服務(wù),Workflow Foundation (WF), 構(gòu)建工作流。

在一個(gè)給定系統(tǒng)中全局可用。換句話說(shuō),即使一個(gè)app中包含了一個(gè)特定版本的.Net Framework安裝器,但是假如安裝器發(fā)現(xiàn)它不存在還是會(huì)安裝完整的.Net framework,并且會(huì)獨(dú)立于app維護(hù)。這就會(huì)產(chǎn)生版本問(wèn)題,特別地是一個(gè)app遭遇了一個(gè)沒(méi)有預(yù)想的版本,或者一個(gè)app跑在了之前沒(méi)有開發(fā)的.Net Framework版本上。
從Windows8開始,.Net Framework作為操作系統(tǒng)的一個(gè)組件安裝,并且通過(guò)Windows update升級(jí)。對(duì)于不同的Windows里邊內(nèi)置不同的.Net Framework版本,更多的信息請(qǐng)?jiān)L問(wèn).NET Framework System Requirements.

總結(jié):

雖然.Net Framework 4.6.2預(yù)覽版和.Net Core是面向不同的平臺(tái),代表著不同的app開發(fā)和部署方法,但是他們都遵守 .Net標(biāo)準(zhǔn)1.5。這意外著他們彼此能夠提供一個(gè)高度的兼容性與統(tǒng)一行為。尤其:

  • 有經(jīng)驗(yàn)的.Net 開發(fā)者想要開發(fā)不同設(shè)備和平臺(tái)的應(yīng)用程序的時(shí)候,可以很容易適應(yīng).Net Core的開發(fā)。

  • .Net Core開發(fā)者可以很容易的過(guò)渡到用.Net Framework開發(fā)Windows桌面程序、平板和手機(jī)的方式上。

  • 用.Net Framework或者.Net Core寫的類庫(kù)可以很容易的在另外一個(gè)平臺(tái)工作。

.Net Core具體實(shí)現(xiàn)(implementations)

許多的開發(fā)技術(shù)依賴.Net Core的可定制實(shí)現(xiàn)。當(dāng)你用這些技術(shù)開發(fā)Apps的時(shí)候,你也許不會(huì)意識(shí)你是在利用.Net Core的好處:

  • ASP.Net Core.ASP.Net Core是一個(gè)模塊化的asp.Net版本,它結(jié)合了ASP.NET MVC and ASP.NET Web API.它可以同時(shí)運(yùn)行在.Net Framework與.Net Core上邊,它被設(shè)計(jì)用來(lái)構(gòu)建高性能的云和微型服務(wù);在.Net Framework中,它不是打算作為asp.net的替代者的。有關(guān)更多的ASP.Net Core信息,請(qǐng)?jiān)L問(wèn)Introduction to ASP.NET Core.

  • .NET Native。對(duì)于用C#和Visual Basic編寫的Universal Windows Platform (UWP)應(yīng)用程序,.NET Native是一個(gè)編譯和部署技術(shù)。.Net Native將Apps編譯成原生代碼,靜態(tài)資源文件放入應(yīng)用程序集中,這些都是.Net Core和另外一些第三方的正在使用的代碼。有關(guān)更多.Net Native的信息請(qǐng)?jiān)L問(wèn)Compiling Apps with .NET Native.

  • Universal Windows Platform (UWP) apps。Universal Windows Platform允許你構(gòu)建一個(gè)運(yùn)行在Windows桌面,Windows平板設(shè)備,Windows phone手機(jī)上的app。這些應(yīng)用可以上傳到Windows store中。UWP 應(yīng)用程序通過(guò).Net Native為他們各自的平臺(tái)編譯原生代碼,有關(guān)更多的信息,請(qǐng)?jiān)L問(wèn) Get started with Windows apps。


    http://www.cnblogs.com/Wahitler/p/5612895.html


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI