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

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

更多參考

ChillCream\Strawberry Shake

Graph QL 資源池


用途:Logger

Serilog

  • 安裝:基於應用有所差異,請模拜Google大神。

  • 其他說明:宣稱可產製結構化的 log。

  • 補充:可以安裝 Seq 工具程式解析 log 檔。

Serilog.Sinks.MSSqlServer

NLog

  • 安裝:基於應用有所差異,請模拜Google大神。

  • 其他說明:原為 .NET Fx 設計也支援 .NET Core,若已慣用可以延用。 若是新用戶建議使用 Serilog


用途:CSS Framework

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 Components for the web


CSS Animation

BlazorAnimation

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.AspNetCore

關於 Swagger 評估與試用紀錄二 for .NET6
關於 Swagger 評估與試用紀錄一 for .NET5

用途: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

  • 說明:已評估已通過試用。


用途:Web上傳檔案

ASP.NET Core Blazor檔案上傳

用途:Web下載檔案

ASP.NET Core Blazor檔案下載

BlazorDownloadFile

用途:產生Excel檔(xlsx)

ClosedXML

ClosedXML.Report

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

用途:RDLC report

ReportViewer Core

  • 安裝:Install-Package ReportViewerCore.NETCore

  • 注意1:.NET Core 官方尚不直接支援 RDLC report 但不反對第三方支援。

  • 注意2:故在 .NET Core 環境下 RDLC report 無法預覽,實務上現在瀏覽器對 PDF 送印成熟又好用故直接把 RDLC 轉成 PDF 就有預覽效果。

  • 說明:已評估已試用。

用途:產生 PDF

WkHtmlToPdf-DotNet

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

DocX

用途:產生OpenXML, docx/xlsx/pptx/pdf 檔

Open XML SDK

用途:WYSIWYG / Rich Text Editor

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

用途:Send Email

MailKit

FluentEmail

用途: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

  • 其他說明:

    • 適合用於前端,於BlazorServerAppBlazorWasmApp皆有效。

    • 輕量級的Message Bus,只能用在 Blaozr 元件之間的非同步訊息傳遞。

    • 可與 <MudSnackbar/> 搭配使用,一個傳遞非同步訊息;一個顯示非同步訊息。

    • 適用範圍在單一 Blazor Server App 系統內。跨多系統的大規模訊息傳遞還是要靠RabbitMQMassTransit 這類專門的軟體服務。

    • 試用心得:若只需 notification 功能的話本人強烈推薦,比 MediatR 易用也好用。

    • 小技巧:註冊成 Singleton 也可以通。

MassTransit

MediatR

用途:產生 JWT (JSON Web Tokens)

jose-jwt

用途:Short Unique Identifier (Short Identity)

Hashids

用途:Object Mapper

Mapster

用途:Graph (圖表)

Blazor-ApexCharts

Plotly.Blazor

Blazor.C3jsChart

ChartJs.Blazor

用途:Canvas / WebGL / 繪圖

Excubo.Blazor.Canvas

Blazor.Extensions.Canvas

Blazorex

用途: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

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

BarcodeLib 試用紀錄

BarcodeLib 試用紀錄

QRCoder


用途:影像處理

.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 尚無商用收費。 從文件來看指令有些低階不易用。

已通過評估。未試用。


ViewerJsBlazor

VenoBox 2

  • 說明:為成熟且受歡迎的 Image Viewer 模組,然未有 Blaozr 版本。 幾年前用過舊版(for Bootstrap 3網頁的專案開發)非常滿意,故個人留存參考。

  • 說明2:已評估未試用。留存看看或許未來會有人出 Blazor 版本。

Work with images in ASP.NET Core Blazor

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

BlazorVideoPlayer

用途:Job Scheduler

Background tasks with hosted services in ASP.NET Core

Quartz.NET/Quartz.AspNetCore

Coravel

FluentScheduler

用途:Zip

以下為 Zip 候選

用途:Diff

Blazor Text Diff

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 類別。

  • 其它:已過評估,通過初步試用。

  • 試用紀錄

Reinforced.Typings 試用紀錄

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