Neodynamic Barcode Professional vs IronBarcode: C# Barcode Bibliothek Vergleich
Das Barcode Reader SDK von Neodynamic kann keine QR-Codes lesen. Selbst wenn Sie beide Neodynamic SDKs erwerben, können Sie dennoch nicht dieselben QR-Codes lesen, die der zugehörige Generator erzeugt. Dieser eine Widerspruch – ein Generator, der QR-Code, DataMatrix, PDF417 und Aztec unterstützt, gepaart mit einem Leser, der keines dieser Formate unterstützt – prägt die praktische Erfahrung bei der Arbeit mit den Barcode-Tools von Neodynamic und bildet die Grundlage für den anschließenden Vergleich mit IronBarcode .
Neodynamischer Barcode verstehen
Neodynamic bietet Barcode-Funktionalität über zwei völlig separate kommerzielle Produkte an: das Barcode Professional SDK zur Barcode-Generierung und das Barcode Reader SDK zum Barcode-Lesen. Jedes Produkt wird als eigenes NuGet Paket vertrieben, muss separat erworben werden und verfügt über einen eigenen Lizenzschlüssel. Ein Projekt, das sowohl Generierung als auch Lesen benötigt, muss beide Pakete unabhängig voneinander integrieren, beide durch separate Aktualisierungszyklen pflegen und beide beim Anwendungsstart konfigurieren.
Das Barcode Professional SDK ist die Generierungskomponente. Es unterstützt eine breite Palette von Symbologien, darunter lineare Formate (Code 128, Code 39, EAN-13, UPC-A, Codabar, ITF) und 2D-Formate (QR-Code, DataMatrix, PDF417, Aztec). Das SDK verwendet eine instanzbasierte API: Es wird ein BarcodeInfo-Objekt erstellt, dessen Eigenschaften zugewiesen und GetImage() aufgerufen, um ein System.Drawing.Image-Objekt zu erzeugen, das über die Standard-Pipeline System.Drawing.Imaging gespeichert wird. Das SDK ist von System.Drawing abhängig, was die plattformübergreifende Bereitstellung einschränkt.
Das Barcode Reader SDK ist die Lesekomponente. Es akzeptiert ein System.Drawing.Bitmap und gibt nur Ergebnisse für 1D-Symbologien zurück. QR-Code, DataMatrix, PDF417, Aztec und alle anderen 2D-Formate werden vom Reader nicht unterstützt. Wenn ein 2D-Barcode übermittelt wird, liefert das SDK keine Ergebnisse – es wird keine Ausnahme ausgelöst, sondern es wird einfach ein leeres Ergebnis-Set erzeugt. Teams, die mit Neodynamic-Produkten arbeiten und diese Einschränkung erst nach dem Aufbau eines Generierungs-Workflows entdecken, stellen fest, dass die Wiederherstellung der 2D-Lesefähigkeit das Hinzufügen einer dritten Bibliothek außerhalb des Neodynamic-Ökosystems erfordert.
Wichtigste architektonische Merkmale des neodynamischen Barcodes:
- Separate Produkte für Generierung und Lesen: Für ein Projekt, das beide Funktionen nutzt, werden zwei NuGet Pakete, zwei Käufe und zwei Lizenzschlüssel benötigt.
- 2D-Generierung ohne 2D-Lesen: Das Barcode Professional SDK generiert QR-Codes, DataMatrix, PDF417 und Aztec, aber das zugehörige Barcode Reader SDK kann keines dieser Formate lesen.
- Instanzbasierte Generierungs-API: Für die Generierung muss ein
BarcodeInfo-Objekt erstellt und Eigenschaften zugewiesen werden, bevorGetImage()aufgerufen wird. - System.Drawing-Abhängigkeit: Beide SDKs hängen von
System.Drawingab, was die Bereitstellung in Linux- und Containerumgebungen ohne zusätzliche Konfiguration einschränkt. - Lesebereich nur 1D: Das Barcode Reader SDK unterstützt Code 128, EAN-13, UPC-A, Code 39, Codabar, Interleaved 2 of 5 und MSI/Plessey. Es ist kein 2D-Format enthalten.
- Keine native PDF-Unterstützung: Keines der SDKs liest Barcodes direkt aus PDF-Dokumenten; Ein separater Bildextraktionsschritt ist erforderlich.
- Keine automatische Formaterkennung: Der Reader leitet das Format aus den unterstützten Formaten ab, anstatt aus dem Bildinhalt.
Die Split-SDK-Architektur
Ein Projekt, das beide Neodynamic SDKs erwirbt, muss beim Start zwei separate Lizenzblöcke konfigurieren. Die beiden Zuweisungen LicenseOwner und LicenseKey verwenden unterschiedliche Namensräume und unterschiedliche Klassennamen, und keiner der Blöcke kennt den anderen.
// Neodynamic: two products, two license configurations
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;
// Generation license (Barcode Professional SDK)
BarcodeInfo.LicenseOwner = "Company";
BarcodeInfo.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)
BarcodeInfo.LicenseOwner = "Company";
BarcodeInfo.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)
BarcodeInfo.LicenseOwner = "Company"
BarcodeInfo.LicenseKey = "GEN-KEY"
' Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company"
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY"
Dieses Muster wiederholt sich in jeder Umgebung – Entwicklung, Testumgebung und Produktion – und muss bei jeder Aktualisierung oder Erneuerung eines der Produkte beibehalten werden.
IronBarcode verstehen
IronBarcode ist eine kommerzielle .NET Barcode-Bibliothek, die von Iron Software entwickelt wurde und die Generierung und das Lesen von Barcodes über ein einziges NuGet Paket unter einer einzigen Lizenz ermöglicht. Die Bibliothek verwendet ein statisches API-Modell: Die Generierung erfolgt über BarcodeWriter.CreateBarcode() und das Lesen über BarcodeReader.Read(). Beide Methoden funktionieren mit allen unterstützten Symbologien, ohne dass formatspezifische Codepfade erforderlich sind.
IronBarcode ist ohne Abhängigkeit von System.Drawing kompiliert, wodurch es ohne plattformspezifische Konfiguration auf Linux, macOS und in Docker-Containern eingesetzt werden kann. Die Bibliothek liest Barcodes nativ aus Bilddateien, Bildströmen und PDF-Dokumenten, ohne dass ein separater Bildextraktionsschritt für PDF-Quellen erforderlich ist.
Hauptmerkmale von IronBarcode:
- Ein einziges Paket für Generierung und Lesen: Ein NuGet Paket, ein Lizenzschlüssel und ein Konfigurationsblock decken alle Barcode-Operationen ab.
- Einheitliche 1D- und 2D-Unterstützung: Dieselbe API liest und generiert Code 128, EAN-13, QR-Code, DataMatrix, PDF417, Aztec und über 50 weitere Symbologien.
- Statische Fluent API:
BarcodeWriter.CreateBarcode()gibt ein verkettbares Ergebnis zurück;BarcodeReader.Read()akzeptiert Dateipfade, Datenströme und PDF-Dokumente. - Automatische Formaterkennung: Der Reader erkennt die Symbolik aus dem Bildinhalt, ohne dass der Aufrufer das erwartete Format angeben muss.
- Keine Abhängigkeit von System.Drawing: Plattformübergreifende Bereitstellung unter Linux und in Containern funktioniert ohne zusätzliche Konfiguration nativer Bibliotheken.
- Native PDF-Lesung: In PDF-Dokumente eingebettete Barcodes werden direkt gelesen, wobei Metadaten zur Seitenzahl zusammen mit den Barcode-Werten zurückgegeben werden.
- Asynchrone und Stapelverarbeitung:
BarcodeReader.ReadAsync()und mehrseitige Stapelverarbeitung unterstützen Server-Workloads mit hohem Durchsatz.
Funktionsvergleich
Die folgende Tabelle fasst die wichtigsten Unterschiede zwischen den Produkten von Neodynamic und IronBarcode zusammen:
| Feature | Neodynamischer BarCode Professional | Neodynamic Barcode-Lesegerät | IronBarcode |
|---|---|---|---|
| Barcode-Generierung | Ja | Nein | Ja |
| 1D-Barcode-Lesen | Nein | Ja | Ja |
| 2D-Barcode-Lesen | Nein | Nein | Ja |
| Benötigte Produkte | 1 (nur Generation) | 1 (nur zum Lesen) | 1 (beide) |
| Lizenzschlüssel erforderlich | 1 Stück pro gekauftem Produkt | 1 Stück pro gekauftem Produkt | Insgesamt 1 |
| Native PDF-Barcode-Lese | Nein | Nein | Ja |
| System.Drawing-Abhängigkeit | Ja | Ja | Nein |
Detaillierter Funktionsvergleich
| Feature | Neodynamischer BarCode Professional | Neodynamic Barcode-Lesegerät | IronBarcode |
|---|---|---|---|
| Generation | |||
| Code 128-Generierung | Ja | Nicht anwendbar | Ja |
| EAN-13 / UPC-A Generation | Ja | Nicht anwendbar | Ja |
| Code 39 Generation | Ja | Nicht anwendbar | Ja |
| QR-Code-Generierung | Ja | Nicht anwendbar | Ja |
| DataMatrix-Generierung | Ja | Nicht anwendbar | Ja |
| PDF417-Generierung | Ja | Nicht anwendbar | Ja |
| Azteken-Generation | Ja | Nicht anwendbar | Ja |
| Lektüre | |||
| Code 128-Lesung | Nicht anwendbar | Ja | Ja |
| EAN-13 / UPC-A-Lesung | Nicht anwendbar | Ja | Ja |
| Code 39 Messwert | Nicht anwendbar | Ja | Ja |
| Codabar-Lesung | Nicht anwendbar | Ja | Ja |
| QR-Code-Lesen | Nicht anwendbar | NEIN | Ja |
| DataMatrix-Lesung | Nicht anwendbar | NEIN | Ja |
| PDF417 lesen | Nicht anwendbar | NEIN | Ja |
| Aztekenlesung | Nicht anwendbar | NEIN | Ja |
| Automatische Formaterkennung | Nicht anwendbar | Nein | Ja |
| Eingangsquellen | |||
| Eingabe einer Bilddatei | Ja | Ja | Ja |
| PDF-Dokument-Eingabe | Nein | Nein | Ja |
| Stream-Eingabe | Ja | Ja | Ja |
| Plattform und Lizenzierung | |||
| System.Drawing-Abhängigkeit | Ja | Ja | Nein |
| Linux-/Docker-Unterstützung | Beschränkt | Beschränkt | Ja |
| .NET Standard 2.0 | Ja | Ja | Ja |
| .NET 8 / .NET 9 | Ja | Beschränkt | Ja |
| Erforderliche NuGet Pakete | 1 Stück pro Produkt | 1 Stück pro Produkt | Insgesamt 1 |
| Lizenzschlüssel erforderlich | 1 Stück pro Produkt | 1 Stück pro Produkt | Insgesamt 1 |
Unterstützung für Leseformate
Die größte technische Differenz in diesem Vergleich liegt in der Leseformatgrenze zwischen den beiden Neodynamic SDKs und IronBarcode .
Neodynamischer Barcode-Leseansatz
Der Neodynamic Barcode-Lesegerät unterstützt ausschließlich lineare Barcodes. Wenn ein 2D-Barcode an das Lesegerät übermittelt wird, gibt das SDK ein leeres oder Null-Ergebnis-Set zurück. Es wird keine Ausnahme ausgelöst, und es gibt keine Fehlermeldung, die angibt, was passiert ist. Teams, die mit diesem SDK arbeiten, entdecken die Einschränkung typischerweise erst, nachdem sie Code bereitgestellt haben, der den Reader für QR-Code-Bilder aufruft, und festgestellt haben, dass die Ergebnissammlung immer leer ist.
Ein häufiges defensives Muster in Codebasen, die den Neodynamic Reader verwenden, ist eine explizite Prüfung, die eine Ausnahme auslöst, wenn ein 2D-Format erwartet wird:
// Neodynamic Barcode-Lesegerät SDK: QR code reading is not supported
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;
public string ReadQrCode(string imagePath)
{
using var bitmap = new Bitmap(imagePath);
var results = BarcodeReader.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;
}
// Neodynamic Barcode-Lesegerät SDK: QR code reading is not supported
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;
public string ReadQrCode(string imagePath)
{
using var bitmap = new Bitmap(imagePath);
var results = BarcodeReader.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 results = BarcodeReader.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
Diese Methode kann nicht allein mit dem Neodynamic Reader SDK durchgeführt werden. Der Code NotSupportedException ist keine Umgehungslösung – er ist die einzig ehrliche Antwort, die der Leser auf eine 2D-Eingabe geben kann.
IronBarcode Ansatz
IronBarcode liest alle unterstützten Symbologien über denselben BarcodeReader.Read()-Aufruf. Das Format wird automatisch aus dem Bildinhalt erkannt. Ein QR-Code, ein Code 128 und ein DataMatrix-Barcode verwenden alle denselben Aufrufcode:
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
Der Aufrufer gibt kein erwartetes Format an. IronBarcode identifiziert die Symbologie und gibt den Wert zurück. Ausführliche Informationen zu den Bildleseoptionen, einschließlich der Erkennung mehrerer Barcodes und der Bildvorverarbeitung, finden Sie im Leitfaden zum Lesen von Barcodes aus Bildern .
Barcode-Erstellung
Sowohl Neodynamischer BarCode Professionalals auch IronBarcode sind in der Lage, 1D- und 2D-Barcodes zu generieren. Der Unterschied liegt eher im API-Stil und den Abhängigkeiten als in der Ausgabefähigkeit.
Neodynamischer Barcode- Professional Ansatz
Die Generierungs-API von Neodynamic ist instanzbasiert. Es wird ein BarcodeInfo-Objekt erstellt, dessen Eigenschaften einzeln zugewiesen werden, und GetImage() wird aufgerufen, um ein System.Drawing.Image zurückzugeben. Das Bild wird dann mithilfe der Enumeration System.Drawing.Imaging.ImageFormat gespeichert:
using Neodynamic.SDK.Barcode;
// Configure license first
BarcodeInfo.LicenseOwner = "Your Company";
BarcodeInfo.LicenseKey = "YOUR-KEY";
// Build the barcode through property assignment
var barcode = new BarcodeInfo();
barcode.Value = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.TextAlign = BarcodeTextAlignment.BelowCenter;
barcode.Dpi = 300;
// Get image and save via System.Drawing
System.Drawing.Image image = barcode.GetImage();
image.Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
using Neodynamic.SDK.Barcode;
// Configure license first
BarcodeInfo.LicenseOwner = "Your Company";
BarcodeInfo.LicenseKey = "YOUR-KEY";
// Build the barcode through property assignment
var barcode = new BarcodeInfo();
barcode.Value = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.TextAlign = BarcodeTextAlignment.BelowCenter;
barcode.Dpi = 300;
// Get image and save via System.Drawing
System.Drawing.Image image = barcode.GetImage();
image.Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
Imports Neodynamic.SDK.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging
' Configure license first
BarcodeInfo.LicenseOwner = "Your Company"
BarcodeInfo.LicenseKey = "YOUR-KEY"
' Build the barcode through property assignment
Dim barcode As New BarcodeInfo()
barcode.Value = "12345678"
barcode.Symbology = Symbology.Code128
barcode.TextAlign = BarcodeTextAlignment.BelowCenter
barcode.Dpi = 300
' Get image and save via System.Drawing
Dim image As Image = barcode.GetImage()
image.Save("output.png", ImageFormat.Png)
Das SDK bietet legitime Anpassungsmöglichkeiten, darunter DPI-Steuerung, Textausrichtung, Farbeinstellungen und die Größe der Ruhezone. Diese sind nützlich für Druckprozesse, bei denen es auf präzise physikalische Abmessungen ankommt. Die Erzeugungskapazität selbst ist vollständig; Die Einschränkungen, die eine Migration erforderlich machen, liegen auf der Leseseite, nicht auf der Generationsseite.
IronBarcode Ansatz
IronBarcode verwendet einen flüssigen statischen Ansatz. Die Kodierung und die Daten werden als Parameter an BarcodeWriter.CreateBarcode() übergeben, und das Ausgabeformat wird als Methodenname im zurückgegebenen Objekt ausgedrückt. Es ist kein System.Drawing Import erforderlich:
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")
Für die Generierung von 2D-Barcodes bietet die spezielle Klasse QRCodeWriter zusätzliche Optionen speziell für QR-Codes:
using IronBarCode;
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.High)
.SaveAsPng("qrcode.png");
using IronBarCode;
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.High)
.SaveAsPng("qrcode.png");
Imports IronBarCode
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.High) _
.SaveAsPng("qrcode.png")
Hinweise zur Generierung von 1D-Symbologien mit Größen- und Beschriftungsoptionen finden Sie im Leitfaden zum Erstellen von 1D-Barcodes . Informationen zur Erstellung von 2D-Barcodes, einschließlich DataMatrix und PDF417, finden Sie im Leitfaden zur Erstellung von 2D-Barcodes .
Lizenzierung und Produktstruktur
Das Lizenzmodell stellt einen der praktischsten Unterschiede zwischen den beiden Optionen für Teams dar, die Systeme entwickeln, die sowohl Generierung als auch Lesen erfordern.
Neodynamischer Ansatz
Die Barcode-Funktionalität von Neodynamic ist auf zwei separat lizenzierte Produkte aufgeteilt. Das Barcode Professional SDK deckt die Generierung ab und das Barcode Reader SDK das Lesen. Jedes Produkt muss separat erworben werden und verfügt über einen separaten Lizenzschlüssel. Ein Team, das beide Produkte erwirbt, muss zwei LicenseOwner / LicenseKey Konfigurationsblöcke pflegen, zwei separate Verlängerungstermine verfolgen und sich bei Problemen mit zwei separaten Supportkanälen auseinandersetzen.
Das Barcode Professional SDK kostet etwa 245 US-Dollar für eine einzelne Entwicklerlizenz. Das Barcode Reader SDK verursacht separate Kosten. Ein Projekt, das sowohl die Generierung als auch das 1D-Lesen von Barcodes erfordert, verursacht daher für einen einzelnen Entwickler Gesamtkosten von mindestens 500 US-Dollar. Ein Projekt, das 2D-Lesen erfordert, kann diese Anforderung mit Neodynamic-Produkten zu keinem Preis erfüllen – eine dritte Bibliothek muss hinzugefügt werden. Auf der Seite "Von IronBarcode unterstützte Barcode-Formate" finden Sie eine vollständige Liste dessen, was eine einzelne einheitliche Lizenz abdeckt.
IronBarcode Ansatz
IronBarcode wird als Einzelprodukt verkauft, das alle Barcode-Operationen – Generierung und Lesen über alle unterstützten Symbologien hinweg – unter einem einzigen Lizenzschlüssel abdeckt. Es gibt keine separate Reader-Lizenz, keine separate Generator-Lizenz und keine zusätzlichen Kosten für die Unterstützung des 2D-Formats. Der Lizenzschlüssel wird einmalig beim Start der Anwendung festgelegt und erfordert keine weitere Konfiguration:
IronBarCode.License.LicenseKey = "YOUR-KEY";
IronBarCode.License.LicenseKey = "YOUR-KEY";
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-KEY"
IronBarcode Lite kostet 749 US-Dollar für einen einzelnen Entwickler und bietet den vollen Funktionsumfang. Die aktuellen Preisstufen und Mengenoptionen finden Sie auf derIronBarcode -Lizenzseite .
API-Mapping-Referenz
| Neodynamische API | IronBarcode Äquivalent | Notizen |
|---|---|---|
BarcodeInfo.LicenseOwner = "..." |
IronBarCode.License.LicenseKey = "key" |
Ein einzelner Schlüssel ersetzt das bestehende Schlüsselpaar. |
BarcodeInfo.LicenseKey = "..." |
(part of single key above) | Kein separates Eigentümerfeld |
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner |
(removed) | Nicht erforderlich |
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey |
(removed) | Nicht erforderlich |
new BarcodeInfo() |
BarcodeWriter.CreateBarcode(data, encoding) |
Statische Methode, keine Instanz |
barcode.Value = data |
Erster Parameter von CreateBarcode |
Bei der Konstruktion bestanden |
barcode.Symbology = Symbology.Code128 |
BarcodeEncoding.Code128 |
Zweiter Parameter |
barcode.Symbology = Symbology.QRCode |
BarcodeEncoding.QRCode |
Vollständige Hin- und Rückreiseunterstützung |
barcode.GetImage().Save(path, ImageFormat.Png) |
.SaveAsPng(path) |
Fluent, kein ImageFormat-Enum |
BarcodeReader.Read(bitmap) |
BarcodeReader.Read(imagePath) |
Der Dateipfad ersetzt das Bitmap-Objekt. |
result.Value |
result.Value |
Gleicher Eigenschaftsname |
throw new NotSupportedException(...) für QR |
BarcodeReader.Read(imagePath) |
Ersetzen Sie dies durch einen Standard-Leseaufruf. |
Wenn Teams einen Wechsel von Neodynamic Barcode zu IronBarcode erwägen
Anforderungen an das Lesen von QR-Codes
Das häufigste Szenario, das Teams von Neodynamic zu IronBarcode führt, ist die Entdeckung, dass QR-Codes, die mit dem Barcode Professional SDK generiert wurden, nicht mit dem Barcode Reader SDK gelesen werden können. Teams, die Produktkennzeichnungssysteme, Bestandsverwaltungstools oder Dokumentenverfolgungs-Workflows entwickeln, implementieren die Generierung und das Lesen oft als separate Phasen eines größeren Systems. Wenn die Generierung zuerst mit Barcode Professional erstellt wird, wird die Einschränkung des Lesegeräts erst beim Versuch, die Lesekomponente zu verwenden, deutlich. Zu diesem Zeitpunkt hat sich das Projekt bereits für Neodynamic zur Generierung entschieden, und das Hinzufügen einer dritten Bibliothek zur Abdeckung des 2D-Lesens führt zu einer Komplexität im Versionsmanagement, die bei einem einheitlichen SDK nicht existieren würde.
Reduzierung der Produktkomplexität
Manche Teams migrieren nicht aufgrund eines spezifischen Formatunterschieds, sondern weil der Aufwand für die Wartung zweier separater Produkte für eine im Grunde genommen einzige Funktion zu einem wiederkehrenden Reibungspunkt wird. Zwei Pakete in der Datei .csproj, zwei Lizenzverlängerungszyklen, zwei zu prüfende Versionshinweise und zwei potenzielle Inkompatibilitätsquellen bei .NET oder Windows-Updates – all dieser Mehraufwand bietet keine Funktionalität, die ein einzelnes, einheitliches Paket nicht bereitstellen würde. Teams, die im Rahmen eines .NET -Upgrades eine Abhängigkeitsprüfung durchführen, erkennen die zweiteilige Neodynamic-Lösung oft als Vereinfachungsmöglichkeit.
PDF-Barcode-Verarbeitung
Anwendungen, die PDF-Dokumente mit Barcodes verarbeiten, stellen ein Szenario dar, in dem beide Neodynamic SDKs gleichzeitig versagen. Weder das Generierungs-SDK noch das Leser-SDK können eine PDF-Datei öffnen und Barcode-Werte von ihren Seiten extrahieren. Teams, die mit Versandmanifesten, Rechnungsdokumenten, Krankenakten oder anderen Dokumentenworkflows arbeiten, bei denen Barcodes in PDFs eingebettet sind, müssen vor dem eigentlichen Lesen einen Zwischenschritt zur Bildextraktion implementieren. Dieser Extraktionsschritt erfordert eine zusätzliche Bibliothek, was bedeutet, dass das Projekt bereits eine dritte Abhängigkeit aufweist, um eine Einschränkung zu umgehen, die durch eine einzelne IronBarcode Installation beseitigt würde.
Formatkonsistenz beim Lesen und Schreiben
Teams, die Barcode-Workflows in großem Umfang betreiben, stellen manchmal fest, dass Inkonsistenzen in der Formatunterstützung zwischen Generierung und Lesen zu Test- und Validierungsproblemen führen. Wenn ein System QR-Codes für einen Zweck generiert und für einen anderen Zweck unterschiedliche Formate liest, entstehen durch die Diskrepanz zwischen dem, was der Generator unterstützt, und dem, was der Leser unterstützt, Lücken im Roundtrip-Test. Ein System, bei dem Generierung und Lesen dieselbe Bibliothek und dieselbe Liste unterstützter Formate verwenden, ist einfacher zu validieren. Die Überprüfung, ob ein generierter Barcode erfolgreich ausgelesen werden kann, wird zu einer Einzelbibliotheksoperation anstatt zu einem Integrationstest mehrerer Bibliotheken.
Gemeinsame Überlegungen zur Migration
Entfernung von Doppelpaketen
Für die Migration von Neodynamic müssen die beiden NuGet Pakete Neodynamic.SDK.Barcode und Neodynamic.SDK.BarcodeReader entfernt werden. Beide müssen aus der Datei .csproj entfernt werden, und die beiden entsprechenden Direktiven using müssen aus den Quelldateien entfernt werden. Es genügt, dotnet remove package für jedes auszuführen; Es gibt keine gemeinsamen Abhängigkeiten zwischen den beiden, die eine zusätzliche Bereinigung erfordern würden.
Bereinigung der Dual-Lizenz-Konfiguration
Die beiden Lizenzkonfigurationsblöcke – einer für BarcodeInfo und einer für Neodynamic.SDK.BarcodeReader.BarcodeReader – werden beide durch eine einzige IronBarCode.License.LicenseKey Zuweisung ersetzt. Diese Zuweisung erfolgt einmalig beim Anwendungsstart, typischerweise in Program.cs oder im Rahmen der Abhängigkeitsinjektion der Anwendung. Alle Konfigurationsdateien oder Umgebungsvariablen, die Neodynamic-Lizenzschlüssel speichern, können nach der Überprüfung der Migration entfernt werden.
Entfernung der NotSupportedException
Codebasen, die während der Entwicklung auf die Einschränkung des 2D-Lesens gestoßen sind, enthalten oft Platzhaltermethoden, die beim Lesen von QR-Codes oder DataMatrix-Codes die Fehlermeldung NotSupportedException auslösen. Diese Methoden sind keine Notlösungen – sie sind ein ehrliches Eingeständnis, dass die Funktionalität nicht existierte. Nach der Migration zu IronBarcode wird jeder solche Methodenrumpf durch einen standardmäßigen BarcodeReader.Read(imagePath)-Aufruf ersetzt. Eine besondere Behandlung ist nicht erforderlich; Das Format wird automatisch erkannt.
Zusätzliche IronBarcode Funktionen
Über die zentralen Vergleichspunkte hinaus bietet IronBarcode Funktionen, die in keinem der Neodynamic-Produkte verfügbar sind:
- Native PDF-Barcode-Lesung:
BarcodeReader.Read("document.pdf")liest Barcodes direkt aus PDF-Dokumenten und gibt neben den Barcode-Werten auch Seitenzahleninformationen zurück, ohne dass eine Zwischenbildextraktion erforderlich ist. - Asynchrone Stapelverarbeitung:
BarcodeReader.ReadAsync()unterstützt nicht-blockierende Lesevorgänge, die für serverseitige Workloads geeignet sind, die große Mengen an Bildern oder Dokumenten gleichzeitig verarbeiten. - Fehlerkorrektur mittels maschinellen Lernens: IronBarcode wendet eine auf maschinellem Lernen basierende Fehlerkorrektur an, um Werte aus beschädigten, teilweise verdeckten oder niedrig auflösenden Barcode-Bildern wiederherzustellen, die von Standarddecodern zu leeren Ergebnissen führen würden.
- Erkennung mehrerer Barcodes: Ein einziger Aufruf von
BarcodeReader.Read()gibt alle in einem Bild vorhandenen Barcodes zurück, einschließlich gemischter Bilder, die sowohl 1D- als auch 2D-Symbologien gleichzeitig enthalten. - Barcode-Einbettung in PDFs: IronBarcode kann Barcode-Bilder direkt in bestehende PDF-Dokumente schreiben, ohne dass eine separate PDF-Bibliothek erforderlich ist.
- Optionen zur Bildvorverarbeitung: Helligkeitskorrektur, Rotationsbehandlung und Rauschunterdrückung können auf dem Lesegerät konfiguriert werden, um die Erkennungsrate bei Bildern zu verbessern, die unter schwierigen Bedingungen aufgenommen wurden.
.NET-Kompatibilität und Zukunftsfähigkeit
IronBarcode unterstützt .NET Standard 2.0, .NET Framework 4.6.2 und höher, .NET Core 3.1 sowie alle aktuellen .NET Versionen, einschließlich .NET 8 und .NET 9. Die Bibliothek ist nicht von System.Drawing abhängig, was bedeutet, dass sie ohne Änderungen unter Linux und in Docker-Containern ausgeführt werden kann. Die Kompatibilität des Neodynamic Barcode-Lesegerät SDK mit .NET 8 und .NET 9 ist aufgrund seiner System.Drawing Abhängigkeit und der zusätzlichen nativen Bibliothekskonfiguration, die diese Abhängigkeit in Nicht-Windows-Umgebungen erfordert, eingeschränkt. IronBarcode erhält regelmäßige Updates, die auf den .NET Releasezyklus abgestimmt sind, und die Kompatibilität mit .NET 10, das voraussichtlich Ende 2026 erscheint, wird im Rahmen der aktiven Entwicklung aufrechterhalten.
Abschluss
Das Neodynamischer BarCode ProfessionalSDK und das Neodynamic Barcode-Lesegerät SDK stellen zusammen ein geteiltes Produktmodell dar, bei dem Generierung und Lesen separate kommerzielle Angebote mit jeweils eigenen Leistungsgrenzen sind. Der Generator unterstützt QR-Code, DataMatrix, PDF417 und Aztec. Der Leser tut dies nicht. Diese Asymmetrie ist kein geringfügiges Versäumnis – sie bedeutet, dass die beiden Produkte keinen vollständigen Barcode-Workflow für Anwendungen bilden können, die das Lesen von 2D-Barcodes erfordern, und sie bedeutet, dass die in den Bereichen mobile Zahlungen, pharmazeutische Rückverfolgung, Versandlogistik und Dokumentenverarbeitung am weitesten verbreiteten Formate nicht im Funktionsumfang des Lesegeräts enthalten sind.
Neodynamic Barcode Professional ist eine legitime Wahl, wenn es nur um die Generierung von Barcodes geht. Das SDK erzeugt qualitativ hochwertige Ausgaben über ein breites Spektrum an Symbologien hinweg, unterstützt die DPI-Steuerung und druckspezifische Anpassungen und integriert sich in das breitere Neodynamic ThermalLabel-Ökosystem. Teams, die ausschließlich Windows-Umgebungen nutzen und nur 1D-Code lesen müssen, können das Barcode Reader SDK ebenfalls verwenden, ohne auf dessen Formatbeschränkungen zu stoßen. Innerhalb dieses engen Einsatzbereichs – nur Generierung oder nur 1D-Lesung unter Windows – liefern die Produkte von Neodynamic genau das, was sie versprechen.
IronBarcode ist die richtige Wahl, wenn ein Projekt sowohl Generierung als auch Lesen erfordert, wenn ein Teil des Workflows 2D-Formate beinhaltet, wenn PDF-Dokumente als Barcode-Eingabequelle dienen oder wenn eine Single-Package-Architektur für das Abhängigkeitsmanagement bevorzugt wird. Das einheitliche Lizenzmodell, das Fehlen einer System.Drawing Abhängigkeit und die automatische Formaterkennung über alle unterstützten Symbologien hinweg machen es geeignet für plattformübergreifende Anwendungen, Cloud-Bereitstellungen und Systeme, die eine Mischung von Barcode-Formaten aus verschiedenen Quellen verarbeiten.
Die Wahl zwischen den beiden reduziert sich letztlich auf die Frage, ob die Formatgrenze im Reader von Neodynamic das jeweilige Projekt beeinflusst. Für Teams, deren Arbeitsabläufe auf die Generierung und das Lesen von 1D-Barcodes unter Windows beschränkt sind, wird diese Grenze möglicherweise nie erreicht. Für Teams, die QR-Codes sowohl auf der Generierungs- als auch auf der Leseseite desselben Systems benötigen, ist diese Grenze innerhalb der Neodynamic-Produktfamilie unüberwindbar, und es wird unabhängig von der gewählten Bibliothek eine andere benötigt.
Häufig gestellte Fragen
Was ist Neodynamic BarCode Professional?
Neodynamic BarCode Professional ist eine .NET Barcode-Bibliothek zum Erzeugen und Lesen von Barcodes in C#-Anwendungen. Sie ist eine von mehreren Alternativen, die Entwickler bei der Auswahl einer Barcode-Lösung für .NET-Projekte in Betracht ziehen.
Was sind die Hauptunterschiede zwischen Neodynamic Barcode Professional und IronBarcode?
IronBarcode verwendet eine statische, zustandslose API, die keine Instanzverwaltung erfordert, während Neodynamic Barcode Professional in der Regel eine Instanzerstellung und -konfiguration vor der Verwendung erfordert. IronBarcode bietet außerdem native PDF-Unterstützung, automatische Formaterkennung und Single-Key-Lizenzierung in allen Umgebungen.
Ist IronBarcode einfacher zu lizenzieren als Neodynamic Barcode Professional?
IronBarcode verwendet einen einzigen Lizenzschlüssel, der sowohl die Entwicklungs- als auch die Produktionsbereitstellung abdeckt. Dies vereinfacht CI/CD-Pipelines und Docker-Konfigurationen im Vergleich zu Lizenzierungssystemen, die SDK-Schlüssel von Laufzeitschlüsseln trennen.
Unterstützt IronBarcode alle Barcode-Formate, die Neodynamic Barcode Professional unterstützt?
IronBarcode unterstützt über 30 Barcode-Symbologien, darunter QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 und viele mehr. Die automatische Formaterkennung bedeutet, dass keine explizite Formataufzählung erforderlich ist.
Unterstützt IronBarcode das native Lesen von PDF-Barcodes?
Ja, IronBarcode liest Barcodes direkt aus PDF-Dateien mit BarcodeReader.Read("document.pdf"), ohne dass eine separate PDF-Rendering-Bibliothek erforderlich ist. Die seitenweisen Ergebnisse umfassen Seitenzahl, Barcodeformat, Wert und Konfidenzwert.
Wie handhabt IronBarcode die Stapelverarbeitung im Vergleich zu Neodynamic Barcode Professional?
Die statischen Methoden von IronBarcode sind zustandslos und natürlich thread-sicher, was die direkte Verwendung von Parallel.ForEach ohne Instanzverwaltung pro Thread ermöglicht. Es gibt auf keiner Preisstufe eine Obergrenze für den Durchsatz.
Welche .NET Versionen werden von IronBarcode unterstützt?
IronBarcode unterstützt .NET Framework 4.6.2+, .NET Core 3.1 und .NET 5, 6, 7, 8 und 9 in einem einzigen NuGet-Paket. Zu den Zielplattformen gehören Windows x64/x86, Linux x64 und macOS x64/ARM.
Wie installiere ich IronBarcode in einem .NET-Projekt?
Installieren Sie IronBarcode über NuGet: Führen Sie "Install-Package IronBarCode" in der Paketmanager-Konsole oder "dotnet add package IronBarCode" in der CLI aus. Es sind keine zusätzlichen SDK-Installationsprogramme oder Laufzeitdateien erforderlich.
Kann ich IronBarcode im Gegensatz zu Neodynamic vor dem Kauf testen?
Ja, der Testmodus von IronBarcode liefert vollständige dekodierte Barcodewerte - nur die erzeugten Ausgabebilder erhalten ein Wasserzeichen. Sie können die Lesegenauigkeit an Ihren eigenen Dokumenten testen, bevor Sie sich zum Kauf verpflichten.
Was ist der Preisunterschied zwischen Neodynamic Barcode Professional und IronBarcode?
Die Preise für IronBarcode beginnen bei 749 US-Dollar für eine unbefristete Einzelentwicklerlizenz für Entwicklung und Produktion. Preisdetails und Volumenoptionen sind auf der IronBarcode-Lizenzierungsseite verfügbar. Es ist keine separate Runtime-Lizenz erforderlich.
Ist es einfach, von Neodynamic Barcode Professional zu IronBarcode zu migrieren?
Bei der Migration von Neodynamic Barcode Professional zu IronBarcode geht es in erster Linie darum, instanzbasierte API-Aufrufe durch die statischen Methoden von IronBarcode zu ersetzen, Lizenzierungsklauseln zu entfernen und die Namen der Ergebniseigenschaften zu aktualisieren. Bei den meisten Migrationen wird eher Code reduziert als hinzugefügt.
Kann IronBarcode QR-Codes mit Logos generieren?
Ja. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") bettet ein Markenbild nativ in einen QR-Code mit konfigurierbarer Fehlerkorrektur ein. Farbige QR-Codes werden auch über ChangeBarCodeColor() unterstützt.

