原文地址:.NET技术栈和生态系统简介 - 编码者
.NET生态系统
.NET生态系统是围绕.NET平台构建的一个强大而多样化的框架、工具、库和技术集合。它为开发各种类型的应用程序提供了广泛的选择,包括Web应用程序、桌面应用程序、移动应用程序、基于云的解决方案等。以下是.NET生态系统的一些关键组件。
.NET Core
.NET Core是一个跨平台的开源框架,用于构建现代化的应用程序。它提供了一个模块化和轻量级的运行时环境,支持多个操作系统,包括Windows、macOS和Linux。.NET Core为Web、云和物联网应用程序提供了高性能和可扩展的解决方案。
.NET Core SDK:https://dotnet.microsoft.com/en-us/download ↗
ASP.NET Core
ASP.NET Core是一个跨平台、高性能、开源的框架,用于构建现代化、云端化、联网的应用程序。
使用ASP.NET Core,您可以:
- 构建Web应用程序、服务、物联网(IoT)应用程序和移动后端。
- 在Windows、macOS和Linux上使用您喜爱的开发工具。
- 在云端或本地部署。
- .NET Core上运行。
ASP.NET 4.x来创建Web应用程序。ASP.NET Core是ASP.NET 4.x的重新设计,包括架构上的变化,使得框架更加精简、模块化。
ASP.NET Core提供以下优势:
- 统一的构建Web UI和Web API的方法。
- 面向可测试性的架构设计。
- Razor Pages使得编写以页面为重点的场景更加简单高效。
- Blazor允许您在浏览器中使用C#,与JavaScript并存。使用.NET编写服务器端和客户端的应用逻辑。
- 可以在Windows、macOS和Linux上进行开发和运行。
- 开源和社区驱动。
- 集成现代化的客户端框架和开发工作流程。
- 支持使用gRPC托管远程过程调用(RPC)服务。
- 云端就绪的基于环境的配置系统。
- 内置依赖注入。
- 轻量级、高性能、模块化的HTTP请求处理管道。
- 可以在以下环境中进行托管:
- Kestrel
- IIS
- HTTP.sys
- Nginx
- Apache
- Docker
- 并行版本管理。
- 简化现代Web开发的工具。
关于如何使用asp.net core设计应用程序,可参见官方网站: ASP.NET Core application architecture guidance
EF Core
Entity Framework Core(EF Core)是一个开源的对象关系映射(ORM)框架。它通过使用.NET对象来简化对数据库的访问。
EF Core提供丰富的功能,包括LINQ(Language Integrated Query)支持、自动更改跟踪和迁移。
C#
C#是一个跨平台通用目的语言,可使开发人员在编写高性能代码时提高生产力。
作为最受欢迎的.NET语言,C#拥有数百万开发人员。C#在生态系统中得到广泛支持,并适用于所有.NET工作负载。基于面向对象的原则,它还吸收了其他范式的许多特性,尤其是函数式编程。低级别特性支持高效率场景,而无需编写不安全的代码。
大部分.NET运行时和库都是用C#编写的,C#的进步通常会惠及所有.NET开发人员。
NuGet
NuGet是.NET生态系统的软件包管理器。它允许开发人员轻松发现、安装和管理项目中的库和依赖项。NuGet托管了一个庞大的软件包仓库,可以轻松集成到.NET应用程序中,提高生产力和可重用性。
您还可以为内部.NET库管理托管自己的NuGet服务器。
Blazor
Blazor是一个开源的Web框架,用于使用.NET和C#构建交互式的客户端Web用户界面。
它允许开发人员在不需要JavaScript的情况下完全使用C#或F#编写Web应用程序。Blazor支持客户端和服务器端渲染,提供丰富且响应迅速的用户体验。
Blazor是一个用于使用.NET构建交互式客户端Web用户界面的框架:
- 使用C#而不是JavaScript创建丰富的交互式用户界面。
- 共享以.NET编写的服务器端和客户端应用程序逻辑。
- 将用户界面呈现为HTML和CSS,以支持广泛的浏览器,包括移动浏览器。
- 与现代的托管平台(如Docker)集成。
- 使用.NET和Blazor构建混合桌面和移动应用程序。
在客户端Web开发中使用.NET提供以下优势:
- 使用C#而不是JavaScript编写代码。
- 利用现有的.NET库生态系统。
- 在服务器端和客户端之间共享应用程序逻辑。
- 获得.NET的性能、可靠性和安全性。
- 在Windows、Linux或macOS上使用开发环境(如Visual Studio或Visual Studio Code)保持高效。
- 构建在稳定、功能丰富且易于使用的共同语言、框架和工具基础上。
SignalR
是一个开源的实时通信库,用于在.NET生态系统中构建Web应用程序。
它使开发人员能够向其应用程序添加实时功能,例如聊天、通知或实时更新。SignalR抽象了底层通信协议,并提供了一个简单的API,用于在客户端和服务器之间建立双向通信。
它支持多种传输机制,包括WebSockets、服务器推送事件(Server-Sent Events)和长轮询(Long Polling),确保广泛的浏览器兼容性。SignalR被广泛用于构建协作和交互式的Web应用程序。
.NET MAUI
.NET Multi-platform App UI(.NET MAUI)是一个跨平台的框架,用于使用C#和XAML创建原生移动和桌面应用程序。它将Android、iOS、macOS和Windows的API统一到一个API中。
使用.NET MAUI,您可以开发能够在Android、iOS、macOS和Windows上运行的应用程序,而无需编写多个平台特定的代码。您可以通过共享的代码库构建应用程序,从而提高开发效率并减少维护成本。
.NET MAUI是基于Xamarin.Forms的演进版本,它提供了更多的功能和改进,以提供更好的开发体验和更高的性能。.NET 6的新功能,并提供了更广泛的平台支持。
.NET MAUI的主要特点包括:
- 单一代码库:使用共享的C#和XAML代码,可以在多个平台上构建应用程序。
- 原生体验:应用程序使用原生控件和UI渲染,提供与平台一致的外观和性能。
- 统一API:将Android、iOS、macOS和Windows的API统一为一个API,简化了跨平台开发。
- 灵活布局:支持灵活的布局和自适应设计,以适应不同尺寸的屏幕和设备。
- 设备功能访问:可以直接访问设备的功能,如相机、传感器和位置服务。
- 强大的生态系统:利用.NET生态系统的丰富库和工具,以便进行开发和集成。
.NET MAUI是未来.NET跨平台应用程序开发的重要技术,可以帮助开发人员更高效地构建跨平台应用程序,并提供一致的用户体验。
Xamarin
Xamarin是一个用于构建跨平台移动应用程序的开源框架。它允许开发人员编写共享的C#代码库,并针对包括iOS、Android和Windows在内的多个平台进行开发。
.NET MAUI是Xamarin.Forms的演进版本,使用最新的技术构建在Windows、macOS、iOS和Android上的原生应用程序,并将它们抽象成一个建立在.NET上的通用框架。
ML.NET
ML.NET是一个针对.NET平台的开源机器学习框架。它使开发人员能够使用C#或F#将机器学习模型集成到他们的应用程序中。ML.NET提供了一个简单且可扩展的API,用于进行分类、回归、聚类和推荐系统等任务。
Visual Studio
Visual Studio 是一个集成开发环境(IDE),用于使用多种编程语言构建应用程序,包括C#,F#和Visual Basic。它提供了一套全面的工具、调试功能、项目管理特性以及与其他Microsoft产品的集成,使其成为.NET开发的流行选择。
请注意,社区版本是免费的,其他版本是收费的!
Visual Studio Code
Visual Studio Code 是一个轻量而强大的源代码编辑器,可在桌面上运行,并可用于Windows,macOS和Linux。
它内置支持JavaScript,TypeScript和Node.js,并拥有丰富的扩展生态系统,可供其他语言和运行时使用(如C++,C#,Java,Python,PHP,Go,.NET)。
.NET 社区和第三方库
.NET生态系统受益于活跃的社区,这个社区为无数的库、框架和工具的开发做出了贡献。这些由社区驱动和第三方开发的库(本文并未包含所有)扩展了.NET的功能,并为开发人员在他们的项目中提供了额外的能力。
Dapper
Dapper - a simple object mapper for .NET | Dapper
Dapper是一个轻量级的微型ORM(对象关系映射)工具,提供快速高效的数据库访问。它专注于简单性和性能,并以其速度快和低开销而闻名。Dapper允许开发人员编写原始的SQL查询,并将结果映射到强类型对象上。它经常在性能关键的场景或需要精细控制SQL查询的情况下使用。
NUnit
NUnit是一个用于.NET应用程序的单元测试框架。它提供了简单而表达力强的语法来编写测试,并提供了广泛的断言和测试运行器。
NUnit支持并行测试执行、测试夹具和参数化测试,使其成为.NET生态系统中常用的单元测试选择。
Serilog
Serilog — simple .NET logging with fully-structured events
Serilog是一个灵活且可扩展的.NET应用程序日志记录框架。它允许开发人员捕获结构化的日志事件并将其路由到各种输出目标,例如控制台、文件或外部服务。
Serilog丰富的配置选项和与流行日志平台的集成使其成为管理应用程序日志的强大工具。
AutoMapper
AutoMapper是一个用于在.NET应用程序中进行对象到对象映射的库。它通过自动映射具有相似名称和类型的属性,简化了在不同对象模型之间传输数据的过程。
AutoMapper减少了映射所需的样板代码量,提高了代码的可维护性。
Hangfire
Hangfire – Background jobs and workers for .NET and .NET Core
Hangfire是一个用于.NET应用程序的后台作业处理库。它使开发人员能够将耗时任务转移到后台工作进程中,提高应用程序的响应性。
ASP.NET Core应用程序中执行后台处理的简单方法,无需Windows服务或单独的进程。支持持久化存储,并且对商业用途开放和免费。
Hangfire支持不同类型的作业,如即时执行、延迟执行和定时执行,并提供仪表板用于监视和管理后台作业。
MassTransit
MassTransit是一个用于在.NET中构建基于消息的分布式应用程序的框架。它简化了可靠和可扩展的消息传递模式的实现,例如发布-订阅、请求-响应和事件驱动架构。
MassTransit支持多个消息代理,包括RabbitMQ和Azure Service Bus,并提供广泛的消息路由、序列化和容错功能。
Duende IdentityServer
Duende IdentityServer 是一个中间件,它将符合规范的 OpenID Connect 和 OAuth 2.0 端点添加到任意 ASP.NET Core 主机。
通常情况下,您会构建(或重用)一个包含登录和注销页面的应用程序(根据您的需求可能还包括同意页面),然后将IdentityServer中间件添加到该应用程序中。该中间件会向应用程序添加必要的协议头,以便客户端可以使用这些标准协议与其通信。
请注意:对于开发、测试和个人项目,它是免费的,商业使用需要付费。
Dapr
Dapr - Distributed Application Runtime
Dapr是分布式应用程序运行时(Distributed Application Runtime),提供了简化微服务连接的API。无论您的通信模式是服务之间的调用还是发布/订阅消息,Dapr都可以帮助您编写具有弹性和安全性的微服务。
Dapr为您提供了API,将常见的分布式应用程序开发中的复杂性抽象出来。这些API构建块可以根据需要进行利用,您可以使用一个、几个或全部来加快应用程序的开发并按时交付解决方案。
总结
.NET开源技术栈提供了广泛的框架和工具,使开发人员能够构建现代化且可扩展的应用程序。
在本文中,我们介绍了由Microsoft构建的.NET生态系统以及.NET生态系统中一些常用的框架,ASP.NET Core、Entity Framework Core、Dapper、NUnit、Serilog、AutoMapper、Hangfire、MassTransit等等。
了解这些框架及其特性将帮助您充分发挥.NET平台的威力,高效地构建高质量的应用程序。