.Net Core[譯文]

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

什麼是.Net Core平臺?

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

.Net Core特性

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

跨平臺支持

.NET Core 應用程序能夠同時跑在32位和64位的Windows平臺上,也能夠跑在OS X和Linux上。程序員

相反的,基於傳統.Net Framework編寫的應用程序只能跑在Windows上。注意的是UWP通用應用程序藉助.Net Core的實現,也只能跑在Windows桌面程序,平板和Windows phone手機上。github

開源

.Net Core的RunTime(CoreCLR)和基礎類庫都是開放源代碼的,另外.Net Core的源代碼都是免費得到的,這些意味着:web

  • 設計註釋,功能規格,還有特定實現文檔都是公開的
  • .Net Core的代碼評審(Code review)是公開的
  • 您能夠經過使用GitHub的提供的功能,將bug公開,對源代碼提出您的建議,並且你能夠提交新特性的請求,或者你本身寫的代碼均可以提交。
  • 你也能夠下載全部的源代碼在你的機器上編譯。Runtime與基礎類庫,還有一些工具能夠在任何平臺上編譯。

控制檯Apps

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

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

安裝簡單

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

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

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

發佈部署簡單

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

Portable Apps

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

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組件

和 傳統的.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實施(.NET Core具體實現)

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

相關文章
相關標籤/搜索