Zum Fußzeileninhalt springen
MIT ANDEREN KOMPONENTEN VERGLEICHEN

BarcodeScanning.MAUI gegenüber IronBarcode: C# Barcode Bibliothek Vergleich

DevExpress BarCodevs IronBarcode: UI-Steuerelement vs Selbstständige Bibliothek

DevExpress ist ein angesehenes .NET UI-Toolkit. Die Raster-, Planungs-, Diagramm- und Pivot-Tabelle-Steuerelemente werden häufig von Enterprise-Teams verwendet. Die Barcode-Unterstützung ist jedoch eine andere Geschichte. DevExpress liefert ein BarCodeControl — eine WinForms-Steuerung und ein Blazor-DxBarCode-Tag — mit dem Sie einen Barcode auf ein Formular rendern können. DevExpress Support hat bestätigt, dass keine Lesefähigkeit existiert und es keine aktuellen Pläne gibt, sie 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

DevExpress BarCodeControl befindet sich in DevExpress.XtraEditors, mit seinen Symbologie-Generator-Klassen in DevExpress.XtraPrinting.BarCode. Es handelt sich nicht um eine eigenständige Bibliothek. Es ist im DXperience-Paket gebündelt, das bei 1.699,99 $ pro Jahr beginnt (Universal-Abonnements sind 2.299,99 $). Es gibt kein separates NuGet -Paket, das ausschließlich Barcodes enthält und das Sie installieren können.

Das BarCodeControl ist eine WinForms-Steuerung. Man konfiguriert es mit einem Symbolisierungsobjekt, legt Eigenschaften fest, und es wird auf dem Bildschirm gerendert. Um diese Wiedergabe in eine Datei zu speichern, muss DrawToBitmap aufgerufen werden, das erwartet, dass ein vorab zugewiesenes Bitmap der richtigen Größe bereitgestellt wird:

// DevExpress WinForms: UI control, not a library
using DevExpress.XtraEditors;              // BarCodeControl
using DevExpress.XtraPrinting.BarCode;     // Code128Generator, etc.
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.XtraEditors;              // BarCodeControl
using DevExpress.XtraPrinting.BarCode;     // Code128Generator, etc.
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.XtraEditors
Imports DevExpress.XtraPrinting.BarCode
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 ist barCode.Module in Dokumenteinheiten und nicht in Pixeln, was zu einem Missverhältnis führt, wenn Sie in Pixelmaßen denken. Zweitens müssen Sie die endgültige Pixelgröße kennen, bevor das Bitmap zugewiesen wird. 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-DxBarCode-Tag ist konzeptionell ähnlich, ist jedoch eine Razor-Komponente für die UI-Darstellung und keine serverseitige Generierungs-API.

Keine Lesefähigkeit

DevExpress vertritt offiziell die Position, dass sie keine Barcode-Erkennungs- oder Scanfunktionen anbieten. Das DevExpress Support Center erklärt: "DevExpress BarCode-Steuerelement ist nur für die Barcode-Generierung ausgelegt. Wir bieten keine Barcode-Erkennungs-/Scan-Funktionalität an." Es gibt keine aktuellen Pläne, dies hinzuzufügen.

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 ein DevExpress-Abonnement — die ASP.NET & Blazor-Stufe beginnt bei $1.099,99/Jahr, DXperience (WinForms + WPF) kostet $1.699,99/Jahr und Universal kostet $2.299,99/Jahr. 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 eine WinForms-Steuerung 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 Windows explizit anvisieren und die Windows Forms-Laufzeit laden, oder Umgehungsverweise hinzufügen, die UI-Infrastrukturen einbeziehen, die Ihre API nie 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 Nutzung von BarCodeControl in diesen kopflosen Umgebungen nicht offiziell.

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

Es gibt kein gleichwertiges Muster für BarCodeControl ohne wesentliche Umgehungen.

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-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-LICENSE-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.XtraEditors;              // BarCodeControl
using DevExpress.XtraPrinting.BarCode;     // QRCodeGenerator + QRCodeErrorCorrectionLevel

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.XtraEditors;              // BarCodeControl
using DevExpress.XtraPrinting.BarCode;     // QRCodeGenerator + QRCodeErrorCorrectionLevel

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.XtraEditors ' BarCodeControl
Imports DevExpress.XtraPrinting.BarCode ' QRCodeGenerator + QRCodeErrorCorrectionLevel
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 — nur IronBarcode
Suite Kosten Von 1.099,99 $/Jahr (ASP.NET & Blazor) bis zu 2.299,99 $/Jahr (Universal) Nicht verfügbar — eigenständige
Lizenzkosten Nur Abonnement Unbefristet ab $749
ASP.NET Core / Minimale API Erfordert WinForms-Workarounds Native Unterstützung
Azure Functions 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 Framework 4.6.2 bis aktuelles .NET

API-Mapping-Referenz

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

DevExpress BarCode IronBarcode
new BarCodeControl() Statisch – keine Instanz erforderlich
new Code128Generator() + barCode.Symbology = symbology BarcodeEncoding.Code128 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) — handhabt die Größenanpassung automatisch
Manuelles BitmapMemoryStream für HTTP-Antwort .ToPngBinaryData()
Keine Lese-API BarcodeReader.Read(imagePath)
Kein Leseergebnistyp .Value (String), .Format (BarcodeEncoding)
UI-Assembly wird in jedem Projekt benötigt Funktioniert in jedem .NET Projekttyp
Nur in Suite (ab 1.099,99 $/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.

Kosten für die Suite-Verlängerung für ein einzelnes Feature. Wenn die Verlängerung ansteht und ein Team überprüft, was es tatsächlich von der DXperience-Suite verwendet, führt das Entdecken, dass die einzige DevExpress-Komponente in einem bestimmten Dienst BarCodeControl ist, zu einer Kostenkonversation. Eine volle DXperience-Abonnementgebühr ($1.699,99/Jahr neu, $849,99/Jahr bei Erneuerung) für die Barcode-Generierung zu zahlen, wenn eine eigenständige Bibliothek $749 dauerhaft kostet, ist schwer zu rechtfertigen.

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 Ihre Anwendung eine WinForms- oder Blazor-Anwendung ist, die bereits DevExpress für ihre Gitter- und Diagrammsteuerelemente verwendet, und Ihr einziger Barcode-Bedarf darin besteht, einen Barcode visuell auf einem Formular anzuzeigen, ist das BarCodeControl eine vernünftige Wahl — Sie haben bereits die Lizenz.

In dem Moment, in dem Sie eines der folgenden benötigen, hört BarCodeControl auf, das richtige Werkzeug zu sein: Barcodes lesen, Barcodes in einem serverseitigen Kontext generieren, in einer kopflosen Umgebung arbeiten, unter Linux arbeiten oder ohne eine WinForms-Assembly-Referenz auskommen. 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 for .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.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron-Support-Team

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