.Net Core是一個模塊化的,跨平臺的,開源實現的.Net Framework,它能夠在Windows設備上運行,也能夠在Linux和OS X上運行。不一樣於傳統的.Net Framework(特色:龐大的,系統級的,是一個只能跑在Windows上的運行時環境),你能夠用.Net Core創造以多平臺爲目標的組件化的庫和應用程序,而且.Net Core能夠與應用程序一塊兒部署。css
讓咱們從宏觀上看看.Net Core的特性html
.NET Core 應用程序能夠同時跑在32位和64位的Windows平臺上,也能夠跑在OS X和Linux上。git
相反的,基於傳統.Net Framework編寫的應用程序只能跑在Windows上。注意的是UWP通用應用程序藉助.Net Core的實現,也只能跑在Windows桌面程序,平板和Windows phone手機上。程序員
.Net Core的RunTime(CoreCLR)和基礎類庫都是開放源代碼的,另外.Net Core的源代碼都是免費得到的,這些意味着:github
傳統的.Net Framework能夠在Windows上建立運行建立控制檯apps,.Net Core一樣能夠,可是.Net Core改善了控制應用程序:web
由於.Net Core不是一個操做系統的組件,如今安裝:編程
這樣,新的開發者不到一分鐘就能夠入門.Net了,包括下載Framework和tools。能夠從這裏。canvas
做爲運維人員,去部署一個開發部門給你的.Net應用程序的時候,你首先要作的就是去服務器檢查.Net framework版本是否符合要求,若是不符合就須要安裝一個能運行這個程序的基礎版本,這些會給運維人員帶來很大的困擾
相比之下,。Net core有兩種發佈部署方式:windows
在部署一個portable app的時候,你除了.Net Core庫以外,只須要部署你的程序和它的依賴就能夠。
在目標機器上爲了將Portable Apps跑起來須要安裝.Net Core。你不須要提早去考慮你的app支持哪一個平臺,由於.Net Core就是一個獨立的組件。
在.Net Core裏,Portable Apps是默認的程序類型。api
Self-contained apps包含了全部的依賴,.Net Core runtime也會做爲軟件的一部分.因爲你的APP中內置了.Net Core,因此無論你要部署的那臺機器上安裝沒安裝.Net Core均可以運行,並且就算以前的機子上有人安裝了.Net Core,你的.Net Core類庫也是與別人的.Net Core類庫隔離開的。
這種方式的前提得是你的程序裏內置了對應平臺的.Net Core,好比你要在OS X上部署,你的APP裏須要內置OS X對應的.Net Core,若是你內置的.Net Core是Linux版本的,那你就不能在OS X上邊部署,這就要求你必須先考慮好,你的應用程序面向的平臺。
和傳統的.Net Framework很是像,.Net Core由一個叫CoreCLR的公共語言運行時(Common language runtime)組成。和.Net Framework同樣,.Net Core中關鍵的也是類庫。.Net Core關鍵的是CoreFX,這是一個模塊化的類庫集,而非單一的.Net framework類庫。這樣就能夠你的程序須要什麼庫就加載什麼庫,不須要的不會加載。
.Net Core中的公共語言運行時——CoreCLR是一個輕量級的運行時,提供了好多和傳統.Net Framework的運行時相同的服務。這些相同的服務包含:
.Net Core的類庫與.Net Framework的類庫除了有一處主要的不一樣點以外,其他的很是類似。
不一樣在於:
傳統的.Net Framework有不少類庫是屬於操做系統的一部分,而且它是經過Windows 自帶的Windows update更新。
在.Net Coe中,它是按照功能組織的模塊的我的庫。
Microsoft.NetCore.App 被包含在runtime裏邊了,它包含了開發全部APP基本的類型,這些類型包括:
另外的一些庫,須要經過Nuget包來安裝
.Net Core包含了一個跨平臺的命令行SDK,名字叫作.Net Core CLI(Command-Line Interface).這個CLI是編寫.Net Core應用程序的一組對Unix友好的工具。它讓C#編譯器和Nuget包管理工具變得抽象,變得抽象的意思是你感受不到編譯器和包管理工具的存在,應用程序就編寫好了。他一樣能夠與.Net原生工具牢牢集成在一塊兒來產生高性能的原生app和庫。
CLI帶來的好處是開發者能夠不用安裝大型的IDE就能夠編譯和測試他們的代碼,這在不是本身的電腦或者生產服務器上是極好的。visual studio code與visual studio在底層都是用的CLI,你能夠根據你的須要選擇不一樣的IDE.好比你能夠直接經過文本器來使用CLI,或者你能夠用IDE開發,編輯器內部調用CLI.
大多數狀況下,你直接使用.Net Core CLI就是經過給dotnet.exe
提供參數,下邊是dotnet.exe
可使用的命令:
dotnet --help
:顯示關於.Net Core CLI命令行的信息dotnet new
:初始化一個C#項目dotnet new --lang F#
:初始化一個F#項目dotnet restore
:爲你的app還原全部的依賴dotnet build
:編寫一個.Net Core appdotnet publish
:發佈一個portable或者self-contained app。(查看【部署簡單】章節)dotnet run
:從源代碼中運行appdotnet pack
:在你的app中建立一個Nuget包
dotnet.exe
有擴展模型,容許你添加額外的命令。
.Net Core是語言無關的:任何以.Net Core爲目標的語言都是能夠用來開發.Net Core應用程序的,經過不一樣的編程語言開發的app,用其中的一種語言便可無縫地訪問類型與成員。
當前,你能夠用下邊的兩種語言的任意一種開發:
咱們打算在將來支持更多的語言。
你有多種開發環境能夠選擇用來編寫app,包括:
爲了更好的感知.Net Core是什麼,將它與.Net framework相比較:
包含CoreCLR,一個可提供基礎服務的輕量級運行時(runtime),尤爲自動內存管理,垃圾回收器,還有一個基礎的類型庫。
包含了CoreFx,一套我的模塊化組裝,你能夠安裝須要將其添加到你的app中,與.Net Framework 4.x不一樣,.Net Framework 4.x老是使整個.Net Framework類庫可用,.Net Core只需選擇你想要的。例如,若是你正在開發一款基於矢量的應用,你能夠下載System.Numerics.Vectors
包,而不是須要一個很大類庫的花銷,這樣能夠顯著的減小你app的體積和他的依賴項。
適用於各類各樣的現代應用程序,對內存和儲存有限制的小型設備起做用
能夠利用若干的技術來開發應用,好比asp.net core
開發web應用,Windows communication Foundation(WCF)
開發與現有的WCF服務相關聯的應用,workflow foundation(WF)構建工做流。
能夠變成app本地。換句話說就是.Net Core版本能夠牢牢與你的app相結合,這能夠減輕好多版本問題。
包含公共語言運行時(CLR),一個至關大的運行時,能夠提供內存管理,隔離應用程序域(application domain),大量的應用程序服務。
包含了.Net Framework類庫,這個類庫包含了成千上萬個的類與成員,不只很是大並且又是一個總體,不論你的app用了單個類型或者他們的成員(或者大多數app利用了一小部分函數),他們都是始終加載而且能夠隨時訪問的。
適用於傳統的Windows桌面應用程序,包括Windows forms(winforms)和Windows Presentation Foundation(WPF)應用程序,能夠運用許多技術來開發應用程序,例如,ASP.NET和ASP.NET Web Form構建web應用程序,Windows Communication Foundation (WCF)構建包含soap的服務,Workflow Foundation (WF), 構建工做流。
在一個給定系統中全局可用。換句話說,即便一個app中包含了一個特定版本的.Net Framework安裝器,可是假如安裝器發現它不存在仍是會安裝完整的.Net framework,而且會獨立於app維護。這就會產生版本問題,特別地是一個app遭遇了一個沒有預想的版本,或者一個app跑在了以前沒有開發的.Net Framework版本上。
從Windows8開始,.Net Framework做爲操做系統的一個組件安裝,而且經過Windows update升級。對於不一樣的Windows裏邊內置不一樣的.Net Framework版本,更多的信息請訪問.NET Framework System Requirements.
雖然.Net Framework 4.6.2預覽版和.Net Core是面向不一樣的平臺,表明着不一樣的app開發和部署方法,可是他們都遵照 .Net標準1.5。這意外着他們彼此可以提供一個高度的兼容性與統一行爲。尤爲:
許多的開發技術依賴.Net Core的可定製實現。當你用這些技術開發Apps的時候,你也許不會意識你是在利用.Net Core的好處:
ASP.Net Core
.ASP.Net Core是一個模塊化的asp.Net版本,它結合了ASP.NET MVC and ASP.NET Web API.它能夠同時運行在.Net Framework與.Net Core上邊,它被設計用來構建高性能的雲和微型服務;在.Net Framework中,它不是打算做爲asp.net的替代者的。有關更多的ASP.Net Core信息,請訪問Introduction to ASP.NET Core..NET Native
。對於用C#和Visual Basic編寫的Universal Windows Platform (UWP)應用程序,.NET Native是一個編譯和部署技術。.Net Native將Apps編譯成原生代碼,靜態資源文件放入應用程序集中,這些都是.Net Core和另一些第三方的正在使用的代碼。有關更多.Net Native的信息請訪問Compiling Apps with .NET Native.Universal Windows Platform (UWP) apps
。Universal Windows Platform容許你構建一個運行在Windows桌面,Windows平板設備,Windows phone手機上的app。這些應用能夠上傳到Windows store中。UWP 應用程序經過.Net Native爲他們各自的平臺編譯原生代碼,有關更多的信息,請訪問 Get started with Windows apps。原文:https://dotnet.github.io/docs/getting-started/what-is-dotnet.html