MagicOnion是一个用于.NET平台的现代RPC框架,提供双向实时通信(如SignalR和Socket.io)以及RPC机制(如WCF和基于web的API)。该框架基于gRPC,这是一种用于HTTP/2的快速、紧凑的二进制网络传输。然而,与普通gRPC不同,它将C#接口视为协议模式,实现了C#项目之间无需.proto(协议缓冲IDL)的无缝代码共享。
应用场景
2、QRCoder
QRCoder是一个简单的类库,用C#.NET编写,它使您能够创建QR码。它与其他库没有任何依赖关系,可以作为.NETFramework和.NETCorePCL版本在NuGet上使用。
简单示例:
QRCodeGeneratorqrGenerator==qrGenerator.CreateQrCode(==qrCode.GetGraphic();除了用于创建位图格式的QRCode的普通QRCode类(在上面的示例中显示)之外,还有更多的QRCode呈现类,每个类都有另一个特殊用途。
3、barcodelib
该组件库为开发人员从一组数据生成条形码图像时提供了便捷的方式。
支持以下类型
BarcodeLib.Barcodeb==b.Encode(BarcodeLib.TYPE.UPCA,,Color.Black,Color.White,,);
其他详细示例请参考开源项目中的示例代码。
4、FluentFTP
FluentFTP是C#.NET下最好用的Ftp传输开源库。它是一个完全管理的FTP和FTPS库,适用于.NET和.NETStandard,针对速度进行了优化。它提供广泛的FTP命令、文件上载/下载、SSL/TLS连接、自动目录列表解析、文件哈希/校验和、文件权限/CHMOD、FTP代理、FXP传输、UTF-8支持、异步/等待支持、Powershell支持等等。
5、Enums.NET
Enums.NET是一个高性能类型安全的.NET枚举实用程序库。它提供了许多操作作为方便的扩展方法。它与.NETFramework4.5+和.NETStandard1.0+兼容。
6、MoreLinq
MoreLINQ有两种用法。最简单的方法是只导入MoreLinq名称空间,所有扩展方法都可以立即用于它们扩展的类型(通常是IEnumerable的一些实例化)。但是,在一些非常罕见的情况下,这样做可能会导致与您可能正在使用的其他库发生冲突,这些库还附带使用同名方法和签名扩展同一类型。例如,当微软.NETFramework4.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提供的任何扩展方法。
7、Email组件
.NET平台下提供了SmtpClient类工开发者用于编写发送邮件的业务功能,该类能满足大部分场景下的业务需求,但是使用起来稍微有点麻烦。
FluentEmail是一款在GitHub上开源免费的支持.Net和.NetCore邮件发送组件。
FluentEmail功能强大,而且对不同场景的支持都有独立的Nuget包,这种低耦合的拆分不仅使得依赖非常清晰,而且避免引入不需要的代码,具体功能包含在以下的组件包中:
8、ORM组件
Dapper是一个简单的.NET对象映射器,在速度方面具有"KingofMicroORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。
FreeSql是功能强大的.NETORM,支持.NetFramework4.0+、.NetCore2.1+、Xamarin等支持NetStandard所有运行平台。
开发者优先:以开发者为中心的设计理念,想你所想,亦享你所享。多场景实现:支持CodeFirst/DbFirst/DbContext/Repository/UnitOfWork/AOP/支持.NETCore2.1+,.NETFramework4.0+,Xamarin。多数据库支持:Mysql,Postgresql,SqlServer,Oracle,Sqlite,Firebird,达梦,人大金仓,神通,Access。
SqlSugar是一款老牌.NET开源ORM框架,由果糖大数据科技团队维护和更新,Githubstar数仅次于EF和Dapper。
国内最受欢迎的ORM框架,支持.NETCORE和MySql、SqlServer、Sqlite、Oracle、postgresql、达梦、人大金仓数据库,具有EFNH的功能,比EF更人性化的语法,支持真实的批量操作,另外还有媲美DAPPER的性能
优点:简单易用、功能齐全、高性能、轻量级、服务齐全、有专业技术支持一天18小时服务。
支持数据库:MySql、SqlServer、Sqlite、Oracle、postgresql、达梦、人大金仓。
基于Dapper封装的Linq表达式数据库访问驱动,内置自定义分库,分表的实现。目前支持SqlServer、MySql、SQLite。
主要优势:
读写分离分库分表一直是数据库领域中的重难点,当数据规模达到单库极限的时候,就不得不考虑分表方案。EFCore作为.NETCore中最为主流的ORM,用起来十分方便快捷,但是官方并没有相应的Sharding支持,鄙人不才,经过一番摸索之后终于完成这个框架。
EFCore.BulkExtensions是.NETCore开发的,针对EFCore进行扩展的高性能批量操作组件。支持批量插入(Insert)、批量更新(Update)、批量删除(Delete)和读取操作。目前该框架支持SqlServer和Sqlite。
SqlServer批量插入是通过SqlBulkCopy类操作,大数据操作的时候性能非常不错。
Zack.EFCore.Batch是一个支持在EntityFrameworkCore中高效删除和更新数据的开源库。我们知道,EFCore中不支持高效的删除和更新数据,所有的更新和操作都是逐条数据处理。
组件特性
GitHub地址:
9、日志组件
NLog是一个灵活和免费的日志平台,适用于各种.NET平台,包括.NETStandard。NLog使写入多个目标变得容易(数据库、文件、控制台)并动态更改日志记录配置。
log4net库是Apachelog4j框架在Microsoft.NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
Serilog是.NET应用程序的诊断日志库。它易于设置,具有整洁的API,并在所有最近的.NET平台上运行。尽管它在最简单的应用程序中也很有用,但Serilog对结构化日志的支持在检测复杂、分布式和异步应用程序和系统时也很有用。
【Exceptionless】一词的定义是:无异常。Exceptionless为您的JavaScript、Node、.NETCore、ASP.NET、WebAPI、WebForms、WPF、控制台和MVC应用程序提供实时错误报告。它将收集到的信息组织成简单的可操作数据,这将帮助你的应用程序变得无异常!
10、Office操作组件
开源高性能Office操作组件,不依赖Office。可以操作Excel、Word。
DocX是一个.NET库,允许开发人员以简单直观的方式操作word2007/2010/2013文件。DocX速度快,重量轻,最重要的是它不需要安装microsoftword或Office。
DocX是XceedWordsfor.NET的免费开源版本。最初由CathalCoffey编写,由PrzemyslawKlys维护,现在由Xceed维护。从v1.5.0开始,这个免费的开源产品是根据Xceed社区许可协议提供的(用于非商业用途)
11、缓存组件
EasyCaching是一个开源的缓存库,它包含缓存的基本用法和一些高级用法,可以帮助我们更轻松地处理缓存!
核心功能:
CacheManager是用C#编写的.NET的开源缓存抽象层。它支持各种缓存提供程序并实现许多高级功能。支持.NET4.5、NETStandard2.0及以上版本。
CacheManager包的主要目标是使开发人员更容易处理甚至非常复杂的缓存场景。使用CacheManager,可以实现多层缓存,例如在分布式缓存前面的进程内缓存,只需几行代码。
CacheManager不仅仅是一个接口,它统一了各种缓存提供程序的编程模型,这将使以后在项目中更改缓存策略变得非常容易。它还提供其他功能,如缓存同步、并发更新、序列化、事件、性能计数器。开发人员只有在需要时才可以选择使用这些功能。
该项目已经很久没有更新了,是功能已经稳定还是其他原因,未知。
12、IOC组件
Autofac是构建于.NET之上的一个易于使用的IoC容器。用于.NETCore、ASP.NETCore、.NETFramework4.5.1+以及Windows应用程序。它管理类之间的依赖关系,以便应用程序在规模和复杂性增长时易于更改。这是通过将常规的.NET类作为组件来实现的。