關於.NET Core的一些問題和疑惑


1 爲何會出現.NET Core這個東西?即它爲了解決什麼問題。

.NET CoreNETECMA標準的一種新的實現。目前.NET已有FrameworkMonoUnity等實現。git

原先全部的.NET程序(Mono不在範圍內)僅在windows平臺環境下運行,這嚴重限制了.NET的生態擴展,因此.NET Core解決了.NET跨平臺可移植的問題,能夠在Windows, LinuxMacOS下開發並部署運行。github

2 具備哪些特色?

  • 跨平臺: 能夠在 WindowsmacOS Linux 操做系統上運行。 跨平臺 ASP.NET Web 應用、跨平臺控制檯應用、跨平臺庫和框架、UWP 應用。docker

  • 跨體系結構保持一致: 在多個體繫結構(包括 x64x86 ARM)上以相同的行爲運行代碼。 json

  • 命令行工具: 包括可用於本地開發和持續集成方案中的易於使用的命令行工具。 windows

  • 部署靈活: 能夠包含在應用或已安裝的並行用戶或計算機範圍中。 可搭配 Docker 容器使用。 後端

  • 兼容性:.NET Core 經過 .NET Standard.NET FrameworkXamarin Mono 兼容。 app

  • 開放源代碼:.NET Core 平臺是開放源代碼,使用 MIT Apache 2 許可證。 .NET Core 是一個 .NET Foundation 項目。 框架

  • Microsoft 支持:.NET Core Microsoft 依據 .NET Core 支持提供支持。工具

3 .NET Core.NET中處與什麼位置?與原有的.NET Freamwork有什麼關係和不一樣?

.NET Core.NET技術的一種新的實現,而不是.NET Framework的子集。.NET Core的代碼和Framework的代碼能夠共存在一個解決方案中。測試

.NET Core .NET Framework 上均實現了 .NET API(雖然有時底層的實現不一樣)。同時,.NET Core .NET Framework 均有對方不具有的 API 和功能。例如,.NET Framework 有多個 .NET Core 不具有的 GUI 框架和特定於 Windows API。一樣地,.NET Core .NET Framework 缺乏的跨平臺功能和 API

.NET Core 不支持全部 .NET Framework 應用模型。 具體而言,它不支持 ASP.NET Web 窗體和 ASP.NET MVC,但支持 ASP.NET Core MVC已宣佈 .NET Core 3 將支持 WPF Windows 窗體

 


4 .NET Core由哪些部分組成?

.NET Core 包括如下部分:

  • .NET Core 運行時:提供類型系統、程序集加載、垃圾回收器、本機互操做和其餘基本服務。 .NET Core 框架庫提供基元數據類型、應用編寫類型和基本實用程序。

  • ASP.NET 運行時:提供框架以生成基於新式雲的 Internet 鏈接的應用程序,例如 Web 應用、IoT 應用以及移動後端。

  • .NET Core CLI 工具和語言編譯器(Roslyn F#):提供 .NET Core 開發人員體驗。

  • dotnet 工具:用於啓動 .NET Core 應用和 CLI 工具。 它選擇運行時並託管運行時,提供程序集加載策略並啓動應用和工具。

這些組件採用如下方式分佈:

5 Mono比較

Mono 是原始的跨平臺和 開放源 .NET 實現,於 2004 年首次發佈。 能夠把它看做是 .NET Framework 的社區克隆。 Mono 項目團隊依賴於 Microsoft 發佈的開放 .NET 標準(尤爲是 ECMA 335),以便實現兼容性。

就這個角度來講,.NET CoreMono是同樣的。

.NET Core Mono 的主要差別在於:

  • 應用模型 -- Mono 經過 Xamarin 產品支持 .NET Framework 應用模型(例如,Windows Forms)和其餘應用模型(例如,Xamarin.iOS)的子集。 而 .NET Core 不支持這些內容。

  • API -- Mono 使用相同程序集名稱和組成要素支持 .NET Framework API 的 大型子集。

  • 平臺 -- Mono 支持不少平臺和 CPU

  • 開放源 -- Mono .NET Core 二者都使用 MIT 許可證,且都屬於 .NET Foundation 項目。

  • 焦點 -- 最近幾年,Mono 的主要焦點是移動平臺,而 .NET Core 的焦點是雲和桌面工做負載。

6 .NET Core能作些什麼事情?

可使用 C#Visual Basic F# 語言編寫適用於 .NET Core 的應用程序和庫。

 


7 怎麼安裝?


8 操做入口和界面?

.NET Core的項目工程使用CLI做爲操做界面,它是一個命令行程序。常見的命令以下:


命令

說明

dotnet new

使用 C# 語言初始化用於類庫或控制檯應用程序的有效項目。

dotnet restore

還原在指定項目的 project.json 文件中定義的依賴項。依賴項一般是您在應用程序中使用的 NuGet 包。

dotnet build

生成您的代碼! 此命令將生成適用於您的項目的中間語言 (IL) 二進制。若是項目是控制檯應用程序,則產生的輸出是可執行的,您能夠當即運行。默認狀況下,生成命令會將生成的程序集和可執行文件(若是適用)輸出到調用位置目錄的 bin 目錄中。

dotnet test

若是不支持運行測試,則不會出現適合的工具。此命令讓您可使用在 project.json 文件中指定的運行程序運行一組測試。目前支持 xUnit NUnit 測試運行程序。

dotnet publish

發佈在目標計算機上運行的應用程序。

dotnet pack

pack 命令會把您的項目打包成 NuGet 包。輸出一組 nupkg 文件後,您能夠將其上載至您的源,或使用本地文件夾替代將其用於還原操做。

dotnet run

運行命令將編譯並運行您的應用程序。您能夠將其看做沒有 Visual Studio Ctrl+F5 模擬。


9 如何部署?與原先的.NET程序的部署有什麼不一樣?



10 前景和規劃

從目前微軟在.NET Core上的更新速度以及開發計劃上看,.NET Core的發展前景很是好,且逐步完善並向.NET Framework功能集合靠攏。好比.NET Core 3.0預覽版即將支持WinFormWPF程序開發。

Mono的發展逐步轉移到移動開發上。

相關文章
相關標籤/搜索