​本文已参加「新人创造礼」活动,一起敞开创造之路。

1、MagicOnion

MagicOnion是一个用于.NET渠道的现代RPC结构,供给双向实时通讯(如SignalR和Socket.io)以及RPC机制(如WCF和根据web的API)。该结构根据gRPC,这是一种用于HTTP/2的快速、紧凑的二进制网络传输。但是,与普通gRPC不同,它将C#接口视为协议形式,完成了C#项目之间无需.proto(协议缓冲IDL)的无缝代码共享。

应用场景

  • 微服务运用的gRPC,以及WinForms、Wpf下的Wcf
  • API服务,如针对Unity、Xamarin和Windows客户端的Asp.NetCore
  • 双向实时通讯,如Socket.io, SignalR, Photon and UNet

开源地址:github.com/Cysharp/Mag…****

2、QRCoder

QRCoder是一个简略的类库,用C#.NET编写,它使您能够创建QR码。它与其他库没有任何依靠联系,能够作为.NET Framework和.NET Core PCL版别在NuGet上运用。

简略示例:

QRCodeGenerator qrGenerator = = qrGenerator.CreateQrCode(= = qrCode.GetGraphic();

除了用于创建位图格局的QRCode的普通QRCode类(在上面的示例中显现)之外,还有更多的QRCode呈现类,每个类都有另一个特殊用途。

  • QRCode*
  • AsciiQRCode
  • Base64QRCode*
  • BitmapByteQRCode
  • PdfByteQRCode*
  • PngByteQRCode
  • PostscriptQRCode*
  • SvgQRCode*
  • UnityQRCode*
  • XamlQRCode*

开源地址:github.com/codebude/QR…

3、barcodelib

该组件库为开发人员从一组数据生成条形码图像时供给了便捷的方式。

支撑以下类型

.NET Core 开源项目常用必备汇总

.NET Core 开源项目常用必备汇总

简略示例:

BarcodeLib.Barcode b = = b.Encode(BarcodeLib.TYPE.UPCA, , Color.Black, Color.White, , );

.NET Core 开源项目常用必备汇总

其他具体示例请参阅开源项目中的示例代码。

开源地址:github.com/barnhill/ba…

4、FluentFTP

FluentFTP 是 C#.NET 下最好用的Ftp传输开源库。它是一个完全办理的FTP和FTPS库,适用于.NET和.NET Standard,针对速度进行了优化。它供给广泛的FTP指令、文件上载/下载、SSL/TLS连接、主动目录列表解析、文件哈希/校验和、文件权限/CHMOD、FTP代理、FXP传输、UTF-8支撑、异步/等待支撑、Powershell支撑等等。

开源地址:github.com/robinrodric…

开发文档:github.com/robinrodric…

5、Enums.NET

Enums.NET是一个高功用类型安全的.NET枚举有用程序库。它供给了许多操作作为方便的扩展办法。它与.NET Framework 4.5+和.NET Standard 1.0+兼容。

开源地址:github.com/TylerBrinkl…

6、MoreLinq

  该项目运用以下办法增强 LINQ to Object:Acquire、Aggregate、AggregateRight、Append、Assert、AssertCount、AtMost、Await、AwaitCompletion、Backsert、Batch、Cartesian、Choose、CountBetween、CompareCount、CountBy、CountDown、Consume、DistinctBy、EndsWith、EquiZip、Evaluate,、Exactly、ExceptBy,Exclude,FallbackIfEmpty,FillBackward,FillForward,Flatten,Fold,ForEach,From,FullGroupJoin,FullJoin,Generate,GenerateByIndex,groupappearch,Index,IndexBy,Insert,Interleave,Lag,Lead,LeftJoin,MaxBy,Memoize,MinBy,Move,OrderBy,OrderedMerge,Pad,PadStart,Pairwise,PartialSort,PartialSortBy、Partition、Permutations、Pipe、Prepend、PreScan、Random、randouble、randomsublet、Rank、RankBy、Repeat、Return、RightJoin、runlengthcode、Scan、ScanBy、ScanRight、Segment、Sequence、Shuffle、SkipLast、SkipUntil、Slice、SortedMerge、Split、StartsWith、Subsets、TagFirstLast、TakeEvery、TakeLast、TakeUntil、ThenBy、ToArrayByIndex、,ToDataTable、ToDelimitedString、ToDictionary、ToHashSet、ToLookup、Trace、Transpose、TraverseBreadthFirst、TraverseDepthFirst、TrySingle、UNDOWN、WindowLeft、WindowRight、ZipLongest、ZipShortest。

  MoreLINQ有两种用法。最简略的办法是只导入MoreLinq称号空间,一切扩展办法都能够当即用于它们扩展的类型(通常是IEnumerable的一些实例化)。但是,在一些十分稀有的情况下,这样做或许会导致与您或许正在运用的其他库发生冲突,这些库还顺便运用同名办法和签名扩展同一类型。例如,当微软.NET Framework 4.0引进Zip时,MoreLINQ已 经有了一个Zip。从 MoreLINQ 的3.0版开端,您能够运用C#6中引进的静态导入功用,经过独自导入所需的扩展办法来削减当时(乃至将来)冲突的或许性:

   MoreLinq.Extensions.LeadExtension;

在上面的例子中,范围内只要Lag和Lead扩展办法可用。

除了扩展办法之外,MoreLINQ还供给了惯例的静态办法,能够生成(而不是操作)序列,如Unfold、Random、Sequence等。如果要在静态导入其他单个扩展办法时运用这些办法,能够经过别号来完成:

   MoreEnumerable = MoreLinq.MoreEnumerable;

在上面的示例中,Lag和Lead能够作为扩展办法运用,也能够作为MoreEnumerable上的一切惯例静态办法运用,但是没有MoreEnumerable供给的任何扩展办法。

开源地址与运用教程:github.com/morelinq/Mo…

7、Email 组件

  • 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邮件库发送邮件。

开源地址:github.com/lukencode/F…

8、ORM组件

  • Dapper

Dapper是一个简略的.NET方针映射器,在速度方面具有”King of Micro ORM”的头衔,几乎与运用原始的ADO.NET数据读取器一样快。ORM是一个方针联系映射器,它担任数据库和编程言语之间的映射。Dapper经过扩展IDbConnection供给一些有用的扩展办法去查询您的数据库。

开源地址:github.com/DapperLib/D…

dapper-tutorial.net/

  • 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。

官 网:freesql.net

开源地址:GitHub github.com/dotnetcore/…

Gitee gitee.com/FreeSql/Fre…

  • 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、达梦、人大金仓。

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

GitHub:github.com/donet5/SqlS…

Gitee:gitee.com/dotnetchina…

  • Overt.Core.Data【国产】

根据Dapper封装的Linq表达式数据库访问驱动,内置自定义分库,分表的完成。现在支撑SqlServer、MySql、SQLite。

主要优势:

  • 官方主张运用DDD范畴驱动规划思想开发。
  • 支撑多种数据库,简略装备添加链接的装备即可。
  • 多数据库的支撑。
  • 支撑分表操作,自定义分表策略的支撑。
  • 支撑表达式方式编写,削减写Sql语句机械性工作。
  • 可对Dapper 进行扩展。
  • 功用依靠于Dapper 自身的功用,Dapper 自身是轻量级ORM ,官方测试功用都强于其他的ORM。

开源地址:github.com/overtly/cor…

  • EFCore.Sharding【国产】

读写分离分库分表一直是数据库范畴中的重难点,当数据规划达到单库极限的时分,就不得不考虑分表方案。EF Core作为.NET Core中最为干流的ORM,用起来十分方便快捷,但是官方并没有相应的Sharding支撑,鄙人不才,经过一番摸索之后总算完成这个结构。

本结构旨在为EF Core供给Sharding(即读写分离分库分表)支撑,不只供给了一套强壮的普通数据操作接口,并且降低了分表难度,支撑按时刻主动分表扩容,供给的操作接口简洁一致。

开源地址:github.com/Coldairarro…

  • EFCore.BulkExtensions

EFCore.BulkExtensions 是 .NET Core 开发的,针对EFCore进行扩展的高功用批量操作组件。支撑批量刺进(Insert)、批量更新(Update)、批量删去(Delete)和读取操作。现在该结构支撑SqlServer和Sqlite。

SqlServer批量刺进是经过SqlBulkCopy类操作,大数据操作的时分功用十分不错。

GitHub地址:github.com/borisdj/EFC…

  • 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地址:

github.com/yangzhongke…

9、日志组件

  • NLog

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

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

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

  • Log4.NET

log4net库是Apache log4j结构在Microsoft.NET渠道的完成,是一个协助程序员将日志信息输出到各种方针(控制台、文件、数据库等)的东西。

官 网:logging.apache.org/log4net/ind…

开源地址:github.com/apache/logg…

  • Serilog

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

开源地址:github.com/serilog/ser…

  • Exceptionless

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

开源地址:github.com/exceptionle…

10、Office 操作组件

  • NPOI

开源高功用Office操作组件,不依靠Office。能够操作Excel、Word。

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

github.com/dotnetcore/…

  • ExcelReport【国产】

ExcelReport是一个Excel模板烘托引擎。它根据关注点分离的理念,将数据与表格款式、字体格局分离。
其中模板承载的表格款式、字体格局在可视化的情况下编辑。开发人员只需求绑定数据与方针标签的对应联系。ExcelReport就能够以数据驱动的方式烘托出方针报表。

开源地址:github.com/hanzhaoxin/…

  • iTextSharp.LGPLv2.Core.Fix

典型应用:.Net Core 运用 itextsharp.lgplv2.core 把Html转PDF www.cnblogs.com/ping9719/p/…

.Net Core 运用 itextsharp.lgplv2.core 生成PDF blog.csdn.net/weixin_3073…

开源地址:github.com/VahidN/iTex…

github.com/itext/itext…

  • DocX

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

DocX是Xceed Words for.NET的免费开源版别。开端由Cathal Coffey编写,由Przemyslaw Klys维护,现在由Xceed维护。从v1.5.0开端,这个免费的开源产品是根据Xceed社区许可协议供给的(用于非商业用途)

11、缓存组件

  • EasyCaching

EasyCaching是一个开源的缓存库,它包括缓存的基本用法和一些高级用法,能够协助咱们更轻松地处理缓存!

核心功用:

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

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

GitHub:github.com/dotnetcore/…

  • CacheManager

CacheManager是用C#编写的.NET的开源缓存笼统层。它支撑各种缓存供给程序并完成许多高级功用。支撑.NET4.5、NET Standard2.0及以上版别。

CacheManager包的主要方针是使开发人员更容易处理乃至十分杂乱的缓存场景。运用CacheManager,能够完成多层缓存,例如在分布式缓存前面的进程内缓存,只需几行代码。

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

GitHub 地址:github.com/MichaCo/Cac…

该项目现已很久没有更新了,是功用现已安稳仍是其他原因,不知道。

12、IOC组件

  • Autofac

Autofac是构建于.NET之上的一个易于运用的IoC容器。用于.NET Core、ASP.NET Core、.NET Framework 4.5.1+以及Windows应用程序。它办理类之间的依靠联系,以便应用程序在规划和杂乱性增长时易于更改。这是经过将惯例的.NET类作为组件来完成的。

  • Unity
  • Castle Windsor