.NET Core/.NET5/.NET6 开源项目汇总1:常用必备组件
开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激、尊重。请严格遵守每个项目的开源协议后再使用。尊重知识产权,共建和谐开源社区。
以下开源项目(含组件),从网络搜集,后期会不断补充。
- FluentEmail
.NET平台下提供了SmtpClient类工开发者用于编写发送邮件的业务功能,该类能满足大部分场景下的业务需求,但是使用起来稍微有点麻烦。
FluentEmail是一款在GitHub上开源免费的支持.Net和.Net Core邮件发送组件。
FluentEmail功能强大,而且对不同场景的支持都有独立的Nuget包,这种低耦合的拆分不仅使得依赖非常清晰,而且避免引入不需要的代码,具体功能包含在以下的组件包中:
- FluentEmail.Core - 基础核心包,包含了基础的模型定义和默认的设置,而且以下的引用包都包含了这个核心包。
- FluentEmail.Smtp - 使用SMTP服务发送邮件的程序包。
- FluentEmail.Razor - 通过Razor模板生成邮件发送内容。
- FluentEmail.Liquid -使用Liquid模板生成电子邮件。
- FluentEmail.Mailgun - 使用Mailgun的Rest接口发送邮件。
- FluentEmail.SendGrid - 使用SendGrid接口发送邮件。
- FluentEmail.Mailtrap - 发送邮件Mailtrap, 使用的是FluentEmail.Smtp包进行发送.
- FluentEmail.MailKit- 使用MailKit邮件库发送邮件。
开源地址:https://github.com/lukencode/FluentEmail
- Dapper
Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。
开源地址:https://github.com/DapperLib/Dapper
- FreeSql【国产】
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。
开源地址:GitHub https://github.com/dotnetcore/FreeSql
Gitee https://gitee.com/FreeSql/FreeSql-ORM
- SqlSugar【国产】
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()来实现部分删除和部分更新。
- 支持多数据库
GitHub地址:https://github.com/yangzhongke/Zack.EFCore.Batch/blob/main/README_CN.md
- NLog
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
- 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
- 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不仅仅是一个接口,它统一了各种缓存提供程序的编程模型,这将使以后在项目中更改缓存策略变得非常容易。它还提供其他功能,如缓存同步、并发更新、序列化、事件、性能计数器。开发人员只有在需要时才可以选择使用这些功能。
GitHub 地址:https://github.com/MichaCo/CacheManager
该项目已经很久没有更新了,是功能已经稳定还是其他原因,未知。
- Autofac
Autofac是构建于.NET之上的一个易于使用的IoC容器。用于.NET Core、ASP.NET Core、.NET Framework 4.5.1+以及Windows应用程序。它管理类之间的依赖关系,以便应用程序在规模和复杂性增长时易于更改。这是通过将常规的.NET类作为组件来实现的。
- Unity
- Castle Windsor
- 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
.NET Core/.NET5/.NET6 开源项目汇总1:常用必备组件的更多相关文章
- .NET Core/.NET5/.NET6 开源项目汇总2:任务调度组件
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- .NET Core/.NET5/.NET6 开源项目汇总3:工作流组件
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- .NET Core/.NET5/.NET6 开源项目汇总12:WPF组件库2
系列目录 [已更新最新开发文章,点击查看详细] WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Frame ...
- .NET Core/.NET5/.NET6 开源项目汇总11:WPF组件库1
系列目录 [已更新最新开发文章,点击查看详细] WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Frame ...
- .NET Core/.NET5/.NET6 开源项目汇总5:权限管理系统项目
系列目录 [已更新最新开发文章,点击查看详细] 企业管理系统一般包含后台管理UI.组织机构管理.权限管理.日志.数据访问.表单.工作流等常用必备功能.下面收集的几款优秀开源的管理系统,值得大家 ...
- .NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- .NET Core/.NET5/.NET6 开源项目汇总9:客户端跨平台UI框架
系列目录 [已更新最新开发文章,点击查看详细] .NET Core 实现了跨平台,支持在 Windwos.Linux.macOS上开发与部署,但是也仅限于Web应用程序.对于Windows桌面 ...
- .NET Core/.NET5/.NET6 开源项目汇总10:实用工具
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- .NET Core/.NET5/.NET6 开源项目汇总4:CMS、Blog项目
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
随机推荐
- Nacos使用 MySQL 8.0 提示Public Key Retrieval is not allowed
原因如下(参考官网给出的连接选项): 如果用户使用了 sha256_password 认证,密码在传输过程中必须使用 TLS 协议保护,但是如果 RSA 公钥不可用,可以使用服务器提供的公钥:可以在连 ...
- php防注入和XSS攻击通用过滤
public function SafeFilter($arr){ $ra=Array('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','/script/','/javas ...
- Java 反编译工具哪家强?对比分析瞧一瞧
前言 Java 反编译,一听可能觉得高深莫测,其实反编译并不是什么特别高级的操作,Java 对于 Class 字节码文件的生成有着严格的要求,如果你非常熟悉 Java 虚拟机规范,了解 Class 字 ...
- 消息队列RabbitMQ(二):RabbitMQ的系统架构概述
前言 RabbitMQ是基于AMQP协议的,要想深入理解RabbitMQ,就必须先了解AMQP是个什么东东? AMQP协议 AMQP即Advanced Message Queuing Protocol ...
- 《Ray Tracing in One Weekend》阅读笔记 - 9、Metal(金属)
如果我们希望不同的物体使用不同的材料,则需要进行设计决策.我们可以使用具有许多参数的通用材料,而将不同的材料类型仅将其中一些参数归零.这不是一个坏方法.或者我们可以有一个抽象的材料类来封装行为.我是后 ...
- jQuery两种方法添加数据表格到HTML
jQ创建表格的两种方法 1.模板字符串法 $(function () { //模板字符串的方式添加到页面 $('#btn').click(function ...
- Linux中find命令用法全汇总,看完就没有不会用的!
Linux中find命令用法全汇总,看完就没有不会用的! 中琦2513 马哥Linux运维 2017-04-10 糖豆贴心提醒,本文阅读时间7分钟 Linux 查找命令是Linux系统中最重要和最 ...
- Docker —— 使用 Dockerfile 制作 Jdk + Tomcat 镜像
一.准备好Jdk和Tomcat apache-tomcat-8.5.50.tar.gz jdk-8u212-linux-x64.tar.gz 注意: Jdk 和 Tomcat 记得从官网下载,否则制作 ...
- 怎样使用yum-cron为CentOS7自动更新重要的安全补丁
怎样使用yum-cron为CentOS自动更新重要的安全补丁 2017年4月19日 | 分类: [技术] 参考:https://linux.die.net/man/8/yum-cron参考:http: ...
- 6.1 tar:打包备份
tar命令 在Linux系统里,tar是将多个文件打包在一起,并且可以实现解压打包的文件的命令.是系统管理员最常用的命令之一,tar命令不但可以实现对多个文件进行打包,还可以对多个文件打包后进 ...