MessagingToolkit Barcode vs IronBarcode: C# Barcode Bibliothek Vergleich
MessagingToolkit.Barcode listet Silberlicht 5und Windows Phone 7 als Zielplattformen auf. Beide Produkte werden seit Jahren nicht mehr hergestellt. Wenn diese Bibliothek in Ihrer Codebasis vorhanden ist, stellt sich nicht die Frage, ob Sie sie ersetzen sollten – sondern worauf Sie warten.
MessagingToolkit.Barcode verstehen
MessagingToolkit.Barcode war eine .NET Portierung der Java-Barcodebibliothek ZXing, erweitert um zusätzliche Messaging-Integrationen. Die Bibliothek wurde um 2011 eingeführt und bis ins Jahr 2013 aktiv weiterentwickelt. Ihre finale Version – 1.7.0.2 – wurde 2014 veröffentlicht. Das GitHub Repository ist weiterhin zugänglich, weist aber keine Aktivität auf: keine Commits, keine Antworten auf Issues, keine Pull-Request-Reviews. Das Projekt wird bewahrt, nicht weiterentwickelt.
Die Bibliothek wurde für die .NET Framework Ära und die mobilen Plattformen, die diese Zeit prägten, konzipiert. Es bot Barcode-Dekodierung und -Kodierung über eine instanzbasierte API, akzeptierte System.Drawing.Bitmap Eingaben und gab Ergebnisobjekte mit .Text und .BarcodeFormat Eigenschaften zurück. Für .NET Framework 4.x-Anwendungen, die 2012 unter Windows liefen, war dieser Ansatz praktisch und weit verbreitet.
Als Portierung von ZXing nutzte MessagingToolkit.Barcode zwar die zugrundeliegende Dekodierungs-Engine dieser Java-Bibliothek, ergänzte sie aber um eine eigene API-Oberfläche und Messaging-orientierte Erweiterungspunkte. Die Bibliothek blieb stets im .NET Framework verankert. Es wurde kein .NET Standard Ziel veröffentlicht, keine .NET CoreUnterstützung hinzugefügt und nach der Veröffentlichung 2014 gab es keinerlei Aktualisierungen mehr.
Hauptmerkmale von MessagingToolkit.Barcode:
- Letztes Veröffentlichungsjahr: 2014, Version 1.7.0.2, ohne nachfolgende Updates
- ZXing-Heritage: Eine Portierung der Java-ZXing-Bibliothek mit .NET-spezifischen Erweiterungen
- Instanzbasierte API: Erfordert die Instanziierung von
BarcodeDecoder- undBarcodeEncoder-Objekten für jede Operation - Abhängigkeit von System.Drawing: Akzeptiert und gibt
System.Drawing.Bitmapzurück, wodurch es in modernen .NET -Versionen nur unter Windows funktioniert. - Einzelnes Ergebnis pro Dekodierungsaufruf: Gibt ein einzelnes Ergebnisobjekt (oder null) anstelle einer Sammlung zurück.
- Keine PDF-Unterstützung: Die Eingabe ist auf Bitmap-Objekte beschränkt; kein Lesen von nativen Dokumenten
- Keine automatische Formaterkennung: Das Format muss entweder vorkonfiguriert oder von der Bibliothek anhand des Bildes erkannt werden.
- Eingestellte Plattformziele: Listet Silverlight 3, 4 und 5 auf; Windows Phone 7.0, 7.5, 7.8 und 8.0 in seinen NuGet Metadaten
- Kein modernes .NET Zielframework-Moniker: Lässt sich nicht in Projekten kompilieren, die auf .NET Core, .NET 5 oder eine spätere Version abzielen.
Plattform- und Wartungsprotokoll
Die Metadaten des NuGet Pakets MessagingToolkit.Barcode dokumentieren die vorgesehenen Zielplattformen. Jeder Eintrag in der folgenden Tabelle repräsentiert eine Plattform, die zum Zeitpunkt der Entwicklung der Bibliothek aktuell oder nahezu aktuell war:
| Plattform | Status im Jahr 2026 |
|---|---|
| Silberlicht 3 | Eingestellt – Browser-Plugin entfernt 2021 |
| Silberlicht 4 | Eingestellt – Browser-Plugin entfernt 2021 |
| Silberlicht 5 | Eingestellt – Browser-Plugin entfernt 2021 |
| Windows Phone 7.0 | Eingestellt – Supportende 2014 |
| Windows Phone 7.5 | Eingestellt – Supportende 2014 |
| Windows Phone 7.8 | Eingestellt – Supportende 2014 |
| Windows Phone 8.0 | Eingestellt – Supportende 2017 |
| .NET Framework 3.5 | Nur Sicherheitspatches, keine neuen Funktionen |
| .NET Framework 4.0 | Nur Sicherheitspatches, keine neuen Funktionen |
| .NET Framework 4.5 | Nur Sicherheitspatches, keine neuen Funktionen |
Für die Bibliothek gibt es kein kompatibles Zielframework für .NET Core, .NET 5, .NET 6, .NET 7, .NET 8 oder .NET 9. Projekte, die auf diese Laufzeitumgebungen abzielen, werden einen Build-Fehler erfahren, wenn das Paket keinen kompatiblen Framework-Moniker auflösen kann – keine Laufzeitwarnung, sondern ein Kompilierungsfehler.
IronBarcode verstehen
IronBarcode ist eine kommerzielle Barcode-Lese- und Generierungsbibliothek für .NET, die von Iron Software entwickelt und gepflegt wird. Es arbeitet mit einem statischen API-Modell: BarcodeReader.Read() zum Dekodieren und BarcodeWriter.CreateBarcode() zum Kodieren, ohne dass instanziierte Leser- oder Schreibobjekte erforderlich sind. Die Bibliothek bündelt ihre eigene Bildverarbeitungspipeline und ist nicht von System.Drawing abhängig, wodurch sie mit Windows, Linux, macOS und Containerumgebungen kompatibel ist.
IronBarcode akzeptiert mehrere Eingabetypen zum Lesen: Dateipfade, Stream Objekte, Byte-Arrays und PDF-Dokumentpfade. Die Ergebnisse werden als Sammlungen und nicht als einzelne, optionale Objekte zurückgegeben, wodurch die Verarbeitung von Bildern mit mehreren Barcodes ohne separate Konfiguration möglich ist. Die Formaterkennung erfolgt automatisch – die Bibliothek identifiziert den Barcode-Typ anhand des Bildinhalts, ohne dass der Aufrufer ihn vorher angeben muss.
Zur Generierung gibt IronBarcode ein Fluent-Ergebnisobjekt von BarcodeWriter.CreateBarcode() zurück, das mehrere Ausgabeformate unterstützt, darunter PNG, JPEG, SVG, PDF und Base64-kodierte Zeichenketten. Die Bibliothek wird regelmäßig aktualisiert und veröffentlicht aktiv neue NuGet Versionen.
Hauptmerkmale von IronBarcode:
- Statisches API-Design:
BarcodeReader.Read()undBarcodeWriter.CreateBarcode()benötigen keine instanziierten Objekte - Plattformübergreifend: Läuft unter Windows, Linux, macOS, Docker-Containern und Cloud-Funktionen
- Keine Abhängigkeit von System.Drawing: Verwendet eine interne Bildpipeline, die mit allen modernen .NET -Plattformen kompatibel ist.
- Lesen mehrerer Ergebnisse: Gibt eine Sammlung von jedem Dekodierungsaufruf zurück und unterstützt Bilder mit mehreren Barcodes.
- PDF-Lesen: Liest Barcodes direkt aus PDF-Dokumenten ohne externe Extraktionsschritte.
- Automatische Formaterkennung: Erkennt den Barcode-Typ anhand des Bildinhalts ohne Konfiguration durch den Aufrufer
- Ausgabe der flüssigen Generierung: Speichern als PNG, JPEG, SVG, PDF oder Byte-Array aus einem einzelnen Ergebnisobjekt
- Aktive Wartung: Regelmäßige NuGet Releases mit Sicherheitspatches und neuen Funktionen
- Kommerzielle Lizenzierung: Für die Nutzung in der Produktion ist ein Lizenzschlüssel erforderlich; funktioniert im Testmodus ohne einen
Funktionsvergleich
Die folgende Tabelle bietet einen Überblick über die grundlegenden Unterschiede zwischen MessagingToolkit.Barcode und IronBarcode:
| Feature | MessagingToolkit.Barcode | IronBarcode |
|---|---|---|
| Letzte Aktualisierung | 2014 | 2026 (aktiv) |
| Moderne .NET -Unterstützung | Nein | Ja (.NET 6, 7, 8, 9) |
| Plattformübergreifend | Nein (nur Windows) | Ja (Windows, Linux, macOS) |
| PDF-Barcode-Lesen | Nein | Ja |
| Automatische Formaterkennung | Nein | Ja |
| Aktive Sicherheitspatches | Nein | Ja |
| Kommerzielle Unterstützung | Keine | Professionelle Unterstützung verfügbar |
Detaillierter Funktionsvergleich
| Feature | MessagingToolkit.Barcode | IronBarcode |
|---|---|---|
| Wartung | ||
| Letzte Aktualisierung | 2014 | 2026 (aktiv) |
| NuGet -Version | 1.7.0.2 (endgültig) | Aktuell, regelmäßig aktualisiert |
| Aktive Entwicklung | Nein | Ja |
| Sicherheitspatches | Keine seit 2014 | Regelmäßige Patches |
| Plattform | ||
| .NET Framework 3.5-4.5 | Ja | Nein |
| .NET Framework 4.6.2+ | Nein | Ja |
| .NET Core | Nein | Ja |
| .NET 5 / 6 / 7 / 8 / 9 | Nein | Ja |
| ASP.NET Core | Nein | Ja |
| .NET BEHOBEN | Nein | Ja |
| Blazor | Nein | Ja |
| Linux / macOS | Nein | Ja |
| Docker / Container | Nein | Ja |
| Lektüre | ||
| Eingabetypen | Nur Bitmap | Pfad, Datenstrom, Byte-Array, PDF |
| PDF lesen | Nein | Ja (Muttersprachler) |
| Automatische Formaterkennung | Nein | Ja |
| Mehrere Barcodes pro Bild | Nein | Ja |
| System.Drawing-Abhängigkeit | Erforderlich | Keine |
| Generation | ||
| Ausgabeformate | Nur Bitmap | PNG, JPEG, SVG, PDF, Byte-Array |
| Fluent Output API | Nein | Ja |
| System.Drawing-Abhängigkeit | Erforderlich | Keine |
| Lizenzierung | ||
| Kommerzielle Unterstützung | Keine | Professionelle Unterstützung verfügbar |
| Ergebnis der Compliance-Prüfung | Als aufgegeben markiert | Besteht Standardprüfungen |
Plattform- und Framework-Unterstützung
Die Plattformgeschichte dieser beiden Bibliotheken ist durch eine zwölfjährige Lücke geprägt. MessagingToolkit.Barcode wurde für einen bestimmten Zeitpunkt in der .NET -Geschichte entwickelt; IronBarcode wurde für die Gegenwart entwickelt.
MessagingToolkit.Barcode-Ansatz
MessagingToolkit.Barcode ist ausschließlich für .NET Framework 3.5, 4.0 und 4.5 ausgelegt. Es hat keine .NET Standard -Bezeichnung, kein .NET Core-Ziel und keine Kompatibilitätsschicht für moderne Laufzeitumgebungen. Wenn eine Projektdatei auf dieses Paket verweist und eine beliebige moderne .NET Version als Ziel hat, schlägt der NuGet -Wiederherstellungsvorgang mit einem Framework-Kompatibilitätsfehler fehl – der Build wird nicht fortgesetzt.
Die Plattformtabelle in den NuGet Metadaten macht dies konkret. Silverlight 3, 4 und 5 sind als Zielversionen aufgeführt; Alle drei Versionen werden seit 2021 nicht mehr unterstützt. Aufgeführt sind Windows Phone 7.0, 7.5, 7.8 und 8.0; Alle diese Versionen erreichten zwischen 2014 und 2017 das Ende ihres Supports. Die verbleibenden Zielversionen – .NET Framework 3.5, 4.0 und 4.5 – sind unter Windows technisch weiterhin funktionsfähig, erhalten aber von Microsoft nur noch Sicherheitsupdates und keine neuen Funktionen mehr.
Die praktische Konsequenz ist, dass MessagingToolkit.Barcode als Blockierer für die Framework-Modernisierung fungiert. Eine Projektdatei, die auf net472 abzielt und auf dieses Paket verweist, kann nicht in net8.0 geändert werden, ohne vorher das Paket zu entfernen. Das Paket ist nicht nur veraltet – es verhindert aktiv den Wechsel des Zielframeworks, der es dem Projekt ermöglichen würde, auf moderne .NET -Funktionen zuzugreifen.
In der Dokumentation der IronBarcode Plattform finden Sie die vollständige Liste der unterstützten Frameworks und Bereitstellungsziele.
IronBarcode Ansatz
IronBarcode unterstützt .NET Framework 4.6.2 bis .NET 9 und deckt damit sowohl ältere Windows-Anwendungen als auch moderne plattformübergreifende Bereitstellungen ab. Ein einzelnes NuGet Paket lässt sich auf allen unterstützten Plattformen installieren, ohne dass separate Grafikbibliotheken oder plattformspezifische Konfigurationen erforderlich sind.
Die plattformübergreifende Unterstützung ist in der Praxis von großem Nutzen. Die interne Image-Pipeline von IronBarcode ist nicht von System.Drawing abhängig, das in .NET 6 auf Windows beschränkt wurde. Anwendungen, die auf Linux oder macOS abzielen – einschließlich solcher, die in Docker-Containern, Azure App Service unter Linux oder AWS Lambda ausgeführt werden – verwenden dieselbe IronBarcode API und dasselbe Verhalten wie Windows-Bereitstellungen.
API-Design
Die API-Oberfläche von MessagingToolkit.Barcode wurde um instanzbasierte Objekte und System.Drawing.Bitmap Eingaben herum konzipiert. Die API von IronBarcode ist statisch und akzeptiert verschiedene Eingabetypen. Beide Bibliotheken kodieren und dekodieren Barcodes, die Vorgehensweise beim Aufruf unterscheidet sich jedoch deutlich.
MessagingToolkit.Barcode-Ansatz
Das Lesen mit MessagingToolkit.Barcode erforderte das Erstellen einer BarcodeDecoder-Instanz, das Konstruieren einer Bitmap-Instanz aus der Bilddatei, das Übergeben der Bitmap an .Decode()- und das Überprüfen des Ergebnisses auf Null, bevor auf .Text-Zugriff zugegriffen wurde. Die Generierung folgte dem gleichen Instanzmuster: Erstellen eines BarcodeEncoder, Festlegen seiner .Format-Eigenschaft, Aufruf von .Encode(), um ein Bitmap zu erhalten, und anschließend Aufruf von .Save() auf dieser Bitmap.
// Only compiles on .NET Framework 4.5or earlier
using MessagingToolkit.Barcode;
using System.Drawing;
// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();
// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
// Only compiles on .NET Framework 4.5or earlier
using MessagingToolkit.Barcode;
using System.Drawing;
// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();
// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
Imports MessagingToolkit.Barcode
Imports System.Drawing
' Reading
Dim barcodeReader As New BarcodeDecoder()
Dim bitmap As New Bitmap("barcode.png")
Dim result = barcodeReader.Decode(bitmap)
Dim value As String = result?.Text
Dim format As String = result?.BarcodeFormat.ToString()
' Writing
Dim barcodeWriter As New BarcodeEncoder()
barcodeWriter.Format = BarcodeFormat.QrCode
Dim outputBitmap = barcodeWriter.Encode("Hello World")
outputBitmap.Save("output.png")
Die Abhängigkeit Bitmap ist nicht zufällig. System.Drawing.Bitmap erfordert GDI+ unter Windows. In .NET 6 und höher führt der Versuch, System.Drawing unter Linux oder macOS zu verwenden, zu einem Laufzeitfehler PlatformNotSupportedException. Selbst wenn die Assembly MessagingToolkit.Barcode in einem modernen .NET Projekt geladen werden könnte – was aufgrund des fehlenden Framework-Ziels nicht möglich ist – würde die Abhängigkeit Bitmap die plattformübergreifende Bereitstellung verhindern.
IronBarcode Ansatz
IronBarcode verwendet durchgehend statische Methoden. BarcodeReader.Read() akzeptiert einen Dateipfad, ein Stream, ein Byte-Array oder einen PDF-Dateipfad — kein Bitmap erforderlich. Das Ergebnis ist eine Sammlung, nicht ein einzelnes, optionales Objekt. Die Generierung verwendet BarcodeWriter.CreateBarcode(), wobei der Kodierungstyp als Parameter übergeben wird, und das Ergebnisobjekt stellt Speichermethoden direkt zur Verfügung.
// Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-KEY";
// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();
// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
.SaveAsPng("output.png");
// Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-KEY";
// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();
// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
.SaveAsPng("output.png");
Imports IronBarCode
' Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
IronBarCode.License.LicenseKey = "YOUR-KEY"
' Reading
Dim results = BarcodeReader.Read("barcode.png")
Dim value As String = results.FirstOrDefault()?.Value
Dim format As String = results.FirstOrDefault()?.Format.ToString()
' Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode) _
.SaveAsPng("output.png")
Eine detaillierte Anleitung zum Lesen von Barcodes aus Bildern finden Sie unter Wie man Barcodes aus Bildern liest . Informationen zum Generieren von 1D-Barcodes, einschließlich der Formate Code 128, EAN-13 und UPC, finden Sie unter "Erstellen von 1D-Barcodes" .
Sicherheit und Instandhaltung
Eine verlassene Bibliothek weist ein völlig anderes Sicherheitsniveau auf als eine aktiv instand gehaltene Bibliothek. Der Unterschied liegt nicht darin, ob ein CVE-Bericht eingereicht wurde, sondern darin, ob ein CVE-Bericht jemals bearbeitet werden könnte.
MessagingToolkit.Barcode-Ansatz
MessagingToolkit.Barcode hat seit 2014 keine Updates mehr erhalten. Jegliche nach diesem Datum entdeckte Sicherheitslücke – sei es in der Bildparsing-Logik der Bibliothek selbst, in ihrer von ZXing abgeleiteten Dekodier-Implementierung oder in ihren transitiven Abhängigkeiten – bleibt dauerhaft ungepatcht. Es gibt keinen Wartungsbeauftragten, der benachrichtigt werden müsste, keinen Sicherheitswarnungsprozess, der überwacht werden müsste, und keinen Veröffentlichungsmechanismus, über den ein Fix die Benutzer erreichen könnte, selbst wenn ein solcher entwickelt würde.
Sicherheits-Scanning-Tools – Snyk, WhiteSource, GitHub Dependabot, NuGet audit – kennzeichnen verlassene Pakete als risikoreich. Die Kennzeichnung ist nicht von einer bestätigten CVE abhängig; Es spiegelt das Fehlen eines Prozesses wider, durch den bestätigte Schwachstellen behoben werden könnten. Das ist ein kategorisch anderes Risikoprofil als bei einer Bibliothek mit einem aktiven Betreuer und einem dokumentierten Sicherheitsreaktionsprozess.
Für Teams, die unter Compliance-Rahmenwerken arbeiten – PCI DSS, HIPAA, SOC 2, ISO 27001 – hat dies praktische Konsequenzen für die Auditierung. Diese Frameworks erfordern ein aktives Patch-Management für Software von Drittanbietern. Ein verlassenes Softwarepaket ohne Reaktionsmechanismus für Sicherheitslücken wird bei einem Compliance-Audit durchfallen, unabhängig davon, ob eine spezifische CVE-Meldung dafür eingereicht wurde. Das Ergebnis der Prüfung ist das Fehlen einer wartungsfähigen Abhängigkeit, nicht das Vorhandensein einer bekannten Sicherheitslücke.
IronBarcode Ansatz
IronBarcode erhält regelmäßig NuGet Updates, die Sicherheitspatches, Abhängigkeitsaktualisierungen und neue Funktionen umfassen. Die Bibliothek wird von Iron Software entwickelt, die einen dokumentierten Supportprozess unterhält und für jedes Update Versionshinweise veröffentlicht. Sicherheitswarnungen werden, sofern zutreffend, in Patch-Releases berücksichtigt.
IronBarcode unterstützt über 50 Barcode-Formate, darunter alle Formate, die MessagingToolkit.Barcode verarbeitete – QR-Code, Code 128, EAN-13, EAN-8, UPC-A und andere – sowie Formate, die die ältere Bibliothek nie unterstützte: DataMatrix, Aztec, PDF417 und die gesamte Bandbreite moderner 2D-Symbologien.
API-Mapping-Referenz
Die folgende Tabelle ordnet die API-Elemente von MessagingToolkit.Barcode ihren IronBarcode Äquivalenten zu:
| MessagingToolkit.Barcode | IronBarcode | Notizen |
|---|---|---|
new BarcodeDecoder() |
Statisch — BarcodeReader.Read() |
Keine Instanz erforderlich |
barcodeReader.Decode(bitmap) |
BarcodeReader.Read(path) |
Akzeptiert Pfad, Datenstrom oder Byte-Array |
result.Text |
result.Value |
Immobilie umbenannt |
result.BarcodeFormat |
result.Format |
Immobilie umbenannt |
new BarcodeEncoder() |
Statisch — BarcodeWriter.CreateBarcode() |
Keine Instanz erforderlich |
barcodeWriter.Format = BarcodeFormat.QrCode |
BarcodeEncoding.QRCode(Parameter) |
Das Format wurde als Parameter übergeben, nicht als Eigenschaft. |
barcodeWriter.Encode("data") gibt Bitmap zurück |
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.QRCode) |
Gibt ein flüssiges Ergebnis zurück, keine Bitmap. |
bitmap.Save("path.png") |
.SaveAsPng("path.png") |
Fluent-Methode auf Ergebnisobjekt |
BarcodeFormat.QrCode |
BarcodeEncoding.QRCode |
Enum-Namensraum und Wert umbenannt |
BarcodeFormat.Code128 |
BarcodeEncoding.Code128 |
Gleicher symbolischer Name |
| Gibt null zurück, falls nicht gefunden | Gibt eine leere Sammlung zurück | Prüfen Sie .Any() oder .FirstOrDefault() |
| Nur .NET Framework 3.5-4.5 | .NET 4.6.2 bis .NET 9 | Volle Unterstützung für modernes .NET |
Wenn Teams einen Wechsel von MessagingToolkit.Barcode zu IronBarcode erwägen
Die Szenarien, die Teams dazu veranlassen, diesen Übergang zu bewerten, haben eine gemeinsame Struktur: Eine Projektanforderung geht über das hinaus, was eine Bibliothek aus der Framework-Ära von 2014 leisten kann.
Anforderungen an die Modernisierung des Frameworks
Der häufigste Auslöser ist ein geplantes oder laufendes .NET Upgrade. Wenn ein Team beschließt, ein Projekt von .NET Framework 4.x auf .NET 6 oder höher umzustellen, muss der Abhängigkeitsgraph auf Pakete überprüft werden, die keine Unterstützung für das moderne Framework bieten. MessagingToolkit.Barcode wird in diesem Audit als blockierende Abhängigkeit erscheinen – eine Abhängigkeit, die nicht mit einem modernen Zielframework-Moniker aufgelöst werden kann. Die Migration zu IronBarcode ist daher eine Voraussetzung für das umfassendere .NET Upgrade und keine separate Initiative. Teams, die eine Anwendungsmodernisierung durchführen, entdecken diese Abhängigkeit typischerweise früh in der Analysephase des Upgrades.
Sicherheits- und Compliance-Verpflichtungen
Ein zweites Szenario umfasst Sicherheitsüberprüfungen und Compliance-Audits. Teams, die nach den Standards von PCI DSS, HIPAA, SOC 2 oder ISO 27001 arbeiten, werden regelmäßigen Audits unterzogen, bei denen die Abhängigkeit von Drittanbietern überprüft wird. Ein verlassenes Paket ohne Sicherheitsreaktionsmechanismus fällt bei diesen Prüfungen aus prozessualen Gründen durch, unabhängig davon, ob eine spezifische Schwachstelle identifiziert wurde. Wenn ein Sicherheitsteam MessagingToolkit.Barcode als nicht konforme Abhängigkeit kennzeichnet, besteht die Lösung im Austausch – es gibt keinen Patch zum Aufspielen, keine Version zum Aktualisieren und keinen Anbieter, an den man sich wegen einer Sicherheitswarnung wenden könnte. Die Migration zu IronBarcode behebt den Prüfbefund, indem eine Abhängigkeit ohne Wartungspfad durch eine ersetzt wird, die regelmäßige Sicherheitsupdates erhält.
Kapazitätserweiterung
Ein drittes Szenario entsteht, wenn neue Anforderungen über das hinausgehen, was MessagingToolkit.Barcode leisten kann. Anwendungen, die gescannte Dokumente oder PDF-Dateien verarbeiten, benötigen das Lesen von Barcodes aus diesen Formaten – MessagingToolkit.Barcode akzeptierte jedoch nur Bitmap-Eingaben, wodurch das Lesen von PDFs ohne eine separate Extraktionsschicht unmöglich war. Anwendungen, die Barcodes für die Webbereitstellung generieren, benötigen SVG- oder Base64-Ausgabe – MessagingToolkit.Barcode gab einen Bitmap zurück, was zusätzliche Konvertierungsschritte und eine System.Drawing.Imaging-Abhängigkeit erforderte. Wenn sich die Produktanforderungen auf diese Bereiche ausdehnen, werden die Einschränkungen der älteren Bibliothek zu technischen Beschränkungen, die sich nicht über ihre API-Oberfläche umgehen lassen.
Plattform-Zielwachstum
Ein viertes Szenario ist die Hinzufügung neuer Bereitstellungsziele. Teams, die ursprünglich nur Windows-Anwendungen entwickelt haben und nun auf Linux-Hosting, macOS-Entwicklungsumgebungen, Docker-Container oder Cloud-Funktionen auf Linux-Laufzeitumgebungen expandieren, stoßen auf die Abhängigkeit System.Drawing als blockierendes Problem. MessagingToolkit.Barcode benötigt System.Drawing.Bitmap für alle Eingabe- und Ausgabevorgänge, und System.Drawing ist nur unter Windows in .NET 6 und höher verfügbar. Bei jedem anderen Zielsystem als Windows führt diese Abhängigkeit zu einem Laufzeitfehler und nicht nur zu einem Kompatibilitätsproblem. Durch die Migration zu IronBarcode entfällt die System.Drawing-Anforderung vollständig, wodurch die vom Team angestrebte plattformübergreifende Bereitstellung ermöglicht wird.
Gemeinsame Überlegungen zur Migration
Teams, die von MessagingToolkit.Barcode auf IronBarcode umsteigen, sollten sich über einige technische Unterschiede im Klaren sein, die sich auf die Mechanismen der Migration auswirken.
Namensraumersetzung
Jede Datei, die using MessagingToolkit.Barcode; enthält, muss auf using IronBarCode; aktualisiert werden. Eine Suche im gesamten Code nach der alten Namespace-Zeichenkette ist der zuverlässigste Ausgangspunkt, um den Umfang der Migration zu ermitteln. Dateien, die System.Drawing ausschließlich für den Typ Bitmap importieren, der mit MessagingToolkit.Barcode verwendet wird, können diesen Import vollständig entfernen, sobald IronBarcode installiert ist, da IronBarcode ihn nicht benötigt.
Zielrahmenänderung
Durch das Entfernen von MessagingToolkit.Barcode aus der Projektdatei kann der Zielframework-Moniker aktualisiert werden. Der Wechsel von <TargetFramework>net472</TargetFramework> zu <TargetFramework>net8.0</TargetFramework> wird möglich, sobald die blockierende Abhängigkeit beseitigt ist. IronBarcode unterstützt beide Seiten dieser Umstellung – es ist kompatibel mit .NET Framework 4.6.2 und mit .NET 8 – sodass es vor dem endgültigen Abschluss des Framework-Upgrades installiert werden kann, wodurch die Migration gestaffelt und nicht in einem einzigen Schritt durchgeführt werden kann.
Namensraumunterschiede von BarcodeWriter
MessagingToolkit.Barcode verwendete BarcodeEncoder als Generierungsklasse, wobei das Format als Eigenschaft (barcodeWriter.Format = BarcodeFormat.QrCode) festgelegt wurde, bevor .Encode() aufgerufen wurde. IronBarcode verwendet BarcodeWriter.CreateBarcode() als statische Methode, wobei der Kodierungstyp als Parameter übergeben wird. Die Enum-Namen unterscheiden sich: BarcodeFormat.QrCodewird zu BarcodeEncoding.QRCode, und BarcodeFormat.Code128wird zu BarcodeEncoding.Code128. Das Ergebnis von CreateBarcode() ist ein Fluent-Objekt mit .SaveAsPng(), .SaveAsJpeg(), .SaveAsSvg() und anderen Ausgabemethoden – es gibt kein Bitmap zurück.
Zusätzliche IronBarcode Funktionen
IronBarcode bietet Funktionen, die über die in den obigen Abschnitten beschriebenen Funktionen hinausgehen:
- PDF-Barcode-Lesen:
BarcodeReader.Read("document.pdf")liest Barcodes von jeder Seite eines PDF-Dokuments und gibt Ergebnisse zurück, die Metadaten zur Seitenzahl enthalten. Es ist kein externer PDF-Extraktionsschritt erforderlich. - Stapelverarbeitung: Mehrere Dateien – Bilder und PDFs gemischt – können in einem einzigen Durchgang gelesen werden. Die automatische Formaterkennung bezieht sich auf den Barcode-Typ, nicht nur auf das Dateiformat.
- Anpassung des QR-Codes: Generierte QR-Codes können eingebettete Logos, benutzerdefinierte Farben und einstellbare Ruhezonen über die
QRCodeWriterAPI enthalten. - Asynchrones Multithreading:
BarcodeReader.ReadAsync()bietet eine native async-Überladung zur Integration mit async/await-Mustern in ASP.NET Coreund anderen asynchronen .NET Anwendungen. - Mehrere Ausgabeformate für die Generierung: Generierte Barcodes können als PNG, JPEG, SVG, PDF gespeichert oder als Base64-codierter String zur direkten Einbettung in HTML-Antworten oder zur Speicherung in einer Datenbank abgerufen werden.
.NET-Kompatibilität und Zukunftsfähigkeit
IronBarcode unterstützt die gesamte Bandbreite der aktuellen .NET Versionen – .NET Framework 4.6.2 bis .NET 9 – und erhält Updates, die mit neuen .NET Versionen Schritt halten, sobald diese verfügbar sind. Die interne Bildverarbeitungspipeline der Bibliothek vermeidet Abhängigkeiten von System.Drawing oder anderen plattformspezifischen Grafik-APIs, was bedeutet, dass dasselbe Paket und dieselbe API auf Windows, Linux, macOS und in Containerumgebungen identisch funktionieren. Mit der Veröffentlichung von .NET 10 und nachfolgenden Versionen stellt der aktive Entwicklungsrhythmus von IronBarcode sicher, dass die Kompatibilität erhalten bleibt, ohne dass Teams .NET Upgrades aufgrund von Bibliothekseinschränkungen verschieben müssen.
Abschluss
MessagingToolkit.Barcode und IronBarcode repräsentieren zwei sehr unterschiedliche Momente in der Entwicklung von .NET -Bibliotheken. MessagingToolkit.Barcode wurde für .NET Framework 4.x und die mobilen Plattformen der Jahre 2011 bis 2014 entwickelt. IronBarcode hingegen wurde für das .NET des Jahres 2026 entwickelt – plattformübergreifend, containerfreundlich und aktiv weiterentwickelt. Der technische Unterschied zwischen ihnen ist keine Frage der Funktionsgleichheit; Es ist eine Frage der Laufzeitkompatibilität. MessagingToolkit.Barcode lässt sich in einem modernen .NET Projekt nicht kompilieren, was bedeutet, dass der Vergleich in den meisten praktischen Szenarien nicht zwischen zwei konkurrierenden Optionen stattfindet.
MessagingToolkit.Barcode hat einen begrenzten legitimen Anwendungsfall: ein Projekt, das ausschließlich auf .NET Framework 4.x abzielt, nur unter Windows läuft, niemals auf eine neuere Laufzeitumgebung aktualisiert wird und in einer Umgebung operiert, in der keine Sicherheitsaudit-Anforderungen durchgesetzt werden. In dieser spezifischen Konfiguration erzeugt die Bibliothek eine Ausgabe, und die technische Einschränkung trifft nicht zu. Diese Konfiguration beschreibt nur sehr wenige aktive Projekte im Jahr 2026, und das Sicherheitsrisiko – zwölf Jahre ohne Patches – gilt unabhängig davon für alle Konfigurationen.
IronBarcode eignet sich für Teams, die Barcode-Funktionalität in einem modernen .NET Kontext benötigen: .NET 6, 7, 8 oder 9; Bereitstellung unter Linux oder macOS; Docker- oder Cloud-Umgebungen; ASP.NET CoreAnwendungen; oder jedes Projekt, das PDFs verarbeitet oder Barcodes in Ausgabeformaten jenseits von Windows-Bitmaps benötigt. Die statische API reduziert den Instanziierungsaufwand des instanzbasierten Modells, und das Fehlen einer System.Drawing-Abhängigkeit beseitigt eine wichtige plattformübergreifende Einschränkung.
Die grundlegende Bewertung ist unkompliziert. Für Teams, die .NET Framework 4.x verwenden und keine Änderung planen, funktioniert MessagingToolkit.Barcode weiterhin innerhalb dieser Einschränkungen. Für alle anderen Szenarien – Modernisierung, Compliance, plattformübergreifende Bereitstellung oder Funktionserweiterung – ist MessagingToolkit.Barcode keine praktikable Option, und IronBarcode ist ein direkter Ersatz mit einem kleinen, klar definierten Migrationspfad.
Häufig gestellte Fragen
Was ist der MessagingToolkit BarCode?
MessagingToolkit 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 MessagingToolkit BarCode und IronBarcode?
IronBarcode verwendet eine statische, zustandslose API, die keine Instanzverwaltung erfordert, während MessagingToolkit 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 MessagingToolkit 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 MessagingToolkit 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 MessagingToolkit 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 im Gegensatz zu MessagingToolkit vor dem Kauf testen?
Ja, der Testmodus von IronBarcode liefert vollständige dekodierte Barcodewerte - nur die erzeugten Ausgabebilder erhalten ein Wasserzeichen. Sie können die Lesegenauigkeit an Ihren eigenen Dokumenten testen, bevor Sie sich zum Kauf verpflichten.
Was ist der Preisunterschied zwischen MessagingToolkit 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 MessagingToolkit BarCode zu IronBarcode zu migrieren?
Bei der Migration von MessagingToolkit BarCode zu IronBarcode geht es in erster Linie darum, instanzbasierte API-Aufrufe durch die statischen Methoden von IronBarcode zu ersetzen, Lizenzierungsvorlagen 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.

