什麼是 .NET?

已完成

當有人使用 .NET 一詞時,其表達的意義在很大程度上取決於上下文。 在此單元中,您會將 .NET 當成生態系統來看待,以進行了解。 換句話說,.NET 是許多組件與人員的集合,而這些組件與人員可共同建立一個強大的環境來建置應用程式。

.NET 是一種應用程式開發的生態系統

「生態系統」一詞描述應用程式開發環境,以及圍繞該開發環境之社群的多個面向。 這些面向合併在一起,即可形成吸引人投入了解 .NET 及建置 .NET 應用程式的理由。

使用 .NET 語言與編譯器以在 .NET 執行階段執行應用程式

軟體開發人員使用 C# 和 F# 等 .NET 語言來撰寫原始程式碼。 其撰寫的每行程式碼都表示當程式正在執行時,電腦應執行的指示或命令。

軟體開發人員必須先編譯程式碼之後,才能加以執行。 [.NET 編譯器] 是一種程式,可將 (任何可支援程式設計語言的) 原始程式碼轉換成稱為 [中繼語言] (IL) 的可攜式語言。 .NET 編譯器會將 IL 程式碼儲存到稱為「.NET 組件」的檔案中。 透過將程式碼編譯成中繼格式,無論執行程式碼的位置為何 (在 Windows 或 Linux 上,或者在 32 位元或 64 位元電腦硬體上),都可以使用相同的程式碼基底。

.NET 執行階段是一種適用於已編譯 .NET 組件的執行環境。 換句話說,.NET 執行階段是應用程式在主機作業系統上執行時,一同執行及管理應用程式的項目。 我們很快就會討論 .NET 執行階段所執行的工作。

幸運的是,作為剛開始使用 .NET 的軟體開發人員,您不需要深入了解這些機制的運作方式。 透過體驗,您將能更充分地了解及欣賞 .NET 語言、編譯器與執行階段的基礎功能。

提示

有時,人們會將 C# 程式設計語言以為 .NET。 不過,C# 與 .NET 並不相同。 C# 是程式設計語言語法。 作為語法的一部分,您可參考和呼叫 .NET 程式碼程式庫或組件中定義的方法。 接著,您會使用與 .NET SDK 一同安裝的 C# 編譯器,從 C# 程式碼建立 .NET 組件。 .NET 執行階段接著會執行 .NET 組件。 隨著您深入了解 .NET 與 C#,您會明白這些差異是重要的概念。

使用 .NET 應用程式架構與程式庫來利用預先建置的功能

所有軟體都會分層建置,這表示軟體會在電腦上的不同抽象層執行:

  • 在最低層級上,軟體會與您的電腦硬體直接通訊。 其會控制主機板、處理器、記憶體與硬碟上的資料流程。
  • 在下一個層級上,軟體可讓終端使用者透過作業系統提供指示。
  • 在下一個層級上,.NET 之類的軟體會為您提供開發及執行應用程式的方式。
  • 在下一個層級上,應用程式架構與功能程式庫可讓您以投入比舊的開發方法更少的心力,快速建置豐富的應用程式。

程式碼程式庫會將特定用途的功能封裝成單一組件。 針對 .NET,有數以千計的程式庫可供使用。 這些程式庫可以是第一方或第三方,而且可以是商業或開放原始碼。 程式庫會為您提供可在應用程式中使用的各種功能。 您只會參考那些組件,並呼叫所需的方法。 如此一來,身為開發人員,您就能根據其他軟體開發人員的工作進行建置。 您可以節省時間與精力,因為您不需自行建置並維護每個功能。

應用程式架構會合併數個相關的程式庫,以及入門專案、檔案範本、程式碼產生器與其他工具。 您可以使用這些資源,基於特定用途來建置整個應用程式。 這些應用程式架構稱為「應用程式模型」。 例如,.NET 應用程式架構可供熱門應用程式模型使用,如網頁程式開發、桌面與行動裝置開發,以及遊戲開發。

您可以直接安裝 .NET SDK,或透過安裝 Visual Studio 2022 進行安裝。 .NET SDK 會預先安裝一組全方位的程式庫與應用程式架構,稱為「基底類別庫」。 不論您想要建置的平台或應用程式模型為何,都可以在程式中使用此程式碼程式庫。

針對其他第三方程式庫,開發人員可以使用 NuGet 之類的套件管理員,從像是 NuGet 資源庫的套件存放庫尋找並整合程式碼程式庫。

主要的應用程式模型為何?

您可能會好奇哪些架構支援哪些應用程式模型。 使用下表,將應用程式模型對應到 .NET 架構。

應用程式模型 架構 備註
Web ASP.NET Core 用來建置伺服器端邏輯的架構。
Web ASP.NET Core MVC 用來建置網頁或 Web API 伺服器端邏輯的架構。
Web ASP.NET Core Razor Pages 用來建置伺服器所產生 HTML 的架構。
網頁用戶端 Blazor Blazor 是 ASP.NET Core 的一部分。 其兩種模式允許透過通訊端操作文件物件模型 (DOM),以作為執行伺服器端程式碼的通訊工具,或實作 WebAssembly 以在瀏覽器上執行編譯過的 C#。
Desktop (電腦) 適用于 Mac 的 .NET 允許 .NET 開發人員使用原生 UI 和 API 存取來建置 Mac 裝置的應用程式。
Desktop (電腦) WinForms 建置「戰艦灰」Windows 樣式應用程式。
Desktop (電腦) Windows Presentation Foundation (WPF) 一種架構,可用於建置符合不同板型規格的動態傳統型應用程式。 WPF 讓表單元素能夠透過豐富動畫程式庫的協助,來執行移動、淡出、滑動與其他效果。
行動 適用于 Android 的 .NET 允許 .NET 開發人員使用原生 UI 和 API 存取來建置 Android 裝置的應用程式。
行動 適用于 iOS 的 .NET 允許 .NET 開發人員使用原生 UI 和 API 存取來建置適用于 iOS 和 iPadOS 的應用程式。
多平臺應用程式 UI .NET MAUI 從具有原生 UI 的單一共用程式碼基底,建置適用于 iOS、Android、Mac 和 Windows 的應用程式,以及存取原生 API 的頂級方式。

.NET 也支援熱門的協力廠商與開放原始碼遊戲開發環境與引擎,例如 Unity。

使用 .NET 工具建置 .NET 應用程式

軟體開發人員依賴工具來撰寫程式碼、新增對程式碼程式庫的參考、編譯程式碼,以及對程式碼進行偵錯。 此節說明數個您將用來建置 .NET 應用程式的 .NET 工具。

Visual Studio 2022 是 Microsoft 旗艦開發環境。 數百萬名開發人員加以使用來建置 .NET 應用程式。 圖形化使用者介面 (包含功能表、視窗、視覺化設計工具、對話方塊與精靈) 會透過應用程式開發程序來引導開發人員。 Visual Studio 2022 提供三種版本:Community、Professional 及 Enterprise。 每個版本都包含不同的工具,並針對不同的用途進行授權。

Visual Studio Code 是 Microsoft 旗艦程式碼編輯器,支援多種程式設計語言,且支援 Windows、Mac 和 Linux。 C# 開發套件延伸模組為 Visual Studio Code 帶來了改良的編輯器優先 C# 開發,並透過支援方案總管、專案系統、測試增強功能和總管、AI 輔助的程式開發,以及功能強大的 C# 語言功能 (例如程式碼瀏覽、重構、語意感知等功能) 增強使用 .NET 專案的體驗。

偏好命令列工作流程的開發人員可能會使用 Visual Studio Code (全球最熱門的程式碼編輯器) 與 .NET 命令列介面 (也稱為 .NET CLI) 的組合。

此外,您也可以針對許多進階的 .NET 使用案例,從為數眾多的第一方與第三方工具中選擇。 選項包括程式碼分析工具、單元測試執行器與程式碼涵蓋範圍分析器。

您也可以尋找適用於其他案例的其他 .NET 工具。 例如,稍後在此課程模組中,您將使用 Try .NET。 您將使用這個以瀏覽器為基礎的介面來撰寫簡單的應用程式,以協助您了解 C# 程式設計語言。

在文件與教學課程中尋找解決方案與答案

Microsoft 會主動提供一組豐富的文件、教學課程與訓練。 您將會以熱門形式找到學習教材,以協助您了解學習程序中的每個步驟。

下表提供一些建議您加入書籤並返回查看的絕佳資源。

資源 用途
Microsoft Learn 提供快速入門教學課程與明確的參考文件。
模式和實務 協助開發人員與軟體架構設計人員尋找常見應用程式開發需求的解決方案。 資源通常會超越撰寫程式碼的低階詳細資料,並深入了解如何選擇啟用看似可無限擴充架構的產品與服務。
.NET 影片 提供 .NET 小組所提供的影片教學課程。 這些影片可引導開發人員了解常見的使用案例。
開始使用 C# 提供實作教室,可協助您透過合併指示、練習、媒體、知識檢定及追蹤進度的方式來增進技能。

與 .NET 社群互動,以學習及分享解決方案

.NET 生態系統已超越語言、程式庫與工具的範圍,並延伸到人員。 您可以從社群中學習並參與社群。

  • 學習:.NET 社群成員會主持即時線上活動並親自與會。 成員會建置開放原始碼的軟體、參與問與答論壇,以及錄製影片教學課程。 他們也會撰寫書籍和部落格文章,當您不確定接下來要做什麼時,可協助您學習並理解。
  • 參與:.NET 是 GitHub \(英文\) 上的開放原始碼。 該存放庫中的專案由 .NET Foundation 所管理。 這個獨立組織致力於圍繞著 .NET 開發平台,開發受信任、有利於商業營運且開放原始碼的生態系統。 在此存放庫中,您可以分享您的獨特觀點與意見,以協助其他人學習。

.NET 生態系統與其他生態系統相較之下如何?

若您已熟悉軟體開發世界,則您可能會好奇相較於其他生態系統,.NET 生態系統有何優點。 坦白說,其他生態系統也能對此單元到目前為止所做的部分或許多陳述,做出類似的主張。

但是,.NET 的最大特色之一是其持續進行的開發和支援不只來自主要技術領導者,還會來自社群。 .NET 的重要部分是透過開放原始碼工具所開發的。 其歡迎且鼓勵社群的意見與貢獻。 事實上,87% 的參與者都來自 Microsoft 外部。 根據社群意見,Microsoft 會透過功能增強、錯誤 (Bug) 修正與效能改善,積極推動平台前進。 已接受超過 100,000 次來自社群的提取要求。

此外,.NET 生態系統具備動力:

  • .NET 開發人員數目超過 500 萬!
  • Stack Overflow 的投票結果持續顯示 .NET Core 及 .NET 是最受喜愛的架構。
  • 學生喜愛 .NET;身為 .NET 新手的開發人員,有 40% 是學生。
  • 適用於 .NET 與 ASP.NET 的 GitHub 存放庫,是前 30 個速度最快之開放原始碼軟體 (OSS) 專案的其中兩個。
  • GitHub 列出前五種程式設計語言中的 C#,語言會根據 2020 TIOBE 程式設計社群索引而增加。
  • 根據 TechEmpower 效能評定,.NET 具備全球最快速的 Web 架構,這是一組獨立且開放原始碼的 Web 效能評定,其會權衡數十種語言與應用程式架構。

.NET 簡史

原始的 .NET Framework 最初是在 2002 年初發行的。 從那時起,隨之而來的是許多更新與更多功能。 在經歷了多年的增強及新功能後,原始的 .NET Framework 也已大幅成長 (特別是主要程式碼程式庫)。

在 2002 年之後,Microsoft 已致力於建立具有跨平台相容性的 .NET 版本。 目標是讓開發人員能夠撰寫一個程式碼基底,並跨 macOS、Linux 與 Windows 作業系統加以使用。

透過這些努力,已於 2014 年左右推出 .NET Core。 Microsoft 仍維護原始的 .NET Framework,但將新功能和改善項目保留給 .NET Core。 後來從名稱中刪除了 Core。 後續主要版本為 .NET 5、.NET 6、.NET 7、.NET 8,依此類推。 版本通常會在每年 11 月發行。

.NET 歷程為何值得一提? 因為您可能會找到以原始 .NET Framework 為目標的部落格文章、影片與原始程式碼。 在某些情況下,指示或程式碼仍然有效,但在其他情況下,您可能需要進行調整,才能符合新的 .NET。