2016 年 4 月

第 31 卷,第 4 期

本文章是由機器翻譯。

.NET Core - 有了 .NET Core,.NET 如今可以跨平台作業

菲利浦 Carter | 2016 年 4 月

在 Microsoft,我們 buildinga 的.NET 中,稱為.NET 核心,讓您撰寫跨平台程式碼,針對雲端最佳化工作負載的新實作。許多很喜歡這個開放原始碼開發,但是它實際上代表什麼? 這篇文章應有助於釐清.NET Core 的今天,以及哪些其目標是,它如何與 Microsoft.NET Framework,以及可供您開始使用.NET Core 的命令列工具的基礎。

什麼是.NET Core?

若要了解.NET Core 的是,最好先了解.NET 本身。當他們說 「.NET 」,但是沒有超過它時,許多人表示 <.NET Framework >。.NET 是一種 ECMA 標準,具有不同的實作,.NET Framework、 單聲道、 Unity 和現在,.NET Core。這表示許多經驗的.NET Framework 和.NET 核心之間共用。不過,.NET Core 是新記住一些不同的原則。

首先,.NET Core 是跨平台。在 Windows、 OS X 和 Linux 的多個散發套件上執行。它也支援不同的 CPU 架構。我們要新增更多的 Linux 散發套件和 CPU 架構支援最終目標是要盡可能執行多個位置中的.NET Core。

在此同時,.NET Core 是在其設計和架構基本上是模組化。執行階段、 程式庫與編譯器元件是透過設計良好的介面進行通訊的所有個別實體。這可讓您將 「 交換 」 元件和縮小為您的特定需求。程式庫本身也是模組化和分散式透過 NuGet,可讓您使用只配備,讓您可以微調.NET Core 在任何給定系統上的使用量。

此外,.NET Core 的程式碼可攜性,並執行各種不同的支援平台可進行微調。根據您如何為目標專案,就可以在.NET Framework、 單聲道和 Xamarin 的平台、 Windows 8 和 Windows Phone 和通用 Windows 平台 (UWP) 上執行的.NET 核心程式碼。若要深入了解,請參閱.NET 平台標準 (bit.ly/1Of6W1r)。

最後,.NET Core 將會 「 付款的播放 」 且高效能。.NET Core 投入時間的其中一個目標是要清除的抽象概念的成本給開發人員實作付費播放模型,讓明顯來自採用較高層級的抽象概念,來解決問題的成本。抽象概念不爭的可用,並從開發人員應該永遠不會隱藏該事實。此外,.NET Core 將有利的配置和您系統的整體記憶體使用量降到最低標準程式庫的效能。

.NET Core 的案例

現在,四個案例存在於您可以在此撰寫.NET 核心的程式碼 ︰ 跨平台 ASP.NET Web 應用程式、 跨平台的主控台應用程式、 跨平台程式庫與架構以及 UWP 應用程式

內建的速度,ASP.NET 核心 1.0 是.NET Core 的跨平台 Web 堆疊。如果您所想要執行像是 ASP.NET Web 應用程式部署至 Linux 上的容器,您現在可以進行。若要深入了解的 ASP.NET Core 提供的功能範圍,請參閱文件,網址 bit.ly/1TqPcIo

跨平台的主控台應用程式的範圍是實際上很遠超出預期許多開發人員。例如,ASP.NET 核心 Web 應用程式是,在其核心部分,主控台應用程式可讀取和寫入資訊至連接埠 — 它剛好就進行許多其他項目。一系列會形成整個系統的後端的微服務可以每個寫成主控台應用程式。

跨平台程式庫和架構之間的差別是其中一個小數位數。程式庫是在其上建置.NET Core 上的項目最自然的候選項目。但是在更大的規模,像是分散式運算環境的架構會是適合用。

最後,UWP 應用程式為目標的 Windows 10 裝置系列上執行.NET Core。您可以建立功能完整的 UWP 應用程式,其中包含可協助您建立豐富的 Windows 10 應用程式的.NET 核心程式庫。

換句話說,有很多事項,您可以立即撰寫.NET 核心。這項工具成熟並展開時,一定有更多您可以在未來建立的項目。

如果您已經分為下列四種情境,或想要降低您才有新的技術上的.NET Framework 資產,請移至 bit.ly/1Q1Q18q 讓您可以開始撰寫一些.NET 核心程式碼。

如何使用.NET Framework 與.NET Core 比較

.NET 大多都知道,love 稱為.NET Framework。.NET Core 如何比較.NET framework? 要牢記在心的第一件事是,您仍然可以使用相同的語言,C#、 F #、 Visual Basic — 撰寫所有程式碼。您的經驗撰寫程式碼應該很熟悉的外觀及操作。不過,.NET Core 是新的堆疊,.NET Framework 子集。最好的.NET Core 和.NET Framework 視為兩個堆疊一致及共同發展。

.NET Framework 是,而且會繼續寫入到 Windows 10 的 Windows 7 桌面應用程式時要使用的堆疊。事實上,您可以讓.NET Framework 及.NET Core 生活場景相同方案中的程式碼。例如,假設在.NET Framework GUI (例如 Windows Form) 取用撰寫.NET Core 上的服務。

最好先思考的相似性與差異的.NET Core 和.NET Framework 從兩個層面 ︰ API 介面區和執行階段功能。[圖 1 有助於說明 Api 的兩個平台之間的重疊。

.NET Framework 及.NET Core 共用 Api 的子集
[圖 1 的.NET Framework 及.NET Core 共用 Api 的子集

有 (雖然有時會有不同的基礎實作) 實作.NET Core 和.NET Framework 的.NET Api。在此同時,.NET Core 和.NET Framework 具有 Api 和功能,其他則否。例如,.NET Framework 有多個 GUI 架構和 Windows 特定的 Api 不存在於.NET Core 中。同樣地,.NET Core 有跨平台功能和.NET Framework 缺少的 Api。

此外,.NET Framework 是 Windows 元件,可透過 Windows Update 提供服務。.NET core 採用存在的位置和服務的方式完全不同的模型。.NET core 由 NuGet 封裝所組成,與執行階段安裝本機應用程式。這表示,應用程式可以 「 帶有 「.NET Core,好讓他們能夠存在與其他電腦或裝置上的.NET Core 執行個體並存。服務可以接著完成每個應用程式與透過封裝管理員,而非全域透過作業系統更新。

實際的問題是 ︰ 如果您撰寫一個堆疊上,將它執行其他嗎? 在生活中大部分的解答,例如它而定。如果您使用的 Api 會實作兩種平台,則您應該能夠執行您的程式碼.NET Core 和.NET Framework 組件的工作相當少。不過,如果您假設相依性的執行環境,或使用上一個堆疊 (例如使用以 XAML 為基礎的 Ui 的程式庫) 無法使用的 Api,您的程式碼將不會執行跨兩個堆疊。.NET Portability Analyzer — 可用命令列工具 (bit.ly/1Sd8oIK) 或 Visual Studio 擴充功能 (bit.ly/1LqX0aF) — 是一種工具,將會分析您的.dll 檔案,並產生如何可攜式程式碼是從.NET Framework 到.NET Core 上的報表。我們將會釋出更多工具來協助進行未來移植。

命令列 ︰ 您的.NET Core 的進入點

.NET core 隨附新和改寫過之基本的工具組,將用來開發應用程式。該工具組會呼叫.NET 核心 CLI,這是短的.NET 核心命令列介面。做為與.NET Core 的其他部分,它也開放原始碼 (請參閱 GitHub.com/dotnet/cli) 且可感知開發所牽涉的活躍的開放原始碼社群。

有多種原因所造成的世界中引入新的工具組。首先,我們必須支援所有.NET Core 支援的平台上的核心開發案例的需要。良好的命令列體驗提供各式各樣的平台,是很棒的基礎,我們可以建置。畢竟,在命令列就是每個這些平台隨附的預設值。

做為邏輯的擴充功能,我們想要支援的平台支援相同的 UX。您將能夠 Linux、 視窗和 OS X 之間移動,不必重新學習工具,其語法或語意 (semantics)。它們在所有平台上相同。使用模式相同,而且即使語法都相同。

這個概念是您使用跨平台的一個工具組還會延伸至較高層級的工具,也就是 Visual Studio 程式碼與 Visual Studio。這些較高層級的工具將分層.NET CLI 時,並使用它們來支援向前移動的.NET Core 專案。這表示,當您建置您的 Visual Studio.NET 核心應用程式時,會叫.NET CLI 工具,用來執行組建。

嘗試.NET 核心命令列介面

若要開始使用.NET 核心 CLI 最簡單的方式是依照快速入門指南 》 (aka.ms/dotnetcoregs)。簡單來說是下載安裝程式的平台 (或註冊新 apt-get 摘要在 Ubuntu 的情況下),安裝工具一切準備就緒。安裝程式會負責設定路徑中所有支援的作業系統,以及任何其他環境變數,CLI 需要在系統上的安裝資料夾。

在此之後,您可以開始叫用 「 dotnet 」 的驅動程式,並傳遞命令 (也所謂 「 動作 」)。驅動程式會負責執行命令,並傳遞給它的任何引數。在撰寫本文時,CLI 套件隨附的命令中 [圖 2。當然,您閱讀本文時我們將可能新增更多的命令,將會增加您的產能。

[圖 2] 目前,您可以使用一些常見.NET CLI 命令

命令 描述
新 dotnet 初始化類別庫或使用 C# 做為語言的主控台應用程式的有效專案。
dotnet 還原 還原指定的專案的 project.json 檔案中所定義的相依性。相依性通常是您在您的應用程式中使用 NuGet 封裝。
dotnet 組建 建置您的程式碼 ! 此命令會產生中繼語言 (IL) 二進位為您的專案。如果專案是主控台應用程式,則產生的輸出會是可執行檔,您可以立即執行。根據預設,[建置] 命令會輸出已建置組件和可執行檔 (如果適用) 到 bin 目錄中,就會叫用的目錄。
dotnet 測試 不好的工具必須於不執行測試的支援。此命令可讓您執行使用 project.json 檔案中,您可以指定執行器的測試套件。目前支援的 xUnit NUnit 測試和跑石。
dotnet 發行 發行您的應用程式的目標機器上執行。
dotnet 組件 組件的命令會封裝您的專案中的 NuGet 封裝。輸出是一組您可以再上傳至您的摘要,或還原作業所使用的本機資料夾中使用覆寫的 nupkg 檔案。
dotnet 執行 執行的命令會編譯並執行應用程式。您可以將此視為 Ctrl + F5 類比,只是不含 Visual Studio。

除了任何隨附命令的封裝,您也必須為您的 project.json 工具新增其他命令,然後還原選項。它們封裝成 NuGet 套件,以提供有多好且容易使用,並了解擴充性模型。

總結

我們希望您已了解有關.NET Core 和很興奮有關撰寫可以執行跨平台的.NET 程式碼。做為新的堆疊,它會提供一些令人興奮的功能,無法達成與之前的.NET Framework。.NET CLI 也導入了絕佳的命令列體驗的開發人員經驗的基礎,並整合到 Visual Studio 和 Visual Studio 程式碼等其他工具。

最後,我們知道您有很多.NET Framework 中,針對所撰寫的資產,而我們樂見繼續增長,因為.NET Framework 的發展這些資產。我們認為,.NET Framework 及.NET Core 一起中使用的兩個堆疊優點系統的世界。

如果您想要進一步了解,並可能參與,以下是一些開始的位置 ︰

我們有許多開放原始碼專案的人員的多個.NET。如果您有興趣看看多個檔案,看看.NET Foundation,獨立組織創造有利於開啟開發和.NET 周圍的共同作業。Microsoft 有提供數個.NET Foundation,以及其他公司、 Xamarin、 Umbraco、 Salesforce 和.NET 社群的專案。深入了解它們,並在投稿 DotNetFoundation.org/projects


菲利浦 Carter是 Microsoft.NET 小組的專案經理。系統和程式設計語言理論熱愛,Carter 可以找到超前深夜與朋友爭論透過並行存取模型。他希望所有系統的執行階段行為的型別系統,進而以遞增的較高的推論狀態人類的競賽中能表示的一天。他可以到達 phcart@microsoft.com

Zlatko Knezevic是 Microsoft.NET 小組的專案經理 (PM)。在 2005 年加入 Microsoft,第一次使用 CEE 開發人員推廣者,然後前往成為 SQL Server 中的 PM。他那里工作範圍的項目,從核心引擎正在加入新的索引,建置縫服務,以處理巨量資料探索,依此類推。2015 年他加入.NET 小組為 PM,而且因為一直致力於.NET 核心跨平台經驗。他可以到達 Zlatko.Knezevic@microsoft.com

感謝以下的微軟技術專家對本文的審閱: Immo Landwerth 和.NET Core 和架構程式管理小組