推荐.Net 必须学习的几个库
实体框架(Entity Framework)
实体框架(EF)是微软为 .NET 应用程序提供的主要数据访问技术,它提供了一个对象关系映射器(ORM),使得 .NET 开发者可以使用 .NET 对象来操作数据库。EF 通过将复杂的 SQL 查询抽象为 .NET 对象集合来简化数据库操作。EF 的关键功能包括:
- 通过配置将 .NET 类映射到数据库表。
- 自动生成用于创建、查询、更新和删除数据的 SQL。
- 更改跟踪:EF 跟踪对实体对象所做的更改并将这些更改持久化到数据库。
- 延迟加载:在访问时,相关实体可以从数据库自动加载。
- 缓存:缓存查询结果以优化性能。
- 迁移:允许创建和部署增量数据库更改。
对于需要在关系数据库中持久化数据的 .NET 应用程序,实体框架是用于抽象数据访问的首选库。通过几个主要版本的改进和优化,大多数 .NET 开发者都会在某些时候使用 EF。
.NET 日志框架
日志记录对于在应用程序运行时输出诊断信息至关重要。.NET 提供了多个日志框架,简化了添加日志记录功能。两个最受欢迎的选项是:
- Serilog:.NET 社区更喜欢的第三方框架。非常灵活,创建结构化日志数据,并与许多接收器(文件、数据库等)集成。具有干净的流畅 API。
- Microsoft.Extensions.Logging:Microsoft 提供的内置日志库,包含在 ASP.NET Core 中。通过 DI 容器与许多 .NET 类集成。支持日志范围。比 Serilog 更基本,但在 ASP.NET Core应用程序中更容易直接使用。
除了 NLog 和 log4net 等其他流行的日志库在 .NET 领域也被广泛使用外,Serilog 和 Microsoft.Extensions.Logging 是大多数场景的不错选择。
Newtonsoft Json.NET
JSON 是用于 Web API 和其他集成的普遍数据交换格式。Json.NET 是用于在 .NET 代码中处理 JSON 的领先库,提供以下关键特性:
- 将对象序列化/反序列化为/从 JSON。
- 用于解析 JSON 的 LINQ 风格查询 API。
- 处理常见 JSON 情况,如缺失数据和缓存。
- 用于控制序列化的丰富配置选项。
- 高性能。
尽管微软为 JSON 处理提供了 System.Text.Json,但许多开发者仍然更喜欢 Json.NET,因为它的成熟和功能集。Json.NET 对于任何 API 开发都是必备工具。
xUnit
xUnit 是 .NET 开发者最喜欢的测试框架。它为针对 .NET 代码创建单元测试提供了流畅的 API。功能包括:
- 用于装饰测试方法的属性(Fact,Theory 等)。
- 用于验证逻辑的断言。
- 与 Moq 等模拟框架良好集成。
- 可扩展性以实现自定义断言。
- 并行执行测试以提高效率。
虽然还有其他测试框架如 NUnit 和 MSTest 也在使用,但 xUnit 通常是当前最受欢迎的选择。使用 xUnit 编写单元测试对于任何认真的 .NET 项目都是至关重要的。
AutoMapper
AutoMapper 对于具有分层架构的企业应用程序非常有用,因为它简化了在面向对象代码中的模型类型之间的转换,例如在业务逻辑中使用的域模型对象和 API 中使用的数据传输对象。AutoMapper 提供以下功能:
- 通过配置在不同对象类型之间映射。
- 处理嵌套对象转换。
- 将映射逻辑注入服务/存储库。
- 自动生成解析代码。
AutoMapper 节省了大量手动编写解析代码的时间。
FluentValidation
验证用户输入对于任何应用程序至关重要。FluentValidation 为 .NET 类使用流畅的接口和 lambda 表达式声明验证逻辑提供了一种简洁的方法。例如:
public class PersonValidator : AbstractValidator<Person> {
public PersonValidator() {
RuleFor(x => x.Name).NotEmpty();
RuleFor(x => x.Age).InclusiveBetween(0, 120);
}
}
其他功能包括:
- 自定义验证方法。
- 属性和对象级别验证。
- 支持异步/IObservable。
- 本地化。
- 可扩展性和可插拔性。
FluentValidation 将杂乱的验证代码抽象为清晰的格式,对于验证命令、请求 DTO、业务对象等非常有用。
Polly
Polly 是一个 .NET 弹性和瞬态故障处理库,允许开发者表达诸如重试、断路器、超时等策略。例如:
var policy = Policy.Handle<HttpResponseException>()
.Retry(3);
policy.Execute(() => CallHttpService());
关键特性:
- 用于弹性策略的流畅 API。
- 处理诸如网络问题和超时等错误。
- 可包装对不可靠服务的调用。
- 适用于实施弹性模式。
- 可插拔和可扩展的架构。
在分布式系统中,服务可能会随机失败,Polly 则易于实施弹性最佳实践,因此至关重要。
MediatR
MediatR 是一种实现 .NET 应用程序中中介器模式的流行库。它促进了关注点的清晰分离,提高了代码的可维护性和可测试性。主要特性包括:
- 将请求处理程序与其他代码解耦。
- 支持请求/响应和通知模式。
- 鼓励单一职责原则。
- 通过减少依赖来简化应用程序架构。
- 便于进行更容易的测试和重构。
对于希望使用最佳实践构建可扩展和可维护应用程序的开发人员,强烈推荐使用 MediatR。