8

.NET Core/.NET5/.NET6 开源项目汇总1:常用必备组件

 3 years ago
source link: https://www.cnblogs.com/SavionZhang/p/14862802.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

.NET Core/.NET5/.NET6 开源项目汇总1:常用必备组件

开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激、尊重。请严格遵守每个项目的开源协议后再使用。尊重知识产权,共建和谐开源社区。

以下开源项目(含组件),从网络搜集,后期会不断补充。

7、Email 组件
  • FluentEmail

.NET平台下提供了SmtpClient类工开发者用于编写发送邮件的业务功能,该类能满足大部分场景下的业务需求,但是使用起来稍微有点麻烦。 

FluentEmail是一款在GitHub上开源免费的支持.Net和.Net Core邮件发送组件。

FluentEmail功能强大,而且对不同场景的支持都有独立的Nuget包,这种低耦合的拆分不仅使得依赖非常清晰,而且避免引入不需要的代码,具体功能包含在以下的组件包中:

开源地址:https://github.com/lukencode/FluentEmail

6、ORM组件
  • Dapper

142275-20210607162941842-1700934568.png

142275-20210607162626594-1486602033.png

Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。

开源地址:https://github.com/DapperLib/Dapper

                 https://dapper-tutorial.net/

  • FreeSql【国产】

142275-20210607162316429-1860877121.png

FreeSql 是功能强大的 .NET ORM,支持 .NetFramework 4.0+、.NetCore 2.1+、Xamarin 等支持 NetStandard 所有运行平台。

开发者优先:以开发者为中心的设计理念,想你所想,亦享你所享。
多场景实现:支持 CodeFirst / DbFirst / DbContext / Repository / UnitOfWork / AOP / 支持 .NETCore 2.1+, .NETFramework 4.0+, Xamarin。
多数据库支持:Mysql, Postgresql, SqlServer, Oracle, Sqlite, Firebird, 达梦, 人大金仓, 神通, Access。

官       网:http://freesql.net

开源地址:GitHub https://github.com/dotnetcore/FreeSql    

                  Gitee https://gitee.com/FreeSql/FreeSql-ORM

  • SqlSugar【国产】

142275-20210608160153657-391602016.jpg

SqlSugar是一款 老牌 .NET开源ORM框架,由果糖大数据科技团队维护和更新 ,Github star数仅次于EF 和 Dapper。

国内最受欢迎的 ORM 框架,支持.NET CORE 和 MySql、SqlServer、Sqlite、Oracle 、 postgresql 、达梦、人大金仓 数据库,具有EF NH的功能,比EF更人性化的语法,支持真实的批量操作,另外还有媲美DAPPER的性能

优点: 简单易用、功能齐全、高性能、轻量级、服务齐全、有专业技术支持一天18小时服务。

支持数据库:MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、人大金仓。

  • 基本用法咨询       
  • SqlSugar版块提交BUG           
  • 官网首页提交建议和需求   
  • 代码开源 可用于任何商用项目 不收取费用 下载
  • qq交流群讨论   995692596(空闲)   654015377(1800/2000 拥挤) 726648662((已满)   225982985 (已满)  
  • 持续更新的文档

性能原理

比大部分的DbHelper性能要高,底层采用Emit动态创建数据绑定程序集进行缓存,缓存后的性能可以达到原生水平,相反原始的ADO需要用到大量装箱和拆箱操作性能反而下降。

性能对比

SqlSugar 对比 Dapper:无论在性能还是在功能上都全面压制 Dapper ,虽然基础性能和Sugar打平手,便是批量操作 Dapper完全不行。

SqlSugar 对比 EF:SqlSugar小巧并且功能齐全,最重要的是上手容易,学习成本低 ,性能高于EF框架。

官网:https://www.donet5.com/Home/Doc

GitHub:https://github.com/donet5/SqlSugar

Gitee:https://gitee.com/dotnetchina/SqlSugar

  • Overt.Core.Data【国产】

基于Dapper封装的Linq表达式数据库访问驱动,内置自定义分库,分表的实现。目前支持SqlServer、MySql、SQLite。

主要优势:

  • 官方建议使用DDD领域驱动设计思想开发。
  • 支持多种数据库,简单配置添加链接的配置即可。
  • 多数据库的支持。
  • 支持分表操作,自定义分表策略的支持。
  • 支持表达式方式编写,减少写Sql语句机械性工作。
  • 可对Dapper 进行扩展。
  • 性能依赖于Dapper 本身的性能,Dapper 本身是轻量级ORM ,官方测试性能都强于其他的ORM。

开源地址:https://github.com/overtly/core-data

  • EFCore.Sharding【国产】

读写分离分库分表一直是数据库领域中的重难点,当数据规模达到单库极限的时候,就不得不考虑分表方案。EF Core作为.NET Core中最为主流的ORM,用起来十分方便快捷,但是官方并没有相应的Sharding支持,鄙人不才,经过一番摸索之后终于完成这个框架。

本框架旨在为EF Core提供Sharding(即读写分离分库分表)支持,不仅提供了一套强大的普通数据操作接口,并且降低了分表难度,支持按时间自动分表扩容,提供的操作接口简洁统一。

开源地址:https://github.com/Coldairarrow

  • EFCore.BulkExtensions

EFCore.BulkExtensions 是 .NET Core 开发的,针对EFCore进行扩展的高性能批量操作组件。支持批量插入(Insert)、批量更新(Update)、批量删除(Delete)和读取操作。目前该框架支持SqlServer和Sqlite。

SqlServer批量插入是通过SqlBulkCopy类操作,大数据操作的时候性能非常不错。

测试结果:

GitHub地址:https://github.com/borisdj/EFCore.BulkExtensions

  • Zack.EFCore.Batch【国产、推荐】

Zack.EFCore.Batch是一个支持在Entity Framework Core中高效删除和更新数据的开源库。我们知道,EF Core中不支持高效的删除和更新数据,所有的更新和操作都是逐条数据处理。

组件特性

  • 基于实体关系的数据过滤
  • 支持数据的批量插入
    • BulkInsert()底层使用各个数据库的BulkCopy机制实现数据插入,因此插入效率非常高。目前有如下两个缺点:不支持关联数据的自动插入,对于关联的对象,请同样调用BulkInsert()进行插入;由于PostgreSQL的.NET Core Provider还没有支持BulkCopy,所以目前Zack.EFCore.Batch暂不支持PostgreSQL,我后面再去想办法解决。
  • 支持Take()、Skip()来限制删除和更新数据的范围
    • 批量删除和批量更新都支持通过Take()、Skip()来实现部分删除和部分更新。
  • 支持多数据库

142275-20210616175115968-1343321618.png

GitHub地址:https://github.com/yangzhongke/Zack.EFCore.Batch/blob/main/README_CN.md

5、日志组件
  • NLog
142275-20210607193227361-930881368.png

NLog是一个灵活和免费的日志平台,适用于各种.NET平台,包括.NET Standard。NLog使写入多个目标变得容易(数据库、文件、控制台)并动态更改日志记录配置。

官       网:https://nlog-project.org/?r=redirect

源码下载:https://nlog-project.org/download

  • Log4.NET

log4net库是Apache log4j框架在Microsoft.NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。

官       网:http://logging.apache.org/log4net/index.html

开源地址:https://github.com/apache/logging-log4net/

  • Serilog

Serilog是.NET应用程序的诊断日志库。它易于设置,具有整洁的API,并在所有最近的.NET平台上运行。尽管它在最简单的应用程序中也很有用,但Serilog对结构化日志的支持在检测复杂、分布式和异步应用程序和系统时也很有用。

开源地址:https://github.com/serilog/serilog

  • Exceptionless

【Exceptionless】一词的定义是:无异常。Exceptionless为您的JavaScript、Node、.NET Core、ASP.NET、Web API、WebForms、WPF、控制台和MVC应用程序提供实时错误报告。它将收集到的信息组织成简单的可操作数据,这将帮助你的应用程序变得无异常!

开源地址:https://github.com/exceptionless/Exceptionless

4、Office 操作组件
  • NPOI

开源高性能Office操作组件,不依赖Office。可以操作Excel、Word。

开源地址:https://github.com/topics/npoi

                 https://github.com/dotnetcore/NPOI

  • ExcelReport【国产】

ExcelReport是一个Excel模板渲染引擎。 它基于关注点分离的理念,将数据与表格样式、字体格式分离。
其中模板承载的表格样式、字体格式在可视化的情况下编辑。开发人员只需要绑定数据与目标标签的对应关系。ExcelReport就可以以数据驱动的方式渲染出目标报表。

模块组成

ExcelReport家族现在有四个成员。

  • ExcelReport负责报表的渲染逻辑。
  • ExcelReport.Driver为ExcelReport提供了操作Excel文档的抽象接口。
  • ExcelReport.Driver.NPOI是使用NPOI对ExcelReport.Driver的实现。支持xls、xlsx两种格式的Excel文档。
  • ExcelReport.Driver.CSV是针对csv格式的Excel文档对ExcelReport.Driver的实现。

Template:模板承载的表格样式、字体格式、占位标签等。
Render:指定模板标签与数据的关系。
Data:注入模板的数据。整个渲染过程也是数据驱动渲染的。
Output:输出文件

开源地址:https://github.com/hanzhaoxin/ExcelReport

  • iTextSharp.LGPLv2.Core.Fix

典型应用:.Net Core 使用 itextsharp.lgplv2.core 把Html转PDF https://www.cnblogs.com/ping9719/p/12759848.html

                 .Net Core 使用 itextsharp.lgplv2.core 生成PDF https://blog.csdn.net/weixin_30737363/article/details/96669770

开源地址:https://github.com/VahidN/iTextSharp.LGPLv2.Core

                 https://github.com/itext/itextsharp

  • DocX

DocX是一个.NET库,允许开发人员以简单直观的方式操作word2007/2010/2013文件。DocX速度快,重量轻,最重要的是它不需要安装microsoftword或Office。

DocX是Xceed Words for.NET的免费开源版本。最初由Cathal Coffey编写,由Przemyslaw Klys维护,现在由Xceed维护。从v1.5.0开始,这个免费的开源产品是根据Xceed社区许可协议提供的(用于非商业用途)。包含以下功能

  • 可以将Word文档转换为PDF。
  • 添加属性以将文本环绕图片/表格/形状。
  • 添加图片裁剪。
  • 添加形状(目前为矩形)。
  • 添加包含文本的文本框或形状。
  • 从段落中获取形状。
  • 从段落中获取图表,并可以修改其类别/值。
  • 图表配置中的更多属性,如轴标签位置和系列宽度。
  • 至少比DocX版本提前了两个版本。
  • 订阅中包含专业技术支持。
  • 在.NET Standard 2.0上可用于.NET Core 2.0应用程序。
  • 可以自动更新文档中的字段。
  • 在Word文档中插入html/rtf文本(带标记)或html/rtf文档。
  • 克隆列表或表。
  • 添加或修改复选框。
  • 设置图片透明度。
  • 基于引用的超链接创建格式化的超链接。
  • 合并2个文档可以在生成的文档中选择doc1、doc2或两者的页眉/页脚。
  • 自动断字和可配置断字。

开源地址:https://github.com/xceedsoftware/docx

3、缓存组件
  • EasyCaching

EasyCaching是一个开源的缓存库,它包含缓存的基本用法和一些高级用法,可以帮助我们更轻松地处理缓存!

核心功能:

  • 统一的抽象缓存接口
  • 多种常用的缓存Provider(InMemory,Redis,Memcached,SQLite)
  • 为分布式缓存的数据序列化提供了多种选择
  • 缓存的AOP操作(able, put,evict)
  • 多实例支持
  • 支持Diagnostics
  • Redis的特殊Provider

官     网:https://easycaching.readthedocs.io/en/latest/

GitHub:https://github.com/dotnetcore/EasyCaching

  • CacheManager

CacheManager是用C#编写的.NET的开源缓存抽象层。它支持各种缓存提供程序并实现许多高级功能。支持.NET4.5、NET Standard2.0及以上版本。

CacheManager包的主要目标是使开发人员更容易处理甚至非常复杂的缓存场景。使用CacheManager,可以实现多层缓存,例如在分布式缓存前面的进程内缓存,只需几行代码。

CacheManager不仅仅是一个接口,它统一了各种缓存提供程序的编程模型,这将使以后在项目中更改缓存策略变得非常容易。它还提供其他功能,如缓存同步、并发更新、序列化、事件、性能计数器。开发人员只有在需要时才可以选择使用这些功能。

142275-20210616191156283-213554473.png

GitHub 地址:https://github.com/MichaCo/CacheManager

该项目已经很久没有更新了,是功能已经稳定还是其他原因,未知。

2、IOC组件
  • Autofac

Autofac是构建于.NET之上的一个易于使用的IoC容器。用于.NET Core、ASP.NET Core、.NET Framework 4.5.1+以及Windows应用程序。它管理类之间的依赖关系,以便应用程序在规模和复杂性增长时易于更改。这是通过将常规的.NET类作为组件来实现的。

  • Unity
  • Castle Windsor
1、其他组件
  • Util应用框架

Util是一个.net core平台下的应用框架,旨在提升小型团队的开发输出能力,由常用公共操作类(工具类)、分层架构基类、Ui组件,第三方组件封装,第三方业务接口封装,配套代码生成模板,权限等组成。

开源地址:https://github.com/dotnetcore/Util


参考文献:

  • https://jishuin.proginn.com/p/763bfbd2b794
  • https://www.cnblogs.com/shanyou/p/9700422.html
  • https://www.cnblogs.com/sheng-jie/p/9789180.html
  • https://www.cnblogs.com/jlion/archive/2020/05/04/12771167.html

 142275-20210511143255073-1133010989.png技术栈

 1、Visual Studio、.NET:C#、.NET5、.NET6、.NET Core、MVC、ASP.NET Core、Web API、RESTful API、gRPC、SignalR

 2、jQuery、Vue.js、Bootstrap

 3、数据库:SQLServer、MySQL、PostgreSQL、Oracle、SQLite、SequoiaDB 、Redis、MongoDB、ElasticSearch、TiDB、达梦DM、人大金仓、 神通、南大通用 GBase、华为 GaussDB 、腾讯 TDSQL 、阿里 PolarDB、蚂蚁金服 OceanBase、东软 OpenBASE、浪潮云溪数据库 ZNBase

 4、ORM:Dapper、Entity Framework、FreeSql、SqlSugar、分库分表

 5、架构:领域驱动设计 DDD、ABP

 6、环境:跨平台、Windows、Linux(CentOS、中标麒麟、统信UOS、深度Linux)、maxOS、IIS、Nginx、

 7、移动App:Android、IOS、HarmonyOS、微信、小程序、快应用、Xamarin、uni-app、MUI、Flutter、Framework7、Cordova、Ionic、React Native、Taro、NutUI、mpvue、Smobiler

 云原生、CI/CD、DevOps、微服务、Docker、K8S;

 Dapr、RabbitMQ、Kafka、分布式、大数据、高并发、负载均衡、中间件、RPC、ELK;

 .NET + Docker + jenkins + Github + Harbor + K8S;

 Python、Go。

出处:www.cnblogs.com/SavionZhang

作者:张传宁   微软MCP、系统架构设计师、系统集成项目管理工程师、科技部创新工程师。

        专注于微软.NET技术(.NET Core、Web、MVC、WinForm、WPF)、通用权限管理系统、工作流引擎、自动化项目(代码)生成器、SOA 、DDD、 云原生(Docker、微服务、DevOps、CI/CD);PDF、CAD、BIM 审图等研究与应用。

        多次参与电子政务、国家电网、图书教育、生产制造等企业级大型项目研发与管理工作。

        熟悉中小企业软件开发过程:需求分析、架构设计、编码测试、实施部署、项目管理。通过技术与管理帮助中小企业快速化实现互联网技术全流程解决方案。


本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

如有问题,可以通过邮件[email protected]联系。共同交流、互相学习。

如果您觉得文章对您有帮助,请点击文章右下角【推荐】。您的鼓励是作者持续创作的最大动力!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK