.Net Core[譯文]

文章概覽:

什麼是.Net Core平臺?

.Net Core是一個模塊化的,跨平臺的,開源實現的.Net Framework,它能夠在Windows設備上運行,也能夠在Linux和OS X上運行。不一樣於傳統的.Net Framework(特色:龐大的,系統級的,是一個只能跑在Windows上的運行時環境),你能夠用.Net Core創造以多平臺爲目標的組件化的庫和應用程序,而且.Net Core能夠與應用程序一塊兒部署。css

.Net Core特性

讓咱們從宏觀上看看.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 Core的代碼評審(Code review)是公開的
  • 您能夠經過使用GitHub的提供的功能,將bug公開,對源代碼提出您的建議,並且你能夠提交新特性的請求,或者你本身寫的代碼均可以提交。
  • 你也能夠下載全部的源代碼在你的機器上編譯。Runtime與基礎類庫,還有一些工具能夠在任何平臺上編譯。

改善的Console App

傳統的.Net Framework能夠在Windows上建立運行建立控制檯apps,.Net Core一樣能夠,可是.Net Core改善了控制應用程序:web

  • 跨平臺:控制檯程序能夠跑在Windows,OS X和Linux
  • 原生編譯:將託管程序的好處與原生C/C++應用程序的性能相結合

安裝簡單

由於.Net Core不是一個操做系統的組件,如今安裝:編程

  • 不須要管理員權限
  • 不須要觸碰系統組件了,也就是說不須要向操做系統的系統目錄和註冊表中寫文件了
  • 複製一些文件到目標計算機更簡單了,或者將原生framework編譯進你的app。

這樣,新的開發者不到一分鐘就能夠入門.Net了,包括下載Framework和tools。能夠從這裏canvas

部署簡單

做爲運維人員,去部署一個開發部門給你的.Net應用程序的時候,你首先要作的就是去服務器檢查.Net framework版本是否符合要求,若是不符合就須要安裝一個能運行這個程序的基礎版本,這些會給運維人員帶來很大的困擾
相比之下,。Net core有兩種發佈部署方式:windows

Portable Apps

在部署一個portable app的時候,你除了.Net Core庫以外,只須要部署你的程序和它的依賴就能夠。
在目標機器上爲了將Portable Apps跑起來須要安裝.Net Core。你不須要提早去考慮你的app支持哪一個平臺,由於.Net Core就是一個獨立的組件。
在.Net Core裏,Portable Apps是默認的程序類型。api

Self-contained Apps

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 Core組件(Components)

和傳統的.Net Framework很是像,.Net Core由一個叫CoreCLR的公共語言運行時(Common language runtime)組成。和.Net Framework同樣,.Net Core中關鍵的也是類庫。.Net Core關鍵的是CoreFX,這是一個模塊化的類庫集,而非單一的.Net framework類庫。這樣就能夠你的程序須要什麼庫就加載什麼庫,不須要的不會加載。

公共語言運行時(The Common Language Runtime)

.Net Core中的公共語言運行時——CoreCLR是一個輕量級的運行時,提供了好多和傳統.Net Framework的運行時相同的服務。這些相同的服務包含:

  • 一個垃圾回收器,它提供了內存自動管理。垃圾回收器按需分配和釋放內存;你沒必要經過程序去作這些。不像C++,須要本身去管理操做內存的分配和釋放。.Net Core也用了和.Net Framework相同的垃圾回收器,更多信息請訪問Garbage Collection
  • 一個just-in-time(JIT)編譯器,編譯IL或者.Net中間語言(intermediate language)到機器碼。在某些架構中,JIT編譯器支持SIMD硬件加速。
  • 一個異常處理機制,容許你經過try/catch語句處理異常。

類庫(The Class Library)

.Net Core的類庫與.Net Framework的類庫除了有一處主要的不一樣點以外,其他的很是類似。
不一樣在於:
傳統的.Net Framework有不少類庫是屬於操做系統的一部分,而且它是經過Windows 自帶的Windows update更新。
在.Net Coe中,它是按照功能組織的模塊的我的庫。

Microsoft.NetCore.App 被包含在runtime裏邊了,它包含了開發全部APP基本的類型,這些類型包括:

  • 基礎類型,好比bool類型,簽名與不簽名的整型,浮點型和char結構
  • String類型:在.Net Core中,一個字符串是UTF-16編碼單元的序列。.Net Core還包括了許多編碼類型,這些編碼類型能夠容許你將UTF-16編碼字符串轉換成其餘編碼的字節數組,例如:你能夠用UTF8Encoding class將.Net Core的string字符串轉換成utf-8編碼的字節數組,用來表示Linux上的string字符串。
  • 任務類型,例如TaskTask ,用來支持異步編程。
  • 基本的線程類型
  • Console Class,用來支持開發console apps.

另外的一些庫,須要經過Nuget包來安裝

.Net Core工具(.Net Core Tools)

.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 app
  • dotnet publish:發佈一個portable或者self-contained app。(查看【部署簡單】章節)
  • dotnet run:從源代碼中運行app
  • dotnet pack:在你的app中建立一個Nuget包

    dotnet.exe有擴展模型,容許你添加額外的命令。

語言支持和開發環境(Language Support and Development Environments)

.Net Core是語言無關的:任何以.Net Core爲目標的語言都是能夠用來開發.Net Core應用程序的,經過不一樣的編程語言開發的app,用其中的一種語言便可無縫地訪問類型與成員。

當前,你能夠用下邊的兩種語言的任意一種開發:

咱們打算在將來支持更多的語言。
你有多種開發環境能夠選擇用來編寫app,包括:

.NET Core and the .NET Framework

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

.Net Core

包含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相結合,這能夠減輕好多版本問題。

.NET Framework 4.x

包含公共語言運行時(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 開發者想要開發不一樣設備和平臺的應用程序的時候,能夠很容易適應.Net Core的開發。
  • .Net Core開發者能夠很容易的過渡到用.Net Framework開發Windows桌面程序、平板和手機的方式上。
  • 用.Net Framework或者.Net Core寫的類庫能夠很容易的在另一個平臺工做。

.Net Core具體實現(implementations)

許多的開發技術依賴.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

相關文章
相關標籤/搜索