跳過到頁腳內容
與其他組件的比較

MessagingToolkit 條碼庫與 IronBarcode 比較:C# 條碼庫比較

MessagingToolkit.Barcode 將其目標平台列為 Silverlight 5 和 Windows Phone 7。 兩者都已停產多年。 如果你的程式碼庫中已經有了這個函式庫,那麼問題不在於是否要替換它,而在於你還在等待什麼。

了解 MessagingToolkit.Barcode

MessagingToolkit.Barcode 是 Java ZXing 條碼庫的 .NET 移植版,並擴充了額外的訊息傳遞整合功能。 該庫於 2011 年左右啟動,並在 2012 年和 2013 年進行了積極的開發。其最終版本——1.7.0.2 版——於 2014 年發布。 GitHub 程式碼庫仍然可以訪問,但沒有任何活動:沒有提交,沒有問題回复,也沒有拉取請求審查。 該項目是被保存下來的,而不是被維護的。

該程式庫是為 .NET Framework 時代以及定義該時期的行動平台而設計的。 它透過基於實例的 API 提供條碼解碼和編碼,接受 System.Drawing.Bitmap 輸入,並傳回具有 .Text.BarcodeFormat 屬性的結果物件。 對於 2012 年在 Windows 上運行的 .NET Framework 4.x 應用程式來說,這種方法是實用且常用的。

作為 ZXing 的移植版本,MessagingToolkit.Barcode 沿用了該 Java 函式庫的底層解碼引擎,但在上面建立了自己的 API 介面和麵向訊息傳遞的擴充點。函式庫始終基於 .NET Framework 框架。 沒有發布 .NET Standard 目標,沒有添加 .NET Core 支持,2014 年版本之後也沒有任何更新。

MessagingToolkit.Barcode 的主要特性:

-最終發布年份: 2014 年,版本 1.7.0.2,之後未進行任何更新

  • ZXing 傳承: Java ZXing 函式庫的移植版,並新增了 .NET 特有的擴展 -基於實例的 API:每次操作都需要實例化 BarcodeDecoderBarcodeEncoder 對象
  • System.Drawing 依賴:接受並傳回 System.Drawing.Bitmap,這使得它在現代 .NET 中僅適用於 Windows。 -每次解碼呼叫只傳回一個結果:傳回一個結果物件(或 null),而不是一個集合。 -不支援 PDF:輸入僅限於點陣圖物件; 沒有本機文檔讀取 -不支援自動格式偵測:格式必須預先配置,或由函式庫僅從鏡像中偵測。 -停用的平台目標:列出 Silverlight 3、4 和 5; Windows Phone 7.0、7.5、7.8 和 8.0 的 NuGet 元數據 -沒有現代 .NET 目標框架名稱:無法在面向 .NET Core、.NET 5 或任何更高版本的專案中編譯

平台和維護記錄

MessagingToolkit.Barcode 的 NuGet 包元資料記錄了其預期目標。 下表中的每個條目都代表該庫開發時處於當前或接近當前狀態的平台:

平台 2026 年的狀況
Silverlight 3 已停止服務-瀏覽器插件已於2021年移除
Silverlight 4 已停止服務-瀏覽器插件已於2021年移除
Silverlight 5 已停止服務-瀏覽器插件已於2021年移除
Windows Phone 7.0 已停產-2014年停止支持
Windows Phone 7.5 已停產-2014年停止支持
Windows Phone 7.8 已停產-2014年停止支持
Windows Phone 8.0 已停產-2017年停止支持
.NET Framework 3.5 僅提供安全補丁,不包含新功能
.NET Framework 4.0 僅提供安全補丁,不包含新功能
.NET Framework 4.5 僅提供安全補丁,不包含新功能

該程式庫沒有與 .NET Core、.NET 5、.NET 6、.NET 7、.NET 8 或 .NET 9 相容的目標框架。面向這些運行時的專案在建置時會遇到失敗,因為該套件無法解析相容的框架名稱——這不是運行時警告,而是編譯錯誤。

了解 IronBarcode

IronBarcode 是一個用於 .NET 的商業條碼讀取和產生庫,由 Iron Software 開發和維護。 它透過靜態 API 模型運行:BarcodeReader.Read() 用於解碼,BarcodeWriter.CreateBarcode() 用於編碼,無需實例化的讀取器或寫入器物件。 該庫捆綁了自己的映像處理管道,並且不依賴 System.Drawing,因此可以相容於 Windows、Linux、macOS 和容器環境。

IronBarcode 接受多種輸入類型進行讀取:檔案路徑、物件、位元組陣列和 PDF 文件路徑。 傳回結果為集合而非單一可為空的對象,因此無需單獨配置即可處理多條碼影像。 格式偵測是自動的-此函式庫會根據影像內容識別條碼類型,而無需呼叫者事先指定。

對於生成,IronBarcode 從 BarcodeWriter.CreateBarcode() 傳回一個流暢的結果對象,該物件支援多種輸出格式,包括 PNG、JPEG、SVG、PDF 和 base64 編碼的字串。 該程式庫會定期更新,並積極發布新的 NuGet 版本。

IronBarcode的主要特點:

-靜態 API 設計: BarcodeReader.Read()BarcodeWriter.CreateBarcode() 不需要實例化對象 -跨平台:可在 Windows、Linux、macOS、Docker 容器和雲端函數上執行 -不依賴 System.Drawing:使用與所有現代 .NET 平台相容的內部影像管道 -多結果讀取:每次解碼呼叫都傳回一個集合,支援多條碼影像

  • PDF讀取:直接從PDF文件中讀取條碼,無需外部提取步驟 -自動格式偵測:無需呼叫方配置,即可從影像內容辨識條碼類型 -流暢的輸出格式:從單一結果物件儲存為 PNG、JPEG、SVG、PDF 或位元組數組 -主動維護:定期透過 NuGet 發布安全性修補程式和新功能 -商業許可:生產用途需要許可證密鑰; 在沒有試用模式下運行

功能比較

下表概述了 MessagingToolkit.Barcode 和IronBarcode之間的主要差異:

特點 MessagingToolkit.Barcode IronBarcode
最後更新時間 2014 2026(生效)
現代 .NET 支持 是的(.NET 6、7、8、9)
跨平台 否(僅限Windows系統) 是的(Windows、Linux、macOS)
PDF條碼讀取
自動格式偵測
主動安全補丁
商業支援 提供專業支援

詳細功能比較

特點 MessagingToolkit.Barcode IronBarcode
維護
最後更新時間 2014 2026(生效)
NuGet 版本 1.7.0.2(最終版) 目前版本,定期更新
主動開發
安全補丁 自2014年以來沒有發生過這種情況 常規補丁
平台
.NET Framework 3.5–4.5
.NET Framework 4.6.2+
.NET Core
.NET 5 / 6 / 7 / 8 / 9
ASP.NET Core
.NET 已修復
布雷澤
Linux / macOS
Docker/容器
閱讀
輸入類型 限點陣圖 路徑、流、位元組數組、PDF
PDF閱讀 是的(母語)
自動格式偵測
每張圖片包含多個條碼
系統繪圖依賴項 要求
世代
輸出格式 限點陣圖 PNG、JPEG、SVG、PDF、位元組數組
Fluent 輸出 API
系統繪圖依賴項 要求
授權
商業支援 提供專業支援
合規性審計結果 標記為已放棄 通過標準審核

平台和框架支持

這兩個庫的平台發展歷程存在著12年的空白期。 MessagingToolkit.Barcode 是為 .NET 發展史上的一個特定時期而設計的;IronBarcode的設計理念是面向現在。

MessagingToolkit.條碼方法

MessagingToolkit.Barcode 僅針對 .NET Framework 3.5、4.0 和 4.5。 它沒有 .NET Standard 的名稱,沒有 .NET Core 的目標,也沒有針對現代運行時的兼容性修補程式。 當專案檔案引用此套件並面向任何現代 .NET 版本時,NuGet 還原作業將失敗,並出現框架相容性錯誤—產生不會繼續。

NuGet 元資料中的平台表使這一點變得具體。 Silverlight 3、4 和 5 是列出的目標; 這三款系統均已於 2021 年停產。列出的系統包括 Windows Phone 7.0、7.5、7.8 和 8.0; 所有這些框架都在 2014 年至 2017 年間停止了支援。剩餘的目標框架——.NET Framework 3.5、4.0 和 4.5——在 Windows 上仍然具有技術功能,但微軟只會提供安全性補丁,不會進行任何新功能開發。

實際結果是,MessagingToolkit.Barcode 會阻礙框架現代化。 目標為 net472 且引用此套件的項目檔案不能在不先刪除該套件的情況下更改為 net8.0。 該軟體包不僅過時,而且還會主動阻止目標框架的更改,而這種更改本可以讓專案存取現代 .NET 功能。

請查閱IronBarcode 平台文檔,以取得支援的框架和部署目標的完整清單。

IronBarcode方法

IronBarcode 支援 .NET Framework 4.6.2 至 .NET 9,涵蓋傳統 Windows 應用程式和現代跨平台部署。 一個 NuGet 套件即可安裝在所有支援的平台上,無需單獨的圖形庫或特定於平台的配置。

跨平台支援在實務上意義重大。IronBarcode的內部鏡像管道不依賴 System.Drawing,後者在 .NET 6 中已僅限於 Windows。以 Linux 或 macOS 為導向的應用程式(包括執行在 Docker 容器、Linux 版 Azure 應用程式服務或 AWS Lambda 中的應用程式)使用與 Windows 部署相同的IronBarcodeAPI 和行為。

API設計

MessagingToolkit.Barcode 的 API 介面是圍繞著基於實例的物件和 System.Drawing.Bitmap 輸入設計的。IronBarcode的 API 是靜態的,並且接受多種輸入類型。這兩個函式庫都能對條碼進行編碼和解碼,但調用它們的具體機制卻大相逕庭。

MessagingToolkit.條碼方法

使用 MessagingToolkit.Barcode 讀取資料需要建立一個 BarcodeDecoder 實例,從影像檔案建構一個 Bitmap,將位圖傳遞給 .Decode(),並在存取 @@--CODE-94043--CO 產生遵循相同的實例模式:建立一個 BarcodeEncoder,設定其 .Format 屬性,呼叫 .Encode() 以接收 Bitmap,然後對該位圖呼叫 @@-- 4000040。

// Only compiles on .NET Framework 4.5 or earlier
using MessagingToolkit.Barcode;
using System.Drawing;

// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();

// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
// Only compiles on .NET Framework 4.5 or earlier
using MessagingToolkit.Barcode;
using System.Drawing;

// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();

// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
Imports MessagingToolkit.Barcode
Imports System.Drawing

' Reading
Dim barcodeReader As New BarcodeDecoder()
Dim bitmap As New Bitmap("barcode.png")
Dim result = barcodeReader.Decode(bitmap)
Dim value As String = result?.Text
Dim format As String = result?.BarcodeFormat.ToString()

' Writing
Dim barcodeWriter As New BarcodeEncoder()
barcodeWriter.Format = BarcodeFormat.QrCode
Dim outputBitmap = barcodeWriter.Encode("Hello World")
outputBitmap.Save("output.png")
$vbLabelText   $csharpLabel

Bitmap 依賴並非偶然。 System.Drawing.Bitmap 需要在 Windows 上安裝 GDI+。 在 .NET 6 及更高版本中,嘗試在 Linux 或 macOS 上使用 System.Drawing 會在運行時拋出 PlatformNotSupportedException 錯誤。即使 MessagingToolkit.Barcode 組件可以在現代 .NET 專案中載入(由於缺少框架目標,實際上無法載入),Bitmap 依賴項仍然會阻止跨平台部署。

IronBarcode方法

IronBarcode 全程使用靜態方法。 BarcodeReader.Read() 接受檔案路徑、Stream、位元組陣列或 PDF 檔案路徑-不需要 Bitmap。 結果是一個集合,而不是一個可為空的單一物件。 生成過程使用 BarcodeWriter.CreateBarcode(),並將編碼類型作為參數傳遞,結果物件直接公開保存方法。

// Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-KEY";

// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();

// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
    .SaveAsPng("output.png");
// Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-KEY";

// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();

// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
    .SaveAsPng("output.png");
Imports IronBarCode

' Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
IronBarCode.License.LicenseKey = "YOUR-KEY"

' Reading
Dim results = BarcodeReader.Read("barcode.png")
Dim value As String = results.FirstOrDefault()?.Value
Dim format As String = results.FirstOrDefault()?.Format.ToString()

' Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode) _
    .SaveAsPng("output.png")
$vbLabelText   $csharpLabel

有關如何從圖像中讀取條碼的詳細指導,請參閱如何從圖像中讀取條碼。 若要產生包含 Code 128、EAN-13 和 UPC 格式在內的 1D 條碼,請參閱如何建立 1D 條碼

安全與維護

廢棄的圖書館的安全狀況與維護良好的圖書館截然不同。 差異不在於是否已提交 CVE 報告,而在於 CVE 是否有可能解決。

MessagingToolkit.條碼方法

MessagingToolkit.Barcode 自 2014 年以來就沒有收到任何更新。此後發現的任何漏洞——無論是在庫本身的圖像解析邏輯中、在其 ZXing 衍生的解碼實現中,還是在其傳遞依賴項中——都將永久未修補。 沒有維護人員需要通知,沒有安全公告流程需要監控,即使開發出了修復程序,也沒有發布機制可以將修復程序傳遞給使用者。

安全掃描工具——Snyk、WhiteSource、GitHub Dependabot、NuGet audit——將廢棄的軟體包標記為高風險。 標記並不取決於是否已確認存在 CVE; 這反映出目前沒有任何程式可以修復已確認的漏洞。 這與擁有活躍維護者和完善的安全回應流程的程式庫的風險狀況截然不同。

對於在合規框架(PCI DSS、HIPAA、SOC 2、ISO 27001)下運作的團隊而言,這會產生實際的稽核後果。 這些框架需要對第三方軟體進行積極的修補程式管理。 如果一個廢棄的軟體包沒有漏洞回應機制,無論是否已針對該軟體包提交了特定的 CVE 編號,該軟體包都將無法通過合規性審計。 審計結果顯示不存在可維護的依賴關係,而不是存在已知的漏洞。

IronBarcode方法

IronBarcode 會定期收到 NuGet 更新,內容包含安全性修補程式、相依性更新和新功能。 該庫由 Iron Software 開發,該公司維護完善的支援流程,並為每次更新發布發行說明。 安全公告(如有)會在修補程式版本中解決。

IronBarcode 支援50 多種條碼格式,包括 MessagingToolkit.Barcode 處理的所有格式——QR 碼、Code 128、EAN-13、EAN-8、UPC-A 等——以及舊庫從未支援的格式:DataMatrix、Aztec、PDF417 和各種現代 2D 條碼。

API 對應參考。

下表將 MessagingToolkit.Barcode API 元素與其對應的IronBarcode元素進行對應:

MessagingToolkit.Barcode IronBarcode 筆記
new BarcodeDecoder() 靜態 — BarcodeReader.Read() 無需實例
barcodeReader.Decode(bitmap) BarcodeReader.Read(path) 接受路徑、流或位元組數組
result.Text result.Value 物業已更名
result.BarcodeFormat result.Format 物業已更名
new BarcodeEncoder() 靜態 — BarcodeWriter.CreateBarcode() 無需實例
barcodeWriter.Format = BarcodeFormat.QrCode BarcodeEncoding.QRCode(參數) 作為參數傳遞的格式,而非屬性
barcodeWriter.Encode("data") 返回 Bitmap BarcodeWriter.CreateBarcode("data", BarcodeEncoding.QRCode) 返回流暢的結果,而不是點陣圖。
bitmap.Save("path.png") .SaveAsPng("path.png") Fluent 方法在結果物件上
BarcodeFormat.QrCode BarcodeEncoding.QRCode 枚舉命名空間和值已重新命名
BarcodeFormat.Code128 BarcodeEncoding.Code128 相同的符號名稱
如果未找到,則傳回 null。 返回空集合 檢查 .Any().FirstOrDefault()
僅限 .NET Framework 3.5–4.5 .NET 4.6.2 至 .NET 9 完全支援現代 .NET

當團隊考慮從 MessagingToolkit.Barcode 遷移到IronBarcode時

促使團隊評估這種轉變的場景具有一個共同的結構:專案需求已經超出了 2014 年框架時代的庫所能容納的範圍。

框架現代化要求

最常見的觸發因素是計劃內或正在進行的 .NET 升級。 當團隊決定將專案從 .NET Framework 4.x 遷移到 .NET 6 或更高版本時,必須審核依賴關係圖,找出缺少現代框架支援的套件。 MessagingToolkit.Barcode 將在稽核中顯示為阻塞依賴項-無法針對現代目標框架名稱進行解析。 因此,遷移到IronBarcode是更廣泛的 .NET 升級的先決條件,而不是一項獨立的計劃。負責應用程式現代化改造的團隊通常會在升級分析階段早期發現這種依賴關係。

安全與合規義務

第二種情況涉及安全審查和合規性審計。 根據 PCI DSS、HIPAA、SOC 2 或 ISO 27001 框架運作的團隊會定期接受審核,以檢查第三方依賴項的健康狀況。 如果一個被遺棄的軟體包沒有安全回應機制,那麼無論是否已發現特定漏洞,該軟體包都會因流程問題而無法通過這些審計。 當安全團隊將 MessagingToolkit.Barcode 標記為不合規的依賴項時,解決方法是替換——沒有修補程式可以應用,沒有版本可以升級,也沒有供應商可以聯繫以獲取安全建議。 遷移到IronBarcode解決了審計發現的問題,方法是將沒有維護路徑的依賴項替換為定期接收安全性更新的依賴項。

能力擴展

第三種情況是,當新的需求超出 MessagingToolkit.Barcode 所能提供的範圍。 處理掃描文件或 PDF 文件的應用程式需要從這些格式中讀取條碼——MessagingToolkit.Barcode 只接受點陣圖輸入,因此如果沒有單獨的提取層,就無法讀取 PDF。 為網路交付產生條碼的應用程式需要 SVG 或 base64 輸出 — MessagingToolkit.Barcode 回傳了 Bitmap,需要額外的轉換步驟和 System.Drawing.Imaging 依賴項。 當產品需求擴展到這些領域時,舊函式庫的限制就變成了工程上的限制,無法透過其 API 介面來解決。

平台目標成長

第四種情況是增加新的部署目標。 最初建置僅限 Windows 應用程式的團隊,如果擴展到 Linux 託管、macOS 開發環境、Docker 容器或 Linux 運行時上的雲端函數,則會遇到 System.Drawing 依賴項此阻塞性問題。 MessagingToolkit.Barcode 需要 System.Drawing.Bitmap 來進行所有輸入和輸出操作,而 System.Drawing 僅適用於 .NET 6 及更高版本中的 Windows。 任何非 Windows 部署目標都會導致此相依性出現執行階段故障,而不僅僅是相容性問題。 遷移到IronBarcode完全消除了 System.Drawing 的要求,從而實現了團隊正在嘗試實現的跨平台部署。

常見的遷移考量

從 MessagingToolkit.Barcode 過渡到IronBarcode的團隊應該注意一些影響遷移機制的技術差異。

命名空間替換

所有包含 using MessagingToolkit.Barcode; 的檔案都需要更新為 using IronBarCode;。 在程式碼庫範圍內搜尋舊命名空間字串是確定遷移範圍最可靠的起點。 如果導入 System.Drawing 只是為了 MessagingToolkit.Barcode 使用的 Bitmap 類型,那麼一旦IronBarcode就位,該導入就可以完全刪除,因為IronBarcode不需要它。

目標框架變更

從專案檔案中移除 MessagingToolkit.Barcode 可以更新目標框架別名。 一旦阻塞依賴項被移除,從 <TargetFramework>net472</TargetFramework><TargetFramework>net8.0</TargetFramework> 的變更就成為可能。IronBarcode支援此變更的兩個面向——它與 .NET Framework 4.6.2 和 .NET 8 相容——因此可以在框架升級完成之前安裝它,從而允許分階段遷移,而不是一步完成。

條碼寫入器命名空間差異

MessagingToolkit.Barcode 使用 BarcodeEncoder 作為生成類,並在呼叫 .Encode() 之前將格式設為屬性 (barcodeWriter.Format = BarcodeFormat.QrCode)。IronBarcode使用 BarcodeWriter.CreateBarcode() 作為靜態方法,並將編碼類型作為參數傳遞。 枚舉名稱有所不同:BarcodeFormat.QrCode 變為 BarcodeEncoding.QRCode,而 BarcodeFormat.Code128 變為 BarcodeEncoding.Code128CreateBarcode() 的結果是一個具有 .SaveAsPng().SaveAsJpeg().SaveAsSvg() 和其他輸出方法的流暢物件—它不傳回 @@--CODE-94105--@。

IronBarcode的其他功能

IronBarcode提供的功能遠遠超過以上各節討論的功能集:

  • PDF 條碼讀取: BarcodeReader.Read("document.pdf") 讀取 PDF 文件每一頁的條碼,傳回包含頁碼元資料的結果。 無需外部PDF擷取步驟。 -批次處理:一次即可讀取多個檔案(影像和 PDF 混合)。 自動格式偵測適用於條碼類型,而不僅僅是檔案格式。 -二維碼自訂:產生的二維碼可以透過 QRCodeWriter API 包含嵌入式徽標、自訂顏色和可調節的靜音區。 -非同步多執行緒: BarcodeReader.ReadAsync() 提供了一個原生非同步重載,用於與 ASP.NET Core 和其他非同步 .NET 應用程式中的 async/await 模式整合。 -產生多種輸出格式:產生的條碼可以儲存為 PNG、JPEG、SVG、PDF 格式,也可以作為 base64 編碼的字串檢索,以便直接嵌入 HTML 回應或資料庫儲存。

.NET相容性與未來準備

IronBarcode 支援所有目前的 .NET 版本——.NET Framework 4.6.2 到 .NET 9——並且會接收追蹤新 .NET 版本的更新。 該庫的內部圖像管道避免了對 System.Drawing 或其他特定於平台的圖形 API 的依賴,這意味著同一個軟體包和 API 在 Windows、Linux、macOS 和容器環境中都能以相同的方式工作。 隨著 .NET 10 及後續版本的發布,IronBarcode 積極的開發節奏確保了兼容性,而無需團隊因庫的限製而推遲 .NET 升級。

結論

MessagingToolkit.Barcode 和IronBarcode代表了 .NET 程式庫開發中兩個截然不同的階段。 MessagingToolkit.Barcode 是為 .NET Framework 4.x 和 2011 年至 2014 年的行動平台而建置的。IronBarcode是為 2026 年存在的 .NET 而建造的——跨平台、容器友好且積極維護。 它們之間的技術差距並非功能對等的問題; 這是運行時相容性問題。 MessagingToolkit.Barcode 無法在現代 .NET 專案中編譯,這表示在大多數實際場景中,比較的物件並非兩個相互競爭的選項。

MessagingToolkit.Barcode 的合法使用場景非常狹窄:它僅面向 .NET Framework 4.x,僅在 Windows 上運行,永遠不會升級到更新的運行時,並且在不強制執行安全審計要求的環境中運行。 在這種特定配置下,該函式庫會產生輸出,且技術障礙不適用。 這種配置描述的是 2026 年極少數活躍的項目,而且安全問題——12 年沒有修補程式——無論如何都適用於所有配置。

IronBarcode 適用於需要在任何現代 .NET 環境中使用條碼功能的團隊:.NET 6、7、8 或 9; Linux 或 macOS 部署; Docker 或雲端託管環境; ASP.NET Core 應用程式; 或任何需要處理 PDF 或需要在 Windows 點陣圖以外的輸出格式中使用條碼的項目。靜態 API 降低了基於實例模型的實例化開銷,由於沒有 System.Drawing 依賴項,因此消除了一個重要的跨平台限制。

基本評估很簡單。 對於沒有計劃變更的 .NET Framework 4.x 團隊,MessagingToolkit.Barcode 將繼續在這些限制條件下運作。 對於其他所有場景——現代化、合規性、跨平台部署或功能擴展——MessagingToolkit.Barcode 都不是一個可行的選擇,而IronBarcode是一個直接的替代品,並且具有一個小型、定義明確的遷移路徑。

常見問題解答

什麼是 MessagingToolkit 條碼?

MessagingToolkit Barcode 是一個 .NET 條碼庫,用於在 C# 應用程式中產生和讀取條碼。它是開發人員在為 .NET 專案選擇條碼解決方案時評估的幾個替代方案之一。

MessagingToolkit Barcode 和 IronBarcode 的主要差異是什麼?

IronBarcode 使用靜態、無狀態的 API,無需實例管理,而 MessagingToolkit Barcode 通常需要先建立實例並進行設定才能使用。 IronBarcode 還提供原生 PDF 支援、自動格式偵測以及跨所有環境的單金鑰許可。

IronBarcode 的授權是否比 MessagingToolkit Barcode 更容易?

IronBarcode 使用單一授權金鑰,同時涵蓋開發和生產部署。與將 SDK 金鑰與執行時間金鑰分開的授權系統相比,這簡化了 CI/CD 管線和 Docker 配置。

IronBarcode 是否支援 MessagingToolkit Barcode 支援的所有條碼格式?

IronBarcode 支援超過 30 種條碼符號體系,包括 QR 碼、Code 128、Code 39、DataMatrix、PDF417、Aztec、EAN-13、UPC-A、GS1 等等。格式自動偵測功能意味著無需明確枚舉格式。

IronBarcode是否支援原生PDF條碼讀取?

是的。 IronBarcode 可以直接從 PDF 檔案讀取條碼,使用 `BarcodeReader.Read("document.pdf")` 方法,無需單獨的 PDF 渲染庫。每頁的讀取結果包括頁碼、條碼格式、數值和置信度評分。

與 MessagingToolkit Barcode 相比,IronBarcode 在大量處理方面有何不同?

IronBarcode 的靜態方法是無狀態的,且天然執行緒安全,因此可以直接使用 Parallel.ForEach,而無需進行執行緒層級實例管理。所有定價層級均無吞吐量上限。

IronBarcode支援哪些.NET版本?

IronBarcode 在單一 NuGet 套件中支援 .NET Framework 4.6.2+、.NET Core 3.1 以及 .NET 5、6、7、8 和 9。平台目標包括 Windows x64/x86、Linux x64 和 macOS x64/ARM。

如何在.NET專案中安裝IronBarcode?

透過 NuGet 安裝 IronBarcode:在程式包管理器控制台中執行“Install-Package IronBarCode”,或在命令列介面中執行“dotnet add package IronBarCode”。無需其他 SDK 安裝程式或運行時檔案。

與 MessagingToolkit 不同,我可以在購買前評估 IronBarcode 嗎?

是的。 IronBarcode 的試用模式會傳回完整的解碼條碼值-只有產生的輸出影像才會有浮水印。您可以在購買前,用自己的文件測試讀取準確率。

MessagingToolkit Barcode 和 IronBarcode 的價格有什麼不同?

IronBarcode 的永久單開發者許可證起價為 749 美元,涵蓋開發和生產環境。定價詳情和大量許可選項請造訪 IronBarcode 授權頁面。無需單獨的運行時許可證。

從 MessagingToolkit Barcode 遷移到 IronBarcode 是否簡單?

從 MessagingToolkit Barcode 遷移到 IronBarcode 主要涉及將基於實例的 API 呼叫替換為 IronBarcode 的靜態方法、移除許可相關的樣板程式碼以及更新結果屬性名稱。大多數遷移工作都是減少程式碼,而不是增加程式碼。

IronBarcode 能產生帶有 logo 的二維碼嗎?

是的。 `QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")` 可以將品牌圖片原生嵌入二維碼中,並支援設定糾錯功能。此外,它還支援透過 `ChangeBarCodeColor()` 函數建立彩色二維碼。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我