BarcodeLib 與 IronBarcode:C# 條碼庫對比
Barkoder SDK vs IronBarcode:行動裝置攝影機掃描 vs 全 .NET 條碼覆蓋
Barkoder SDK 幾乎出現在所有"2026年最佳條碼SDK"的列表中,並在比較矩陣中與ZXing、Dynamsoft、Scandit和IronBarcode並列。 評估 .NET 專案的條碼解決方案的開發者在研究初期就會遇到它——他們閱讀關於MatrixSight、DeBlur模式、多條碼檢測和DPM支持的內容,並發現它確實具有吸引力。 在NuGet上,Barkoder 提供了兩個官方 .NET 套件:Plugin.Maui.Barkoder 和 Barkoder.Xamarin。 兩者皆為行動 MAUI 和 Xamarin app 的攝影機掃描元件。Barkoder 沒有提供一般用途的 .NET 程式庫:沒有 ASP.NET Core、控制台、桌面、伺服器或 PDF 表面。 此比較說明了什麼是 Barkoder,什麼使其在其本地領域中強大,以及IronBarcode如何涵蓋 .NET 開發者通常需要的更廣泛需求。
了解 Barkoder SDK
Barkoder 是一個商用條碼掃描 SDK,圍繞C/C++處理核心構建,並使用 iOS 和 Android 的原生 SDK 封裝。 它針對需要即時攝影機掃描的行動開發者——例如在手機上進行倉庫工作者掃描,或在平板裝置上進行現場技術員操作。 分發模型完全反映了該目標。
SDK 通過使用 Swift 和 Objective-C API 的 CocoaPods 針對 iOS 發佈,針對 Android 則通過 Maven 發佈,使用 Kotlin 和 Java API,同時針對 React Native、Flutter、Cordova 和 Capacitor 的混合行動裝置提供官方插件。 在 .NET 上,Barkoder 發佈了兩個官方的 NuGet 套件——Plugin.Maui.Barkoder 和 Barkoder.Xamarin——這些套件封裝了原生 iOS 和 Android SDK,並在 MAUI 和 Xamarin 行動app 中提供BarkoderView 攝影機掃描控制項。
在 MAUI 和 Xamarin 之外,.NET 上並沒有 Barkoder 的選擇。 沒有一般用途的 Barkoder.NET 套件,沒有 ASP.NET Core、Azure Functions、AWS Lambda、Docker 或 Linux 伺服器目標,也沒有控制台、工作者服務、WPF、WinForms、Avalonia 或 Blazor目標,沒有檔案或資料流輸入模式,沒有PDF 閱讀,沒有條碼生成。 對於存在於 MAUI 或 Xamarin 行動 app 頭部之外的 .NET 工作,Barkoder 不在範圍內。
Barkoder SDK 的關鍵架構特徵:
- 行動優先架構: 為 iOS 和 Android 攝影機流水線設計; 所有處理都在裝置上通過 C/C++ 核心進行
- .NET 表面限於 MAUI / Xamarin: 官方
Plugin.Maui.Barkoder和Barkoder.Xamarin套件公開攝影機掃描控制項; 沒有一般用途的 .NET 程式庫 - 無條碼生成: Barkoder 是一個只讀SDK; 它沒有生成或編碼條碼的功能
- 無 PDF 或檔案輸入: 該 SDK 沒有從 PDF 文件讀取條碼,從文件系統中的圖像或伺服器端文件工作流的概念
- 無伺服器部署: SDK 無法在 ASP.NET Core、Azure Functions、Docker 容器或任何伺服器端 .NET 執行環境中運行
- 僅限攝影機畫面輸入: 輸入永遠是一個即時的攝影機畫面; 沒有文件路徑、流或位元組陣列超載
Barkoder 架構是什麼樣的
該 SDK 的 C/C++ 核心負責圖像處理。 iOS 和 Android 包裝通過平台原生的 API 暴露該核心。在 .NET 上,MAUI 和 Xamarin 插件封裝了相同的原生 SDK,並公開一個 BarkoderView 控制項:
// dotnet add package Plugin.Maui.Barkoder
// XAML hosts a BarkoderView; this is the code-behind callback.
using Barkoder.Maui;
public partial class ScanPage : ContentPage, IBarkoderDelegate
{
public ScanPage()
{
InitializeComponent();
BarkoderView.SetFlashEnabled(false);
BarkoderView.SetZoomFactor(1.5f);
BarkoderView.StartScanning(this);
}
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
{
Console.WriteLine($"Type: {r.BarcodeTypeName}");
Console.WriteLine($"Value: {r.TextualData}");
}
}
}
// dotnet add package Plugin.Maui.Barkoder
// XAML hosts a BarkoderView; this is the code-behind callback.
using Barkoder.Maui;
public partial class ScanPage : ContentPage, IBarkoderDelegate
{
public ScanPage()
{
InitializeComponent();
BarkoderView.SetFlashEnabled(false);
BarkoderView.SetZoomFactor(1.5f);
BarkoderView.StartScanning(this);
}
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
{
Console.WriteLine($"Type: {r.BarcodeTypeName}");
Console.WriteLine($"Value: {r.TextualData}");
}
}
}
Imports Barkoder.Maui
Public Partial Class ScanPage
Inherits ContentPage
Implements IBarkoderDelegate
Public Sub New()
InitializeComponent()
BarkoderView.SetFlashEnabled(False)
BarkoderView.SetZoomFactor(1.5F)
BarkoderView.StartScanning(Me)
End Sub
Public Sub DidFinishScanning(result As BarcodeResult()) Implements IBarkoderDelegate.DidFinishScanning
For Each r In result
Console.WriteLine($"Type: {r.BarcodeTypeName}")
Console.WriteLine($"Value: {r.TextualData}")
Next
End Sub
End Class
這可以在 MAUI 行動app 中針對即時攝影機運行。 沒有文件超載,沒有資料流超載,沒有PDF超載,也沒有針對ASP.NET Core、控制台或桌面專案的等價表面。 原生 iOS 和 Android 的程式碼路徑使用相同的 Swift、Objective-C、Kotlin 或 Java 組件模型。
那些使 Barkoder 在列表中佔有一席之地的功能是真正的能力。 MatrixSight 和 DeBlur 模式 提供專有的損壞恢復技術,可以讀取物理損壞、印刷不佳或在不良光照下捕獲的條碼。 多條碼檢測 能同時解碼單個攝影機畫面中的多個條碼,使倉庫工人能一次掃描整個貨架。 DPM (直接部分標記) 掃描 支持 DataMatrix 和其他格式的鐳雕和點鑽配置,這些配置大多數一般用途的程式庫處理不佳。 高密度格式支持 包括 PDF417、Aztec 和其他 2D 格式,具有強大的行動攝影機精確度。
理解IronBarcode
IronBarcode 是一個原生 .NET 程式庫,涵蓋完整的條碼工作流程——讀取和生成——適用於每個 .NET 環境。 它相當於 Barkoder 在 .NET 平台上的功能,並具有僅在伺服器和桌面環境中有意義的附加功能。
IronBarcode 透過 NuGet 安裝並完全在本地運行。 條碼操作期間不會進行網路呼叫。 它適用氣隙環境、Azure Functions、Docker 容器、AWS Lambda,以及所有 .NET 執行時環境,從 .NET Framework 4.6.2 到 .NET 9。靜態 API 模型意味著沒有掃描器實例可管理,沒有生命週期可追踪,並且沒有從同時呼叫引起的執行緒安全性問題。
IronBarcode的關鍵特性:
- 完整 .NET 覆蓋: 支持 .NET Framework 4.6.2+、.NET 6、7、8 和 9; 運行於 Windows、Linux、macOS、Docker、Azure 和 AWS
- 讀取和生成: 涵蓋從檔案、流和 PDF 中讀取條碼以及在50多種格式中生成條碼
- 靜態 API 設計:
BarcodeReader.Read()和BarcodeWriter.CreateBarcode()是靜態調用,無需管理有狀態實例 - ML 驅動錯誤校正: 機器學習驅動的圖像預處理管道可處理損壞、退化和低質量條碼
- 原生 PDF 支援: 直接從 PDF 檔中讀取條碼,無中介圖像抽取
- 完整的 .NET 生態系統整合: 與 ASP.NET Core 依賴注入、非同步/等待、中介軟體和託管模式相容
特性比較
以下表格突出顯示了 Barkoder SDK 和IronBarcode根本性的區別:
| 特性 | Barkoder SDK | IronBarcode |
|---|---|---|
| .NET / C# 支援 | 僅限 MAUI / Xamarin 攝影機 UI | 完整支援—所有 .NET 執行時 |
| NuGet 包 | Plugin.Maui.Barkoder, Barkoder.Xamarin |
IronBarcode |
| 條碼讀取 | 是 — 行動攝影機 | 是 — 檔案、流、PDF |
| 條碼生成 | None | 完整支援 — 50+ 格式 |
| PDF 處理 | None | 原生的 |
| 伺服器端部署 | None | 完整支援 — ASP.NET Core、Azure、Lambda、Docker |
| 定價 | 行動 SDK 授權 | 永久授權可用 |
詳細特性比較
| 特性 | Barkoder SDK | IronBarcode |
|---|---|---|
| 讀取 | ||
| 損壞條碼恢復 | MatrixSight / DeBlur | ML 錯誤校正, ReadingSpeed.ExtremeDetail |
| 多條碼檢測 | 是 — 攝影機畫面 | ExpectMultipleBarcodes = true |
| DataMatrix / DPM 支援 | 是 | 是 — BarcodeEncoding.DataMatrix |
| QR Code 讀取 | 是 | 是 |
| PDF417 | 是 | 是 |
| Aztec | 是 | 是 |
| Code128、Code39、EAN | 是 | 是 — 50+ 格式 |
| 自動格式檢測 | 是 | 是 |
| 生成 | ||
| 條碼生成 | None | 完整支援 — 所有格式 |
| QR Code 生成 | None | QRCodeWriter.CreateQrCode() |
| QR 上的標誌/品牌 | None | AddBrandLogo() |
| 平台 | ||
| .NET / C# | 僅限 MAUI / Xamarin 攝影機 UI | 全力 |
| iOS(原生) | 是(主要) | 透過 .NET MAUI |
| Android(原生) | 是(主要) | 透過 .NET MAUI |
| Windows / Linux / macOS | None | 全力 |
| Docker / 容器 | None | 全力 |
| Azure 函式 | None | 全力 |
| AWS Lambda | None | 全力 |
| 氣隙/離線 | 是(裝置上) | 是(完全本地) |
| API 設計 | ||
| 支持異步/等候 | 不適用 | 全力 |
| 依賴注入 | None | 完整的 .NET DI 整合 |
| PDF 文件輸入 | None | BarcodeReader.Read("doc.pdf") |
| 授權 | ||
| 授權模型 | 行動 SDK 授權 | 永久一次性購買 |
| 價格(入門) | 聯繫銷售 | See ironsoftware.com/csharp/barcode/licensing |
.NET 部署模型
Barkoder SDK 和IronBarcode之間最根本的區別是範圍。 Barkoder 的 .NET 表面限於 MAUI 和 Xamarin 攝影機 UI;IronBarcode涵蓋了其餘 .NET 生態系統。
Barkoder SDK 方法
Barkoder 公佈的平台列表包括 iOS 原生(Swift / Objective-C)、Android 原生(Kotlin / Java)、React Native、Flutter、Cordova、Capacitor、.NET MAUI、Xamarin 和 Web(WASM)。 在 .NET 上具體地映射到 Plugin.Maui.Barkoder 和 Barkoder.Xamarin。 ASP.NET Core、Azure Functions、AWS Lambda、Docker、Linux 伺服器、WPF、WinForms、Avalonia 和 Blazor 缺失。 SDK 的架構建立在移動裝置上的即時攝影機流水線上,沒有基於文件的輸入模式,沒有流 API,沒有批處理路徑,也沒有伺服器端執行模型。
對於不屬於 MAUI 或 Xamarin 行動 app 的 .NET 工作——後端 API,一個工作者服務,一個桌面工具,一條 PDF 文件管道——Barkoder 不提供路徑。 沒有用於伺服器使用的非同步 API 介面,沒有依賴注入整合,沒有 Azure 或 AWS Lambda 支持,也沒有 PDF 處理能力。
IronBarcode方法
IronBarcode 從 NuGet 通過一個命令安裝,在啟動時以授權金鑰初始化:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Read a barcode from an image
var results = BarcodeReader.Read("scan.png");
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format}");
Console.WriteLine($"Value: {result.Value}");
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Read a barcode from an image
var results = BarcodeReader.Read("scan.png");
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format}");
Console.WriteLine($"Value: {result.Value}");
}
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' Read a barcode from an image
Dim results = BarcodeReader.Read("scan.png")
For Each result In results
Console.WriteLine($"Format: {result.Format}")
Console.WriteLine($"Value: {result.Value}")
Next
該程式庫完全在本地運行——沒有網路呼叫,沒有資料傳輸,也沒有外部依賴。 它整合了 ASP.NET Core 的依賴注入,支持異步/等候,並且可以無修改地部署到 Docker、Azure 函式和 AWS Lambda。 要獲得生產級 ASP.NET Core 整合,請參閱 IronBarcode 文件。
損壞條碼恢復
損壞條碼恢復是最常導致開發者研究 Barkoder 的能力。 Barkoder 的 MatrixSight 和 DeBlur 模式是針對物流和製造場景推廣的,這些場景中物理標籤受到磨損、淋濕或部分遮蔽。
Barkoder SDK 方法
Barkoder 的 DeBlur 模式在解碼嘗試之前應用圖像預處理——對比度增強、銳化、旋轉校正。 這專門在行動攝影機流水線中運行。模式在掃描開始之前在 SDK 級別配置,攝影機畫面被不斷處理。 沒有等價的基於文件的路徑。
// dotnet add package Plugin.Maui.Barkoder
// Configured against the BarkoderView in a MAUI ContentPage
BarkoderView.DeblurEnabled = true;
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.Code128 });
BarkoderView.StartScanning(this);
// dotnet add package Plugin.Maui.Barkoder
// Configured against the BarkoderView in a MAUI ContentPage
BarkoderView.DeblurEnabled = true;
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.Code128 });
BarkoderView.StartScanning(this);
IronBarcode方法
IronBarcode 通過 ReadingSpeed.ExtremeDetail 處理相同問題,該功能激活多通道圖像分析管道——在嘗試解碼之前應用基於 ML 的損壞恢復、對比度增強、銳化和旋轉校正。 這可以在任何文件、流或位元組陣列輸入上運行:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("worn-shipping-label.png", options);
if (results.Any())
{
Console.WriteLine($"Recovered: {results.First().Value}");
}
else
{
Console.WriteLine("Could not decode — image quality too low");
}
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("worn-shipping-label.png", options);
if (results.Any())
{
Console.WriteLine($"Recovered: {results.First().Value}");
}
else
{
Console.WriteLine("Could not decode — image quality too low");
}
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
Dim results = BarcodeReader.Read("worn-shipping-label.png", options)
If results.Any() Then
Console.WriteLine($"Recovered: {results.First().Value}")
Else
Console.WriteLine("Could not decode — image quality too low")
End If
ReadingSpeed.Balanced 處理大多數乾淨或輕微損壞的條碼,速度較快。 保留 ExtremeDetail 用於 Balanced 失敗的情況——它很徹底但顯著較慢。 欲獲得更多有關讀取困難條碼的指導,請參閱 IronBarcode 閱讀文件。
多條碼檢測
多條碼檢測在兩個平台之間直接映射:Barkoder 在攝影機畫面中處理多個程式碼;IronBarcode在文件或圖像檔中處理多個程式碼。
Barkoder SDK 方法
Barkoder 的多條碼模式同時從單個攝影機畫面中檢測並解碼幾個條碼。 在倉庫環境中,工人可以將手機放在貨架上,立即接收到所有條碼值。 這在掃描開始之前在 SDK 級別配置:
// Plugin.Maui.Barkoder — multi-scan mode in a MAUI ContentPage
BarkoderView.MulticodeCachingEnabled = true;
BarkoderView.StartScanning(this);
// IBarkoderDelegate callback delivers all decoded codes per frame
public void DidFinishScanning(BarcodeResult[] results)
{
foreach (var r in results)
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}");
}
// Plugin.Maui.Barkoder — multi-scan mode in a MAUI ContentPage
BarkoderView.MulticodeCachingEnabled = true;
BarkoderView.StartScanning(this);
// IBarkoderDelegate callback delivers all decoded codes per frame
public void DidFinishScanning(BarcodeResult[] results)
{
foreach (var r in results)
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}");
}
' Plugin.Maui.Barkoder — multi-scan mode in a MAUI ContentPage
BarkoderView.MulticodeCachingEnabled = True
BarkoderView.StartScanning(Me)
' IBarkoderDelegate callback delivers all decoded codes per frame
Public Sub DidFinishScanning(results As BarcodeResult())
For Each r In results
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}")
Next
End Sub
IronBarcode方法
在 .NET 伺服器端應用中,多條碼場景通常涉及一個文件——一個帶有運單條碼和產品條碼的發票,或每頁包含多個項目的運輸清單。IronBarcode使用 ExpectMultipleBarcodes = true 處理此情況,該選項在圖像和 PDF 上同樣適用:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
};
// Works on images and PDFs — single method call
var results = BarcodeReader.Read("shipping-manifest.pdf", options);
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}");
}
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
};
// Works on images and PDFs — single method call
var results = BarcodeReader.Read("shipping-manifest.pdf", options);
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}");
}
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True
}
' Works on images and PDFs — single method call
Dim results = BarcodeReader.Read("shipping-manifest.pdf", options)
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}")
Next
沒有頁面抽取,沒有多次請求,沒有每個條碼的網路開銷。 PDF 是在一次調用中本地讀取的。 有關多條碼和 PDF 讀取的更多資訊,請參閱 IronBarcode 文件。
DataMatrix 和高密度格式支持
DataMatrix 是工業和 DPM 使用案例的核心——Barkoder 強調的製造、醫療保健和汽車垂直行業的格式。
Barkoder SDK 方法
Barkoder 支持 DataMatrix 讀取,帶有鐳雕和點雕標記的 DPM 配置。 SDK 也支持 PDF417、Aztec 和其他高密度 2D 格式,具有在行動攝影機上的強大準確性。 所有這些都在 iOS 或 Android 的攝影機管道內運行:
// Plugin.Maui.Barkoder — DataMatrix scanning in a MAUI ContentPage
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.DataMatrix });
BarkoderView.StartScanning(this);
// Plugin.Maui.Barkoder — DataMatrix scanning in a MAUI ContentPage
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.DataMatrix });
BarkoderView.StartScanning(this);
' Plugin.Maui.Barkoder — DataMatrix scanning in a MAUI ContentPage
BarkoderView.SetEnabledBarcodeTypes(New BarcodeType() { BarcodeType.DataMatrix })
BarkoderView.StartScanning(Me)
Barkoder 不生成 DataMatrix 或任何其他條碼格式。 它是一個只讀 SDK。
IronBarcode方法
IronBarcode 本地讀取和生成 DataMatrix。 在讀取端,ReadingSpeed.ExtremeDetail 處理鐳雕 DPM 標記的低對比度和粗糙邊緣。 在生成端,BarcodeWriter.CreateBarcode() 為零件標籤建立生產 DataMatrix:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix)
.SaveAsPng("part-label.png");
// Generate a QR code with brand logo
QRCodeWriter.CreateQrCode("https://parts.example.com/A42", 500)
.AddBrandLogo("company-logo.png")
.SaveAsPng("branded-qr.png");
// Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
var results = BarcodeReader.Read("etched-part.png");
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix)
.SaveAsPng("part-label.png");
// Generate a QR code with brand logo
QRCodeWriter.CreateQrCode("https://parts.example.com/A42", 500)
.AddBrandLogo("company-logo.png")
.SaveAsPng("branded-qr.png");
// Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
var results = BarcodeReader.Read("etched-part.png");
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix) _
.SaveAsPng("part-label.png")
' Generate a QR code with brand logo
QRCodeWriter.CreateQrCode("https://parts.example.com/A42", 500) _
.AddBrandLogo("company-logo.png") _
.SaveAsPng("branded-qr.png")
' Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
Dim results = BarcodeReader.Read("etched-part.png")
要獲得完整的受支持格式和生成選項列表,請參閱 IronBarcode 條碼生成指南。
API對映參考
此表格構建了 Barkoder 的 MAUI 攝影機掃描 API 與IronBarcode在任何 .NET 專案中如何通過文件、流或 PDF 輸入達到相同結果之間的概念等價:
| Barkoder 概念 | IronBarcode等價 |
|---|---|
| 用授權金鑰初始化 SDK | IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" |
BarkoderView.DeblurEnabled = true |
Speed = ReadingSpeed.ExtremeDetail |
BarkoderView.MulticodeCachingEnabled = true |
ExpectMultipleBarcodes = true |
SetEnabledBarcodeTypes(BarcodeType.DataMatrix) |
BarcodeEncoding.DataMatrix(讀取時自動檢測) |
BarkoderView.StartScanning(this) |
BarcodeReader.Read("image.png") — 同步結果 |
BarcodeResult.TextualData |
result.Value |
BarcodeResult.BarcodeTypeName |
result.Format |
| MatrixSight 損壞恢復 | ReadingSpeed.ExtremeDetail 使用 ML 預處理 |
| 攝影機畫面分析 | 文件 / 流 / 位元組陣列輸入 |
| 獨立裝置處理 | 完全本地 — 無網路呼叫 |
| 無生成支持 | BarcodeWriter.CreateBarcode() / QRCodeWriter.CreateQrCode() |
| 無PDF支持 | BarcodeReader.Read("document.pdf") — 本地 |
| 無伺服器部署 | 工作在 ASP.NET Core、Docker、Azure 函式、Lambda 中 |
當團隊考慮從 Barkoder SDK 遷移到IronBarcode時
MAUI 之外 .NET 專案需求
最常見的情景很簡單:一位開發者或團隊正在構建 .NET 應用程式——ASP.NET Core、一個 Windows 服務、一個控制台工具、一個桌面應用——在研究中遇到了 Barkoder。 他們閱讀了 MatrixSight、DeBlur 和多條碼檢測,發現這些功能很吸引人,然後發現 .NET 表面Plugin.Maui.Barkoder 和 Barkoder.Xamarin ——兩者僅適用於行動攝影機 UI。 這種情況下的團隊不是從 Barkoder 遷移; 他們從一開始就識別出適合他們平台的正確工具。IronBarcode是 .NET 回應 Barkoder 在行動裝置上處理需求的答案。
伺服器端條碼處理工作流
一些團隊最初使用行動掃描應用呈現條碼處理工作流原型——Barkoder 或其他移動 SDK——後來需要在伺服器端複製或擴展該工作流。常見的例子包括通過 API 端點處理上傳的條碼圖像,從文件管理系統中的 PDF 文件讀取條碼,或批處理掃描標籤檔案。 這些工作流在 Barkoder 中都無法實現,因為它沒有伺服器端部署模型。IronBarcode使用相同的靜態 API 處理它們,跨越在 ASP.NET Core、Azure 函式、Docker 和 AWS Lambda。
條碼生成需求
構建物流、庫存或合規性 .NET 應用程式的團隊經常發現,讀取條碼僅僅是工作流程的一部分。 生成條碼——列印標籤,在文件中嵌入 QR 程式碼,生成運輸清單——同樣重要。 Barkoder 基於設計是只讀的; 沒有生成能力。 當專案範圍超出純讀取時,一個涵蓋工作流程兩側的相關程式庫消除了整合第二個依賴的需求。IronBarcode通過一致的 API 提供超過50種格式的讀取和生成功能。
PDF 文件處理
在 .NET 企業應用程式中,條碼經常嵌入在 PDF 文件中——發票、運輸清單、醫療記錄、合規文件。 Barkoder 沒有這個工作流程的概念; 它是為行動裝置上的攝影機輸入設計的。需要從傳入的 PDF 文件中讀取條碼、為業務邏輯提取條碼資料或驗證文件存檔中的條碼存在的團隊需要具有原生 PDF 支持的程式庫。IronBarcode直接從 PDF 中讀取條碼,無需中介圖像抽取。
定價和部署預測性
Barkoder 的行動 SDK 定價結構圍繞行動應用和分發模型——訂閱、每應用和每裝置級別,與行動部署相關聯。 對於 .NET 工作在 MAUI 或 Xamarin 之外的團隊,該定價模式不適用,因為 SDK 無法在那裡運行。 當IronBarcode是合適的工具時,定價模式簡單明瞭:永久授權,無每次請求收費,無處理條碼數量的限制。
常見的遷移考慮因素
從行動攝影機輸入到基於文件的輸入
已實施基於 Barkoder 的行動掃描原型並需要在 .NET 中複製功能的團隊會發現輸入模型從攝影機畫面更改為文件、流或位元組陣列。IronBarcode接受多種形式相同的資料——文件路徑字串、System.Drawing.Image。 條碼處理邏輯在其他方面則相同:
// All of these call the same underlying pipeline
var results1 = BarcodeReader.Read("scan.png");
var results2 = BarcodeReader.Read(imageStream);
var results3 = BarcodeReader.Read(imageBytes);
// All of these call the same underlying pipeline
var results1 = BarcodeReader.Read("scan.png");
var results2 = BarcodeReader.Read(imageStream);
var results3 = BarcodeReader.Read(imageBytes);
' All of these call the same underlying pipeline
Dim results1 = BarcodeReader.Read("scan.png")
Dim results2 = BarcodeReader.Read(imageStream)
Dim results3 = BarcodeReader.Read(imageBytes)
速度與準確性的權衡
Barkoder 的 DeBlur 模式在配置時始終處於活動狀態並在行動攝影機迴圈內運行。IronBarcode 通過 ReadingSpeed 明確地揭示了準確性與速度的權衡。 對於大多數文件,ReadingSpeed.Balanced 是合適的。 對於ReadingSpeed.ExtremeDetail應用完整的多通道 ML 管道。結構化批處理使用ExtremeDetail是性能敏感工作流的推薦方法。
在 ASP.NET Core 中的非同步整合
IronBarcode 的 BarcodeReader.Read() 方法是同步的。 在處理併發請求的 ASP.NET Core 端點中,將呼叫包裝在 Task.Run() 以避免阻塞請求執行緒:
var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));
var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));
Dim results = Await Task.Run(Function() BarcodeReader.Read(imageBytes, options))
性能格式規範
IronBarcode 預設自動檢測條碼格式。 在預期格式已知的高吞吐量場景中,指定格式可以通過消除不匹配格式的測試來縮短處理時間。 在預知格式情況下,使用 BarcodeReaderOptions.ExpectBarcodeTypes 收窄搜尋。
額外的IronBarcode能力
超越 Barkoder 的行動功能的直接等價,IronBarcode 提供的功能專門針對 .NET 伺服器和桌面環境:
- QR Code 標誌嵌入:
QRCodeWriter.CreateQrCode().AddBrandLogo()將品牌圖片新增到生成的 QR 程式碼中心——這是營銷和包裝工作流中的常見需求 - PDF 條碼讀取: 原生 PDF 輸入意味著無中介圖像抽取; 多頁 PDF 在一次呼叫中掃描
- 條碼蓋章於 PDF:IronBarcode可以生成條碼並將其印在現有 PDF 文件上,實現自動化標籤和文件工作流
- 批量圖像讀取:
BarcodeReader.ReadBulk()為高吞吐量批次操作同時處理多個圖像 - 自定義 QR Code 生成: QR codes 的自定義顏色、邊緣和錯誤校正水平
- GS1 和 HIBC 格式: 支持標準 1D 和 2D 格式以外的醫療保健和供應鏈條碼標準
.NET相容性和未來準備
IronBarcode 支持 .NET Framework 4.6.2 和所有現代 .NET 版本至 .NET 9,並進行積極開發以追蹤 .NET 10 的發布週期。 該程式庫運行於 Windows、Linux 和 macOS,並測試過針對 Docker、Azure Functions 和 AWS Lambda 部署目標。 隨著 .NET 生態系統繼續進化為跨平台和雲原生模式,IronBarcode 的完全本地執行模型——無雲端依賴,無API 金鑰管理和無網路延遲——與現代 .NET 應用架構的方向保持一致。
結論
Barkoder SDK 和IronBarcode大致上在不同的領域運行。 Barkoder 是一個為 iOS 和 Android 構建的行動攝影機掃描 SDK,具有 C/C++ 處理核心、混合行動分發和 Plugin.Maui.Barkoder 和 Barkoder.Xamarin 在 NuGet 上適用於 MAUI 和 Xamarin 攝影機 UI。IronBarcode是一個為伺服器、桌面、MAUI 程式化處理和雲部署建造的原生 .NET 程式庫,通過 NuGet 分佈,並通過標準模式整合到 .NET 生態系統中。 兩個程式庫的重疊很少見——僅限 MAUI 和 Xamarin,而且僅適用於攝影機 UI 用例。
在 MAUI、Xamarin、React Native、Flutter、Cordova 或 Capacitor 移動應用中構建攝影機掃描 UI 時,Barkoder 是正確的選擇。其 MatrixSight 和 DeBlur 功能在圖像質量不可控的現場掃描場景中確實強大。 它的多條碼檢測和 DPM 支援非常適合製造和物流行動工作流程。 如果您的團隊正在建造用於工人用裝置攝影機掃描實物的行動前端,那麼 Barkoder 在評估中顯得尤為重要。
IronBarcode 是建造 .NET 應用程式——ASP.NET Core API、Windows 服務、文件處理管道、桌面工具或雲功能——需要條碼讀取、生成或兩者兼之的正確選擇。 它從單個 NuGet 套件覆蓋整個條碼工作流程,完全集本地運行,無需網路依賴,並整合標準 .NET 模式,包括依賴注入、非同步/等待和雲託管。 對於被比較回顧引導到 Barkoder 的 .NET 開發人員,IronBarcode 提供相同的核心能力——對損壞耐受的讀取、多條碼檢測、DataMatrix 和高密度格式支援——實現於 .NET 平台上文件、流和 PDF 的輸入。
實際的結論很簡單:根據用例進行選擇。 MAUI 攝影機 UI 諧合於 Barkoder; 文件、流、PDF、生成或其他不是 MAUI 的 .NET 表面諧合於 IronBarcode。 許多實際生產系統同時運行兩者——Barkoder 在行動客戶端上,IronBarcode 在伺服器上——兩者自然整合為一個混合體系。
常見問題
什麼是 Barkoder SDK?
Barkoder SDK 是一個.NET條碼程式庫,用於在C#應用程式中生成和讀取條碼。它是開發者在選擇.NET專案條碼解決方案時評估的幾個備選項之一。
Barkoder SDK 和 IronBarcode 之間的主要差異是什麼?
IronBarcode 使用靜態的、無狀態的API,不需要實例管理,而 Barkoder SDK 通常需要在使用前建立和配置實例。IronBarcode 還提供原生的PDF支持、自動格式檢測以及跨所有環境的單鍵授權。
IronBarcode 是否比 Barkoder SDK 更容易授權?
IronBarcode使用一個覆蓋開發和生產部署的單一授權金鑰。相比於將SDK金鑰與運行時金鑰分開的授權系統,這簡化了CI/CD管道和Docker配置。
IronBarcode 是否支持 Barkoder SDK 支持的所有條碼格式?
IronBarcode支持超過30種條碼符號,包括QR Code、Code 128、Code 39、DataMatrix、PDF417、Aztec、EAN-13、UPC-A、GS1等。格式自動檢測意味著不需要顯式的格式枚舉。
IronBarcode支持原生PDF條碼讀取嗎?
是的。IronBarcode可以直接從PDF文件中讀取條碼,使用BarcodeReader.Read("document.pdf"),無需單獨的PDF渲染程式庫。每頁結果包括頁碼、條碼格式、值和置信分數。
IronBarcode 與 Barkoder SDK 相比,如何處理批量處理?
IronBarcode的靜態方法無狀態且天然執行緒安全,可以直接使用Parallel.ForEach而無需每個執行緒的實例管理。任何價格級別下都沒有吞吐量上限。
IronBarcode支持哪些.NET版本?
IronBarcode支持.NET Framework 4.6.2+、.NET Core 3.1,以及.NET 5、6、7、8和9,單一NuGet包。平台目標包括Windows x64/x86、Linux x64和macOS x64/ARM。
如何在.NET專案中安裝IronBarcode?
通過NuGet安裝IronBarcode:在Package Manager Console中運行 'Install-Package IronBarCode',或在CLI中運行 'dotnet add package IronBarCode'。不需要額外的SDK安裝程式或運行時文件。
是否可以在購買之前評估 IronBarcode,而不像 Barkoder?
可以。IronBarcode的試用模式返回完整解碼的條碼值——只有生成的輸出圖像上有水印。您可以在自己的文件上評估讀取準確性,然後再決定購買。
Barkoder SDK 和 IronBarcode 的價格差異是什麼?
IronBarcode起價為$749,為單開發者所適用的永久授權,覆蓋開發和生產。價格詳情和批量選項可在IronBarcode授權頁面獲得。無需單獨的運行時授權。
從 Barkoder SDK 遷移到 IronBarcode 是否簡單明了?
從 Barkoder SDK 遷移到 IronBarcode 主要涉及將基於實例的API呼叫替換為 IronBarcode 的靜態方法,移除授權範本,並更新結果屬性名稱。大多數遷移涉及減少程式碼而不是增加。
IronBarcode可以生成帶有Logo的QR碼嗎?
可以。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") 可以原生嵌入品牌圖像進QR碼,並可配置錯誤更正。也支持通過ChangeBarCodeColor() 生成彩色QR碼。

