DevExpress Barcode vs IronBarcode: C# Barcode-Bibliothek im Vergleich
MESCIUS ComponentOne C1BarCodevs IronBarcode
Die Barcode-Kontrolle von MESCIUS ComponentOne (früher GrapeCity, 2023 umbenannt) generiert Barcodes in Windows Forms, WPF, WinUI, Blazor und ASP.NET Core MVC-Anwendungen. Das gelingt ihm gut – die API ist übersichtlich, die Ausgabequalität ist solide und es integriert sich nahtlos in den WinForms-Designer. Der Umfang seiner Tätigkeiten ist jedoch begrenzt. Es kann keine Barcodes lesen. Die WinForms- und WPF-Ausgaben laufen auf einem windows-spezifischen Ziel-Framework. Und es ist kein eigenständiges Produkt — es wird als Teil von ComponentOne Studio Enterprise ausgeliefert, einem Abonnement von 1.299 USD pro Entwickler/Jahr, das über 100 UI-Steuerelemente umfasst. Wenn Sie Barcode-Optionen für ein .NET -Projekt evaluieren und ComponentOne in einer Vergleichsliste gefunden haben, erfahren Sie in diesem Artikel, was dieser Umfang in der Praxis bedeutet.
C1BarCode verstehen
C1BarCode ist ein visuelles Steuerelement. Der Erstellungs-Workflow erstellt eine Instanz, legt Eigenschaften fest und ruft GetImage() auf, um einen System.Drawing.Image abzurufen:
// ComponentOne C1BarCode
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;
// License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";
var barcode = new C1BarCode();
barcode.CodeType = CodeType.Code128;
barcode.Text = "ITEM-12345";
barcode.BarHeight = 100;
barcode.ModuleSize = 2;
barcode.ShowText = true;
barcode.CaptionPosition = CaptionPosition.Below;
using var image = barcode.GetImage();
image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);
// ComponentOne C1BarCode
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;
// License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";
var barcode = new C1BarCode();
barcode.CodeType = CodeType.Code128;
barcode.Text = "ITEM-12345";
barcode.BarHeight = 100;
barcode.ModuleSize = 2;
barcode.ShowText = true;
barcode.CaptionPosition = CaptionPosition.Below;
using var image = barcode.GetImage();
image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);
Imports C1.Win.Barcode
Imports C1.BarCode
Imports System.Drawing
Imports System.Drawing.Imaging
' License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY"
Dim barcode As New C1BarCode()
barcode.CodeType = CodeType.Code128
barcode.Text = "ITEM-12345"
barcode.BarHeight = 100
barcode.ModuleSize = 2
barcode.ShowText = True
barcode.CaptionPosition = CaptionPosition.Below
Using image As Image = barcode.GetImage()
image.Save("barcode.png", ImageFormat.Png)
End Using
Die Property-Setter-API ist WinForms-Entwicklern vertraut – sie ist direkt auf die Designeroberfläche abgebildet. CodeType, BarHeight, ModuleSize, ShowText, und CaptionPosition sind alle design-sichtbare Eigenschaften, die im Code identisch funktionieren.
C1BarCode unterstützt 38 Symbologien, die die gängigen 1D- und 2D-Formate abdecken: Code 39, Code 128, EAN-8, EAN-13, UPC-A, UPC-E, ITF, QR-Code, PDF417 und DataMatrix unter anderen. Für die Barcode-Generierung deckt es die gängigen Anwendungsfälle ab.
Keine Lese-API
Dies ist keine Lücke, die durch eine Konfigurationsoption geschlossen werden kann. Es gibt keine C1BarCodeReader-Klasse. Es gibt keine Decode()-Methode in C1BarCode. Die Barcode-Steuerung von ComponentOne ist systembedingt nur auf die Generierung beschränkt.
Wenn Ihre Anwendung Barcodes aus hochgeladenen Bildern scannen, gedruckte Etiketten überprüfen, Dokumente mit eingebetteten Codes verarbeiten oder Daten aus QR-Codes in einer Web-API extrahieren muss – nichts davon ist mit C1BarCode möglich. Sie bräuchten eine separate Bibliothek zum Lesen, was die Frage aufwirft, warum man für eine Komponente bezahlen sollte, die nur Barcodes generiert, innerhalb einer Enterprise Suite mit über 100 Steuerelementen, wenn eigenständige Barcode-Bibliotheken beide Operationen abdecken.
Das Fehlen einer Lese-API ist bei WinForms-Barcode-Steuerelementen, die für die Druckausgabe konzipiert sind, nicht ungewöhnlich. Zum Entscheidungspunkt wird es, wenn sich die Anforderungen erweitern – und die Anforderungen an Barcodes erweitern sich fast immer.
Beschränkung auf Windows
Die WinForms- und WPF-Ausgaben von C1BarCode erfordern eine windows-spezifische Ziel-Framework-Konfiguration:
<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
Das net8.0-windows-Ziel-Framework-Moniker und UseWindowsForms sind keine optionalen Präferenzen. C1.Win.BarCode hängt von System.Windows.Forms-Typen ab — UserControl, PaintEventArgs, Graphics — die nur auf Windows existieren. Das Entfernen von net8.0-windows bricht den Build. ComponentOne liefert jedoch Blazor- und ASP.NET Core MVC-Ausgaben der Barcode-Kontrolle, die plattformübergreifende TFMs ansprechen, aber die WinForms- und WPF-Pakete sind an Windows gebunden.
Im Gegensatz dazu zielt IronBarcode auf net8.0 (oder ein beliebiges unterstütztes TFM) ohne Plattformbeschränkungen:
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
Dies ist in mehreren praktischen Szenarien von Bedeutung:
- Azure App Service unter Linux: Standardplan für neue App Service-Bereitstellungen.
net8.0-windowskann es nicht anvisieren. - Docker-Container: Linux-Container sind der Standard. Ein Windows-Container ist größer, teurer und in vielen Cloud-Tarifen nicht verfügbar.
- ASP.NET Core Web API: Ein Barcode-Generierungsendpunkt, der nur unter Windows bereitgestellt werden kann, ist eine Bereitstellungseinschränkung, die das Team irgendwann beseitigen muss.
- Azure Functions: Der Verbrauchsplan läuft unter Linux. Eine Barcode-generierende Funktion mit einem
net8.0-windows-Ziel kann nicht auf dem Consumption-Plan bereitgestellt werden. - macOS-Entwicklung: Entwickler auf macOS können ein
net8.0-windows-Projekt nicht lokal ausführen, selbst für Testzwecke der Erstellungslogik.
Die Plattformbeschränkung stellt kein Problem dar, wenn es sich bei Ihrer Anwendung um ein WinForms-Desktop-Tool handelt, das ausschließlich unter Windows ausgeführt wird. Es wird zum Problem, sobald die Bereitstellungsanforderungen irgendeine Linux- oder Cloud-Umgebung umfassen.
Suite -Bundling
Die C1BarCode-Steuerung wird als Teil von ComponentOne Studio Enterprise verkauft, das die vollständige ComponentOne-Steuerungssuite für WinForms, WPF, Blazor und ASP.NET enthält. Die Preisgestaltung für ComponentOne Studio Enterprise beträgt 1.299 USD pro Entwickler pro Jahr (Abonnement); Einzelplattform-Ausgaben (WinForms oder WPF) kosten 799 USD pro Entwickler pro Jahr.
Diese Suite umfasst über 100 Komponenten: Raster, Diagramme, Terminplaner, Eingabesteuerelemente, Berichtsdesigner, Kartensteuerelemente, Messinstrumente und vieles mehr. Wenn Sie eine datenintensive Anwendung entwickeln und viele dieser Steuerelemente benötigen, kann sich die Suite-Preisgestaltung lohnen. Wenn Sie Barcode-Generierung benötigen und auf ComponentOne gestoßen sind, weil es bei einer Suche aufkam, kaufen Sie hauptsächlich für ein Steuerelement eine Enterprise-UI-Suite.
Das NuGet-Paket ist C1.Win.BarCode für WinForms (mit C1.WPF.BarCode, C1.WinUI.BarCode, und C1.Blazor.BarCode für andere Plattformen) und wird über das ComponentOne Studio-Abonnement lizenziert. Für Entwickler, die Barcode-Funktionalität ohne die vollständige Suite möchten, gibt es keine separate Lizenzstufe nur für Barcodes.
IronBarcode's Preisstruktur ist anders: Es ist eine eigenständige Barcode-Bibliothek mit unbefristeter Lizenzierung, beginnend bei 749 USD für einen einzelnen Entwickler (Lite), 1.499 USD für drei (Plus), 2.999 USD für zehn (Professional) und 5.999 USD für unbegrenzte Entwickler. Es gibt keine Rastersteuerung, keine Diagrammbibliothek, keinen Berichtsdesigner – nur die Barcode-Funktionalität, die Sie suchen.
QR-Code-Anpassung
Beide Bibliotheken unterstützen die QR-Code-Generierung mit Anpassungsoptionen. Der API-Stil unterscheidet sich deutlich.
ComponentOne-Eigenschaftssetter-Ansatz:
// ComponentOne — QR code with error correction and color
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";
var barcode = new C1BarCode();
barcode.CodeType = CodeType.QRCode;
barcode.Text = "https://example.com/product/4821";
barcode.QRCodeVersion = QRCodeVersion.Version5;
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High;
barcode.QRCodeModel = QRCodeModel.Model2;
barcode.ForeColor = Color.DarkBlue;
barcode.BackColor = Color.White;
barcode.ModuleSize = 4;
using var image = barcode.GetImage();
image.Save("product-qr.png", System.Drawing.Imaging.ImageFormat.Png);
// ComponentOne — QR code with error correction and color
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";
var barcode = new C1BarCode();
barcode.CodeType = CodeType.QRCode;
barcode.Text = "https://example.com/product/4821";
barcode.QRCodeVersion = QRCodeVersion.Version5;
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High;
barcode.QRCodeModel = QRCodeModel.Model2;
barcode.ForeColor = Color.DarkBlue;
barcode.BackColor = Color.White;
barcode.ModuleSize = 4;
using var image = barcode.GetImage();
image.Save("product-qr.png", System.Drawing.Imaging.ImageFormat.Png);
Imports C1.Win.Barcode
Imports C1.BarCode
Imports System.Drawing
Imports System.Drawing.Imaging
C1.C1License.Key = "YOUR-COMPONENTONE-KEY"
Dim barcode As New C1BarCode()
barcode.CodeType = CodeType.QRCode
barcode.Text = "https://example.com/product/4821"
barcode.QRCodeVersion = QRCodeVersion.Version5
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High
barcode.QRCodeModel = QRCodeModel.Model2
barcode.ForeColor = Color.DarkBlue
barcode.BackColor = Color.White
barcode.ModuleSize = 4
Using image As Image = barcode.GetImage()
image.Save("product-qr.png", ImageFormat.Png)
End Using
IronBarcode Fluent Chain:
// IronBarcode — QR code with error correction and color
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Drawing;
QRCodeWriter.CreateQrCode(
"https://example.com/product/4821",
300,
QRCodeWriter.QrErrorCorrectionLevel.Highest)
.ChangeBarCodeColor(Color.DarkBlue)
.SaveAsPng("product-qr.png");
// IronBarcode — QR code with error correction and color
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Drawing;
QRCodeWriter.CreateQrCode(
"https://example.com/product/4821",
300,
QRCodeWriter.QrErrorCorrectionLevel.Highest)
.ChangeBarCodeColor(Color.DarkBlue)
.SaveAsPng("product-qr.png");
Imports IronBarCode
Imports System.Drawing
QRCodeWriter.CreateQrCode(
"https://example.com/product/4821",
300,
QRCodeWriter.QrErrorCorrectionLevel.Highest) _
.ChangeBarCodeColor(Color.DarkBlue) _
.SaveAsPng("product-qr.png")
Der ComponentOne-Ansatz erfordert die Instanziierung eines C1BarCode-Objekts und das Setzen mehrerer Eigenschaften, bevor GetImage() aufgerufen wird. IronBarcodes QRCodeWriter nutzt eine fließende Kette — jede Operation gibt das Barcode-Objekt zurück, und Sie rufen am Ende .SaveAsPng() auf. Es gibt keine zu verwaltende Instanz.
IronBarcode unterstützt außerdem das Einbetten von Logos in QR-Codes, was C1BarCode nicht bietet:
// QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500)
.AddBrandLogo("company-logo.png")
.ChangeBarCodeColor(Color.DarkBlue)
.SaveAsPng("branded-qr.png");
// QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500)
.AddBrandLogo("company-logo.png")
.ChangeBarCodeColor(Color.DarkBlue)
.SaveAsPng("branded-qr.png");
' QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500) _
.AddBrandLogo("company-logo.png") _
.ChangeBarCodeColor(Color.DarkBlue) _
.SaveAsPng("branded-qr.png")
IronBarcode verstehen
IronBarcode ist eine eigenständige .NET Barcode-Bibliothek, die sowohl die Generierung als auch das Lesen von Barcodes abdeckt. Es wird von NuGet (dotnet add package IronBarcode) installiert, zielt auf jedes unterstützte .NET TFM ohne Plattformbeschränkungen und läuft auf Windows, Linux, macOS, Docker, Azure und AWS Lambda.
Die Lesefunktion unterstützt PDF-Dokumente nativ:
// Read barcodes from a PDF — no image extraction needed
using IronBarCode;
var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}");
}
// Read barcodes from a PDF — no image extraction needed
using IronBarCode;
var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}");
}
Imports IronBarCode
' Read barcodes from a PDF — no image extraction needed
Dim results = BarcodeReader.Read("invoice.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}")
Next
Für Szenarien mit hohem Durchsatz kontrolliert BarcodeReaderOptions den Trade-off zwischen Geschwindigkeit und Genauigkeit sowie die Mehrfach-Barcodedetektion:
// Multi-barcode read with performance options
using IronBarCode;
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};
var results = BarcodeReader.Read("warehouse-manifest.jpg", options);
// Multi-barcode read with performance options
using IronBarCode;
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};
var results = BarcodeReader.Read("warehouse-manifest.jpg", options);
Imports IronBarCode
' Multi-barcode read with performance options
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True,
.ExpectBarcodeTypes = BarcodeEncoding.Code128 Or BarcodeEncoding.QRCode
}
Dim results = BarcodeReader.Read("warehouse-manifest.jpg", options)
Die Generation deckt die Standardformate mit einer einheitlichen statischen API ab:
// Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
// QR-Code-Generierung to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
.ToPngBinaryData();
// Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
// QR-Code-Generierung to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
.ToPngBinaryData();
Imports ZXing
Imports ZXing.QrCode
' Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128) _
.SaveAsPng("shipping-label.png")
' QR-Code-Generierung to byte array (for HTTP response)
Dim qrBytes As Byte() = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400) _
.ToPngBinaryData()
Unterstützte Plattformen: Windows, Linux, macOS, Docker, Azure (App Service und Functions), AWS Lambda. Unterstützte .NET-Versionen: .NET Framework 4.6.2+, .NET Core 3.1+, und .NET 5/6/7/8.
Funktionsvergleich
| Feature | MESCIUS ComponentOne C1BarCode | IronBarcode |
|---|---|---|
| Barcode-Generierung | Ja | Ja |
| Barcode-Lesung | Nein | Ja |
| QR-Code-Generierung | Ja | Ja |
| QR-Logo-Einbettung | Nein | Ja |
| PDF-Eingabe zum Lesen | Nicht anwendbar (kein Messwert) | Ja (Muttersprachler) |
| .NET-Plattformziel (WinForms/WPF-Ausgaben) | net8.0-windows |
Jedes TFM (net8.0, etc.) |
| UseWindowsForms erforderlich (WinForms-Ausgabe) | Ja | Nein |
| Linux-/Docker-Bereitstellung | Nur Blazor/ASP.NET MVC-Ausgaben | Ja |
| macOS-Bereitstellung | Nur Blazor/ASP.NET MVC-Ausgaben | Ja |
| Azure Functions (Linux) | Nur Blazor/ASP.NET MVC-Ausgaben | Ja |
| Serverseitiger ASP.NET Core | ASP.NET Core MVC-Ausgabe | Ja |
| Eigenständiges NuGet Paket | Lizenzierte Suite-Pakete | Ja |
| Einzelpreisgestaltung | Nicht anwendbar | Ab 749 $ (Lite) |
| Suite -Preise | 1.299 USD/Entwickler/Jahr Enterprise; 799 USD/Entwickler/Jahr Einzelplattform | Nicht anwendbar |
| Fluent-Generierungs-API | Nein (Eigenschaftssetter) | Ja |
BarcodeReader.Read() |
Nein | Ja |
BarcodeWriter.CreateBarcode() |
Nein | Ja |
QRCodeWriter.CreateQrCode() |
Nein | Ja |
| Unterstützte .NET -Versionen | .NET 6+ (Windows for WinForms/WPF) | .NET Framework 4.6.2+, .NET Core 3.1+, .NET 5–8 |
| Option für eine unbefristete Lizenz | Nein (Abonnement) | Ja |
API-Mapping-Referenz
Für Teams, die von C1BarCode zu IronBarcode migrieren, gelten folgende direkte Entsprechungen:
| ComponentOne C1BarCode | IronBarcode |
|---|---|
C1.C1License.Key = "..." |
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" |
new C1BarCode() |
Statisch – keine Instanz erforderlich |
barcode.CodeType = CodeType.Code128 |
BarcodeEncoding.Code128 (als Parameter übergeben) |
barcode.Text = "data" |
Erstes Argument von BarcodeWriter.CreateBarcode() |
barcode.BarHeight = 100 |
.ResizeTo(width, 100) im Barcode-Writer |
barcode.ModuleSize = 2 |
.ResizeTo() steuert die Größenanpassung in Pixeln |
barcode.ForeColor = Color.DarkBlue |
.ChangeBarCodeColor(Color.DarkBlue) |
barcode.BackColor = Color.White |
.ChangeBackgroundColor(Color.White) |
barcode.GetImage() |
.SaveAsPng() / .ToPngBinaryData() |
barcode.QRCodeErrorCorrectionLevel |
QRCodeWriter.QrErrorCorrectionLevel Aufzählung |
barcode.QRCodeVersion |
Automatisch (oder Versionsparameter) |
| Keine Lese-API | BarcodeReader.Read(path) |
net8.0-windows erforderlich |
net8.0 (oder jedes TFM) |
UseWindowsForms = true erforderlich |
Nicht erforderlich |
Wenn die Teams wechseln
Es entsteht eine Leseanforderung. Dies ist der häufigste Auslöser. Ein Team entwickelt mit C1BarCode eine Barcode-Etikettengenerierung und erhält anschließend die Anforderung, Scans zu überprüfen, eingehende Versanddokumente zu verarbeiten oder QR-Codes aus hochgeladenen Bildern zu dekodieren. C1BarCode kann hier nicht weiterhelfen. Die Alternativen sind: Entweder eine zweite Barcode-Bibliothek zum Lesen hinzufügen oder C1BarCode durch eine Bibliothek ersetzen, die beides unterstützt.
Bei der Bereitstellung unter Linux oder Docker besteht diese Einschränkung nicht. Eine WinForms-Desktopanwendung, die für Windows-Desktops ausgeliefert wird, unterliegt dieser Einschränkung nicht. Eine ASP.NET Core API, die Barcode-Bilder generiert, tut dies – insbesondere wenn sie in einem Linux-Container ausgeführt oder in Azure App Service unter Linux bereitgestellt werden muss. Das net8.0-windows-Ziel-Framework blockiert sofort diese Bereitstellungsoptionen.
Microservice- oder serverlose Architektur. Azure Functions, AWS Lambda und containerisierte Microservices sind Linux-first. Ein Barcode-Generierungsdienst, der nicht unter Linux bereitgestellt werden kann, ist kein praktikabler Microservice.
Kosten des Suite -Abonnements im Vergleich zum Anforderungsumfang. Teams, die für ComponentOne Studio Enterprise bezahlen und bereits dessen Raster, Diagramme und andere Steuerelemente nutzen, haben das Abonnement bereits gerechtfertigt. Teams, die hauptsächlich oder ausschließlich für die Barcode-Generierung abonniert haben, zahlen für mehr als 100 Kontrollfunktionen, die sie nicht nutzen. Die Abonnementkosten pro Entwickler steigen mit der Teamgröße.
Bevorzugt wird eine unbefristete Lizenz. ComponentOne Studio ist nur im Abonnement erhältlich. Eine unbefristete Lizenzoption gibt es nicht. Für Teams, die es vorziehen, die Software zu besitzen, die sie ausliefern – insbesondere aus Compliance- oder langwierigen Wartungsgründen – ist IronBarcode's unbefristete Lizenzierung (beginnt bei 749 USD Lite) strukturell anders.
Abschluss
C1BarCode generiert Barcodes sauber im WinForms-Kontext. Genau das kann es gut, und für eine WinForms-Desktopanwendung, die nur die Generierung von Labels unter Windows benötigt, ist es eine funktionale Wahl innerhalb der ComponentOne- Suite.
Der Umfang endet hier. Kein Lesezugriff, Bereitstellung nur unter Windows, kein eigenständiges Paket, Abonnementlizenzierung. Wenn die Anforderungen eines Projekts über die WinForms-Generierung unter Windows hinausgehen – z. B. eine Leseanforderung, ein Linux-Bereitstellungsziel, eine Web-API, ein Docker-Container, eine Cloud-Funktion –, kann C1BarCode diese nicht abdecken. IronBarcode deckt sowohl die Generierung als auch das Lesen von Barcodes ab, läuft auf jeder von .NET unterstützten Plattform und ist als eigenständiges Paket ohne Abonnement einer Enterprise Suite mit 100 Steuerelementen erhältlich.
Häufig gestellte Fragen
Was ist GrapeCity BarCode?
GrapeCity 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 GrapeCity BarCode und IronBarcode?
IronBarcode verwendet eine statische, zustandslose API, die keine Instanzverwaltung erfordert, während GrapeCity 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 GrapeCity 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 GrapeCity 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 GrapeCity 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 GrapeCity?
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 GrapeCity 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 es einfach, von GrapeCity BarCode zu IronBarcode zu migrieren?
Bei der Migration von GrapeCity Barcode zu IronBarcode geht es in erster Linie darum, instanzbasierte API-Aufrufe durch die statischen Methoden von IronBarcode zu ersetzen, Lizenzierungs-Boilerplate 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.

