.Net开发中推荐的library

0 阅读3分钟
  • ①NLog或Log4net

最主流的日志记录库,以下是两者的比较:

对比项NLogLog4Net
流行程度
易用性
跨平台
日志性能
动态配置
输出目标
开源持续维护

github.com/NLog/NLog

  • ②Newtonsoft.Json

进行JSON序列化和反序列化操作。

比微软推出的System.Text.Json,功能更加丰富。

支持多种JSON格式,包括JSON转换、LINQ查询、动态类型处理、自定义序列化和反序列化规则等。

www.newtonsoft.com/json

  • ③FluentValidation

使用Lambda方式,对参数进行验证。

docs.fluentvalidation.net/

  • ④AutoMapper

是一个对象映射工具,用于简化不同类型对象之间的转换和映射。

例如在MVC中实现 DTO、Model、View之间的映射。

docs.automapper.org/

  • ⑤Dapper

一个轻量级的ORM库,支持原生SQL与模型对象混合写法(相当于Java系的MyBatis)

在实际项目中,考虑到性能和扩展性优先的原则,建议仅使用原生SQL的方式,而不要依赖对象映射的一时便捷。

因为是基于ADO.Net的封装,所以操作数据库更加便捷安全。

github.com/DapperLib/D…

  • ⑥IHttpClientFactory

IHttpClientFactory封装了HttpClient,避免发生SocketException异常

例如:每次发起http请求都new;在高并发时,连接来不及释放,socket被耗尽

using (var httpClient = new HttpClient())

虽然可以通过将其设置为static,但对于不同请求,需要设置不同的头信息等,就比较麻烦; 因此诞生了IHttpClientFactory

另外Flurl库同样是优秀的HTTP请求库,支持链式调用等;​作为开源库,采用新的设计理念,扩展了更多的便捷功能。

flurl.dev/

  • ⑦Polly

    对程序偶发异常的瞬态故障(例如网络波动)的处理库; 以Fluent和线程安全的方式表达重试,断路器,超时,隔板隔离和降级等策略。 适用于需要处理外部依赖故障、网络不稳定和异常情况的应用程序。IHttpClientFactory+Polly是一个完美的组合。 包括HTTP请求、数据库访问、消息队列操作等,以提供弹性和容错的能力,增加应用程序的可靠性和健壮性。

    www.thepollyproject.org/

    github.com/App-vNext/P…

  • ⑧NPOI

    操作Office文档(Excel、Word、PPT)的标准库

  • ⑨SignalR

    一个微软开源的库,简化向应用程序添加实时Web功能的过程。实现当客户端连接到服务器后,服务器即可推送内容给客户端,而不必等待其发出请求。 支持TCP、WebSockets、Server-Sent Events、Long Polling四种协议,并自带两种模式。 适用于实时聊天,股票牌价,在线游戏等Web模式下的实时通信。 github.com/SignalR/

  • ⑩Masuit.Tools

    内容丰富的工具库

image.png

github.com/ldqk/Masuit…

  • ⑪MoreLinq

扩展了 LINQ to Objects,添加了 70 多种额外的方法,可以进行更高级的数据处理和分析。 并且支持范围广泛的集合类型,包括数组、列表和字典。它包括过滤、排序、分组和聚合数据的方法,以及更高级的功能,如分区、组合和展平。

github.com/MoreLinq

  • ⑫MediatR

是24种设计模式中Mediator Pattern的实现库。主要是为了解决进程内消息发送与消息处理过程之间的耦合问题,进而实现CQRS、EventBus等。

例如,一个Controller需要调用相应的Repository进行业务逻辑处理,普通情况下,可以直接在Controller注入Repository, 而在使用MediatR的情况下,可以先注入MediatR,再通过MediatR发送给Repository,减少了耦合。

github.com/jbogard/Med…

  • ⑬Hangfire

    一个开源的后台作业调度框架,实现可靠的后台任务处理;并支持分布式调度,允许多个机器间共享调度任务。 包括延迟任务、重复任务、定时任务等。如邮件发送、数据处理、定时批处理等。并提供了一个Web监视和管理任务的界面。

⑭HtmlSanitizer

可用于防止XSS攻击的HTML净化器,让前台用户可以提交HTML数据而又不被脚本攻击。 设置不危险的“标签、属性”白名单,把所有不在白名单中的“标签、属性”全部干掉。

github.com/mganss/Html…