Zum Fußzeileninhalt springen
MIT ANDEREN KOMPONENTEN VERGLEICHEN

Barcode4.NET vs IronBarcode: C# Barcode Bibliothek Vergleich

Barcode4NET wurde ohne offizielle Ankündigung eingestellt. Der Verkauf neuer Lizenzen über ComponentSource wurde eingestellt, es wurde kein NuGet Paket veröffentlicht, und die Bibliothek ist ausschließlich auf das .NET Frameworkausgerichtet. Für Teams, die eine Abhängigkeit von Barcode4NETübernommen haben, vergleicht dieser Artikel das Angebot dieser Bibliothek mit dem, was IronBarcode heute bietet – wobei die Plattformreichweite, das API-Design, die Barcode-Lesefähigkeit und die Lizenzrealität, die einen direkten Vergleich etwas ungewöhnlich macht, behandelt werden.

Barcode4NETverstehen

Barcode4NET war eine kommerzielle Barcode-Generierungsbibliothek, die über ComponentSource und ähnliche Software-Wiederverkäufer vertrieben wurde. Es wurde für Windows-basierte .NET FrameworkAnwendungen – vor allem Windows Forms und ASP.NET Web Forms – entwickelt und lieferte saubere Bitmap-Ausgabe für die wichtigsten 1D-Symbologien seiner Zeit.

Die Bibliothek war nie als NuGet Paket verfügbar. Es wurde als DLL verteilt, die die Entwickler in die Quellcodeverwaltung eincheckten oder in einem gemeinsamen Artefaktspeicherort ablegten. Für jedes Projekt, das es verwendete, war ein manuelles <Reference> Element in der .csproj Datei erforderlich, das auf die DLL auf der Festplatte verwies. Dies war gängige Praxis, als Barcode4NETnoch aktiv war, führt aber in modernen CI/CD-Workflows zu erheblichen Problemen.

Wichtigste architektonische Merkmale von Barcode4NET:

  • Property-Setter-API: Entwickler erstellten ein Barcode-Objekt, wiesen ihm Symbology, Data, Width und Height als Eigenschaften zu und riefen anschließend GenerateBarcode() auf, um ein System.Drawing.Bitmap-Objekt zu erhalten.
  • Fokus auf 1D-Symbolik: Unterstützt Code128, Code39, EAN-13 und UPC-A; Die Unterstützung für QR-Codes war versionsabhängig eingeschränkt.
  • Nur für die Generation: Das Produkt verfügte nie über eine Barcode-Lese- oder Scanfunktion.
  • Nur Windows und .NET Framework: Keine Unterstützung für .NET Core, .NET 5+, Linux, macOS, Dockeroder Cloud-Runtimes.
  • Keine NuGet Distribution: Manuelle DLL-Referenzierung in jeder Projektdatei und Build-Pipeline erforderlich.
  • Produktlebenszyklusende: Keine neuen Lizenzen mehr verfügbar, keine Sicherheitsupdates, keine Fehlerbehebungen und kein Migrationspfad seitens des Anbieters.

Barcode4NET-Generierungs-API

Der gesamte Generierungsworkflow in Barcode4NETverwendete ein Property-Setter-Muster:

// Barcode4NET— manual DLL, .NET Frameworkonly
//NeinNuGet-Paket— requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;

var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
// Barcode4NET— manual DLL, .NET Frameworkonly
//NeinNuGet-Paket— requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;

var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging

Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = "ITEM-12345"
barcode.Width = 300
barcode.Height = 100
Dim barcodeImage As Bitmap = barcode.GenerateBarcode()
barcodeImage.Save(outputPath, ImageFormat.Png)
$vbLabelText   $csharpLabel

Dies stellt den gesamten Funktionsumfang der Barcode4NET-API dar. Die Bibliothek bot keine flüssige Verkettung, keine Lesefunktion, keine PDF-Ausgabe und keine erweiterten QR-Code-Optionen wie Logoeinbettung oder Fehlerkorrektur.

IronBarcode verstehen

IronBarcode ist eine kommerzielle .NET Barcode-Bibliothek von Iron Software , die sowohl die Barcode-Generierung als auch das Barcode-Lesen in einem einzigen Paket abdeckt. Es wird ausschließlich über NuGet vertrieben, zielt auf .NET Framework4.6.2 bis .NET 9 ab und läuft unter Windows, Linux, macOS, Docker, Azure und AWS Lambda.

Die Bibliothek basiert auf einer flüssigen statischen API. Die Generierung verwendet BarcodeWriter.CreateBarcode() mit einer Datenzeichenfolge und einem Kodierungstyp, gefolgt von verkettbaren Optionen für Größe, Farbe und Format. Zum Lesen wird BarcodeReader.Read() verwendet, das Bilddateipfade, Datenströme und PDF-Dokumente akzeptiert, ohne dass eine separate PDF-Bibliothek erforderlich ist.

Hauptmerkmale von IronBarcode:

  • Fluent Static Generierungs-API: BarcodeWriter.CreateBarcode() Ketten .ResizeTo(), .AddAnnotationTextAboveBarcode() und Speichermethoden in einem einzigen Ausdruck
  • Barcode-Lesung: BarcodeReader.Read() dekodiert Barcodes nativ aus Bildern und PDFs
  • Umfassende Formatunterstützung: Code128, Code39, EAN-13, UPC-A, QR-Code, Data Matrix, PDF417, Aztec und mehr
  • QR-Code-Spezialisierung: QRCodeWriter.CreateQrCode() bietet QR-spezifische Optionen, einschließlich Logoeinbettung und Fehlerkorrekturstufe
  • NuGet Distribution: Standardinstallation dotnet add package IronBarcode; dotnet restore kümmert sich um alle Abhängigkeiten
  • Plattformübergreifend: Läuft unter .NET 5, 6, 7, 8 und 9 auf Windows, Linux und macOS, einschließlich Docker-Containern und serverlosen Cloud-Laufzeitumgebungen
  • Aktives kommerzielles Produkt: Regelmäßige Updates, Sicherheitspatches, Kompatibilitätsupdates für .NET Versionen und käufliche Lizenzen zu festgelegten Preisen

Funktionsvergleich

Die folgende Tabelle hebt die wichtigsten Unterschiede zwischen Barcode4NETund IronBarcode hervor:

Feature Barcode4NET IronBarcode
NuGet -Paket Nein – nur manuelle DLL-Datei Ja (IronBarcode)
Barcode-Generierung Ja Ja
Barcode-Lesung Nein Ja
Plattformübergreifende Unterstützung Nein – nur Windows Ja – Windows, Linux, macOS
Aktive Instandhaltung Nein (Lebensende) Ja
Neue Lizenzen verfügbar Nein Ja

Detaillierter Funktionsvergleich

Feature Barcode4NET IronBarcode
Generation
Code-128-Generierung Ja Ja
Code39-Generierung Ja Ja
EAN-13 / UPC-A Generation Ja Ja
QR-Code-Generierung Beschränkt Ja — QRCodeWriter.CreateQrCode()
QR-Code mit Logo Nein Ja — .AddBrandLogo()
Data Matrix / PDF417 / Aztec Nein Ja
Fluent verkettbare API Nein Ja
Lektüre
Barcode-Lesen aus Bildern Nein Ja — BarcodeReader.Read()
Barcode-Lesen aus PDFs Nein Ja – nativ, keine zusätzliche Bibliothek
Mehrfach-Barcode-Erkennung Nein Ja — ExpectMultipleBarcodes
Konfiguration der Lesegeschwindigkeit Nein Ja — ReadingSpeed enum
Plattform
.NET Framework Ja Ja (.NET Framework 4.6.2+)
.NET 5 / 6 / 7 / 8 / 9 Nein Ja
Linux / macOS Nein Ja
Docker Nein Ja
Azure / AWS Lambda Nein Ja
Verteilung
NuGet-Paket Nein Ja
dotnet restore kompatibel Nein Ja
CI/CD-Integration Manuelle DLL-Schritte Standardwiederherstellung
Wartung
Aktive Entwicklung Nein (Lebensende) Ja
Sicherheitspatches Nein Ja
Fehlerbehebungen Nein Ja
Neue Lizenzen Nein Ja – Lite 749 $, Plus 1.499 $, Professional 2.999 $, Unlimited 5.999 $

API-Generierung

Die Generierungs-API stellt den direktesten Vergleichspunkt zwischen diesen beiden Bibliotheken dar, da die Generierung die einzige Funktion war, die Barcode4NETbot.

Barcode4NET-Ansatz

Barcode4NET verwendete ein imperatives Eigenschaftssetzer-Muster. Die Entwickler instanziierten ein Barcode-Objekt, wiesen ihm individuelle Eigenschaften zu und riefen GenerateBarcode() auf, um ein System.Drawing.Bitmap-Objekt zu erhalten:

using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;

public Bitmap GenerateLabel(string sku)
{
    var barcode = new Barcode4NET.Barcode();
    barcode.Symbology = Symbology.Code128;
    barcode.Data = sku;
    barcode.Width = 400;
    barcode.Height = 120;
    return barcode.GenerateBarcode();
}
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;

public Bitmap GenerateLabel(string sku)
{
    var barcode = new Barcode4NET.Barcode();
    barcode.Symbology = Symbology.Code128;
    barcode.Data = sku;
    barcode.Width = 400;
    barcode.Height = 120;
    return barcode.GenerateBarcode();
}
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging

Public Function GenerateLabel(sku As String) As Bitmap
    Dim barcode As New Barcode4NET.Barcode()
    barcode.Symbology = Symbology.Code128
    barcode.Data = sku
    barcode.Width = 400
    barcode.Height = 120
    Return barcode.GenerateBarcode()
End Function
$vbLabelText   $csharpLabel

Der Rückgabetyp — System.Drawing.Bitmap — bedeutete, dass der aufrufende Code für das Speichern, Anzeigen oder Streamen des Bildes verantwortlich war. Dies war für WinForms-Anwendungen geeignet, bei denen ein Bitmap direkt einem PictureBox zugewiesen werden konnte, erforderte jedoch zusätzliche Konvertierungsschritte für jedes andere Ausgabeziel.

IronBarcode Ansatz

IronBarcode verwendet eine flüssige statische API. Ein einzelner Methodenaufruf initiiert die Generierung, und verkettbare Methoden konfigurieren das Ergebnis vor einer abschließenden Speicher- oder Konvertierungsmethode:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public byte[] GenerateLabel(string sku)
{
    return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 120)
        .ToPngBinaryData();
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;

public byte[] GenerateLabel(string sku)
{
    return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 120)
        .ToPngBinaryData();
}
Imports IronBarCode

Public Function GenerateLabel(sku As String) As Byte()
    Return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
        .ResizeTo(400, 120) _
        .ToPngBinaryData()
End Function
$vbLabelText   $csharpLabel

Der Aufzählungstyp BarcodeEncoding entspricht direkt dem Aufzählungstyp Symbology. .ResizeTo() ersetzt die Eigenschaftszuweisungen Width und Height. Terminalmethoden — .SaveAsPng(), .SaveAsJpeg(), .ToPngBinaryData() — ersetzen die separaten Aufrufe GenerateBarcode() und bitmap-save. Für komplexere Generierungsszenarien siehe die IronBarcode Dokumentation zur Barcode-Generierung .

Barcode-Lesefähigkeit

Die Lesefähigkeit ist der größte Unterschied zwischen diesen beiden Bibliotheken. Barcode4NETbot in keiner Version jemals das Lesen von Barcodes an. IronBarcode beinhaltet die vollständige Lesefunktion im selben Paket wie die Generierung.

Barcode4NET-Ansatz

Barcode4NET besaß keine Lese-API. Teams, die Barcodes aus Bildern oder gescannten Dokumenten dekodieren mussten, mussten eine komplett separate Bibliothek integrieren – entweder ZXing .NET, eine Open-Source-Alternative, oder ein kommerzielles Scanner-SDK. Das Ergebnis waren zwei separate Abhängigkeitsketten: Barcode4NETzur Generierung und eine zweite Bibliothek zum Lesen.

IronBarcode Ansatz

IronBarcode stellt BarcodeReader.Read() als statische Methode bereit, die Bilddateipfade, Stream-Objekte und PDF-Dokumente akzeptiert:

using IronBarCode;

// Read from an image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Format: {result.Format}");
}

// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
using IronBarCode;

// Read from an image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Format: {result.Format}");
}

// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
Imports IronBarCode

' Read from an image file
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
    Console.WriteLine($"Value: {result.Value}")
    Console.WriteLine($"Format: {result.Format}")
Next

' Read all barcodes from a multi-page PDF — no extra PDF library required
Dim pdfResults = BarcodeReader.Read("invoice-batch.pdf")
For Each result In pdfResults
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
$vbLabelText   $csharpLabel

Für Szenarien mit hohem Bildaufkommen oder Bildrauschen bietet die Klasse BarcodeReaderOptions Kontrolle über die Lesegeschwindigkeit und die Erkennung mehrerer Barcodes. Informationen zu den Konfigurationsoptionen finden Sie in der Dokumentation zum Barcode-Lesen .

Plattform- und Bereitstellungsabdeckung

Die Plattformunterstützung stellt den entscheidendsten Unterschied für Teams dar, die .NET Modernisierungsprojekte durchführen.

Barcode4NET-Ansatz

Barcode4NET wurde gegen .NET Framework-Assemblys kompiliert. Es lief unter Windows, in .NET FrameworkAnwendungen, in IIS-gehosteten Web Forms- und Windows Forms-Projekten. Es gab keine Linux-Versionen, keine .NET Core Versionen und keine Unterstützung für Cloud-Laufzeitumgebungen. Als Microsoft .NET Core einführte und später die Plattform als .NET 5+ vereinheitlichte, gab es für Barcode4NETkeine entsprechenden Aktualisierungen. Projekte, die auf net5.0 oder später abzielen, können die Bibliothek überhaupt nicht referenzieren.

Das DLL-Verteilungsmodell verschärfte die Plattformbeschränkung zusätzlich. Jede Build-Umgebung – Entwickler-Workstation, Build-Agent, Docker-Container – erforderte, dass die DLL unter einem bekannten Pfad vorhanden war. Bei containerbasierten Bereitstellungen bedeutete dies entweder, die DLL in ein benutzerdefiniertes Basis-Image einzubetten oder sie während des Container-Builds zu kopieren, was beides nicht mit Standard-Workflows kompatibel ist.

IronBarcode Ansatz

IronBarcode unterstützt mehrere Frameworks über ein einziges NuGet Paket: .NET Framework4.6.2 bis .NET 9 sowie alle aktuellen .NET Versionen unter Windows, Linux und macOS. Die Bereitstellung in Docker-Containern verwendet die standardmäßigen .NET -Laufzeitabbilder ohne Modifikation. Azure Functions, AWS Lambda und andere serverlose Laufzeitumgebungen werden über dasselbe NuGet Paket unterstützt. Der Befehl dotnet restore löst alle Abhängigkeiten ohne manuelle DLL-Verwaltung auf.

Lizenzarchitektur und Anbieterstatus

Die Lizenzsituation für Barcode4NETist kein Wettbewerbsfaktor – sie ist eine praktische Einschränkung, die jede Entscheidung darüber beeinflusst, ob die Bibliothek weiterhin genutzt werden soll.

Barcode4NET-Ansatz

Barcode4NET wird nicht mehr weiterentwickelt. Neue Lizenzen sind weder über ComponentSource noch über andere Kanäle erhältlich. Wenn ein Entwickler einem Team beitritt, das Barcode4NETverwendet, gibt es keinen Mechanismus, um einen Lizenzplatz für ihn zu erwerben. Je nach Ausgestaltung der bestehenden Lizenzen ist es einem neuen Entwickler unter Umständen nicht rechtlich möglich, Barcode-bezogenen Code während der Entwicklungsphase auszuführen oder zu debuggen. Es gibt kein Problemverfolgungssystem, keinen Supportkanal und keinen Anbieter, an den man sich bei Mängeln wenden könnte. Sicherheitslücken, die nach der letzten Veröffentlichung entdeckt wurden, bleiben dauerhaft ungelöst.

IronBarcode Ansatz

IronBarcode ist ein aktiv gepflegtes kommerzielles Produkt mit unbefristeter Lizenz. Die Preise beginnen bei 749 US-Dollar für eine Lite Lizenz für einen einzelnen Entwickler. Darüber hinaus sind die Stufen Plus (1.499 US-Dollar, 3 Entwickler), Professional (2.999 US-Dollar, 10 Entwickler) und Unlimited (5.999 US-Dollar) erhältlich. Alle Pakete beinhalten eine lizenzgebührenfreie Bereitstellung. Sicherheitspatches, Bugfixes und Kompatibilitätsupdates für die .NET Version werden in regelmäßigen Abständen veröffentlicht. Eine 30-tägige kostenlose Testversion steht ohne Lizenzschlüssel zur Verfügung.

API-Mapping-Referenz

Barcode4NET IronBarcode
new Barcode4NET.Barcode() BarcodeWriter.CreateBarcode(data, encoding)
barcode.Symbology = Symbology.Code128 BarcodeEncoding.Code128 (Parameter zu CreateBarcode)
barcode.Data = "ITEM-12345" Erster Parameter von CreateBarcode()
barCode.Width = 300; barcode.Height = 100|.ResizeTo(300, 100)`
barcode.GenerateBarcode() gibt Bitmap zurück .SaveAsPng(path) / .ToPngBinaryData()
Symbology.QRCode BarcodeEncoding.QRCode
Symbology.Code39 BarcodeEncoding.Code39
Symbology.EAN13 BarcodeEncoding.EAN13
Symbology.UPCA BarcodeEncoding.UPCA
Manuelle DLL <Reference Include="Barcode4NET"> <PackageReference Include="IronBarcode" />
Keine Lese-API BarcodeReader.Read(path)
Keine PDF-Unterstützung BarcodeReader.Read("doc.pdf") nativ
Nur .NET Framework .NET Framework4.6.2 bis .NET 9

Wenn Teams einen Wechsel von Barcode4NETzu IronBarcode erwägen

.NET -Upgrade blockiert

Der häufigste Auslöser ist ein .NET Modernisierungsprojekt. Ein Team zielt auf net8.0 in seinem .csproj ab, führt den Build aus und stößt auf einen Kompilierungsfehler, da Barcode4NETgegen .NET Framework-Assemblys kompiliert wurde, auf die nicht mehr verwiesen wird. Der Fehler ist eindeutig: Die Bibliothek kann unter dem neuen Zielframework nicht geladen werden. An diesem Punkt steht das Team vor einer binären Entscheidung: Entweder die Änderung des Zielframeworks rückgängig machen und beim .NET Frameworkbleiben, oder Barcode4NETersetzen. Die Migration kann nicht verschoben werden, ohne die umfassenderen Modernisierungsbemühungen zu blockieren.

CI/CD-Pipeline-Fehler nach Infrastrukturänderungen

Das DLL-Verteilungsmodell von Barcode4NETerzeugt eine latente Anfälligkeit in den Build-Pipelines. Wenn ein Build-Agent neu bereitgestellt, ein Container-Image aktualisiert oder eine neue CI-Umgebung konfiguriert wird, muss die Barcode4NET-DLL manuell an dem Pfad abgelegt werden, den die Projektdatei erwartet. Teams, die diesen Schritt nicht sorgfältig dokumentiert haben, entdecken das Problem erst, wenn die Pipeline ausfällt. Der Übergang zu IronBarcode bedeutet, dass dotnet restore alles übernimmt – das Problem mit dem DLL-Speicherort existiert nicht mehr.

Neue Teammitglieder können nicht lizenziert werden

Wenn ein externer Auftragnehmer dem Projekt beitritt oder ein zweiter Entwickler an Barcode-Funktionen arbeiten muss, ist keine Lizenz zu erwerben. Das Team muss diese Einschränkung umgehen – entweder der neue Entwickler vermeidet den Barcode-Code vollständig, oder jemand überträgt eine Lizenz, die unter den ursprünglichen Bedingungen möglicherweise nicht rechtsgültig übertragbar ist. Keine der beiden Situationen ist für ein Team, das aktiv an der Produktentwicklung arbeitet, tragbar.

Sicherheits- und Compliance-Audits

Organisationen, die die Generierung von Software-Stücklisten durchführen oder Abhängigkeiten anhand von Datenbanken, die das Ende ihres Lebenszyklus erreicht haben, überprüfen, stoßen dabei auf Barcode4NET. Es handelt sich um ein kommerzielles Produkt ohne aktiven Anbieter, ohne CVE-Tracking und ohne Verfügbarkeit von Patches. Sicherheitsprüfer behandeln kommerzielle Abhängigkeiten am Ende ihres Lebenszyklus anders als ausgereifte Open-Source-Bibliotheken – das Fehlen eines Reaktionsprozesses seitens des Anbieters bedeutet, dass jede Schwachstelle dauerhaft ungelöst bleibt. Dies wird in der Regel zu einem formellen Sanierungsfall und nicht zu einem aufgeschobenen Risiko.

Lesefunktion zu einem bestehenden Workflow hinzugefügt

Teams, die Barcode4NETursprünglich nur für Generierungs-Workflows verwendet haben, stellen später fest, dass sie Barcodes von gescannten Dokumenten überprüfen, vom Benutzer hochgeladene Bilder verarbeiten oder Daten aus PDF-Rechnungen extrahieren müssen. Bei Barcode4NETist hierfür die Integration einer zweiten Bibliothek erforderlich. IronBarcodes BarcodeReader.Read() verarbeitet sowohl Bilder als auch PDFs nativ und konsolidiert so die Abhängigkeit in einem einzigen gepflegten Paket.

Gemeinsame Überlegungen zur Migration

Entfernen des DLL-Verweis

Barcode4NET wurde nie als NuGet Paket vertrieben, daher gibt es keinen dotnet remove package-Befehl. Jede .csproj Datei, die auf die Bibliothek verweist, enthält ein <Reference Include="Barcode4NET"> Element mit einem <HintPath>, das auf die DLL auf der Festplatte verweist. Jedes dieser Elemente muss manuell gefunden und entfernt werden. Ein grep-Befehl, der die Lösung durchsucht, findet sie:

grep -rl "Barcode4NET" --include="*.csproj" .
grep -rl "Barcode4NET" --include="*.csproj" .
SHELL

Das DLL-Verzeichnis in der Quellcodeverwaltung – typischerweise ThirdParty/Barcode4NET/ oder lib/ – muss ebenfalls zur Löschung mit git rm bereitgestellt werden.

Änderung des Rückgabetyps von Bitmap zu Byte-Array

Barcode4NETs GenerateBarcode() gibt einen System.Drawing.Bitmap zurück. Die fließende Kette von IronBarcode endet damit, dass .ToPngBinaryData() byte[] zurückgibt oder .SaveAsPng() direkt auf die Festplatte schreibt. Code, der den Rückgabewert einer Variable vom Typ Bitmap zuweist oder ihn an eine Methode übergibt, die einen Wert vom Typ Bitmap erwartet – wie beispielsweise einen WinForms-Wert vom Typ PictureBox –, erfordert eine einzeilige Anpassung an der Aufrufstelle: Schließen Sie das Byte-Array in einen Typ MemoryStream ein und rufen Sie Image.FromStream() auf.

Symbolisierung Enum Umbenennen

Die Aufzählung Symbology in Barcode4NETentspricht direkt der Aufzählung BarcodeEncoding in IronBarcode. Alle gemeinsamen Werte — Code128, Code39, EAN13, UPCA, QRCode — behalten ihre Namen. Eine lösungsweite Suche und Ersetzung von Symbology. durch BarcodeEncoding. deckt die meisten Fälle ab, allerdings sollte jede Ersetzung überprüft werden, um den Kontext zu bestätigen.

Build-Skriptbereinigung

Die Build-Skripte und CI/CD-Konfigurationsdateien, die die Barcode4NET-DLL in Ausgabeverzeichnisse oder Build-Agents kopieren, müssen aktualisiert werden. Diese Schritte haben nach der NuGet Migration kein Äquivalent mehr — dotnet restore ersetzt die gesamte manuelle DLL-Verwaltung. Das Belassen veralteter DLL-Kopierschritte nach der Migration führt zwar nicht zu Build-Fehlern, stellt aber eine tote Konfiguration dar, die für zukünftige Wartungsteams Verwirrung stiftet.

Zusätzliche IronBarcode Funktionen

Funktionen, die in IronBarcode verfügbar sind und zu keinem Zeitpunkt in Barcode4NETenthalten waren:

.NET-Kompatibilität und Zukunftsfähigkeit

IronBarcode unterstützt .NET Framework4.6.2 bis .NET 9 und erhält Kompatibilitätsupdates mit jeder neuen .NET Version. Da .NET 10 voraussichtlich Ende 2026 erscheint, veröffentlicht Iron Software bereits vor der allgemeinen Verfügbarkeit Vorabversionen, die mit der Preview-Version kompatibel sind. Barcode4NETverfügt über keine .NET Version jenseits des .NET Frameworkund wird auch zukünftig keine Updates mehr erhalten. Teams, die mit .NET Framework4.x arbeiten, können zu IronBarcode migrieren und anschließend ihr Zielframework ohne Einschränkungen durch Barcode-Bibliotheken auf jede aktuelle oder zukünftige .NET Version aktualisieren.

Abschluss

Barcode4NET und IronBarcode repräsentieren unterschiedliche Punkte in der Geschichte der .NET -Barcodeentwicklung. Barcode4NETwar für seine Zeit eine funktionale, gut definierte Bibliothek – eine Property-Setter-API, die saubere Bitmap-Ausgabe für Windows Forms- und Web Forms-Anwendungen auf .NET Frameworkgenerierte. IronBarcode ist ein aktuelles kommerzielles Produkt mit einer flüssigen statischen API, vollständiger Barcode-Leseunterstützung, plattformübergreifender Laufzeitabdeckung und standardmäßiger NuGet Distribution.

Der Vergleich ist ungewöhnlich, da Barcode4NETkein aktives Produkt mehr ist. Es erhält keine Updates, Sicherheitspatches oder neue Lizenzverkäufe. Teams, die evaluieren, welche Bibliothek sie für ein neues Projekt einsetzen sollen, würden Barcode4NETbei dieser Evaluierung nicht begegnen – es ist nur für Teams relevant, die es bereits im Produktiveinsatz haben und entscheiden, wann und wie sie migrieren sollen.

Für Teams, die Barcode4NETbereits produktiv einsetzen, ist IronBarcode der natürliche Ersatz. Die API-Zuordnung ist direkt, die Codeänderungen sind oberflächlich und die Generierungssemantik ist äquivalent. Der Vorteil besteht darin, dass eine Abhängigkeit tatsächlich gewartet wird, von neuen Teammitgliedern installiert werden kann und mit modernen .NET Versionen und Bereitstellungsumgebungen kompatibel ist.

Die ehrliche Einschätzung lautet, dass es sich hier nicht um eine wirklich wettbewerbsfähige Wahl zwischen zwei praktikablen Optionen handelt. Barcode4NETkann nicht auf neue Teammitglieder erweitert werden, ist nicht mit modernen .NET kompatibel und kann nicht auf Sicherheitslücken gepatcht werden. IronBarcode kann das. Die Entscheidung zur Migration wird eher durch praktische Zwänge als durch API-Präferenzen oder Funktionsvergleiche bestimmt.

Häufig gestellte Fragen

Was ist Barcode4.NET?

Barcode4.NET 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 Barcode4.NET und IronBarcode?

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

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 Barcodeformate, die Barcode4.NET 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 Barcode4.NET?

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 Barcode4.NET?

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 Barcode4.NET 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 Barcode4.NET zu IronBarcode zu migrieren?

Bei der Migration von Barcode4.NET zu IronBarcode geht es in erster Linie darum, instanzbasierte API-Aufrufe durch die statischen Methoden von IronBarcode zu ersetzen, Lizenzierungsformulierungen 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