開源專案是眾多組織與個人分享的元件或專案,作者付出的心血我們是無法體會的,所以首先大家要心存感激、尊重。請嚴格遵守每個專案的開源協議後再使用。尊重智慧財產權,共建和諧開源社群。
以下開源專案(含元件),從網路蒐集,後期會不斷補充。
- 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郵件庫傳送郵件。
開源地址:https://github.com/lukencode/FluentEmail
- Dapper
Dapper是一個簡單的.NET物件對映器,在速度方面具有"King of Micro ORM"的頭銜,幾乎與使用原始的ADO.NET資料讀取器一樣快。ORM是一個物件關係對映器,它負責資料庫和程式語言之間的對映。Dapper通過擴充套件IDbConnection提供一些有用的擴充套件方法去查詢您的資料庫。
開源地址:https://github.com/DapperLib/Dapper
- 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。
開源地址:GitHub https://github.com/dotnetcore/FreeSql
Gitee https://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框架。
官網: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
- EFCore.BulkExtensions
EFCore.BulkExtensions 是 .NET Core 開發的,針對EFCore進行擴充套件的高效能批量操作元件。支援批量插入(Insert)、批量更新(Update)、批量刪除(Delete)和讀取操作。目前該框架支援SqlServer和Sqlite。
SqlServer批量插入是通過SqlBulkCopy類操作,大資料操作的時候效能非常不錯。
測試結果:
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()來實現部分刪除和部分更新。
- 支援多資料庫
GitHub地址:https://github.com/yangzhongke/Zack.EFCore.Batch/blob/main/README_CN.md
- NLog
NLog是一個靈活和免費的日誌平臺,適用於各種.NET平臺,包括.NET Standard。NLog使寫入多個目標變得容易(資料庫、檔案、控制檯)並動態更改日誌記錄配置。
官 網:https://nlog-project.org/?r=redirect
原始碼下載:https://nlog-project.org/download
- Log4.NET
log4net庫是Apache log4j框架在Microsoft.NET平臺的實現,是一個幫助程式設計師將日誌資訊輸出到各種目標(控制檯、檔案、資料庫等)的工具。
官 網:http://logging.apache.org/log4net/index.html
開源地址:https://github.com/apache/logging-log4net/
- Serilog
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
- NPOI
開源高效能Office操作元件,不依賴Office。可以操作Excel、Word。
開源地址:https://github.com/topics/npoi
https://github.com/dotnetcore/NPOI
- ExcelReport【國產】
ExcelReport是一個Excel模板渲染引擎。 它基於關注點分離的理念,將資料與表格樣式、字型格式分離。
其中模板承載的表格樣式、字型格式在視覺化的情況下編輯。開發人員只需要繫結資料與目標標籤的對應關係。ExcelReport就可以以資料驅動的方式渲染出目標報表。
模組組成
- ExcelReport負責報表的渲染邏輯。
- ExcelReport.Driver為ExcelReport提供了操作Excel文件的抽象介面。
- ExcelReport.Driver.NPOI是使用NPOI對ExcelReport.Driver的實現。支援xls、xlsx兩種格式的Excel文件。
- ExcelReport.Driver.CSV是針對csv格式的Excel文件對ExcelReport.Driver的實現。
渲染模型
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
- 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
- CacheManager
CacheManager是用C#編寫的.NET的開源快取抽象層。它支援各種快取提供程式並實現許多高階功能。支援.NET4.5、NET Standard2.0及以上版本。
CacheManager包的主要目標是使開發人員更容易處理甚至非常複雜的快取場景。使用CacheManager,可以實現多層快取,例如在分散式快取前面的程式內快取,只需幾行程式碼。
CacheManager不僅僅是一個介面,它統一了各種快取提供程式的程式設計模型,這將使以後在專案中更改快取策略變得非常容易。它還提供其他功能,如快取同步、併發更新、序列化、事件、效能計數器。開發人員只有在需要時才可以選擇使用這些功能。
GitHub 地址:https://github.com/MichaCo/CacheManager
該專案已經很久沒有更新了,是功能已經穩定還是其他原因,未知。
- Autofac
Autofac是構建於.NET之上的一個易於使用的IoC容器。用於.NET Core、ASP.NET Core、.NET Framework 4.5.1+以及Windows應用程式。它管理類之間的依賴關係,以便應用程式在規模和複雜性增長時易於更改。這是通過將常規的.NET類作為元件來實現的。
- Unity
- Castle Windsor
- 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