这是成为.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。