.Net Core是一個模塊化的,跨平臺的,開源實現(xiàn)的.Net Framework,它可以在Windows設(shè)備上運行,也可以在Linux和OS X上運行。不同于傳統(tǒng)的.Net Framework(特點:龐大的,系統(tǒng)級的,是一個只能跑在Windows上的運行時環(huán)境),你可以用.Net Core創(chuàng)造以多平臺為目標(biāo)的組件化的庫和應(yīng)用程序,并且.Net Core可以與應(yīng)用程序一起部署。
讓我們從宏觀上看看.Net Core的特性
.NET Core 應(yīng)用程序可以同時跑在32位和64位的Windows平臺上,也可以跑在OS X和Linux上。
相反的,基于傳統(tǒng).Net Framework編寫的應(yīng)用程序只能跑在Windows上。注意的是UWP通用應(yīng)用程序借助.Net Core的實現(xiàn),也只能跑在Windows桌面程序,平板和Windows phone手機上。
.Net Core的RunTime(CoreCLR)和基礎(chǔ)類庫都是開放源代碼的,另外.Net Core的源代碼都是免費獲得的,這些意味著:
設(shè)計注釋,功能規(guī)格,還有特定實現(xiàn)文檔都是公開的
.Net Core的代碼評審(Code review)是公開的
您可以通過使用GitHub的提供的功能,將bug公開,對源代碼提出您的建議,而且你可以提交新特性的請求,或者你自己寫的代碼都可以提交。
你也可以下載所有的源代碼在你的機器上編譯。Runtime與基礎(chǔ)類庫,還有一些工具可以在任何平臺上編譯。
傳統(tǒng)的.Net Framework可以在Windows上創(chuàng)建運行創(chuàng)建控制臺apps,.Net Core同樣可以,但是.Net Core改善了控制應(yīng)用程序:
跨平臺:控制臺程序可以跑在Windows,OS X和Linux
原生編譯:將托管程序的好處與原生C/C++應(yīng)用程序的性能相結(jié)合
因為.Net Core不是一個操作系統(tǒng)的組件,現(xiàn)在安裝:
不需要管理員權(quán)限
不需要觸碰系統(tǒng)組件了,也就是說不需要向操作系統(tǒng)的系統(tǒng)目錄和注冊表中寫文件了
復(fù)制一些文件到目標(biāo)計算機更簡單了,或者將原生framework編譯進(jìn)你的app。
這樣,新的開發(fā)者不到一分鐘就可以入門.Net了,包括下載Framework和tools??梢詮倪@里。
作為運維人員,去部署一個開發(fā)部門給你的.Net應(yīng)用程序的時候,你首先要做的就是去服務(wù)器檢查.Net framework版本是否符合要求,如果不符合就需要安裝一個能運行這個程序的基礎(chǔ)版本,這些會給運維人員帶來很大的困擾
相比之下,。Net core有兩種發(fā)布部署方式:
在部署一個portable app的時候,你除了.Net Core庫之外,只需要部署你的程序和它的依賴就可以。
在目標(biāo)機器上為了將Portable Apps跑起來需要安裝.Net Core。你不需要提前去考慮你的app支持哪個平臺,因為.Net Core就是一個獨立的組件。
在.Net Core里,Portable Apps是默認(rèn)的程序類型。
Self-contained apps包含了所有的依賴,.Net Core runtime也會作為軟件的一部分.由于你的APP中內(nèi)置了.Net Core,所以不管你要部署的那臺機器上安裝沒安裝.Net Core都可以運行,而且就算之前的機子上有人安裝了.Net Core,你的.Net Core類庫也是與別人的.Net Core類庫隔離開的。
這種方式的前提得是你的程序里內(nèi)置了對應(yīng)平臺的.Net Core,比如你要在OS X上部署,你的APP里需要內(nèi)置OS X對應(yīng)的.Net Core,如果你內(nèi)置的.Net Core是Linux版本的,那你就不能在OS X上邊部署,這就要求你必須先考慮好,你的應(yīng)用程序面向的平臺。
和傳統(tǒng)的.Net Framework非常像,.Net Core由一個叫CoreCLR的公共語言運行時(Common language runtime)組成。和.Net Framework一樣,.Net Core中關(guān)鍵的也是類庫。.Net Core關(guān)鍵的是CoreFX,這是一個模塊化的類庫集,而非單一的.Net framework類庫。這樣就可以你的程序需要什么庫就加載什么庫,不需要的不會加載。
.Net Core中的公共語言運行時——CoreCLR是一個輕量級的運行時,提供了好多和傳統(tǒng).Net Framework的運行時相同的服務(wù)。這些相同的服務(wù)包含:
一個垃圾回收器,它提供了內(nèi)存自動管理。垃圾回收器按需分配和釋放內(nèi)存;你不必通過程序去做這些。不像C++,需要自己去管理操作內(nèi)存的分配和釋放。.Net Core也用了和.Net Framework相同的垃圾回收器,更多信息請訪問Garbage Collection
一個just-in-time(JIT)編譯器,編譯IL或者.Net中間語言(intermediate language)到機器碼。在某些架構(gòu)中,JIT編譯器支持SIMD硬件加速。
一個異常處理機制,允許你通過try/catch語句處理異常。
.Net Core的類庫與.Net Framework的類庫除了有一處主要的不同點之外,其余的非常相似。
不同在于:
傳統(tǒng)的.Net Framework有很多類庫是屬于操作系統(tǒng)的一部分,并且它是通過Windows 自帶的Windows update更新。
在.Net Coe中,它是按照功能組織的模塊的個人庫。
Microsoft.NetCore.App 被包含在runtime里邊了,它包含了開發(fā)所有APP基本的類型,這些類型包括:
基礎(chǔ)類型,比如bool類型,簽名與不簽名的整型,浮點型和char結(jié)構(gòu)
String類型:在.Net Core中,一個字符串是UTF-16編碼單元的序列。.Net Core還包括了許多編碼類型,這些編碼類型可以允許你將UTF-16編碼字符串轉(zhuǎn)換成其他編碼的字節(jié)數(shù)組,例如:你可以用UTF8Encoding class將.Net Core的string字符串轉(zhuǎn)換成utf-8編碼的字節(jié)數(shù)組,用來表示Linux上的string字符串。
任務(wù)類型,例如Task和Task,用來支持異步編程。
基本的線程類型
Console Class,用來支持開發(fā)console apps.
另外的一些庫,需要通過Nuget包來安裝
.Net Core包含了一個跨平臺的命令行SDK,名字叫做.Net Core CLI(Command-Line Interface).這個CLI是編寫.Net Core應(yīng)用程序的一組對Unix友好的工具。它讓C#編譯器和Nuget包管理工具變得抽象,變得抽象的意思是你感覺不到編譯器和包管理工具的存在,應(yīng)用程序就編寫好了。他同樣可以與.Net原生工具緊緊集成在一起來產(chǎn)生高性能的原生app和庫。
CLI帶來的好處是開發(fā)者可以不用安裝大型的IDE就可以編譯和測試他們的代碼,這在不是自己的電腦或者生產(chǎn)服務(wù)器上是極好的。visual studio code與visual studio在底層都是用的CLI,你可以根據(jù)你的需要選擇不同的IDE.比如你可以直接通過文本器來使用CLI,或者你可以用IDE開發(fā),編輯器內(nèi)部調(diào)用CLI.
大多數(shù)情況下,你直接使用.Net Core CLI就是通過給dotnet.exe
提供參數(shù),下邊是dotnet.exe
可以使用的命令:
dotnet --help
:顯示關(guān)于.Net Core CLI命令行的信息
dotnet new
:初始化一個C#項目
dotnet new --lang F#
:初始化一個F#項目
dotnet restore
:為你的app還原所有的依賴
dotnet build
:編寫一個.Net Core app
dotnet publish
:發(fā)布一個portable或者self-contained app。(查看【部署簡單】章節(jié))
dotnet run
:從源代碼中運行app
dotnet pack
:在你的app中創(chuàng)建一個Nuget包
dotnet.exe
有擴展模型,允許你添加額外的命令。
.Net Core是語言無關(guān)的:任何以.Net Core為目標(biāo)的語言都是可以用來開發(fā).Net Core應(yīng)用程序的,通過不同的編程語言開發(fā)的app,用其中的一種語言即可無縫地訪問類型與成員。
當(dāng)前,你可以用下邊的兩種語言的任意一種開發(fā):
C#,基于.NET Compiler Platform,也成為Roslyn
F#.
我們打算在未來支持更多的語言。
你有多種開發(fā)環(huán)境可以選擇用來編寫app,包括:
一個簡單的文本編輯器,例如在Windows系統(tǒng)上的Notepad,或者Wordpad
一個程序員的編輯器,例如需要C#擴展的Visual studio Code
一個集成開發(fā),調(diào)試,測試的環(huán)境,比如 Visual Studio 2015 Update 2
為了更好的感知.Net Core是什么,將它與.Net framework相比較:
包含CoreCLR,一個可提供基礎(chǔ)服務(wù)的輕量級運行時(runtime),尤其自動內(nèi)存管理,垃圾回收器,還有一個基礎(chǔ)的類型庫。
包含了CoreFx,一套個人模塊化組裝,你可以安裝需要將其添加到你的app中,與.Net Framework 4.x不同,.Net Framework 4.x總是使整個.Net Framework類庫可用,.Net Core只需選擇你想要的。例如,如果你正在開發(fā)一款基于矢量的應(yīng)用,你可以下載System.Numerics.Vectors
包,而不是需要一個很大類庫的花銷,這樣可以顯著的減少你app的體積和他的依賴項。
適用于各種各樣的現(xiàn)代應(yīng)用程序,對內(nèi)存和儲存有限制的小型設(shè)備起作用
可以利用若干的技術(shù)來開發(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本地。換句話說就是.Net Core版本可以緊緊與你的app相結(jié)合,這可以減輕好多版本問題。
包含公共語言運行時(CLR),一個相當(dāng)大的運行時,可以提供內(nèi)存管理,隔離應(yīng)用程序域(application domain),大量的應(yīng)用程序服務(wù)。
包含了.Net Framework類庫,這個類庫包含了成千上萬個的類與成員,不僅非常大而且又是一個整體,不論你的app用了單個類型或者他們的成員(或者大多數(shù)app利用了一小部分函數(shù)),他們都是始終加載并且可以隨時訪問的。
適用于傳統(tǒng)的Windows桌面應(yīng)用程序,包括Windows forms(winforms)和Windows Presentation Foundation(WPF)應(yīng)用程序,可以運用許多技術(shù)來開發(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)建工作流。
在一個給定系統(tǒng)中全局可用。換句話說,即使一個app中包含了一個特定版本的.Net Framework安裝器,但是假如安裝器發(fā)現(xiàn)它不存在還是會安裝完整的.Net framework,并且會獨立于app維護(hù)。這就會產(chǎn)生版本問題,特別地是一個app遭遇了一個沒有預(yù)想的版本,或者一個app跑在了之前沒有開發(fā)的.Net Framework版本上。
從Windows8開始,.Net Framework作為操作系統(tǒng)的一個組件安裝,并且通過Windows update升級。對于不同的Windows里邊內(nèi)置不同的.Net Framework版本,更多的信息請訪問.NET Framework System Requirements.
雖然.Net Framework 4.6.2預(yù)覽版和.Net Core是面向不同的平臺,代表著不同的app開發(fā)和部署方法,但是他們都遵守 .Net標(biāo)準(zhǔn)1.5。這意外著他們彼此能夠提供一個高度的兼容性與統(tǒng)一行為。尤其:
有經(jīng)驗的.Net 開發(fā)者想要開發(fā)不同設(shè)備和平臺的應(yīng)用程序的時候,可以很容易適應(yīng).Net Core的開發(fā)。
.Net Core開發(fā)者可以很容易的過渡到用.Net Framework開發(fā)Windows桌面程序、平板和手機的方式上。
用.Net Framework或者.Net Core寫的類庫可以很容易的在另外一個平臺工作。
許多的開發(fā)技術(shù)依賴.Net Core的可定制實現(xiàn)。當(dāng)你用這些技術(shù)開發(fā)Apps的時候,你也許不會意識你是在利用.Net Core的好處:
ASP.Net Core
.ASP.Net Core是一個模塊化的asp.Net版本,它結(jié)合了ASP.NET MVC and ASP.NET Web API.它可以同時運行在.Net Framework與.Net Core上邊,它被設(shè)計用來構(gòu)建高性能的云和微型服務(wù);在.Net Framework中,它不是打算作為asp.net的替代者的。有關(guān)更多的ASP.Net Core信息,請訪問Introduction to ASP.NET Core.
.NET Native
。對于用C#和Visual Basic編寫的Universal Windows Platform (UWP)應(yīng)用程序,.NET Native是一個編譯和部署技術(shù)。.Net Native將Apps編譯成原生代碼,靜態(tài)資源文件放入應(yīng)用程序集中,這些都是.Net Core和另外一些第三方的正在使用的代碼。有關(guān)更多.Net Native的信息請訪問Compiling Apps with .NET Native.
Universal Windows Platform (UWP) apps
。Universal Windows Platform允許你構(gòu)建一個運行在Windows桌面,Windows平板設(shè)備,Windows phone手機上的app。這些應(yīng)用可以上傳到Windows store中。UWP 應(yīng)用程序通過.Net Native為他們各自的平臺編譯原生代碼,有關(guān)更多的信息,請訪問 Get started with Windows apps。
http://www.cnblogs.com/Wahitler/p/5612895.html
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。