7

一些小众冷门但却非常实用的.NET(Core)开源库推荐

 3 years ago
source link: https://masuit.com/1875
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开源库,大家推荐的都各有千秋,那今天博主就推荐一下我自用的一些.NET开源库吧,数量不多,虽然有些点赞数并不高,但个人觉得都是好到爆的一些工具库。本文旨在收录一些小众冷门的开源库,像AutoMapper、Autofac、epplus、Hangfire之类的大众都知晓的库,这里就不收录了。

1.Masuit.Tools

首先推荐的的当然是自家的开源库了,该库集成了大量的各种操作帮助函数,算是我从入坑编程多年来的代码积累吧,在后续的任何开发当中使用上它,避免重复地去造一些轮子,把重心转移到项目的推进,几乎可以做任何的事情,反正现在项目中没了它,我写逻辑代码还真有点困难,由于C#语言有个其他语言不可替代的特性:扩展方法,所以项目的实现90%以上都是通过扩展方法实现的,方便直接调用。

该库目前全网累计已经超越1900+star。

功能主要覆盖:

数据库操作:内存表操作、关系实体映射等;

日期时间常用操作:农历操作、时间戳操作,时分秒转换等;

文件操作:大文件操作、文件压缩与解压、ini配置文件操作;

硬件操作:获取电脑各个硬件的性能指标;

Html操作:利用C#对html字符串进行“dom”操作,html的XSS净化、html标签操作;

日志组件:高并发可用的高性能日志记录;

多媒体文件操作:图片的各种处理;

网络操作:获取线程内唯一对象、Session和Cookie的扩展、获取IP地址详细信息、缓存操作;

Nosql:仅封装了Redis的常用操作,mongodb的操作类客户端独立分开了;

反射操作:各种对对象的字段属性和方法的快捷方式;

加密安全:对字符串进行的扩展,包含AES、DES、MD5、hash、SHA1、加盐等;

字符串扩展:包含验证码生成、各种与字符串相关的扩展;

Win32API:包含于Windows系统接口相关的操作封装;

全局扩展:包含字符串扩展,类型转换,委托、循环操作、异步操作、正则等。

项目地址:

github:https://github.com/ldqk/Masuit.Tools

github-org:https://github.com/XiLife-OSPC/Masuit.Tools

gitee:https://gitee.com/masuit/Masuit.Tools

2.Masuit.LuceneEFCore.SearchEngine

本站自家产的本地搜索引擎中间件,基于EntityFrameworkCore和Lucene.NET实现的全文检索搜索引擎,可轻松实现高性能的全文检索。可以轻松应用于任何基于EntityFrameworkCore的实体框架数据库。支持带权重的查询结果,毫秒级响应。

项目地址:https://github.com/ldqk/Masuit.LuceneEFCore.SearchEngine

3.CacheManager

一个非常实用的缓存中间件,CacheManager是用C#编写的.NET的开源缓存抽象层。 它支持各种缓存提供程序并实现许多高级功能。

CacheManager软件包的主要目标是使开发人员的生活更轻松,甚至可以处理非常复杂的缓存方案。借助CacheManager,可以实现多层缓存,例如 只需几行代码,即可在分布式缓存之前进行进程内缓存。

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

项目地址:https://github.com/MichaCo/CacheManager

4.htmldiff.net-core

用于比较两个HTML文件/片段的库,并使用简单的HTML突出显示差异。基于ruby实现的HTMLDiff库移植到.NET Core下的。 

使用效果如下:https://masuit.com/1664/history/0-3308

项目地址:https://github.com/Rohland/htmldiff.net

5.IP2Region

一个高性能的本地IP地理信息查询库,准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法。

项目地址:https://github.com/lionsoul2014/ip2region

6.MaxMind.GeoIP2

一个世界范围级的本地IP地理信息查询库,支持IPv4和IPv6,免费版支持城市级别的地理信息查询、经纬度查询以及时区等信息。用途和上者差不多。

项目地址:https://github.com/maxmind/GeoIP2-dotnet

7.Karambolo.AspNetCore.Bundling.NUglify

还记得在.NET Framework时代的在cshtml中的静态资源压缩绑定的操作么?只需要在cshtml中@Scripts.Render就能将配置好的静态资源文件在生产环境中进行自动压缩打包处理,可是到了.NET Core MVC中,这样的操作已经被微软废弃掉了,而微软更推荐的做法是通过安装Bundle Minifier扩展插件或是nuget包进行静态资源捆绑的配置,会生成一个配置文件,不过我个人觉得这样的做法确实不太方便,所以也一直在寻找一种可以在.NET CoreMVC中可以直接@Scripts.Render的方式,今天,终于找到这样的组件,找回了.NET Framework时代的@Scripts.Render。

那就是一个外国人写的nuget包——Karambolo.AspNetCore.Bundling.NUglify。

通过这个nuget包,我们便可以实现在.NET Core MVC使用@Scripts.Render这样的方式去引用我们配置好的静态资源捆绑,且使用方式和.NET Framework中基本一致。它能够实现对js、css、less、scss等静态资源的自动打包捆绑处理。

其实这也是一个前端性能优化的点,将多个文件合并成了一个文件,减少了浏览器的请求数而提升网站的访问速度。

项目地址:https://github.com/trullock/NUglify

8.OpenXmlPowerTools

Open XML PowerTools提供了使用Open XML文档(DOCX,XLSX和PPTX)编程的接口。它基于并扩展了Open XML SDK的功能。

它支持以下场景:

将DOCX / PPTX文件拆分为多个文件。

将多个DOCX / PPTX文件合并为一个文件。

使用XML中的数据填充DOCX模板中的内容。

DOCX高保真转换为HTML / CSS。

将HTML / CSS高保真转换为DOCX。

使用正则表达式搜索和替换DOCX / PPTX中的内容。

管理跟踪修订,包括检测跟踪修订并接受跟踪修订。

在DOCX / PPTX文件中更新图表,包括更新缓存的数据以及嵌入式XLSX。

比较两个DOCX文件,生成带有修订跟踪标记的DOCX,并允许检索修订列表。

从DOCX文件中检索指标,包括所用样式的层次结构,所用语言和所用字体。

使用比直接编写标记简单得多的代码来编写XLSX文件,包括一种流方法,该方法可以编写具有数百万行的XLSX文件。

从电子表格中提取数据(以及格式化)。

项目地址:https://github.com/OfficeDev/Open-Xml-PowerTools

9.Svg

没错,库的名字就叫svg,顾名思义,它是一个svg图形操作库,通过它便能轻松实现在.NET中生成和操作svg图形文件以及字节流。

项目地址:https://github.com/vvvv/SVG

10.TimeZoneConverter

一个轻量级的Windows标准时区与IANA和Rails时区名称之间快速转换的帮助库。如:

string tz = TZConvert.WindowsToIana("Eastern Standard Time");// result:  "America/New_York"

项目地址:https://github.com/mj1856/TimeZoneConverter

11.RssSyndication

RSS订阅接口的C#实现库,可轻松帮你实现RSS订阅接口。

项目地址:https://github.com/shawnwildermuth/RssSyndication

12.Z.EntityFramework.Plus.EFCore

EF的性能问题一直以来经常被人所吐槽,究其原因在于“复杂的操作在生成SQL阶段耗时长,且执行效率不高”,但并不是没有办法解决,而Z.EntityFramework.Plus.EFCore的存在就是为了解决各种EF性能问题的一个三方库,由zzzproject组织出品,必然是精品的库!通过必备功能扩展了DbContext:包括过滤器,缓存,提前查询,批量操作等EF扩展功能。

项目地址:https://github.com/zzzprojects/EntityFramework-Plus

13.SharpCompress

用于.NET Standard 2.0、2.1和NET 4.6的纯C#文件压缩操作库,支持unrar, un7zip, unzip, untar unbzip2, ungzip, unlzip,并且具有只读读取和文件随机访问API。 实现了对zip / tar / bzip2 / gzip / lzip的写支持。

项目地址:https://github.com/adamhathcock/sharpcompress

14.DnsClient

一个非常高性能的dnslookup的C#实现库,方便在C#代码中实现对DNS的各种查询操作。

项目地址:https://github.com/MichaCo/DnsClient.NET

15.AngleSharp

AngleSharp是基于.NET(C#)开发的专门解析HTML源码的DLL组件。根据HTML的DOM结构操作HTML,整个DOM已传输到逻辑类结构中。这种结构可以更好的操作DOM元素。且AngleSharp的性能优于HtmlAgilityPack。

AngleSharp还带来了一些非常有用的扩展方法,它们跟jQuery和JavaScript中的用法类似。 使用命名空间AngleSharp可以访问Html,Css,Attr或Text等方法。 这些方法向给定的IHtmlCollection一样在给定的IEnumerable <IElement>上运行。 目的很简单:轻松修改给定的DOM元素。此插件最大的优势:支持输出Javascript、Linq语法、ID和Class选择器、动态添加节点。

项目地址:https://github.com/AngleSharp/AngleSharp

16.HtmlSanitizer

可用于防止XSS攻击的HTML净化器,如何让前台用户可以提交HTML数据而又不被脚本攻击呢?HtmlSanitizer就是一个非常好的解决方案:设置不危险的“标签、属性”白名单,把所有不在白名单中的“标签、属性”全部干掉。

项目地址:https://github.com/mganss/HtmlSanitizer

17.ObjectsComparer

一个对象比较器,有时候项目中会有两个对象比较里面哪些字段不一样,而不是简单地equal或==比较,这就比较麻烦,自己老老实实一个一个字段去判断显得也很繁琐,而ObjectsComparer则是帮助你自动实现两个对象里面每个字段的逐一对比,甚至还会帮你生成差异结果告诉你某个字段值从什么变化成了什么。

比较复杂对象的情况很普遍。 有时对象可以包含嵌套元素,或者某些成员应从比较中排除(自动生成的标识符,创建/更新日期等),或者某些成员可以具有自定义比较规则(相同数据,但格式不同,例如电话号码)。 开发这种小型框架是为了解决此类问题。

简而言之,对象比较器是对象到对象的比较器,它允许逐个成员地递归比较对象,并为某些属性,字段或类型定义自定义比较规则。

项目地址:https://github.com/ValeraT1982/ObjectsComparer

18.EFCoreSecondLevelCacheInterceptor

EF二级缓存实现中间件,优化EF查询性能,支持Redis和内存作为缓存介质。

项目地址:https://github.com/VahidN/EFCoreSecondLevelCacheInterceptor

就先推荐这么多吧,如果你也有什么好用的冷门开源组件,也不妨分享一下吧!提高生产力,告别996!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK