Infragistics Barcode 與 IronBarcode:C# 條碼庫對比
Neodynamic條碼 vs IronBarcode: 拆分SDK架構和格式支持相比
Neodynamic的條碼讀取SDK無法讀取QR碼。 您可以購買Neodynamic的兩個SDK,但仍然無法讀取由配套生成器產生的QR碼。 那個單一矛盾 — 支持QR Code、DataMatrix、PDF417和Aztec的生成器,與不支持這些格式的讀取器搭配 —— 定義了使用Neodynamic條碼工具的實際體驗,並構成了與IronBarcode比較的框架。
了解Neodynamic條碼
Neodynamic提供兩個完全獨立的商業產品提供條碼功能:用於條碼生成的Barcode Professional SDK和用於條碼讀取的Barcode Reader SDK。 每個產品都作為自己的NuGet包分發,需要單獨購買,並有自己的授權密鑰。 需要同時生成和讀取的項目必須獨立整合這兩個包,並通過不同的更新周期維護,並在應用程式啟動時配置。
Barcode Professional SDK 是生成組件。 它支持多種符號學,包括線性格式(Code 128、Code 39、EAN-13、UPC-A、Codabar、ITF)和2D格式(QR Code、DataMatrix、PDF417、Aztec)。 SDK使用基於實例的API:構建一個System.Drawing.Imaging管道保存。 .NET Framework版依賴於System.Drawing; 單獨的.NET Standard版本通過ComponentSource分發。
Barcode Reader SDK 是讀取組件。 它接受一個System.Drawing.Bitmap,僅返回1D符號的結果。 QR Code、DataMatrix、PDF417、Aztec和所有其他2D格式都不受讀取器支持。 當提交2D條碼時,SDK不返回結果 —— 不會拋出異常,只是產生一個空的結果集。 Barcode Reader SDK已於2019年12月31日標記為服務終止,其NuGet包(Neodynamic.SDK.BarcodeReader 1.0.2000)自2012年7月以來未更新,僅支持.NET Framework 2.0/3.x/4.x。 因此,恢復2D讀取能力需要在Neodynamic生態系統之外新增第三個程式庫。
Neodynamic Barcode的關鍵架構特徵:
- 生成和讀取的獨立產品: 對於使用兩項功能的專案,需要兩個NuGet包,兩次購買和兩個授權密鑰。
- 沒有2D讀取的2D生成: Barcode Professional SDK生成QR Code、DataMatrix、PDF417和Aztec,但配套的Barcode Reader SDK無法讀取這些格式。
- 基於實例的生成API: 生成需要構建一個
GetBarcodeImage()。 - 大多數版本中對System.Drawing的依賴: Barcode Professional .NET Windows版和Barcode Reader SDK依賴於
System.Drawing,限制了這些版本的Linux和容器部署。 Barcode Professional .NET Standard版使用SkiaSharp,並避免這種依賴。 - 僅1D讀取範圍: Barcode Reader SDK支持Code 128、EAN-13、UPC-A、Code 39、Codabar、Interleaved 2 of 5和MSI/Plessey。 沒有包括的2D格式。
- 無本地PDF支持: 兩個SDK都無法直接從PDF文件中讀取條碼; 需要單獨的圖像提取步驟。
- 沒有自動格式檢測: 讀取器根據支持的內容而不是圖像內容推斷格式。
拆分SDK架構
購買Neodynamic SDK的項目必須在啟動時配置兩個不同的授權塊。雙重LicenseKey分配使用不同的命名空間和不同的類名,兩個塊彼此不知情:
// Neodynamic: two products, two license configurations
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;
// Generation license (Barcode Professional SDK)
BarcodeProfessional.LicenseOwner = "Company";
BarcodeProfessional.LicenseKey = "GEN-KEY";
// Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY";
// Neodynamic: two products, two license configurations
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;
// Generation license (Barcode Professional SDK)
BarcodeProfessional.LicenseOwner = "Company";
BarcodeProfessional.LicenseKey = "GEN-KEY";
// Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY";
Imports Neodynamic.SDK.Barcode
Imports Neodynamic.SDK.BarcodeReader
' Neodynamic: two products, two license configurations
' Generation license (Barcode Professional SDK)
BarcodeProfessional.LicenseOwner = "Company"
BarcodeProfessional.LicenseKey = "GEN-KEY"
' Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company"
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY"
這種模式反覆出現在每個環境中 —— 開發,測試和生產 —— 並且每當產品升級或更新時都必須維護。
理解IronBarcode
IronBarcode是一款由Iron Software開發的商業.NET條碼程式庫,透過單個NuGet包和單個授權提供條碼生成和讀取。 程式庫使用靜態API模型:生成透過BarcodeReader.Read()執行。 兩者都在所有支持的符號學範圍內運行,無需特定於格式的程式碼路徑。
IronBarcode是在不依賴於System.Drawing的情況下構建的,這使其在Linux、macOS和Docker容器中能夠部署而無需特定於平台的配置。 程式庫能夠直接從圖像文件、圖像流和PDF文件中讀取條碼,無需為PDF來源單獨提取圖像。
IronBarcode的關鍵特性:
- 生成和讀取的單一包: 一個NuGet包,一個授權密鑰和一個配置塊覆蓋所有條碼操作。
- 統一的1D和2D支持: 相同的API可讀取和生成50多種符號,包括Code 128、EAN-13、QR Code、DataMatrix、PDF417和Aztec。
- 靜態流暢API:
BarcodeWriter.CreateBarcode()返回一個可鏈結的結果;BarcodeReader.Read()接受文件路徑,流和PDF文件。 - 自動格式檢測: 讀取器從圖像內容中識別符號學,無需呼叫者指定預期格式。
- 沒有System.Drawing依賴: 跨平台部署在Linux和容器上無需額外的本機程式庫配置。
- 本地PDF閱讀: 嵌入在PDF文件中的條碼被直接讀取,返回頁碼元資料和條碼值。
- 異步和批量處理:
BarcodeReader.ReadAsync()和多頁批量操作支持高通量伺服器工作負載。
特性比較
下表總結了Neodynamic產品和IronBarcode之間的最高級別差異:
| 特性 | Neodynamic Barcode Professional | Neodynamic Barcode Reader | IronBarcode |
|---|---|---|---|
| 條碼生成 | 是 | 否 | 是 |
| 1D條碼讀取 | 否 | 是 | 是 |
| 2D條碼讀取 | 否 | 否 | 是 |
| 所需產品 | 1(僅生成) | 1(僅讀取) | 1(兩者) |
| 所需授權密鑰 | 每購買一個產品需要1個 | 每購買一個產品需要1個 | 總共1個 |
| 本地PDF條碼讀取 | 否 | 否 | 是 |
| System.Drawing依賴 | 依版本而定 | 是 | 否 |
詳細特性比較
| 特性 | Neodynamic Barcode Professional | Neodynamic Barcode Reader | IronBarcode |
|---|---|---|---|
| 生成 | |||
| 128碼生成 | 是 | 不適用 | 是 |
| EAN-13 / UPC-A生成 | 是 | 不適用 | 是 |
| Code 39生成 | 是 | 不適用 | 是 |
| QR Code 生成 | 是 | 不適用 | 是 |
| DataMatrix生成 | 是 | 不適用 | 是 |
| PDF417生成 | 是 | 不適用 | 是 |
| Aztec生成 | 是 | 不適用 | 是 |
| 讀取 | |||
| Code 128讀取 | 不適用 | 是 | 是 |
| EAN-13 / UPC-A讀取 | 不適用 | 是 | 是 |
| Code 39讀取 | 不適用 | 是 | 是 |
| Codabar讀取 | 不適用 | 是 | 是 |
| QR Code 讀取 | 不適用 | 否 | 是 |
| DataMatrix讀取 | 不適用 | 否 | 是 |
| PDF417讀取 | 不適用 | 否 | 是 |
| Aztec讀取 | 不適用 | 否 | 是 |
| 自動格式檢測 | 不適用 | 否 | 是 |
| 輸入來源 | |||
| 圖像文件輸入 | 是 | 是 | 是 |
| PDF 文件輸入 | 否 | 否 | 是 |
| 流輸入 | 是 | 是 | 是 |
| 平台和授權 | |||
| System.Drawing 依賴 | 依版本而定 | 是 | 否 |
| 支持Linux / Docker | 是(.NET Standard版) | 否 | 是 |
| .NET Standard 2.0 | 是(.NET Standard版) | 否 | 是 |
| .NET 8/.NET 9 | 是(.NET Standard版) | 否 | 是 |
| 需要NuGet包 | 每產品1個 | 每產品1個 | 總共1個 |
| 所需授權密鑰 | 每產品1個 | 每產品1個 | 總共1個 |
讀取格式支持
兩個Neodynamic SDK和IronBarcode之間讀取格式邊界是此比較中最顯著的技術差異。
Neodynamic條碼讀取器方法
Neodynamic條碼讀取器僅支持線性條碼。 當將2D條碼提交給讀取器時,SDK返回一個空或null的結果集。 不會拋出異常,也沒有錯誤訊息指示發生了什麼。 使用該SDK的團隊通常會在部署調用讀取器對QR碼圖像進行調用的程式碼後發現這一限制,觀察到結果集合總是為空。
使用Neodynamic Reader的程式碼庫中的一個常見防禦模式是明確檢查,當預期為2D格式時引發異常:
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;
public string ReadQrCode(string imagePath)
{
using var bitmap = new Bitmap(imagePath);
var reader = new BarcodeReader();
var results = reader.Read(bitmap);
// Results will be null or empty — QR codes are not recognised by this SDK
if (results == null || !results.Any())
{
throw new NotSupportedException(
"Neodynamic Barcode Reader does not support QR codes");
}
return results.First().Value;
}
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;
public string ReadQrCode(string imagePath)
{
using var bitmap = new Bitmap(imagePath);
var reader = new BarcodeReader();
var results = reader.Read(bitmap);
// Results will be null or empty — QR codes are not recognised by this SDK
if (results == null || !results.Any())
{
throw new NotSupportedException(
"Neodynamic Barcode Reader does not support QR codes");
}
return results.First().Value;
}
Imports Neodynamic.SDK.BarcodeReader
Imports System.Drawing
Public Function ReadQrCode(imagePath As String) As String
Using bitmap As New Bitmap(imagePath)
Dim reader As New BarcodeReader()
Dim results = reader.Read(bitmap)
' Results will be null or empty — QR codes are not recognised by this SDK
If results Is Nothing OrElse Not results.Any() Then
Throw New NotSupportedException("Neodynamic Barcode Reader does not support QR codes")
End If
Return results.First().Value
End Using
End Function
此方法不能單獨使用Neodynamic Reader SDK完成。 NotSupportedException並不是一種變通方法 - 它反映了讀取器的實際2D輸入能力邊界。
IronBarcode方法
IronBarcode透過相同的BarcodeReader.Read()調用讀取所有支持的符號學。 格式從圖像內容中自動檢測。 QR碼、Code 128和DataMatrix條碼都使用相同的呼叫程式碼:
using IronBarCode;
public string ReadQrCode(string imagePath)
{
// QR codes, DataMatrix, PDF417 — all handled automatically
var result = BarcodeReader.Read(imagePath).FirstOrDefault();
return result?.Value;
}
using IronBarCode;
public string ReadQrCode(string imagePath)
{
// QR codes, DataMatrix, PDF417 — all handled automatically
var result = BarcodeReader.Read(imagePath).FirstOrDefault();
return result?.Value;
}
Imports IronBarCode
Public Function ReadQrCode(imagePath As String) As String
' QR codes, DataMatrix, PDF417 — all handled automatically
Dim result = BarcodeReader.Read(imagePath).FirstOrDefault()
Return If(result?.Value, Nothing)
End Function
呼叫者不指定預期格式。 IronBarcode識別符號學並返回值。 有關圖像讀取選項的完整詳細資訊,包括多條碼檢測和圖像預處理,請參閱從圖像中讀取條碼指南。
條碼生成
Neodynamic Barcode Professional和IronBarcode都能夠生成1D和2D條碼。 差異在於API風格和依賴性足跡,而不是輸出能力。
Neodynamic條碼專業方法
Neodynamic的生成API是基於實例的。 構建一個System.Drawing.Image。 然後使用System.Drawing.Imaging.ImageFormat枚舉保存圖像:
using Neodynamic.SDK.Barcode;
// Configure license first
BarcodeProfessional.LicenseOwner = "Your Company";
BarcodeProfessional.LicenseKey = "YOUR-KEY";
// Build the barcode through property assignment
var barcode = new BarcodeProfessional();
barcode.Code = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.BarcodeUnit = BarcodeUnit.Pixel;
// Get image and save via System.Drawing
System.Drawing.Image image = barcode.GetBarcodeImage();
image.Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
using Neodynamic.SDK.Barcode;
// Configure license first
BarcodeProfessional.LicenseOwner = "Your Company";
BarcodeProfessional.LicenseKey = "YOUR-KEY";
// Build the barcode through property assignment
var barcode = new BarcodeProfessional();
barcode.Code = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.BarcodeUnit = BarcodeUnit.Pixel;
// Get image and save via System.Drawing
System.Drawing.Image image = barcode.GetBarcodeImage();
image.Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
Imports Neodynamic.SDK.Barcode
Imports System.Drawing
' Configure license first
BarcodeProfessional.LicenseOwner = "Your Company"
BarcodeProfessional.LicenseKey = "YOUR-KEY"
' Build the barcode through property assignment
Dim barcode As New BarcodeProfessional()
barcode.Code = "12345678"
barcode.Symbology = Symbology.Code128
barcode.BarcodeUnit = BarcodeUnit.Pixel
' Get image and save via System.Drawing
Dim image As Image = barcode.GetBarcodeImage()
image.Save("output.png", Imaging.ImageFormat.Png)
SDK提供合法的自定義選項,包括DPI控制、文字對齊、顏色設置和安靜區域大小設定。 這些對於注重準確物理尺寸的列印工作流非常有用。 生成能力本身是完整的; 促使遷移的限制在讀取方面,而不是生成方面。
IronBarcode方法
IronBarcode使用流暢的靜態方法。 編碼和資料作為參數傳遞給BarcodeWriter.CreateBarcode(),輸出格式作為返回物件上的方法名稱表達。 不需要System.Drawing導入:
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("output.png");
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("output.png");
Imports IronBarCode
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.SaveAsPng("output.png")
對於2D條碼生成,專門的QRCodeWriter類提供特定於QR碼的額外選項:
using IronBarCode;
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
.SaveAsPng("qrcode.png");
using IronBarCode;
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
.SaveAsPng("qrcode.png");
Imports IronBarCode
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) _
.SaveAsPng("qrcode.png")
有關生成具有大小和註解選項的1D符號學的指南,請參閱建立1D條碼指南。 有關建立包括DataMatrix和PDF417在內的2D條碼,請參閱建立2D條碼指南。
授權和產品結構
授權模型代表了兩個選項之間最實用的差異之一,對於需要生成和讀取的系統建設團隊而言。
Neodynamic方法
Neodynamic的條碼能力分割在兩個單獨許可的產品中。 Barcode Professional SDK涵蓋生成,Barcode Reader SDK涵蓋讀取。 每個產品需要單獨購買並有單獨的許可密鑰。 購買兩個產品的團隊必須維護兩個LicenseOwner / LicenseKey配置塊,跟踪兩個不同的續約日期,並在出現問題時處理兩個獨立的支持渠道。
Barcode Professional SDK從大約$352起,針對Basic版的一位開發者授權,而從Ultimate版起大約$705(開發者授權經由ComponentSource取得)。 Barcode Reader SDK有單獨的成本,是根據遺留定價供應的—該產品已於2019年12月31日標記為服務終止。需要2D讀取的專案無法以任何價格滿足該需求,需要新增第三個程式庫。 您可以參閱IronBarcode支持條碼格式頁面,查看單一統一許可涵蓋的完整列表。
IronBarcode方法
IronBarcode作為一個單一產品出售,涵蓋所有條碼操作 — 包括生成和讀取所有支持的符號學 — 使用單一許可密鑰。 沒有單獨的讀取許可,沒有單獨的生成許可,也沒有額外的2D格式支持費用。 許可密鑰在應用程式啟動時設定一次,無需進一步的配置:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
IronBarcode Lite價格為$749支持一位開發者,包括完整功能套件。 若要查看當前的定價級別和批量選擇,請參閱IronBarcode授權頁面。
API對映參考
| Neodynamic API | IronBarcode等價 | 注意 |
|---|---|---|
BarcodeProfessional.LicenseOwner = "..." |
IronBarCode.License.LicenseKey = "key" |
單一密鑰代替擁有者 + 密鑰配對 |
BarcodeProfessional.LicenseKey = "..." |
(part of single key above) | 沒有單獨的擁有者字段 |
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner |
(removed) | 不需要 |
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey |
(removed) | 不需要 |
new BarcodeProfessional() |
BarcodeWriter.CreateBarcode(data, encoding) |
靜態方法,無實例 |
barcode.Code = data |
CreateBarcode的第一個參數 |
在構造時傳遞 |
barcode.Symbology = Symbology.Code128 |
BarcodeEncoding.Code128 |
第二個參數 |
barcode.Symbology = Symbology.QRCode |
BarcodeEncoding.QRCode |
支持完整的往返行程 |
barcode.GetBarcodeImage().Save(path, ImageFormat.Png) |
.SaveAsPng(path) |
流暢的,沒有ImageFormat枚舉 |
new BarcodeReader().Read(bitmap) |
BarcodeReader.Read(imagePath) |
靜態方法,接受文件路徑 |
result.Value |
result.Value |
同屬性名稱 |
QR的throw new NotSupportedException(...) |
BarcodeReader.Read(imagePath) |
用標準讀取呼叫替換 |
當團隊考慮從Neodynamic條碼轉移到IronBarcode時
QR碼讀取需求
團隊從Neodynamic轉到IronBarcode的最常見情況是發現Barcode Professional SDK生成的QR碼不能被Barcode Reader SDK讀回。 構建產品標籤系統、庫存管理工具或文件跟踪工作流的團隊通常將生成和讀取實施為更大系統的單個階段。 當首先使用Barcode Professional構建生成時,只在嘗試讀取組件時才會發現讀取器的限制。 到了那時,項目已經承諾使用Neodynamic進行生成,新增第三個程式庫以涵蓋2D讀取會引入版本管理的複雜性,而這在統一的SDK中不存在。
降低產品複雜性
有些團隊轉移不是因為具體的格式差距,而是因為維護兩個獨立產品的負擔,這在概念上是一個單一功能,卻成為了經常性的摩擦點。 兩個包在.csproj文件中,兩個授權續期周期要跟踪,兩套釋放說明要審查,應用.NET或Windows更新時的兩個潛在不相容來源——這些額外的負擔沒有提供超越單個統一包所能提供的功能。在.NET升級作為依賴項審計的一部分時,團隊經常將Neodynamic雙包方案識別為一個精簡化的機會。
PDF條碼處理
處理包含條碼的PDF文件的應用程式代表了兩個Neodynamic SDK短板同時發生的情況。 生成SDK和讀取SDK都無法打開PDF文件並從其頁面中提取條碼值。 處理運單、發票文件、醫療記錄或任何條碼嵌入在PDF中的文件工作流的團隊必須在進行任何讀取之前實施中間的圖像提取步驟。 該提取步驟需要額外的程式庫,這意味著這個項目已經附加了第三個依賴項,以克服一個單一IronBarcode安裝可以消除的限制。
讀寫格式一致性
以規模運行條碼工作流的團隊有時發現,生成和讀取之間在格式支持上的不一致性會造成測試和驗證問題。 當系統為一個目的生成QR碼,為另一個目的讀取不同格式型別時,生成器支持與讀取器支持之間的分歧會在回路測試中產生差距。 一個系統,其中生成和讀取共享相同的程式庫和相同的支持格式列表,較易於驗證。 確認生成的條碼能夠成功回讀,從多程式庫整合測試變成單一程式庫操作。
常見的遷移考慮因素
雙包刪除
從Neodynamic轉移需要刪除兩個NuGet包:Neodynamic.SDK.BarcodeReader。 兩者必須從using指令必須從原始文件中刪除。 對每個包運行dotnet remove package就足夠了; 這兩個之間沒有共享依賴,需要額外清理。
雙授權配置清除
兩個授權配置塊 —— 一個用於Neodynamic.SDK.BarcodeReader.BarcodeReader —— 以一個IronBarCode.License.LicenseKey賦值替換。 這個賦值在應用程式啟動時進行,通常在Program.cs或應用的依賴注入引導中。任何儲存Neodynamic授權密鑰的配置文件或環境變數都可以在遷移驗證後淘汰。
NotSupportedException 清除
開發期間遇到2D讀取限制的程式碼庫通常包含拋出NotSupportedException的佔位符方法,來處理QR碼或DataMatrix讀取。 這些方法不是變通,而是誠實地承認該功能並不存在。在遷移到IronBarcode後,每個這樣的方法體都被標準BarcodeReader.Read(imagePath)呼叫替換。 不需要特別處理; 格式是自動檢測的。
額外的IronBarcode能力
除核心比較點外,IronBarcode還提供了在兩款Neodynamic產品中均不可用的功能:
- 本地PDF條碼讀取:
BarcodeReader.Read("document.pdf")直接從PDF文件中讀取條碼,返回頁碼資訊和條碼值,無需中間圖像提取。 - 異步批處理:
BarcodeReader.ReadAsync()支持適合於伺服器方工作負載的非阻塞讀取,處理高容量圖像或文件並發。 - 機器學習錯誤更正: IronBarcode應用基於ML的錯誤更正以恢復損毀、部分遮蔽或低解析度條碼圖像的值,這些在標準解碼器中會返回空結果。
- 多條碼檢測: 單一
BarcodeReader.Read()呼叫返回圖像中存在的所有條碼,包括包含1D和2D符號的混合格式圖像。 - 將條碼戳記到PDF中: IronBarcode能夠將條碼圖像直接寫入現有的PDF文件中,無需單獨的PDF程式庫。
- 圖像預處理選項: 可以在讀取器上配置亮度校正、旋轉處理和噪音減少,以提高在困難條件下捕獲圖像的識別率。
.NET相容性和未來準備
IronBarcode支持.NET Standard 2.0、.NET Framework 4.6.2及更高版本、.NET Core 3.1和所有當前的.NET版本,包括.NET 8和.NET 9。該程式庫不依賴於System.Drawing,這意味著它能夠在Linux和Docker容器中不作修改運行。Neodynamic Barcode ReaderSDK僅針對.NET Framework 2.0/3.x/4.x設計——其NuGet包自2012年7月以來未更新,並於2019年12月31日被標記為服務終止,不支持.NET Core、.NET 5+、Linux或Docker。 Barcode Professional SDK有多個版本發行; .NET Standard版使用SkiaSharp並運行在.NET Core / .NET 5+,而.NET Windows版保留了System.Drawing依賴。 IronBarcode隨.NET發布節奏進行更新。
結論
Neodynamic Barcode Professional SDK和Neodynamic Barcode Reader SDK共同代表了一種生成與讀取分離的產品模式,是單獨的商業產品,具有單獨的能力邊界。 生成器支持QR Code、DataMatrix、PDF417和Aztec。 讀取器則不支持。 這種不對稱並不是一點小遺漏 - 意味著這兩種產品不能為需要2D條碼讀取的任何應用形成完整的條碼工作流,並且意味着在移動支付、藥品追踪、運輸物流和文件處理中最廣泛使用的格式不在讀取器的能力集內。
Neodynamic條碼專業是唯一在需求上只需要生成時的合理選擇。 SDK在廣泛的符號學中的產出質量高,支持DPI控制和特定於列印的自定義,並與較大的Neodynamic ThermalLabel生態系統整合。 使用僅限Windows的部署且僅需要1D讀取的團隊也可以使用Barcode Reader SDK而不會遇到其格式限制。 在那狹窄的運營範圍內 —— 僅生成,或僅在Windows上1D-讀取 —— Neodynamic的產品提供他們所描述的功能。
IronBarcode是在專案需要同時生成和讀取,涉及到2D格式,當條碼輸入源為PDF文件時,或當偏愛單一包架構以進行依賴管理時的合適選擇。 統一的授權模式,無System.Drawing依賴,以及對所有支持的符號學的自動格式檢測,使其適合跨平台應用、雲端部署和從不同來源處理多種條碼格式的系統。
在兩者之間選擇,最終減少到Neodynamic讀取器中的格式邊界是否影響有關項目。 對於工作流程僅限於在Windows上1D條碼生成和讀取的團隊來說,這一邊界可能永遠不會遇到。 對於需要在同一系統的生成和讀取方面使用QR碼的團隊來說,這一邊界在Neodynamic產品系列內是無法克服的,不論選哪一個都需要不同的程式庫。
常見問題
什麼是Neodynamic Barcode Professional?
Neodynamic Barcode Professional是一個.NET條碼程式庫,用於在C#應用程式中生成和讀取條碼。當選擇.NET項目的條碼解決方案時,這是開發者評估的幾個選擇之一。
Neodynamic Barcode Professional和IronBarcode之間的主要差異是什麼?
IronBarcode使用一個靜態的、無狀態的API,不需要實例管理,而Neodynamic Barcode Professional通常需要在使用前建立和配置實例。IronBarcode還提供了原生PDF支持、自動格式檢測以及在所有環境下的單鍵授權。
IronBarcode是否比Neodynamic Barcode Professional容易授權?
IronBarcode使用一個覆蓋開發和生產部署的單一授權金鑰。相比於將SDK金鑰與運行時金鑰分開的授權系統,這簡化了CI/CD管道和Docker配置。
IronBarcode是否支持Neodynamic Barcode Professional支持的所有條碼格式?
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在批量處理方面如何比Neodynamic Barcode Professional更好?
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,而不需要像Neodynamic一樣?
可以。IronBarcode的試用模式返回完整解碼的條碼值——只有生成的輸出圖像上有水印。您可以在自己的文件上評估讀取準確性,然後再決定購買。
Neodynamic Barcode Professional與IronBarcode的價格差異是多少?
IronBarcode起價為$749,為單開發者所適用的永久授權,覆蓋開發和生產。價格詳情和批量選項可在IronBarcode授權頁面獲得。無需單獨的運行時授權。
從Neodynamic Barcode Professional遷移到IronBarcode是否直截了當?
從Neodynamic Barcode Professional到IronBarcode的遷移主要涉及用IronBarcode的靜態方法替換基於實例的API調用,去除授權樣板程式碼,並更新結果屬性名稱。大多數遷移涉及減少程式碼而不是新增程式碼。
IronBarcode可以生成帶有Logo的QR碼嗎?
可以。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") 可以原生嵌入品牌圖像進QR碼,並可配置錯誤更正。也支持通過ChangeBarCodeColor() 生成彩色QR碼。

