.NET Framework 概觀

.NET Framework是支援建置和執行 Windows 應用程式和 Web 服務的技術。 .NET Framework的設計目的是要滿足下列目標:

  • 提供一致的物件導向程式設計環境,不論目的碼是在本機中儲存及執行、在本機執行但分散至網際網路或在遠端執行。

  • 提供下列程式碼執行環境:

    • 將軟體部署和版本控制衝突降至最低。

    • 加強程式碼安全執行,包括未知或非完全信任之協力廠商所建立的程式碼。

    • 可消除編寫指令碼或解譯環境效能問題。

  • 使開發人員在開發各類應用程式 (例如 Windows 架構應用程式和 Web 架構應用程式) 時享有一致的體驗。

  • 根據業界標準建置所有通訊,以確保以程式碼為基礎的程式碼.NET Framework與任何其他程式碼整合。

注意

.NET Framework會每月提供安全性和可靠性錯誤修正。 .NET Framework會繼續包含在 Windows 中,沒有計劃移除它。 您不需要移轉.NET Framework應用程式,但針對新的開發,請使用.NET 6 或更新版本

.NET Framework是由 Common Language Runtime (CLR) 和 .NET Framework 類別庫所組成。 Common Language Runtime 是.NET Framework的基礎。 請將執行階段視為在執行階段管理程式碼的代理程式,可提供記憶體管理、執行緒管理和遠端作業等核心服務,並同時強制執行嚴格的型別安全及其他形式的程式碼精確度,以提升安全性和穩定性。 事實上,程式碼管理的概念是此執行階段的基本原則。 針對執行階段所開發的程式碼稱為 Managed 程式碼,而不針對執行階段所開發的程式碼稱為 Unmanaged 程式碼。 類別庫是可重複使用之類型的完整物件導向集合,可讓您用來開發應用程式,範圍從傳統命令列或圖形化使用者介面 (GUI) 應用程式,以根據 ASP.NET 所提供的最新創新,例如Web Form和 XML Web 服務。

.NET Framework可由 Unmanaged 元件裝載,這些元件會將 Common Language Runtime 載入其進程,並起始 Managed 程式碼的執行,藉此建立軟體環境來利用 Managed 和 Unmanaged 功能。 .NET Framework不僅提供數個執行時間主機,也支援協力廠商執行時間主機的開發。

例如,ASP.NET 裝載執行階段以提供可擴充、伺服器端的 Managed 程式碼環境。 ASP.NET 直接與執行時間搭配運作,以啟用 ASP.NET 應用程式和 XML Web 服務,本文稍後會討論這兩者。

下圖顯示 Common Language Runtime 和類別庫與您的應用程式及整體系統的關係。 下圖也顯示 Managed 程式碼是如何在較大架構中運作的。

下圖也顯示受控碼是如何在較大的架構中運作。

下列各節詳細說明.NET Framework的主要功能。

Common Language Runtime 的功能

Common Language Runtime 負責管理記憶體、執行緒執行、程式碼執行、程式碼安全驗證、編譯 (Compilation) 和其他系統服務。 這些功能都內建到在 Common Language Runtime 上執行的 Managed 程式碼中。

就安全性而言,Managed 元件會根據若干因素而被授予不同程度的信任,這些因素包括元件的原始出處 (例如網際網路、企業網路或本機電腦)。 這表示即使是在相同作用中的應用程式中使用,Managed 元件可能可以也可能無法執行檔案存取作業、註冊存取作業或其他易受影響的功能。

Runtime 也會藉由實作嚴格的型別和程式碼驗證基礎架構,也就是一般型別系統 (CTS),強制執行程式碼的加強性。 CTS 確保所有 Managed 程式碼都能夠自我描述。 不同的 Microsoft 和協力廠商語言編譯器會產生符合 CTS 的 Managed 程式碼。 這表示 Managed 程式碼不但能夠使用其他 Managed 型別和執行個體,同時還能嚴格強制執行型別精確度和型別安全。

此外,Runtime 的 Managed 環境排除許多常見的軟體問題。 例如,Runtime 能夠自動處理物件配置,並管理對物件的參考,而且在不再用它們時加以釋放。 這種自動記憶體管理解決了兩個最常見的應用程式錯誤:記憶體流失和無效的記憶體參考。

Runtime 也提升開發人員的產能。 例如,程式設計人員可以用自己選擇的開發語言撰寫應用程式,但仍充分利用其他開發人員以其他語言所撰寫的執行階段、類別庫和元件。 選擇以執行階段為目標來開發編譯器的廠商都可作到這一點。 以 .NET Framework 為目標的語言編譯器可以將 .NET Framework 的功能提供給以該語言所撰寫的現有程式碼使用,大幅簡化現有應用程式的移轉程序。

Runtime 是為未來軟體所設計的,但它也支援目前和過去的軟體。 Managed 和 Unmanaged 程式碼的互通性 (Interoperability),讓開發人員繼續使用必要的 COM 元件和 DLL。

Runtime 是為增強效能所設計的。 雖然 Common Language Runtime 提供許多標準的執行階段服務,但未曾解譯 Managed 程式碼。 透過一項稱為 Just-In-Time (JIT) 編譯的功能,所有的 Managed 程式碼都可使用執行所在系統的原生機器語言執行。 同時,記憶體管理員移除分散的記憶體的可能性,增加記憶體參考位置,以進一步提高效能。

最後,執行階段可由高效能的伺服器端應用程式裝載,例如 Microsoft SQL Server 和 Internet Information Services (IIS)。 這個基礎架構讓您使用 Managed 程式碼撰寫商務邏輯的同時,仍能夠享受到由業界最佳、可支援執行階段主應用程式的企業伺服器所提供的超高效能。

.NET Framework 類別庫

.NET Framework 類別庫是與 Common Language Runtime 緊密整合的可重複使用型別的集合。 此類別庫為物件導向,能提供類型讓您撰寫自己的 Managed 程式碼從其衍生功能。 這不但使 .NET Framework 類型易於使用,也減少了學習 .NET Framework 新功能所需的時間。 此外,協力廠商元件也可以與 .NET Framework 中的類別完美整合。

例如,.NET Framework 集合類別會實作一組介面,以開發您自己的集合類別。 您的集合類別會與 .NET Framework 中的類別完美結合。

如同您預期來自物件導向的類別庫,.NET Framework類型可讓您完成一系列常見的程式設計工作,包括字串管理、資料收集、資料庫連線和檔案存取。 除了通用工作,類別庫還包括能夠支援各種特定開發案例的型別。 您可以使用.NET Framework來開發下列類型的應用程式和服務:

Windows Forms 類別是一組完整且可重複使用的類型,可大幅簡化 Windows GUI 的開發。 如果要撰寫 ASP.NET Web Form 應用程式,即可使用 Web Form 類別。

另請參閱