.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

張傳寧 發表於 2021-06-20
.Net

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

以下開源專案(含元件),從網路蒐集,後期會不斷補充。

7、Email 元件
  • FluentEmail

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

FluentEmail是一款在GitHub上開源免費的支援.Net和.Net Core郵件傳送元件。

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

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

6、ORM元件
  • Dapper

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

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

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

                 https://dapper-tutorial.net/

  • FreeSql【國產】

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

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。

官       網:http://freesql.net

開源地址:GitHub https://github.com/dotnetcore/FreeSql    

                  Gitee https://gitee.com/FreeSql/FreeSql-ORM

  • SqlSugar【國產】

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

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

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

  • EFCore.BulkExtensions

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

SqlServer批量插入是通過SqlBulkCopy類操作,大資料操作的時候效能非常不錯。

測試結果:

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

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()來實現部分刪除和部分更新。
  • 支援多資料庫

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

GitHub地址:https://github.com/yangzhongke/Zack.EFCore.Batch/blob/main/README_CN.md

5、日誌元件
  • NLog

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

NLog是一個靈活和免費的日誌平臺,適用於各種.NET平臺,包括.NET Standard。NLog使寫入多個目標變得容易(資料庫、檔案、控制檯)並動態更改日誌記錄配置。

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

原始碼下載:https://nlog-project.org/download

  • Log4.NET

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

log4net庫是Apache log4j框架在Microsoft.NET平臺的實現,是一個幫助程式設計師將日誌資訊輸出到各種目標(控制檯、檔案、資料庫等)的工具。

官       網:http://logging.apache.org/log4net/index.html

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

  • Serilog

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

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

4、Office 操作元件
  • NPOI

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

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

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

                 https://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:輸出檔案

開源地址: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

3、快取元件
  • 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

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

 

  • CacheManager

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

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

CacheManager不僅僅是一個介面,它統一了各種快取提供程式的程式設計模型,這將使以後在專案中更改快取策略變得非常容易。它還提供其他功能,如快取同步、併發更新、序列化、事件、效能計數器。開發人員只有在需要時才可以選擇使用這些功能。

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

 

GitHub 地址:https://github.com/MichaCo/CacheManager

該專案已經很久沒有更新了,是功能已經穩定還是其他原因,未知。

2、IOC元件
  • Autofac

.NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件

Autofac是構建於.NET之上的一個易於使用的IoC容器。用於.NET Core、ASP.NET Core、.NET Framework 4.5.1+以及Windows應用程式。它管理類之間的依賴關係,以便應用程式在規模和複雜性增長時易於更改。這是通過將常規的.NET類作為元件來實現的。

  • Unity
  • Castle Windsor
1、其他元件
  • 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