.NET Core/.NET5/.NET6 開源項目匯總1:常用必備組件

開源項目是眾多組織與個人分享的組件或項目,作者付出的心血我們是無法體會的,所以首先大家要心存感激、尊重。請嚴格遵守每個項目的開源協議後再使用。尊重知識產權,共建和諧開源社區。

以下開源項目(含組件),從網絡搜集,後期會不斷補充。

7、Email 組件
  • FluentEmail

.NET平台下提供了SmtpClient類工開發者用於編寫發送郵件的業務功能,該類能滿足大部分場景下的業務需求,但是使用起來稍微有點麻煩。 

FluentEmail是一款在GitHub上開源免費的支持.Net和.Net Core郵件發送組件。

FluentEmail功能強大,而且對不同場景的支持都有獨立的Nuget包,這種低耦合的拆分不僅使得依賴非常清晰,而且避免引入不需要的代碼,具體功能包含在以下的組件包中:

開源地址://github.com/lukencode/FluentEmail

6、ORM組件
  • Dapper

Dapper是一個簡單的.NET對象映射器,在速度方面具有”King of Micro ORM”的頭銜,幾乎與使用原始的ADO.NET數據讀取器一樣快。ORM是一個對象關係映射器,它負責數據庫和編程語言之間的映射。Dapper通過擴展IDbConnection提供一些有用的擴展方法去查詢您的數據庫。

開源地址://github.com/DapperLib/Dapper

                 //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/FreeSql    

                  Gitee //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框架。

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

GitHub://github.com/donet5/SqlSugar

Gitee://gitee.com/dotnetchina/SqlSugar

  • Overt.Core.Data【國產】

基於Dapper封裝的Linq表達式數據庫訪問驅動,內置自定義分庫,分表的實現。目前支持SqlServer、MySql、SQLite。

主要優勢:

  • 官方建議使用DDD領域驅動設計思想開發。
  • 支持多種數據庫,簡單配置添加鏈接的配置即可。
  • 多數據庫的支持。
  • 支持分表操作,自定義分表策略的支持。
  • 支持表達式方式編寫,減少寫Sql語句機械性工作。
  • 可對Dapper 進行擴展。
  • 性能依賴於Dapper 本身的性能,Dapper 本身是輕量級ORM ,官方測試性能都強於其他的ORM。

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

  • EFCore.Sharding【國產】

讀寫分離分庫分表一直是數據庫領域中的重難點,當數據規模達到單庫極限的時候,就不得不考慮分表方案。EF Core作為.NET Core中最為主流的ORM,用起來十分方便快捷,但是官方並沒有相應的Sharding支持,鄙人不才,經過一番摸索之後終於完成這個框架。

本框架旨在為EF Core提供Sharding(即讀寫分離分庫分表)支持,不僅提供了一套強大的普通數據操作接口,並且降低了分表難度,支持按時間自動分表擴容,提供的操作接口簡潔統一。

開源地址://github.com/Coldairarrow

  • EFCore.BulkExtensions

EFCore.BulkExtensions 是 .NET Core 開發的,針對EFCore進行擴展的高性能批量操作組件。支持批量插入(Insert)、批量更新(Update)、批量刪除(Delete)和讀取操作。目前該框架支持SqlServer和Sqlite。

SqlServer批量插入是通過SqlBulkCopy類操作,大數據操作的時候性能非常不錯。

測試結果:

GitHub地址://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地址://github.com/yangzhongke/Zack.EFCore.Batch/blob/main/README_CN.md

5、日誌組件
  • 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/index.html

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

  • Serilog

Serilog是.NET應用程序的診斷日誌庫。它易於設置,具有整潔的API,並在所有最近的.NET平台上運行。儘管它在最簡單的應用程序中也很有用,但Serilog對結構化日誌的支持在檢測複雜、分佈式和異步應用程序和系統時也很有用。

開源地址://github.com/serilog/serilog

  • Exceptionless

【Exceptionless】一詞的定義是:無異常。Exceptionless為您的JavaScript、Node、.NET Core、ASP.NET、Web API、WebForms、WPF、控制台和MVC應用程序提供實時錯誤報告。它將收集到的信息組織成簡單的可操作數據,這將幫助你的應用程序變得無異常!

開源地址://github.com/exceptionless/Exceptionless

4、Office 操作組件
  • NPOI

開源高性能Office操作組件,不依賴Office。可以操作Excel、Word。

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

                 //github.com/dotnetcore/NPOI

  • ExcelReport【國產】

ExcelReport是一個Excel模板渲染引擎。 它基於關注點分離的理念,將數據與表格樣式、字體格式分離。
其中模板承載的表格樣式、字體格式在可視化的情況下編輯。開發人員只需要綁定數據與目標標籤的對應關係。ExcelReport就可以以數據驅動的方式渲染出目標報表。

模塊組成

image.png
ExcelReport家族現在有四個成員。

  • ExcelReport負責報表的渲染邏輯。
  • ExcelReport.Driver為ExcelReport提供了操作Excel文檔的抽象接口。
  • ExcelReport.Driver.NPOI是使用NPOI對ExcelReport.Driver的實現。支持xls、xlsx兩種格式的Excel文檔。
  • ExcelReport.Driver.CSV是針對csv格式的Excel文檔對ExcelReport.Driver的實現。

渲染模型

image.png
Template:模板承載的表格樣式、字體格式、佔位標籤等。
Render:指定模板標籤與數據的關係。
Data:注入模板的數據。整個渲染過程也是數據驅動渲染的。
Output:輸出文件

開源地址://github.com/hanzhaoxin/ExcelReport

  • iTextSharp.LGPLv2.Core.Fix

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

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

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

                 //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或兩者的頁眉/頁腳。
  • 自動斷字和可配置斷字。

開源地址://github.com/xceedsoftware/docx

3、緩存組件
  • EasyCaching

EasyCaching是一個開源的緩存庫,它包含緩存的基本用法和一些高級用法,可以幫助我們更輕鬆地處理緩存!

核心功能:

  • 統一的抽象緩存接口
  • 多種常用的緩存Provider(InMemory,Redis,Memcached,SQLite)
  • 為分佈式緩存的數據序列化提供了多種選擇
  • 二級緩存
  • 緩存的AOP操作(able, put,evict)
  • 多實例支持
  • 支持Diagnostics
  • Redis的特殊Provider

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

GitHub://github.com/dotnetcore/EasyCaching

 

  • CacheManager

CacheManager是用C#編寫的.NET的開源緩存抽象層。它支持各種緩存提供程序並實現許多高級功能。支持.NET4.5、NET Standard2.0及以上版本。

CacheManager包的主要目標是使開發人員更容易處理甚至非常複雜的緩存場景。使用CacheManager,可以實現多層緩存,例如在分佈式緩存前面的進程內緩存,只需幾行代碼。

CacheManager不僅僅是一個接口,它統一了各種緩存提供程序的編程模型,這將使以後在項目中更改緩存策略變得非常容易。它還提供其他功能,如緩存同步、並發更新、序列化、事件、性能計數器。開發人員只有在需要時才可以選擇使用這些功能。

 

GitHub 地址://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組件,第三方組件封裝,第三方業務接口封裝,配套代碼生成模板,權限等組成。

開源地址://github.com/dotnetcore/Util

 


參考文獻:

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