Zum Fußzeileninhalt springen
MIT ANDEREN KOMPONENTEN VERGLEICHEN

DevExpress Barcode vs IronBarcode: C# Barcode-Bibliothek im Vergleich

DevExpress ist ein angesehenes .NET UI-Toolkit. Die Steuerelemente für Raster, Terminplaner, Diagramme und Pivot-Tabellen sind wirklich hervorragend und werden von Tausenden von Teams in Enterprise genutzt. Die Barcode-Unterstützung ist jedoch eine andere Geschichte. DevExpress liefert ein WinForms-Steuerelement (BarCodeControl) und ein Blazor Tag (DxBarCode) mit, mit denen sich Barcodes zur Entwurfszeit in ein Formular einfügen lassen. Auf Nachfrage zum Thema Barcode-Erkennung antwortet der Support stets gleich: Es gibt keine Lesefunktion und derzeit auch keine Pläne, diese hinzuzufügen. Wenn sich Ihre Barcodes in einem Hintergrundprozess, einer Web-API, einem PDF-Dokument oder einer Umgebung ohne Benutzeroberfläche befinden, ist diese Regelung nicht anwendbar.

Diese Einschränkung beschränkt das Barcode-Angebot von DevExpress auf eine spezifische Nische: die visuelle Darstellung eines Barcodes innerhalb einer DevExpress WinForms- oder Blazor -Benutzeroberfläche. Für diesen speziellen Anwendungsfall funktioniert es einwandfrei. Für alles andere – serverseitige Generierung, Einlesen von Bildern oder PDFs, Headless-Verarbeitung in Azure Functions oder Docker-Containern – benötigen Sie ein anderes Tool.

DevExpress Barcode-Steuerelemente verstehen

Die Barcode-Funktionalität von DevExpress befindet sich in DevExpress.XtraBars.BarCode und den zugehörigen Symbologie-Namensräumen. Es handelt sich nicht um eine eigenständige Bibliothek. Es ist in der DXperience Suite enthalten, die jährlich etwa 2.499 US-Dollar kostet. Es gibt kein separates NuGet -Paket, das ausschließlich Barcodes enthält und das Sie installieren können.

Das BarCodeControl ist ein WinForms-Steuerelement, das von der Steuerelementhierarchie erbt. Man konfiguriert es mit einem Symbolisierungsobjekt, legt Eigenschaften fest, und es wird auf dem Bildschirm gerendert. Um das Rendering in einer Datei zu speichern, muss DrawToBitmap aufgerufen werden, wofür ein vorab zugewiesener Bitmap der richtigen Größe erwartet wird:

// DevExpress WinForms: UI control, not a library
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;
using System.Drawing;
using System.Drawing.Imaging;

var barCode = new BarCodeControl();
var symbology = new Code128Generator();
symbology.CharacterSet = Code128CharacterSet.CharsetAuto;
barCode.Symbology = symbology;
barCode.Text = "ITEM-12345";
barCode.Module = 0.02f;  // document units, not pixels
barCode.ShowText = true;

// File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400;
barCode.Height = 100;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("barcode.png", ImageFormat.Png);
bitmap.Dispose();
// DevExpress WinForms: UI control, not a library
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;
using System.Drawing;
using System.Drawing.Imaging;

var barCode = new BarCodeControl();
var symbology = new Code128Generator();
symbology.CharacterSet = Code128CharacterSet.CharsetAuto;
barCode.Symbology = symbology;
barCode.Text = "ITEM-12345";
barCode.Module = 0.02f;  // document units, not pixels
barCode.ShowText = true;

// File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400;
barCode.Height = 100;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("barcode.png", ImageFormat.Png);
bitmap.Dispose();
Imports DevExpress.XtraBars.BarCode
Imports DevExpress.XtraBars.BarCode.Symbologies
Imports System.Drawing
Imports System.Drawing.Imaging

Dim barCode As New BarCodeControl()
Dim symbology As New Code128Generator()
symbology.CharacterSet = Code128CharacterSet.CharsetAuto
barCode.Symbology = symbology
barCode.Text = "ITEM-12345"
barCode.Module = 0.02F ' document units, not pixels
barCode.ShowText = True

' File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400
barCode.Height = 100
Dim bitmap As New Bitmap(barCode.Width, barCode.Height)
barCode.DrawToBitmap(bitmap, New Rectangle(0, 0, barCode.Width, barCode.Height))
bitmap.Save("barcode.png", ImageFormat.Png)
bitmap.Dispose()
$vbLabelText   $csharpLabel

Beachten Sie hier mehrere Reibungspunkte. Erstens bezieht sich barCode.Module auf Dokumenteinheiten und nicht auf Pixel, was zu einer Diskrepanz führt, wenn man in Pixelabmessungen denkt. Zweitens müssen Sie die endgültige Pixelgröße kennen, bevor Sie den Bitmap zuweisen. Drittens erfordert das Steuerelement das Laden der WinForms-Assemblys – das bedeutet, dass eine minimale ASP.NET Core -API oder ein Konsolen-Hintergrunddienst die Windows Forms-Infrastruktur laden muss, nur um ein Barcode-Bild zu generieren.

Das Blazor Tag DxBarCode ist konzeptionell ähnlich, aber es handelt sich um eine Razor Komponente für das UI-Rendering und nicht um eine serverseitige Generierungs-API.

Keine Lesefähigkeit

DevExpress vertritt offiziell die Position, dass sie keine Barcode-Erkennungs- oder Scanfunktionen anbieten. Dies ist keine Lücke, die erst in einer kommenden Version geschlossen werden muss – es ist seit Jahren die konsequente Lösung.

Für Teams, die mit einer DevExpress WinForms-Anwendung beginnen und später die Anforderung erhalten, einen Barcode aus einem hochgeladenen Bild zu scannen oder einen QR-Code aus einem PDF-Anhang zu lesen, bietet die DevExpress-Toolbox keine ausreichende Unterstützung. Sie benötigen eine separate Bibliothek zum Lesen dieser Daten, was die Frage aufwirft, ob die Generierungsseite aus Gründen der API-Konsistenz ebenfalls auf diese Bibliothek umsteigen sollte.

IronBarcode verarbeitet beide Richtungen:

// IronBarcode reading — works on images, PDFs, and byte arrays
// NuGet: dotnet add package IronBarcode
using IronBarCode;

var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}
// IronBarcode reading — works on images, PDFs, and byte arrays
// NuGet: dotnet add package IronBarcode
using IronBarCode;

var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}
Imports IronBarCode

' IronBarcode reading — works on images, PDFs, and byte arrays
' NuGet: dotnet add package IronBarcode

Dim results = BarcodeReader.Read("scanned-label.png")
For Each result In results
    Console.WriteLine($"Format: {result.Format}")
    Console.WriteLine($"Value: {result.Value}")
Next
$vbLabelText   $csharpLabel

Zum Lesen einer PDF-Datei werden keine zusätzlichen Bibliotheken benötigt:

// Reading barcodes from a PDF — no PdfiumViewer or similar required
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page barcode: {result.Value}");
}
// Reading barcodes from a PDF — no PdfiumViewer or similar required
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page barcode: {result.Value}");
}
Imports System

' Reading barcodes from a PDF — no PdfiumViewer or similar required
Dim pdfResults = BarcodeReader.Read("shipping-manifest.pdf")
For Each result In pdfResults
    Console.WriteLine($"Page barcode: {result.Value}")
Next
$vbLabelText   $csharpLabel

Das Problem der Suite -Bundling

Die Barcode-Komponenten von DevExpress werden nicht als eigenständiges Produkt verkauft. Um BarCodeControl in einem beliebigen Projekt zu verwenden, benötigt Ihr Team eine DXperience Suite -Lizenz zu einem Preis von etwa 2.499 US-Dollar pro Jahr und Entwickler. Die Suite umfasst Grid, Chart, Scheduler, Pivot und viele weitere Steuerelemente – was sinnvoll ist, wenn Sie eine vollständige DevExpress WinForms- oder Blazor -Anwendung erstellen. Wenn Sie die Barcode-Generierung nur für einen Backend-Service benötigen, bezahlen Sie für ein komplettes UI-Toolkit, das der Service nie nutzen wird.

IronBarcode ist ein eigenständiges Paket:

dotnet add package IronBarcode
dotnet add package IronBarcode
SHELL

Die unbefristete Lite Lizenz ist ab 749 US-Dollar für einen Entwickler erhältlich. Es ist kein UI-Toolkit enthalten. Sie erhalten Barcode-Generierung und -Lesung, plattformübergreifende Unterstützung und nichts anderes, was Sie nicht angefordert haben.

Einschränkung der Nutzung im Headless-Modus

Das grundlegende Problem mit BarCodeControl in serverseitigen Szenarien ist, dass es sich um ein WinForms-Steuerelement handelt. In einem .NET 6+ ASP.NET Core Minimal-API-Projekt werden WinForms-Assemblys nicht standardmäßig referenziert. Um BarCodeControl zu instanziieren, muss Ihr API-Projekt entweder explizit auf Windows abzielen und die Windows Forms-Laufzeitumgebung laden oder Workaround-Referenzen hinzufügen, die eine UI-Infrastruktur einbinden, die Ihre API niemals rendern wird.

Bei einem Azure Functions-Verbrauchsplan gibt es überhaupt keine Benutzeroberfläche. In einem Docker-Container, der ein Linux-Basisimage ausführt, können die Windows Forms GDI+-Abhängigkeiten vollständig fehlen. DevExpress unterstützt die Verwendung von BarCodeControl in diesen Headless-Umgebungen offiziell nicht.

IronBarcode verwendet eine vollständig programmatische, statische API:

// IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
// NuGet: dotnet add package IronBarcode
using IronBarCode;

BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");
// IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
// NuGet: dotnet add package IronBarcode
using IronBarCode;

BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");
Imports IronBarCode

' IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
' NuGet: dotnet add package IronBarcode

BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128) _
    .SaveAsPng("barcode.png")
$vbLabelText   $csharpLabel

Dieser Aufruf funktioniert in einer Konsolenanwendung, einem ASP.NET Core -Controller, einer Azure-Funktion, die durch eine Service Bus-Nachricht ausgelöst wird, oder einem Docker-Container, der unter Linux ausgeführt wird. Die API ändert sich nicht zwischen verschiedenen Umgebungen. Es besteht keine Abhängigkeit von der UI-Assembly.

Ein ASP.NET Core Endpunkt, der einen Barcode als PNG-Datei zurückgibt, sieht folgendermaßen aus:

app.MapGet("/barcode/{sku}", (string sku) =>
{
    var bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 100)
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});
app.MapGet("/barcode/{sku}", (string sku) =>
{
    var bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 100)
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Http

app.MapGet("/barcode/{sku}", Function(sku As String)
                                Dim bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
                                    .ResizeTo(400, 100) _
                                    .ToPngBinaryData()

                                Return Results.File(bytes, "image/png")
                             End Function)
$vbLabelText   $csharpLabel

Ohne erhebliche Umwege gibt es kein äquivalentes Muster mit BarCodeControl.

IronBarcode verstehen

IronBarcode ist eine eigenständige .NET Bibliothek zum Generieren und Lesen von Barcodes. Die API ist vollständig statisch – keine zu verwaltenden Instanzen, kein Lebenszyklus der Steuerung, keine Abhängigkeit von der Benutzeroberfläche. Generierung und Lesen erfolgen im selben Anruf:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .SaveAsPng("order-label.png");

// Generate and get bytes (for HTTP responses, blob storage, etc.)
byte[] pngBytes = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .ToPngBinaryData();

// Read from an image file
var results = BarcodeReader.Read("order-label.png");
Console.WriteLine(results.First().Value); // ORDER-9921
// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .SaveAsPng("order-label.png");

// Generate and get bytes (for HTTP responses, blob storage, etc.)
byte[] pngBytes = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .ToPngBinaryData();

// Read from an image file
var results = BarcodeReader.Read("order-label.png");
Console.WriteLine(results.First().Value); // ORDER-9921
Imports IronBarCode

' Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128) _
    .ResizeTo(450, 120) _
    .SaveAsPng("order-label.png")

' Generate and get bytes (for HTTP responses, blob storage, etc.)
Dim pngBytes As Byte() = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128) _
    .ResizeTo(450, 120) _
    .ToPngBinaryData()

' Read from an image file
Dim results = BarcodeReader.Read("order-label.png")
Console.WriteLine(results.First().Value) ' ORDER-9921
$vbLabelText   $csharpLabel

Die Lizenzaktivierung erfolgt in einer einzigen Zeile beim Start:

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

IronBarCode.License.LicenseKey = "YOUR-KEY"
$vbLabelText   $csharpLabel

Kein Netzwerkanruf. Kein Standardcode für die Fehlerbehandlung. Lokale Validierung.

QR-Code nebeneinander

QR-Codes veranschaulichen die API-Lücke zwischen einem UI-Steuerelement und einer programmatischen Bibliothek.

DevExpress QR-Code – WinForms-Steuerelement:

// DevExpress: QR via BarCodeControl + QRCodeGenerator symbology
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;

var barCode = new BarCodeControl();
var symbology = new QRCodeGenerator();
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H;
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric;
barCode.Symbology = symbology;
barCode.Text = "https://example.com";
barCode.Width = 500;
barCode.Height = 500;

var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("qr.png", ImageFormat.Png);
bitmap.Dispose();
// DevExpress: QR via BarCodeControl + QRCodeGenerator symbology
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;

var barCode = new BarCodeControl();
var symbology = new QRCodeGenerator();
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H;
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric;
barCode.Symbology = symbology;
barCode.Text = "https://example.com";
barCode.Width = 500;
barCode.Height = 500;

var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("qr.png", ImageFormat.Png);
bitmap.Dispose();
Imports DevExpress.XtraBars.BarCode
Imports DevExpress.XtraBars.BarCode.Symbologies
Imports System.Drawing
Imports System.Drawing.Imaging

Dim barCode As New BarCodeControl()
Dim symbology As New QRCodeGenerator()
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric
barCode.Symbology = symbology
barCode.Text = "https://example.com"
barCode.Width = 500
barCode.Height = 500

Dim bitmap As New Bitmap(barCode.Width, barCode.Height)
barCode.DrawToBitmap(bitmap, New Rectangle(0, 0, barCode.Width, barCode.Height))
bitmap.Save("qr.png", ImageFormat.Png)
bitmap.Dispose()
$vbLabelText   $csharpLabel

IronBarcode QR-Code – gleiches Ergebnis, keine UI-Zusammenstellung erforderlich:

// IronBarcode: QR in one method chain
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .SaveAsPng("qr.png");
// IronBarcode: QR in one method chain
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .SaveAsPng("qr.png");
$vbLabelText   $csharpLabel

Hinzufügen eines Markenlogos in der Mitte des QR-Codes:

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("qr-branded.png");
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("qr-branded.png");
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) _
    .AddBrandLogo("company-logo.png") _
    .SaveAsPng("qr-branded.png")
$vbLabelText   $csharpLabel

DevExpress bietet keine vergleichbare Funktion für eingebettete Logos. Das Steuerelement erzeugt einen Standard-QR-Code und nichts weiter.

Funktionsvergleich

Feature DevExpress BarCode IronBarcode
Barcode-Generierung Ja (WinForms-Steuerelement, Blazor Tag) Ja (programmatische API, alle Umgebungen)
Barcode-Lesen / Scannen Nein – offiziell bestätigt Ja – Bilder, PDFs, Byte-Arrays
PDF-Barcode-Lesen Nein Ja – nativ, keine zusätzliche Bibliothek
Eigenständiges NuGet Paket Nein – DXperience- Suite erforderlich Ja — IronBarcode nur
Suite Kosten ~2.499 €+/Jahr (vollständige UI- Suite) Nicht verfügbar — eigenständige
Lizenzkosten Nur Abonnement Unbefristet ab $749
ASP.NET Core / Minimale API Erfordert WinForms-Workarounds Native Unterstützung
Azure-Funktionen Nicht unterstützt kopflos Volle Unterstützung
Docker / Linux GDI+-Probleme auf Linux-Basis-Images Volle Unterstützung
Konsolenanwendungen Erfordert das Laden der WinForms-Assembly. Native Unterstützung
QR-Code-Generierung Ja (mittels QRCodeGenerator-Symbologie) Ja (QRCodeWriter)
QR-Code mit eingebettetem Logo Nein Ja — .AddBrandLogo()
QR-Fehlerkorrekturebenen H, Q, M, L Höchste, Hoch, Mittel, Niedrige
Code 128 Ja Ja
Datenmatrix Ja Ja
PDF417 Ja Ja
aztekisch Ja Ja
Dateiausgabe DrawToBitmap – manuelle Bitmap-Zuweisung .SaveAsPng(), .SaveAsGif(), .SaveAsSvg()
Binäre Ausgabe (HTTP-Antwort) Manuelle Bitmap → MemoryStream .ToPngBinaryData()
Multithread-Lesen N/A — keine Lesung MaxParallelThreads = 4
Mehrfach-Barcode-Lesung N/A — keine Lesung ExpectMultipleBarcodes = true
Plattformen Windows (WinForms / Blazor) Windows, Linux, macOS, Docker, Azure, AWS Lambda
.NET -Versionsunterstützung .NET Framework + modernes .NET (Windows) .NET 4.6.2 bis .NET 9

API-Mapping-Referenz

Teams, die mit dem DevExpress BarCodeControl-Muster vertraut sind, werden diese Entsprechungen als nützlich empfinden:

DevExpress BarCode IronBarcode
new BarCodeControl() Statisch – keine Instanz erforderlich
new Code128Generator() + barCode.Symbology = symbology BarcodeEncoding.Code128 wurde als Parameter übergeben
new QRCodeGenerator() + QRCodeErrorCorrectionLevel.H QRCodeWriter.CreateQrCode("data", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
new DataMatrixGenerator() + DataMatrixSize.Matrix26x26 BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix)
new PDF417Generator() BarcodeWriter.CreateBarcode("data", BarcodeEncoding.PDF417)
new AztecGenerator() BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Aztec)
barCode.Module = 0.02f (Dokumenteinheiten) .ResizeTo(width, height) (Pixel)
barCode.ShowText = true .AddBarcodeText()
DrawToBitmap(bitmap, rect) — manuelle Bitmap-Zuweisung .SaveAsPng(path) — kümmert sich automatisch um die Größenanpassung
Manuelle BitmapMemoryStream für HTTP-Antwort .ToPngBinaryData()
Keine Lese-API BarcodeReader.Read(imagePath)
TextResult Typ .Value (Zeichenkette), .Format (Barcode-Codierung)
UI-Assembly wird in jedem Projekt benötigt Funktioniert in jedem .NET Projekttyp
Nur Suite (ca. 2.499 €/Jahr) Einzelnutzung (ab 749 $ unbefristet)

Wenn die Teams wechseln

Mehrere spezifische Szenarien lösen üblicherweise den Wechsel von DevExpress-Barcode-Steuerelementen zu IronBarcode aus.

Eine neue Leseanforderung kommt hinzu. Das häufigste Szenario ist eine WinForms-Anwendung, die seit Jahren Barcodes generiert, und nun kommt eine neue Funktionsanforderung: Die Anwendung muss jetzt Barcodes von hochgeladenen Bildern oder Kameraaufnahmen scannen oder überprüfen. DevExpress verfügt über keine Lese-API. Das Team benötigt ohnehin eine neue Bibliothek, und es macht Sinn, die Generierung in derselben Bibliothek zu konsolidieren.

Ein Team entwickelt einen Microservice, der Barcode-Etiketten bedarfsgesteuert generiert – aufgerufen von einem Web-Frontend, einer mobilen App oder einem anderen Dienst. Das ASP.NET ASP.NET Core Projekt hat keine WinForms-Abhängigkeit, und das Team möchte auch keine hinzufügen. Die statische API von IronBarcode lässt sich ohne zusätzlichen UI-Aufbau in einen HTTP-Endpunkt integrieren.

Azure Function- oder Lambda-Bereitstellung. Serverlose Bereitstellungen verwenden häufig Linux-Basisimages und minimale Laufzeitumgebungen. BarCodeControl ist nicht für diese Umgebung ausgelegt. IronBarcode läuft auf Linux, in Docker-Containern, in Azure Functions und in AWS Lambda ohne Konfigurationsänderungen.

Die Kosten für die Suite -Verlängerung aufgrund einer einzelnen Funktion. Wenn die Verlängerung ansteht und ein Team prüft, welche Komponenten der DXperience Suite tatsächlich genutzt werden, stellt sich heraus, dass die einzige DevExpress-Komponente in einem bestimmten Dienst BarCodeControl ist. Dies führt zu einer Kostendiskussion. Es ist schwer zu argumentieren, dass es sinnvoll ist, ein Abonnement für eine komplette Suite zur Barcode-Generierung abzuschließen, wenn eine eigenständige Bibliothek 749 Dollar pro Jahr kostet.

Mehrfach-Barcode-Lesen aus PDFs. Dokumentenverarbeitungs-Workflows – das Lesen von Barcodes aus Rechnungs-PDFs, Versandmanifesten oder gescannten Formularen – erfordern sowohl PDF-Unterstützung als auch Lesefähigkeit. IronBarcode liest direkt aus PDF-Dateien ohne zusätzliche Bibliothek. DevExpress bietet keine dieser Funktionen.

Abschluss

DevExpress' Barcode-Angebot lässt sich am besten als UI-Rendering-Funktion verstehen, die in ein UI-Toolkit integriert ist. Wenn es sich bei Ihrer Anwendung um eine WinForms- oder Blazor Anwendung handelt, die bereits DevExpress für ihre Raster- und Diagrammsteuerelemente verwendet, und Ihr einziger Barcode-Bedarf darin besteht, einen Barcode visuell auf einem Formular anzuzeigen, ist der BarCodeControl eine vernünftige Wahl – Sie besitzen die Lizenz bereits.

Sobald Sie eine der folgenden Funktionen benötigen, ist BarCodeControl nicht mehr das richtige Werkzeug: Lesen von Barcodes, Generieren von Barcodes in einem serverseitigen Kontext, Ausführen in einer Headless-Umgebung, Arbeiten unter Linux oder Betrieb ohne WinForms-Assembly-Referenz. Der DevExpress-Support hat bestätigt, dass keine Lesefunktion vorhanden ist und auch keine Pläne bestehen, diese hinzuzufügen. Die Einschränkung bei der Bildschirmausgabe ist architektonischer Natur und kein Konfigurationsproblem. Ein UI-Steuerelement ist ein UI-Steuerelement.

IronBarcode wurde für die programmatische Barcode-Verarbeitung entwickelt – Generierung und Auslesen über eine statische API, in jeder Umgebung und auf jeder Plattform. Die beiden Werkzeuge lösen unterschiedliche Probleme. DevExpress-Barcodes dienen der Darstellung innerhalb eines Formulars. IronBarcode dient der Verarbeitung von Barcodes im Code.

Häufig gestellte Fragen

Was ist DevExpress BarCode?

DevExpress Barcode 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 DevExpress Barcode und IronBarcode?

IronBarcode verwendet eine statische, zustandslose API, die keine Instanzverwaltung erfordert, während DevExpress BarCode 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 DevExpress BarCode?

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 DevExpress Barcode 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 DevExpress BarCode?

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 vor dem Kauf testen, im Gegensatz zu DevExpress?

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 DevExpress BarCode 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 die Migration von DevExpress Barcode zu IronBarcode einfach?

Bei der Migration von DevExpress Barcode zu IronBarcode geht es in erster Linie darum, instanzbasierte API-Aufrufe durch statische Methoden von IronBarcode zu ersetzen, Lizenzierungsklauseln zu entfernen und die Namen von 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.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an