推荐.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。
posted @ 2023-11-13 22:23  初久的私房菜  阅读(9073)  评论(0编辑  收藏  举报
作者:初久的私房菜
好好学习,天天向上
返回顶部小火箭
好友榜:
如果愿意,把你的博客地址放这里
张弛:https://blog.zhangchi.fun/