
.Net Core是一個模塊化的,跨平臺的,開源實現的.Net Framework,它可以在Windows設備上運行,也可以在Linux和OS X上運行。不同于傳統的.Net Framework(特點:龐大的,系統級的,是一個只能跑在Windows上的運行時環境),你可以用.Net Core創造以多平臺為目標的組件化的庫和應用程序,并且.Net Core可以與應用程序一起部署。
讓我們從宏觀上看看.Net Core的特性
.NET Core 應用程序可以同時跑在32位和64位的Windows平臺上,也可以跑在OS X和Linux上。
相反的,基于傳統.Net Framework編寫的應用程序只能跑在Windows上。注意的是UWP通用應用程序借助.Net Core的實現,也只能跑在Windows桌面程序,平板和Windows phone手機上。
.Net Core的RunTime(CoreCLR)和基礎類庫都是開放源代碼的,另外.Net Core的源代碼都是免費獲得的,這些意味著:
設計注釋,功能規格,還有特定實現文檔都是公開的
.Net Core的代碼評審(Code review)是公開的
您可以通過使用GitHub的提供的功能,將bug公開,對源代碼提出您的建議,而且你可以提交新特性的請求,或者你自己寫的代碼都可以提交。
你也可以下載所有的源代碼在你的機器上編譯。Runtime與基礎類庫,還有一些工具可以在任何平臺上編譯。
傳統的.Net Framework可以在Windows上創建運行創建控制臺apps,.Net Core同樣可以,但是.Net Core改善了控制應用程序:
跨平臺:控制臺程序可以跑在Windows,OS X和Linux
原生編譯:將托管程序的好處與原生C/C++應用程序的性能相結合
因為.Net Core不是一個操作系統的組件,現在安裝:
不需要管理員權限
不需要觸碰系統組件了,也就是說不需要向操作系統的系統目錄和注冊表中寫文件了
復制一些文件到目標計算機更簡單了,或者將原生framework編譯進你的app。
這樣,新的開發者不到一分鐘就可以入門.Net了,包括下載Framework和tools??梢詮倪@里。
作為運維人員,去部署一個開發部門給你的.Net應用程序的時候,你首先要做的就是去服務器檢查.Net framework版本是否符合要求,如果不符合就需要安裝一個能運行這個程序的基礎版本,這些會給運維人員帶來很大的困擾
相比之下,。Net core有兩種發布部署方式:
在部署一個portable app的時候,你除了.Net Core庫之外,只需要部署你的程序和它的依賴就可以。
在目標機器上為了將Portable Apps跑起來需要安裝.Net Core。你不需要提前去考慮你的app支持哪個平臺,因為.Net Core就是一個獨立的組件。
在.Net Core里,Portable 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 Framework非常像,.Net Core由一個叫CoreCLR的公共語言運行時(Common language runtime)組成。和.Net Framework一樣,.Net Core中關鍵的也是類庫。.Net Core關鍵的是CoreFX,這是一個模塊化的類庫集,而非單一的.Net framework類庫。這樣就可以你的程序需要什么庫就加載什么庫,不需要的不會加載。
.Net Core中的公共語言運行時——CoreCLR是一個輕量級的運行時,提供了好多和傳統.Net Framework的運行時相同的服務。這些相同的服務包含:
一個垃圾回收器,它提供了內存自動管理。垃圾回收器按需分配和釋放內存;你不必通過程序去做這些。不像C++,需要自己去管理操作內存的分配和釋放。.Net Core也用了和.Net Framework相同的垃圾回收器,更多信息請訪問Garbage Collection
一個just-in-time(JIT)編譯器,編譯IL或者.Net中間語言(intermediate language)到機器碼。在某些架構中,JIT編譯器支持SIMD硬件加速。
一個異常處理機制,允許你通過try/catch語句處理異常。
.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字符串。
任務類型,例如Task和Task,用來支持異步編程。
基本的線程類型
Console Class,用來支持開發console apps.
另外的一些庫,需要通過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 app
dotnet publish:發布一個portable或者self-contained app。(查看【部署簡單】章節)
dotnet run:從源代碼中運行app
dotnet pack:在你的app中創建一個Nuget包
dotnet.exe有擴展模型,允許你添加額外的命令。
.Net Core是語言無關的:任何以.Net Core為目標的語言都是可以用來開發.Net Core應用程序的,通過不同的編程語言開發的app,用其中的一種語言即可無縫地訪問類型與成員。
當前,你可以用下邊的兩種語言的任意一種開發:
C#,基于.NET Compiler Platform,也成為Roslyn
F#.
我們打算在未來支持更多的語言。
你有多種開發環境可以選擇用來編寫app,包括:
一個簡單的文本編輯器,例如在Windows系統上的Notepad,或者Wordpad
一個程序員的編輯器,例如需要C#擴展的Visual studio Code
一個集成開發,調試,測試的環境,比如 Visual Studio 2015 Update 2
為了更好的感知.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 開發者想要開發不同設備和平臺的應用程序的時候,可以很容易適應.Net Core的開發。
.Net Core開發者可以很容易的過渡到用.Net Framework開發Windows桌面程序、平板和手機的方式上。
用.Net Framework或者.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。
http://www.cnblogs.com/Wahitler/p/5612895.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。