這是成為.NET工程師的逐步指南,並鏈接到相關的學習資源。
如果您想了解有關.NET技術的更多信息,請務必訂閱我的新聞通訊。
如果您發現此存儲庫有幫助,請考慮在Patreon上支持我:

該路線圖旨在使您了解景觀。如果您需要澄清接下來要學習的內容,而不是鼓勵您選擇炒作和時尚,則路線圖將指導您。如果您對為什麼一種工具更適合某些情況比另一種情況更適合某些工具,並記住,炒作和時尚有時只意味著最適合這份工作,這將有所幫助。
如果您願意或正在使用此項目學習或啟動解決方案,請給它一顆星。謝謝!
請注意,根據資歷,這意味著:
?大三:基本概念
? Medior :高級概念
?高級:專家概念

下載PDF版本。
在下面,您可以在每個初級.NET開發人員需要知道的每個初級.NET開發人員中找到一個裸露的版本,其中包括PDF版本中的學習材料和可單擊。

下載PDF版本。
在進行細節之前,您需要對.NET生態系統有深入的了解。這是您應該了解的一些:
在本節中,我們將查看主.NET Runtimes。我們認為.NET運行時是實現.NET的ECMA-335標準的任何事物。
.NET Framework是用於在Windows上構建和運行應用程序的軟件開發框架。 .NET框架由通用語言運行時(CLR),.NET框架類庫和應用程序工作負載(WPF,Windows表單和ASP.NET)組成。 CLR是運行代碼,JIT,DO垃圾集合(C#,VB.NET,F#)等的共享基礎結構的一部分。 CLR管理的代碼稱為託管代碼。代碼被編譯成通用中間語言(CIL),並存儲在程序集中(帶有.EXE或.dll擴展名)。當應用程序運行時,CLR會採用一個程序集,並使用正式的編譯器(JIT)將機器代碼轉換為可以在特定計算機體系結構上運行的代碼。
您可以將其用於台式機和Web開發,但它僅限於Windows開發,並且已預裝在Windows上。
.NET Core是.NET生態系統中的運行時間之一。它於2016年發布。它是開源的。它不代表.NET框架的新版本,也不會替換它。它是一個完全獨立的版本,旨在允許跨平台功能進行應用程序開發。 .NET核心由運行CLR和庫的應用程序主機(dotnet.exe)組成。它具有通用的語言運行時(CORECLR)和.NET核心類庫。它支持不同的應用程序工作負載,例如ASP.NET Core(MVC和API),控制台應用程序和UWP(當前)。
.NET Core可以在不同的平台上運行:Windows客戶端,服務器,IoT,Linux,Ubuntu,FreeBSD,Tizen和Mac OSX,並且可以並排安裝每個機器或用戶不同版本的不同版本。
.NET 5於2020年11月發布,目的是統一台式機,Web,Cloud,Mobile,Gaming,Gaming,IoT和AI應用程序的開發。較早的設置目標是生產一個.NET運行時和框架,跨平台,集成了.NET Core,.NET Framework,Xamarin和Mono的最佳功能。但是,由於全球健康大流行,該統一被推遲到.NET 6。 .NET 5是.NET Core,Mono,Xamarin和Future .NET實現的共享代碼基礎。此外,更新了哪個版本的.NET定位版本的目標框架名稱(TFM),因此我們現在擁有Net5.0。這是針對任何地方運行的代碼。它結合併替換了NetCoreApp和NetStandard名稱以及代表.NET 5的OS特定口味的Net5.0窗口,其中包括Net5.0加OS特異性綁定。
.NET 9是.NET生態系統中的最新運行時。它於2024年11月發布。它統一了桌面,Web,Cloud,Mobile,Gaming,Iot和AI應用程序的開發。 .NET 9由運行CLR和庫的應用程序主機(dotnet.exe)組成。它具有通用的語言運行時(CORECLR)和.NET 8類庫。它還包括ASP.NET CORE 9 .NET 9的平台支持幾乎與Windows,MacOS和Linux的.NET Core 3.1相同。
.NET 9是標準術語支持釋放,在隨後的STS或LTS發布後六個月內支持。
.NET 8是長期支持(LTS) 。初始發布後三年支持這些發行版。
不同的運行時間使用不同的類庫,例如,.NET Framework使用.NET Framework類庫,而.NET Core包含其類庫以及其類庫中的Xamarin。這樣,在使用不同的API時,很難在不同的運行時間之間共享代碼。 Microsoft的解決方案是2016年發布的.NET標準庫。它代表了一組(正式的)規格,其中說明您可以使用哪些API,並且所有運行時間實現它。它是便攜式類庫(PCL)的演變。特定的運行時間實現了.NET標準的特定版本(實現特定API)。例如,.NET框架4.8.1實施.NET Standard 2.0和.NET 7實施.NET標準2.1(鏈接)。
要了解有關.NET生態系統的更多信息,請查看此博客文章。
Microsoft的.NET發佈時間表:

C#是Microsoft開發的一種編程語言。這是一種用於構建從桌面應用程序和遊戲(使用Unity)到基於雲的解決方案和Web服務的語言。在強烈支持面向對象的編程和豐富的庫的情況下,它旨在輕鬆有效。
最新版本是C#13 ,於2024年11月發布。
檢查完整的C#時間軸:

您需要了解不同的C#語言功能,例如:

但也要.NET庫和API :
資源:
掌握設計模式,乾淨的代碼和版本控制(例如git)使您能夠編寫在團隊環境中有效和壯成長的高效,可維護的代碼。這是成為編碼員和熟練的軟件工程師之間的區別。
在這裡,您需要知道不同的原則,例如:
堅實的原則:
但是也:
資源:
它是Microsoft開發的跨平台,高性能框架,用於構建Web應用程序,API和微服務。您還可以在Windows,Linux或MacOS上運行應用程序。它通過內置依賴注入和健壯的配置系統等功能進行了設計,可為靈活性和可伸縮性設計。
在這裡,您還需要了解網絡開發基礎知識,例如:
資源:
如果要在.NET中構建UIS,則需要這些框架。 Razor是用於創建動態HTML的模板引擎,而Blazor則將其提高一個檔次,讓您使用C#而不是JavaScript構建交互式Web UIS。 MAUI是用於構建跨平台移動應用程序的Xamarin繼任者。 Windows演示基金會(WPF)是一個UI框架,可創建桌面客戶端應用程序。 UNO平台是一個開源跨平台圖形用戶界面,允許Winui和Universal Windows平台(UWP)基於iOS,MACOS,Linux,Android和WebAssembly運行。
資源:
良好的數據庫設計可確保有效的數據存儲和快速檢索,從而使您的應用程序運行更順暢,並且比例更容易。 SQL是數據庫交互的首選語言,它使您有能力查詢,更新和管理您非常精心設計的數據。
在這裡,您需要知道:
資源:
對象關聯映射(ORM)就像您面向對象的C#代碼和關係數據庫之間的翻譯器一樣,消除了為基本CRUD操作編寫SQL查詢的繁瑣任務。使用ORM框架(例如實體框架),您可以將數據作為代碼中的對像操縱,從而使其更可讀和可維護。這加快了開發,最大程度地減少錯誤,並讓您專注於復雜的業務邏輯,而不是使用數據庫語法搏鬥。
對於實體框架,您需要知道以下內容:
資源:
緩存就像您的應用程序的個人短期內存一樣,存儲經常訪問的數據,因此可以快速檢索它而無需訪問數據庫。通過減少數據庫負載並加速數據訪問,緩存為您的應用程序提供了滿足用戶對響應能力和可用性需求所需的競爭優勢。
資源:
記錄捕獲運行時信息,錯誤和其他關鍵數據,這些數據可以幫助您快速識別和解決問題,從而使您的應用程序更可靠和安全。諸如NLOG或Serilog之類的記錄框架將無縫集成到.NET中,為您提供了一個實時的診斷工具,即可監視應用程序健康,解決問題的問題,甚至為未來開發提供見解。
資源:
在.NET中,我們有三種類型的通信:實時通信,同步和異步通信。實時通信技術(例如.NET生態系統中的SignalR),通過保持服務器和客戶端之間的恆定連接來啟用這些功能。同步通信主要是通過使用HTTP客戶端來完成的,而異步通信是通過不同的消息傳遞和基於事件的框架和庫來完成的。消息傳遞系統在系統的不同部分之間充當中間人,允許它們進行通信而無需直接連接。另一側的活動處理程序用於處理單個應用程序中的事件。它們促進了出版商 - 填充物模型,該模型可以在應用程序中提出其他零件可以反應的事件。
資源:
這些服務在後台運行任務,釋放您的應用程序以關注用戶交互。無論是數據處理,自動化電子郵件還是定期清理,背景服務都確保這些任務不會減慢或中斷用戶體驗。
資源:
單位測試專注於代碼的孤立片段,集成測試確保不同的部件效果很好,並且端到端測試驗證了應用程序中的整個用戶旅程。它們一起形成安全網,儘早捕獲錯誤,簡化調試,並使您的代碼庫可靠且可維護。
在這裡您需要知道:
資源:
這些工具為您的應用程序的性能,用戶行為和錯誤率提供了實時見解,使您能夠在積極地升級為成熟問題之前解決問題。
監視著眼於服務和系統的健康和可用性,通常會觸發預定義條件的警報。
遙測收集,過程和傳輸來自系統的數據,從而對模式,趨勢和異常進行分析。
資源:
容器解決方案將您的.NET應用程序,庫和運行時封裝到孤立的容器中。這使得在多個開發和生產環境之間保持一致性,從而解決依賴性問題。借助分層文件系統之類的功能,您可以輕鬆地管理ASP.NET,.NET CORE或其他.NET服務的容器圖像,從而優化構建時間和資源利用率。
資源:
雲提供商為抽象基礎架構提供了一層API,並根據安全性和計費邊界提供了API。雲在數據中心的服務器上運行,但是抽象巧妙地使與單個“平台”或大型應用程序進行交互的外觀。快速提供,配置和使用雲提供商的資源的能力是現代Devops巨大成功和復雜性的關鍵。
市場上最受歡迎的雲提供商是AWS和Azure以及Google Cloud 。
在這裡,您必須知道如何管理用戶和管理,網絡,虛擬服務器等。
資源:
CI/CD將建築物,測試和部署階段自動化為流線型,抗錯誤的管道。這意味著更快的發布,錯誤修復以及更多時間專注於功能開發。
在這裡,您需要知道如何:
資源:
一些有用的.NET庫。請注意,並非所有人都會使用所有庫,這主要取決於您從事的項目。
除此之外,您還需要知道以下內容:
表演在.NET應用中起著至關重要的作用。在這裡您需要知道:
這些工具可以幫助您識別和調試代碼中擁有的不同性能瓶頸。為此,您可以使用其他工具,例如:
除工具外,您還應意識到.net的不同性能最佳實踐:
緩存(MEM內存中緩存或REDIS)
數據庫優化(優化查詢,正確索引,連接池)
異步編程(卸載所有CPU廣泛或I/O綁定的操作到DB,文件系統,Ext。Systems)
明智地使用實體框架(使用急切的加載,預測和諸如編譯查詢之類的優化)
內存管理(使用值類型,並對大對像圖保持謹慎。使用Dispose模式與DB連接或流。避免拳擊/拆箱。使用StringBuilder代替字符串,而不是字符串,以進行大量串聯。)
HTTP緩存(使用ETAGS,最後修飾的標頭)
最小化往返(減少HTTP請求和數據庫往返的數量)
內容輸送網絡(CDN) (卸載靜態資產(CSS,JavaScript,圖像)到CDN,以更快地交付給用戶)
壓縮(啟用HTTP響應的GZIP或BROTLI壓縮以減少數據傳輸尺寸)
記錄和追踪(避免生產過多的登錄。使用微服務跨度的分佈式跟踪。)
並行和並發(使用並行類或任務並行庫(TPL)使用並行性和多線程進行CPU結合任務)
資源優化(優化網絡的圖像和資產以減少加載時間)
SSL上的HTTP2 (現在就頁面內容做出明智的決定)
測量和監視性能(使用vs診斷工具,應用程序見解或基準標記)
用戶跨度<>而不是集合(跨度可以代表內存的連續部分;這意味著我們可以使用它們在數組上操作)
安全在應用程序開發中起著至關重要的作用。 .NET世界中安全性最關鍵的方面是:
身份驗證和授權概念:
加密和數據保護概念:
如果您認為路線圖可以得到改善,請打開一個帶有任何更新的公關並提交任何問題。另外,我將繼續改進這一點,因此您也應該飾演此存儲庫。
MilanMilanović博士-3MD的CTO和用於開發人員技術的Microsoft MVP。