Blazor NuGet套件/插件整理
適用於 .NET5 的 Blazor 插件。於 .NET Fx 可用的插件到了 .NET Core 不見得可用。
用途:JSON/YAML Serializer
System.Text.Json.JsonSerializer 類別
Microsoft 為 .NET Core 設計的 JsonSerializer 。
請取代 Newtonsoft.Json 。
YamlDotNet
YamlDotNet is a YAML library for netstandard and other .NET runtimes.
YAML 比 JSON 更簡短有力的序列化規格。
其他:已評估,已試用。
用途:Dynamic Expression 動態表達式
用於動態計算。就是 eval, apply。interpreter, 直譯簡單的數學計算。
Dynamic Expresso is an interpreter for simple C# statements...
底層應該是 Expression.Dynamic 方法。
用於動態計算。直譯簡單的數學計算。如:
5 + 2 * 8 / (80 + 9.9)
"Hello" + " " + "world!"
DateTime.Now.AddDays(30)
new DateTime(2020, 2, 13)
string.Format("My name is {0}. Today is {1}", "R2-D2", DateTime.Now.ToShortDateString())
已通過評估。已通過試用。
試用紀錄:
Dynamic Expresso 試用紀錄dynamic expression, 動態運算式, 動態表達式,用途:DB Access
Microsoft.Data.SqlClient
Microsoft 為 .NET Core 重新設計的 SqlClient。
指令與 System.Data.SqlClient 幾乎一樣。
請取代 System.Data.SqlClient,其未來將不再更新。
Dapper
安裝:
PM> Install-Package Dapper
其他說明:提供簡易且高彈性的 SQL Query 查詢。
為 Entity Framework Core 的替代品。
Dapper 最新的版本改自 MyGet\Dapper 下載,其為付費版。
Dapper.Contrib
安裝:
PM> Install-Package Dapper.Contrib
其他說明:提供對單一Table的 CRUD。
※限制條件:Table 必需要有PK,且PK只能一個欄位。複合欄位PK會無作用!
久未更新已淘汰。
Dapper Plus
安裝:
PM> Install-Package Z.Dapper.Plus
其他說明:有大批量資料交易可以考慮使用,因為 Dapper 本身速度並不快。
※注意:非免費,只可試用1個月。
RepoDB - a hybrid ORM Library for .NET.
RepoDB is an open-source .NET ORM library that bridges the gaps of micro-ORMs and full-ORMs. It helps you simplify the switch-over of when to use the BASIC and ADVANCE operations during the development.
為 Dapper 替代方案之一。
因應 Dapper 將走向收費模式預留方案之一。也將考慮回頭使用 EF Core。
已通過評估。考慮優先採用因為較全面性。未試用。
用途:GraphQL
ChillCream\Hot Chocolate
說明:實作 GraphQL Server in .NET 套件與相關資源。
說明:已通過試用。
更多參考
ChillCream\Strawberry Shake
說明:實作 GraphQL Client in .NET 套件與相關資源。
說明:已通過試用。
Graph QL 資源池
用途:Logger
Serilog
安裝:基於應用有所差異,請模拜Google大神。
其他說明:宣稱可產製結構化的 log。
補充:可以安裝 Seq 工具程式解析 log 檔。
Serilog.Sinks.MSSqlServer
安裝:
Install-Package Serilog.Sinks.MSSqlServer
其他說明:為
Serilog
插件,可將 Log 轉存入SQL Server。
NLog
安裝:基於應用有所差異,請模拜Google大神。
其他說明:原為 .NET Fx 設計也支援 .NET Core,若已慣用可以延用。 若是新用戶建議使用 Serilog。
用途:CSS Framework
MudBlazor
安裝:
PM> Install-Package MudBlazor
為 MudBlazor 的延伸,但還沒到非用不可的地步。一些擴增的元件是可以自己做的。
已通過評做。已通過試用。
Material Design components for Blazor
比 MudBlaozr 更早就實作的版本,可惜被 MudBlazor 超越了。
已通過評估。未試用。
Material.Blazor
安裝:
PM> Install-Package Material.Blazor
說明:新作品,自 .NET8 開始支援。
已通過評估。未通過試用。
評估紀錄,on 2024/1/24,版本為 5.0.2,結論:文件與成熟度仍不足。
Material Web
說明: Material web components is a UI toolkit to build customizable and accessible web applications. Material 3 is the latest version of Google's open-source design system.
評估中... 應該可以做為輔助...
Material Components for the web
說明:Material Components for the web helps developers execute Material Design. Developed by a core team of engineers and UX designers at Google, these components enable a reliable development workflow to build beautiful and functional web projects.
評估中... 應該可以做為輔助...
CSS Animation
BlazorAnimation
安裝:
PM> Install-Package BlazorAnimation
說明:以
Animate.css
為基底開發。已評估,已試用,可應用。
Animate.css
安裝:
npm install animate.css --save
說明:為傳統的 CSS Library;提供常用的 CSS 過場動畫。
說明2:適用於單一頁面內的動畫展示,比如:資料交易。
已試用,可應用。
AOS
說明:Animate On Scroll Library。為傳統的 CSS Library;
說明2:適用於長網頁的應用,比如:官方首頁。
已評估,未試用。
用途:Swagger - API Documentation
NSwag.AspNetCore
功能與 Swashbuckle 差不多。
NSwag 在後端、前端都有支援。
說明:已應用。
Swashbuckle.AspNetCore
功能與 NSwag 差不多。
不過 Swashbuckle 在前端尚不支援。
說明:已應用。
用途:Fluent HttpClient
因為 HttpClient 很難用,就出現了相應的方案來降低 HttpClient 叫用 REST API 的工作量。方法之一重新設計且加入 Fluent interface 特性。
Flurl is a modern, fluent, asynchronous, testable, portable, buzzword-laden URL builder and HTTP client library for .NET.
很妙的設計。
說明:已通過評估未試用。
用途:ApiClient \ turns REST API into HttpClient
因為 HttpClient 很難用,就出現了相應的方案來降低 HttpClient 叫用 REST API 的工作量。方法之二先組織 API 的存取對應介面。
Refit
The automatic type-safe REST library for .NET Core, Xamarin and .NET
Refit is a library heavily inspired by Square's Retrofit library, and it turns your REST API into a live interface.
網站:Refit
說明:已評估已通過試用。
參考:Refit 使用紀錄
用途:Web上傳檔案
ASP.NET Core Blazor檔案上傳
說明:微軟提供的方法。
用途:Web下載檔案
ASP.NET Core Blazor檔案下載
說明:微軟提供的方法。
BlazorDownloadFile
安裝:
PM> Install-Package BlazorDownloadFile
用途:產生Excel檔(xlsx)
ClosedXML
安裝:
PM> Install-Package ClosedXML
其他說明:相依 Open XML SDK 開發。可做為 EPPlus 的替代品。
ClosedXML.Report
安裝:
PM> Install-Package ClosedXML.Report
說明:為 ClosedXML 的功能延伸套件。用來製作 Excel (套表)報表。
已試用。可應用。
ExcelDataReader
安裝:
PM> Install-Package ExcelDataReader
說明:Lightweight and fast library written in C# for reading Microsoft Excel files (2.0-2021, 365).
優點:較低階、速度較快。可以自動判斷是 xls 或 xlsx,(不像NPOI要人工判斷)。適合用於以 EXCEL 交換數據,匯入數十萬大批量規模的數據情境。
缺點:就是指令 UX 比較差跟 NPOI 差不多,不過比 NPOI 易用一些。
試用心得:速度明顯比 ClosedXML 快。資料來源的格式要嚴謹,這是低階指令的宿命很容易格式偏差就出例外。
已試用。可應用。
EPPLus
安裝:
PM> Install-Package EPPlus
其他說明:從第5版開始商用需收費。
用途:RDLC report
ReportViewer Core
安裝:
Install-Package ReportViewerCore.NETCore
注意1:.NET Core 官方尚不直接支援 RDLC report 但不反對第三方支援。
注意2:故在 .NET Core 環境下 RDLC report 無法預覽,實務上現在瀏覽器對 PDF 送印成熟又好用故直接把 RDLC 轉成 PDF 就有預覽效果。
說明:已評估已試用。
用途:產生 PDF
WkHtmlToPdf-DotNet
安裝:
Install-Package Haukcode.WkHtmlToPdfDotNet
方法:html to PDF
原始版本是: DinkToPdf。
PDF.js
用途:於Web應用可實作出
PDF Viewer
。說明:為 JavaScript 函式庫,於 Blazor 平台可搭配 IJSRuntime 介面整合實作
PdViewer
。
Print.js
用途:於Web應用可實作
Print PDF
能力。說明:為 JavaScript 函式庫,於 Blazor 平台可搭配 IJSRuntime 介面整合實作
Print PDF
能力。
PDFsharp & MigraDoc
PDFsharp is the Open Source .NET library that easily creates and processes PDF documents on the fly from any .NET language. The same drawing routines can be used to create PDF documents, draw on the screen, or send output to any printer.
MigraDoc Foundation the Open Source .NET library that easily creates documents based on an object model with paragraphs, tables, styles, etc. and renders them into PDF or RTF.
說明:未試用。似乎幾年前(2013)很受歡迎,中間有數年未更新最近(2019)才更新。
用途:產生Word檔(docx)
SharpDocx
安裝:
PM> Install-Package SharpDocx
其他說明:已通過試用 ok。
試用結論:設計用於套用Docx範本檔,這符合大部份的應用情境。不適合產生全新的檔案。
TemplateEngine.Docx
安裝:
PM> Install-Package TemplateEngine.Docx
其他說明:已評估,可試用。或許可轉存pdf檔?
DocX
安裝:
PM> Install-Package DocX
其他說明:之前於 .Net Fx 版本用過 ok。 另有商用版 Xceed Words for .NET。
其他說明2:DocX 再試用後發現只支援 .NET Framerowk 4 與 .NET5。
用途:產生OpenXML, docx/xlsx/pptx/pdf 檔
Open XML SDK
留參文件:Category: Open XML
說明:之前於 .Net Fx 版本用過 ok。於 .NET5 版本未用過。
其他說明:.NET6 評估後可用,但指令太低階很難用。除非沒得選擇不建議使用。
用途:WYSIWYG / Rich Text Editor
說明1:與 Blazored TextEditor 的目的一樣。為較新的重構版支援 .NET6 。
其他:未評估。但若有需求則優先用這版,除非 Blazored TextEditor 的 bug 已解。
Blazored TextEditor
說明1:Rich Text Editor for Blazor applications - Uses Quill JS
說明2:不能算是傳統的 html 為底的文字編輯器。經試用與觀察其內部存的是 Json 格式的 html 文件,支援匯出匯入 html content,也支援匯入匯出 Json content 格式的文章。官方說此 Json 格式的文章可用於程式控制文件內容。
其他:已評估。已應用。
發現 bug: 若在同一 page 使用二個以上會衝突,查因 element id 相同。
用途:Markdown
Markdig
安裝:
PM> Install-Package Markdig
其他:已評估。未試用。
用途:Send Email
MailKit
安裝:
PM> Install-Package MimeKit PM> Install-Package MailKit
FluentEmail
All in one email sender for .NET and .NET Core
說明:基底之一也是 MailKit。
其他:已通過評估。未試用。
用途:FTP/SFTP/FTPS
FluentFTP
安裝:
PM> Install-Package FluentFTP
注意:有支援 FTPS (FTP with SSL/TLS)。
注意:不支授 SFTP (FTP with SSH)。
其他:已通過評估。未試用。
SSH.NET
安裝:
PM> Install-Package SSH.NET
注意:有支援 SFTP, Secure FTP, (FTP with SSH)。
注意:不支援傳統 FTP 與 FTPS。
其他:已通過評估。未試用。
用途:Message Bus
BlazorComponentBus
安裝:
PM> Install-Package BlazorComponentBus
其他說明:
適合用於前端,於
BlazorServerApp
與BlazorWasmApp
皆有效。輕量級的Message Bus,只能用在 Blaozr 元件之間的非同步訊息傳遞。
可與
<MudSnackbar/>
搭配使用,一個傳遞非同步訊息;一個顯示非同步訊息。適用範圍在單一 Blazor Server App 系統內。跨多系統的大規模訊息傳遞還是要靠
RabbitMQ
、MassTransit
這類專門的軟體服務。試用心得:若只需 notification 功能的話本人強烈推薦,比 MediatR 易用也好用。
小技巧:註冊成 Singleton 也可以通。
MassTransit
安裝:
PM> Install-Package MassTransit
說明心得1:如同其名是個:訊息轉運站。它不留存訊息,只做訊息中轉,適用於格局大的訊息交換系統,適用於以雲端微服務導向的系統,實作微服務之間的事件通訊 (整合事件),Communication in a microservice architecture、Asynchronous message-based communication。
試用心得2:因為訊息都在背景運轉,若要將訊息送到前端需再搭配像
BlazorComponentBus
這類元件才行。試用心得3:可與 RabbitMQ 、Azure Service BusAmazon SQS 等搭配使用,把訊息中轉到更遠的、性質不同的、或異質系統的地方。也就是說若訊息路途不遠就沒有必需非得導入不可。
說明:已試用,可應用。
MediatR
安裝:
PM> Install-Package MediatR
其他說明:可以實作Notification、CQRS Pattern。很受觀迎的CQRS實作技術。
試用心得:若非要導入 CQRS Pattern,並不建議使用 ( on 2023/5/2)。
試用心得優點:適合用於後端,如與 WebApi 搭配使用。
試用心得缺點:可惜其 Notification Publisn 在 WebAssembly 前端無效。
用途:產生 JWT (JSON Web Tokens)
jose-jwt
安裝:
PM> Install-Package jose-jwt
用途:Short Unique Identifier (Short Identity)
Hashids
說明:generate short unique ids from integers. Hashids is a small open-source library that generates short, unique, non-sequential ids from numbers.
說明:可應用於生成如
YouTube
的短網址。可俱保密性、識別性、無順序性,當然時效也不可太長。說明:已通過試用,可用也易用。
用途:Object Mapper
Mapster
安裝:
PM> Install-Package Mapster
其他說明:依測試結果項項比 AutoMapper 更好更易用。
用途:Graph (圖表)
Blazor-ApexCharts
安裝:
PM> Install-Package Blazor-ApexCharts
說明:有完整的範例與使用說明,非常讚。
其他說明:已通過評估,但是在今天(2023/5/23)版本仍是 0.9.21-beta 版故保留。等成為正式版再用看看。
其他說明2:試著應用看看,越用越好用。
Plotly.Blazor
安裝:
PM> Install-Package Plotly.Blazor
說明:已評估一輪,暫時保留。
Blazor.C3jsChart
說明:C3js component for Blazor.
說明2:未評估未試用。
ChartJs.Blazor
安裝:
PM> Install-Package ChartJs.Blazor.Fork
其他說明:為 Chart.js 的 wrapper。必需同時安裝 Chart.js 模組才會有效,請參考官方安裝說明。
其他說明2:久未更新...所以留參。
用途:Canvas / WebGL / 繪圖
Excubo.Blazor.Canvas
安裝:
Install-Package Excubo.Blazor.Canvas
說明2:已評估已試用。
Blazor.Extensions.Canvas
安裝:
Install-Package Blazor.Extensions.Canvas
說明:Both Canvas 2D and WebGL are supported.
說明2:已評估未試用。
Blazorex
安裝:
Install-Package Blazorex
說明:直接支援 .NET 7。
說明:未評估完成,未試用。
用途:Flux/Redux
Fluxor
安裝:
PM> Install-Package Fluxor PM> Install-Package Fluxor.Blazor.Web PM> Install-Package Fluxor.Blazor.Web.ReduxDevTools
其他說明:可以與 Redux DevTools 整合。比較適用於 Blazor WASM App。安裝組態也請參考官方文件或模拜 Google 大神。
用途:AOP/Aspect
AspectInjector
安裝:
PM> Install-Package AspectInjector
其他說明:一套不輸給 SheepAspect 的AOP方案。有支援 .NET5,基底是 FluentIL。
說明:FluentIL is an emitting helper library that can help you.
說明:為 AspectInjector 的底層。
其他說明:已通過評估,未試用。
Fody
說明:似乎是很受歡迎的 Aspect 方案。似乎只是個平台而已?
其他說明:已通過評估,未試用。
用途:QR Code 掃描
Html5-QRCode
安裝:直接引用
<script src="/lib/html5-qrcode.min.js"><script>
應用目的:在手機上掃描 QR Code 並進一步應用。
其他說明1:經測試只要是支援 html5 的browser就能使用。原本預計用於PWA模式。
其他說明2:此模組不只可以掃描QR Code 其他常用 Barcode 也支援,詳由請參考官網。
用途:產生 Barcode/QRCode
NetBarcode
安裝:
PM> Install-Package NetBarcode
說明:Barcode generation library written in .NET Core compatible with .NET Standard 2.
也可以產生Base64 Image。
其他說明:已通過評估,已應用。
BarcodeLib
安裝:
PM> Install-Package BarcodeLib
說明:已通過評估,已試用。若能產生base64 image可以加分。
BarcodeLib 試用紀錄
QRCoder
安裝:
PM> Install-Package QRCoder
可產生 base64 image,加分。
說明:已通過評估,已應用。
用途:影像處理
.NET 內附的影像處理類別。可以處理簡單的影像處理,如縮放等。 但只能在 windows 平台執行;在 linux 無效。不過一般來說也夠用了。
實作部署到 IIS 後也無法執行!
ImageSharp is a new, fully featured, fully managed, cross-platform, 2D graphics API. ImageSharp is licensed under the Six Labors Split License, Version 1.0 For all other scenarios, Works in Source or Object form are licensed to You under the Six Labors Commercial License which may be purchased by visiting https://sixlabors.com/pricing/.
是純 .NET 程式碼,使用也容易,所以在 windows 與 linux 都可執行。
授權方式採用 Six Labors Split License Version 1.0 分裂式授權,若公司收益有1百萬美元以上就需付費。
已通過評估。未試用。
SkiaSharp is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library (skia.org). It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.
授權方式是 MIT 可以安心使用。不過若要在 linex 執行可能要加掛SkiaSharp.NativeAssets.Linux。
已通過評估。未試用。
The .NET library for ImageMagick: Magick.NET
ImageMagick is a powerful image manipulation library that supports over 100 major file formats (not including sub-formats). With Magick.NET you can use ImageMagick in your C#/VB.NET/.NET Core application without having to install ImageMagick on your server or desktop.
授權方式是 Apache License 2.0 尚無商用收費。 從文件來看指令有些低階不易用。
已通過評估。未試用。
用途:Image Viewer | Image Gallery | 秀圖片
ViewerJsBlazor
安裝:
PM> Install-Package ViewerJsBlazor
說明:已評估已應用。
VenoBox 2
說明:為成熟且受歡迎的 Image Viewer 模組,然未有 Blaozr 版本。 幾年前用過舊版(for Bootstrap 3網頁的專案開發)非常滿意,故個人留存參考。
說明2:已評估未試用。留存看看或許未來會有人出 Blazor 版本。
Work with images in ASP.NET Core Blazor
說明1:微軟官方解法
說明2:未評估未試用。
用途:輪播器(Carousel)
Swiper
說明:The Most Modern Mobile Touch Slider
說明2:已出到第10版了,應該是成熟且受歡迎的一套方案。
已評估,未試用。
用途:照像 (take a photograph)
jslib-html5-camera-photo
安裝:
npm install --save jslib-html5-camera-photo
或直接引用
<script src="/lib/jslib-html5-camera-photo.min.js"><script>
應用目的:在手機上照相並進一步應用。
其他說明:經測試只要是支援 html5 的browser就能使用。原本預計用於PWA模式。
用途:Video Player
Blazored Video
安裝:
PM> Install-Package Blazored.Video
說明:未評估,未試用。
BlazorVideoPlayer
安裝:
PM> Install-Package BlazorVideoPlayer
說明:未評估,未試用。
用途:Job Scheduler
Background tasks with hosted services in ASP.NET Core
說明:為微軟新設計的方法,採用
IHostedService
介面,適用於全客製化的排程應用。試用後可用於全客製化排程。
看好但未試用。
Quartz.NET/Quartz.AspNetCore
安裝:
PM> Install-Package Quartz.AspNetCore
其他說明:自 .NET Framework 改版而來為成熟產品。使用過 .NET Framework 版本很滿意但尚未用過 .NET Core 版本。
已通過評估,尚未試用。
Coravel
安裝:
PM> Install-Package Coravel
其他說明:為 .NET Core 原生應用。
其他說明2:已支援 Cron 方式排程,應該可實用。
其他說明3:另有付費的 Coravel Pro 版。
試用後降評留參:再評估似乎不支援線上動態變更排程。這與實務不合。 還是可以應用在靜態排程,比如在 UI 觸發背景長程執行。在 UI 觸發背景定時每幾秒跑一次短批次工作。
FluentScheduler
其他說明:只支援到 .NET Standard 2 故只留參。
用途:Zip
說明:已通過評估,已應用。
應用範例:SharpZipLib 參考範例
以下為 Zip 候選
用途:Diff
Blazor Text Diff
說明1:A component to display side by side text diff using the DiffPlex library
說明2:文字差異與視覺化呈現。
其它:未評估完成。
DiffPlex
說明1:DiffPlex is C# library to generate textual diffs.
說明2:文字差異與視覺化呈現。等同 JavaScript 版的 JsDiff。
其它:未評估完成。
用途:C# DTO to TypeScript
說明:You develop frontend applications with TypeScript and .NET Backend? You need Reinforced.Typings.
說明2: 支援用 MS Build 在編譯過程把 C# DTO 轉換成 TypeScript interface。一個檔案可有多個 DTO 類別。
其它:已過評估,通過初步試用。
試用紀錄
MTT
說明1:MTT generates TypeScript interfaces from .NET DTOs. because it uses a MSBUILD task and converts the code directly from the source.
說明2:直接用 MS Build 在編譯過程中把 C# DTO 轉換成 TypeScript interface,這很棒。但是一個檔案只能放一個 DTO 類別(有點囧)。
說明3:應用於 React 等 TypeScript 前端開發,以減少分別撰寫 server side 與 client side 的 DTO 的二份工作且可能發生不同步的冏況。
其它:已過評估,通過初步試用。
補充 on 2024-02-20: 評價較高;可惜久未更版,快過時了。
用途:Hot Swapping / Hot Plugging (DLL熱插拔)
說明:微軟的解法。
.NET Plugins
說明:未評估,未試用
軟體測試工具
Playwright 是一個端到端(E2E)測試框架,可用於測試 Web 應用程式。與 bUnit 不同,Playwright 可以模擬用戶在瀏覽器中與應用程式交互的行為。Playwright 支持多種瀏覽器,並提供了一組豐富的 API 來控制瀏覽器行為。
說明:適用於 Web App 自動化測試,介由操控 browser 操作 UI 模擬使用者使用行為。
說明:已通過評估,已試用ok。
bUnit 是一個用於測試 Blazor 應用程式的單元測試框架。它允許開發人員編寫單元測試來驗證 Blazor 組件的行為。bUnit 提供了一個模擬 Blazor 運行時的環境,使開發人員能夠隔離地測試組件,而不需要運行整個應用程式。
說明:適用於 Blazor 元件本身的單元測試。
說明:已通過評估。
Last updated