Scandit SDK gegenüber IronBarcode: C# Barcode Bibliothek Vergleich
Um mit Scandit Barcodes zu lesen, konfigurieren Sie einen DataCaptureContext, erstellen einen BarcodeCaptureSettings, aktivieren Sie explizit Symbologien, wählen Sie eine Kamera aus, legen Sie diese als Bildquelle fest, schalten Sie die Kamera ein und aktivieren Sie die Aufnahme. Der Preis ist noch nicht auf der Website angegeben.
Diese Kombination – obligatorische Kamerapipeline und intransparente Preisgestaltung für Enterprise – definiert genau, wann Scandit das falsche Werkzeug für ein .NET Projekt ist. Wenn Sie einen serverseitigen Workflow zur Dokumentenverarbeitung, eine ASP.NET CoreAPI zum Auslesen von Barcodes aus hochgeladenen Dateien oder eine Azure-Funktion zur Verarbeitung von Versand-PDFs entwickeln, ist die Architektur von Scandit in jedem Schritt hinderlich. Dieser Vergleich untersucht die Ursprünge dieser Architektur, die Alternativen von IronBarcode und die jeweiligen Kosten.
Scandit SDKverstehen
Scandit SDK ist eine kommerzielle Barcode-Scanning-Plattform für Enterprise , die für mobile und Edge-Computing-Umgebungen entwickelt wurde. Die Bibliothek wurde entwickelt, um Echtzeit-Kamerascanning auf iOS-, Android- und MAUI-Geräten zu unterstützen, mit spezialisierten Produktlinien für Augmented-Reality-Overlays, die gleichzeitige Erkennung mehrerer Barcodes und das Scannen von Ausweisdokumenten. Der primäre Einsatzkontext von Scandit sind mobile Außendienstmitarbeiter, Lagerbetriebe und Interaktionsszenarien im Einzelhandel, bei denen eine physische Kamera, ein Live-Benutzer und eine Reaktionszeit von unter 100 ms gleichzeitig vorhanden sind.
Die Architektur der Bibliothek ist um die DataCaptureContext Pipeline herum organisiert, die eine Kamerasitzung, Einstellungen zur Frame-Analyse und Konfiguration der Barcode-Erfassung als einheitliches zustandsbehaftetes System koordiniert. Da jede Produktlinie der Scandit-Plattform – SparkScan, MatrixScan, ID Scanning, AR Overlays und Parser – separat lizenziert und über ein Kontakt-Vertriebsmodell bepreist wird, lassen sich die Gesamtkosten einer Scandit-Integration erst nach einem Verkaufsgespräch ermitteln.
Zu den wichtigsten architektonischen Merkmalen des Scandit SDKgehören:
- Camera-First Design: Das SDK setzt eine physische Kamera und eine laufende Bildquelle voraus. Das Auslesen der Barcodes erfolgt in Live-Videobildern, nicht in statischen Dateien oder Streams.
- Obligatorische Initialisierung des DataCaptureContext: Jede Integration beginnt mit der Erstellung eines
DataCaptureContextund dessen Verbindung mit einer Kamerainstanz, bevor die Barcode-Verarbeitung erfolgen kann. - Explizite Symbologie-Deklaration: Barcode-Formate müssen einzeln mit
EnableSymbologiesaktiviert werden, bevor die Erfassungssitzung beginnt. Eine automatische Erkennung ist nicht verfügbar. - Ereignisgesteuerte Ergebnisübermittlung: Barcode-Ergebnisse werden asynchron über Ereignis-Callbacks (
BarcodeScanned) übermittelt, anstatt synchron von einem Methodenaufruf zurückgegeben zu werden. - Modulare Produktarchitektur: SparkScan, MatrixScan, ID-Scanning, AR-Overlays und Parser sind separat bepreiste Funktionen, die individuelle Vertragspositionen erfordern.
- Kontakt-Vertrieb Preisgestaltung: Es werden keine Preise veröffentlicht. Für jede Integration ist eine Vertriebsanfrage erforderlich, bevor die Lizenzkosten feststehen.
- Mobile-First-Plattformausrichtung: Primäre Unterstützung gilt iOS und Android. Serverseitige, Docker- und serverlose Bereitstellungen fallen nicht in den Designumfang des SDK.
Die DataCaptureContext-Pipeline
Jede Scandit-Integration beginnt mit dieser Kamerainitialisierungssequenz, bevor ein einziger Barcode gelesen werden kann:
// Scandit SDK: full camera pipeline setup
// NuGet: Scandit.BarcodePicker
var dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE");
var settings = BarcodeCaptureSettings.Create();
settings.EnableSymbologies(new HashSet<Symbology>
{
Symbology.Ean13Upca,
Symbology.Ean8,
Symbology.Code128,
Symbology.QrCode
});
var barcodeCapture = BarcodeCapture.Create(dataCaptureContext, settings);
var camera = Camera.GetDefaultCamera();
await dataCaptureContext.SetFrameSourceAsync(camera);
await camera.SwitchToDesiredStateAsync(FrameSourceState.On);
barcodeCapture.IsEnabled = true;
// Scandit SDK: full camera pipeline setup
// NuGet: Scandit.BarcodePicker
var dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE");
var settings = BarcodeCaptureSettings.Create();
settings.EnableSymbologies(new HashSet<Symbology>
{
Symbology.Ean13Upca,
Symbology.Ean8,
Symbology.Code128,
Symbology.QrCode
});
var barcodeCapture = BarcodeCapture.Create(dataCaptureContext, settings);
var camera = Camera.GetDefaultCamera();
await dataCaptureContext.SetFrameSourceAsync(camera);
await camera.SwitchToDesiredStateAsync(FrameSourceState.On);
barcodeCapture.IsEnabled = true;
Imports Scandit.DataCapture.Core
Imports Scandit.DataCapture.Barcode
Imports Scandit.DataCapture.Barcode.Capture
Imports Scandit.DataCapture.Core.Source
Imports System.Collections.Generic
' Scandit SDK: full camera pipeline setup
' NuGet: Scandit.BarcodePicker
Dim dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE")
Dim settings = BarcodeCaptureSettings.Create()
settings.EnableSymbologies(New HashSet(Of Symbology) From {
Symbology.Ean13Upca,
Symbology.Ean8,
Symbology.Code128,
Symbology.QrCode
})
Dim barcodeCapture = BarcodeCapture.Create(dataCaptureContext, settings)
Dim camera = Camera.GetDefaultCamera()
Await dataCaptureContext.SetFrameSourceAsync(camera)
Await camera.SwitchToDesiredStateAsync(FrameSourceState.On)
barcodeCapture.IsEnabled = True
Jede einzelne Leitung in diesem Block stellt eine Kamerainfrastruktur dar. Es gibt kein Dateipfadargument. Es gibt keine PDF-Datei. Es gibt keinen Bach. Die Bibliothek setzt eine funktionierende Kamera voraus, bevor mit der Barcode-Erstellung begonnen werden kann.
IronBarcode verstehen
IronBarcode ist eine kommerzielle .NET Bibliothek zum Lesen und Generieren von Barcodes. Die Bibliothek ist für Server-, Desktop- und Cloud-Umgebungen konzipiert, in denen Barcode-Daten als Dateien, Datenströme, Byte-Arrays oder eingebettete Inhalte in PDF-Dokumenten ankommen. Die API ist zustandslos – es gibt kein Session-Objekt, keine Kamera-Pipeline, die initialisiert werden muss, und keinen persistenten Kontext, der zwischen den Lesevorgängen verwaltet werden muss. Ein einzelner statischer Aufruf von BarcodeReader.Read akzeptiert einen Dateipfad, einen Datenstrom, ein Byte-Array oder ein PDF und gibt eine Sammlung von Ergebnissen zurück.
IronBarcode wird als einzelnes NuGet Paket ausgeliefert, das alle Lese- und Generierungsfunktionen für mehr als 30 1D- und 2D-Barcodeformate enthält. Die Bibliothek unterstützt die automatische Formaterkennung, sodass der Aufrufer nicht angeben muss, nach welchen Symbologien gesucht werden soll. Die Preise werden auf der Produktseite veröffentlicht, ein Verkaufsgespräch ist nicht erforderlich.
Zu den wichtigsten Merkmalen von IronBarcode gehören:
- Zustandslose dateibasierte API: Der Lesevorgang beginnt mit einem einzigen Methodenaufruf, der einen Dateipfad, einen Datenstrom, ein Byte-Array oder ein PDF-Dokument akzeptiert.
- Automatische Formaterkennung: Alle unterstützten Barcode-Formate werden automatisch erkannt. Die explizite Symbolisierungskonfiguration ist eine optionale Leistungsoptimierung, keine Voraussetzung.
- Native PDF-Unterstützung: Mehrseitige PDF-Dokumente werden direkt gelesen, die Ergebnisse werden nach Seitenzahl indiziert. Es wird keine externe PDF-Rendering-Bibliothek benötigt.
- Server- und Cloud-fähig: Unterstützt ASP.NET Core, Azure Functions, Docker unter Linux und containerisierte Bereitstellungen ohne architektonische Umwege.
- Gleichzeitige Verarbeitung: Die zustandslose API ist von Natur aus threadsicher und ermöglicht
Parallel.ForEachund asynchrone Muster für Batch-Szenarien mit hohem Durchsatz. - Barcode-Generierung: Erzeugt Barcodes im Bild- und PDF-Format für alle unterstützten Symbologien. Erzeugung und Auslesen sind im selben Paket enthalten.
- Veröffentlichte unbefristete Lizenz: Die Preise werden öffentlich als einmalige, unbefristete Käufe ohne Gebühren pro Scan oder pro Gerät angegeben.
Funktionsvergleich
Die folgende Tabelle verdeutlicht die grundlegenden Unterschiede zwischen Scandit SDKund IronBarcode:
| Feature | Scandit SDK | IronBarcode |
|---|---|---|
| Primärer Anwendungsfall | Echtzeit-Kamerascan auf dem Handy | Lesen von Datei-, Stream- und PDF-Barcodes auf dem Server |
| Kamera erforderlich | Ja | Nein |
| PDF-Barcode-Extraktion | Nicht unterstützt | Native Unterstützung |
| Preismodell | Kontaktieren Sie den Vertrieb, pro Produkt. | Veröffentlichte unbefristete Stufen |
| Serverseitige Verarbeitung | Nicht für diesen Zweck entwickelt | Primäres Bereitstellungsziel |
| Symbolisierungskonfiguration | Vor dem Scannen zwingend erforderlich | Optional; automatische Erkennung ist Standard |
| Barcode-Generierung | Nicht unterstützt | Im Einzelpaket enthalten |
Detaillierter Funktionsvergleich
| Feature | Scandit SDK | IronBarcode |
|---|---|---|
| Lektüre | ||
| Bilddatei lesen | Nicht für diesen Zweck entwickelt | Hauptfokus |
| PDF-Barcode-Extraktion | Nicht unterstützt | Native mehrseitige |
| Eingabestrom / Byte-Array | Nicht unterstützt | Ja |
| Automatische Formaterkennung | Nein (muss angegeben werden) | Ja |
| 1D-Formate (Code 128, EAN, UPC usw.) | 30+ | 30+ |
| 2D-Formate (QR, DataMatrix, Aztec, PDF417) | Ja | Ja |
| Mehrfach-Barcode-Erkennung pro Dokument | MatrixScan (separates Produkt) | Ja (Einzelverpackung) |
| Wiederherstellung beschädigter Barcodes | Beschränkt | Ja (ML-gestützt) |
| Generation | ||
| Barcode-Generierung | Nicht unterstützt | Ja |
| Ausgabe in Bilddatei | Nicht unterstützt | Ja |
| Ausgabe als PDF | Nicht unterstützt | Ja |
| Architektur | ||
| Initialisierungsmodell | Stateful-Kamera-Pipeline | Aufruf einer zustandslosen Methode |
| Ergebnislieferung | Ereignis-Callback (asynchron) | Synchroner Rückgabewert |
| Kameraabhängigkeit | Erforderlich | Nicht zutreffend |
| Symbolik vor der Deklaration | Erforderlich | Optional |
| Plattform | ||
| iOS / Android (MAUI) | Primäres Ziel | Programmatische Nutzung |
| ASP.NET Core | Nicht für diesen Zweck entwickelt | Volle Unterstützung |
| Azure-Funktionen/ serverlos | Nicht praktikabel | Volle Unterstützung |
| Docker / Linux-Server | Nicht unterstützt | Volle Unterstützung |
| Konsolen-/Hintergrunddienst | Nicht für diesen Zweck entwickelt | Volle Unterstützung |
| Lizenzierung | ||
| Preistransparenz | Kontakt zum Vertrieb erforderlich | Auf der Website veröffentlicht |
| Lizenztyp | Jährlich (pro Produkt) | Ewige einmalige |
| Gebühren pro Scan oder pro Gerät | Ja | Nein |
| Zugriff auf alle Funktionen mit einem einzigen Paket | Nein (modulare Produkte) | Ja |
Architektur zum Lesen von Barcodes
Der bedeutendste strukturelle Unterschied zwischen diesen beiden Bibliotheken besteht darin, wie sie die Beziehung zwischen Input und Output modellieren.
Scandit SDK-Ansatz
Scandit verarbeitet Kamerabilder in Echtzeit. Der DataCaptureContext hält eine aktive Kamerasitzung aufrecht, und BarcodeCapture überwacht die Barcodes in jedem eingehenden Bild. Die Barcode-Ergebnisse werden asynchron über das Ereignis BarcodeScanned übermittelt. Das Einlesen einer statischen Bilddatei mit Scandit erfordert die Anpassung der Kamerapipeline, um eine Datei als Framequelle zu behandeln – ein Workflow, der nicht nativ unterstützt wird und dessen Annäherung einen erheblichen Entwicklungsaufwand erfordert.
// Scandit SDK: event-callback result delivery
barcodeCapture.BarcodeScanned += (sender, args) =>
{
foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
{
string value = barcode.Data;
string symbology = barcode.Symbology.ToString();
ProcessBarcode(value, symbology);
}
};
// Scandit SDK: event-callback result delivery
barcodeCapture.BarcodeScanned += (sender, args) =>
{
foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
{
string value = barcode.Data;
string symbology = barcode.Symbology.ToString();
ProcessBarcode(value, symbology);
}
};
Imports System
' Scandit SDK: event-callback result delivery
AddHandler barcodeCapture.BarcodeScanned, Sub(sender, args)
For Each barcode In args.Session.NewlyRecognizedBarcodes
Dim value As String = barcode.Data
Dim symbology As String = barcode.Symbology.ToString()
ProcessBarcode(value, symbology)
Next
End Sub
Das ereignisgesteuerte Modell eignet sich für kontinuierliches Live-Scannen, bei dem Barcodes unvorhersehbar in einem Videostream eintreffen. Bei der dateibasierten Verarbeitung führt das Modell zu unnötiger Komplexität: Die Eingabe hat eine bekannte Abschlussgrenze, die Kamerasitzung wird nie auf natürliche Weise beendet, und das asynchrone Callback-Muster lässt sich nicht gut mit Anfrage-Antwort-Serverarchitekturen kombinieren.
IronBarcode Ansatz
IronBarcode behandelt jede Eingabe als ein einzelnes Dokument mit einem deterministischen Ergebnis. Die Methode BarcodeReader.Read akzeptiert einen Dateipfad, einen Datenstrom oder ein Byte-Array, führt die gesamte Erkennung synchron durch und gibt eine Sammlung von Ergebnissen zurück. Es gibt keine Sitzung zu öffnen, keine Framequelle zu konfigurieren und kein Ereignis zu abonnieren.
// IronBarcode: direct file reading
// NuGet: dotnet add package IronBarcode
IronBarCode.License.LicenseKey = "YOUR-KEY";
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
Console.WriteLine($"{result.Value} ({result.Format})");
// IronBarcode: direct file reading
// NuGet: dotnet add package IronBarcode
IronBarCode.License.LicenseKey = "YOUR-KEY";
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
Console.WriteLine($"{result.Value} ({result.Format})");
' IronBarcode: direct file reading
' NuGet: dotnet add package IronBarcode
IronBarCode.License.LicenseKey = "YOUR-KEY"
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"{result.Value} ({result.Format})")
Next
Zum Auslesen von Barcodes aus Bildern benötigt die zustandslose API außer dem Lizenzschlüssel keine Initialisierung. Die Formaterkennung erfolgt automatisch. Das vollständige Programm oben liest jedes unterstützte Barcode-Format aus einer Bilddatei in drei Zeilen Arbeitscode.
Plattform- und Bereitstellungsunterstützung
Der Bereitstellungskontext einer Barcode-Bibliothek bestimmt unabhängig von ihren Funktionsumfängen, ob sie in der Zielumgebung überhaupt ausgeführt werden kann.
Scandit SDK-Ansatz
Die Architektur von Scandit erfordert Kamerahardware und eine mobile Plattform, die diese über eine native Kamera-API bereitstellen kann. iOS und Android sind die primär unterstützten Zielplattformen. Windows-Desktop ist ein sekundäres Ziel. ASP.NET Core, Azure Functions, Docker-Container und Linux-Server fallen nicht in den Designumfang der Bibliothek. Der Fehlercode DataCaptureContext setzt eine laufende Kamerasitzung voraus, für die es in serverlosen Rechenumgebungen, containerisierten Bereitstellungen oder Hintergrundverarbeitungsdiensten kein Äquivalent gibt.
| Plattform | Scandit SDK |
|---|---|
| iOS / Android (MAUI) | Primäres Ziel |
| Windows-Desktop | Sekundäre Unterstützung |
| ASP.NET Core | Nicht für diesen Zweck entwickelt |
| Azure-Funktionen | Nicht praktikabel |
| Docker / Linux-Server | Nicht unterstützt |
| Konsolen-/Hintergrunddienst | Nicht für diesen Zweck entwickelt |
IronBarcode Ansatz
IronBarcode wurde für Server-, Cloud- und Containerumgebungen entwickelt. Die zustandslose API hat keine Hardwareabhängigkeiten und keine plattformspezifischen Initialisierungsanforderungen. Die Bereitstellung in Azure Functions für die Barcode-Verarbeitung ist ein unterstützter, dokumentierter Weg. Docker unter Linux ist ein Standard-Bereitstellungsziel. ASP.NET Core-Endpunkte, die Barcodes aus hochgeladenen Dateien lesen, stellen ein vom Kern unterstütztes Szenario dar, für das keine architektonischen Umgehungslösungen erforderlich sind.
| Plattform | IronBarcode |
|---|---|
| iOS / Android (MAUI) | Programmatische Dateiverarbeitung |
| ASP.NET Core | Volle Unterstützung |
| Azure-Funktionen/Lambda | Volle Unterstützung |
| Docker / Linux-Server | Volle Unterstützung |
| Konsolen-/Hintergrunddienst | Volle Unterstützung |
| Blazor -Server | Volle Unterstützung |
Gleichzeitige Stapelverarbeitung
Die Verarbeitung großer Mengen von Dokumenten mit Barcodes ist eine häufige serverseitige Anforderung, die die beiden Bibliotheken aus grundlegend unterschiedlichen Perspektiven angehen.
Scandit SDK-Ansatz
Die Kamerapipeline von Scandit wurde für eine einzelne Kamerasitzung mit einem einzelnen Benutzer oder Gerät entwickelt. Das Modell FrameSourceState geht von einer persistenten, kontinuierlichen Kamerasitzung aus – nicht von einer Warteschlange mit Dokumenten, die mit hohem Durchsatz verarbeitet werden. Die Anpassung der Bibliothek zur Verarbeitung von Dateistapeln erfordert die Simulation einer Kamerasitzung pro Dokument oder die Serialisierung der Dokumentenverarbeitung über eine gemeinsame Pipeline, was beides kein unterstütztes oder effizientes Vorgehen darstellt.
IronBarcode Ansatz
Da die Methode BarcodeReader.Read von IronBarcode zustandslos ist, ist es grundsätzlich sicher, sie gleichzeitig von mehreren Threads aufzurufen. Für die gleichzeitige Stapelverarbeitung ist keine spezielle Konfiguration erforderlich, außer der Definition von BarcodeReaderOptions:
// IronBarcode: concurrent batch processing
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
MaxParallelThreads = 4
};
var files = Directory.GetFiles("./incoming/", "*.pdf");
var allResults = new ConcurrentBag<BarcodeResult>();
Parallel.ForEach(files, file =>
{
var results = BarcodeReader.Read(file, options);
foreach (var r in results)
allResults.Add(r);
});
// IronBarcode: concurrent batch processing
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
MaxParallelThreads = 4
};
var files = Directory.GetFiles("./incoming/", "*.pdf");
var allResults = new ConcurrentBag<BarcodeResult>();
Parallel.ForEach(files, file =>
{
var results = BarcodeReader.Read(file, options);
foreach (var r in results)
allResults.Add(r);
});
Imports System.IO
Imports System.Collections.Concurrent
Imports System.Threading.Tasks
' IronBarcode: concurrent batch processing
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True,
.MaxParallelThreads = 4
}
Dim files = Directory.GetFiles("./incoming/", "*.pdf")
Dim allResults As New ConcurrentBag(Of BarcodeResult)()
Parallel.ForEach(files, Sub(file)
Dim results = BarcodeReader.Read(file, options)
For Each r In results
allResults.Add(r)
Next
End Sub)
Detaillierte Muster für das asynchrone und multithreadfähige Lesen von Barcodes finden Sie in der IronBarcode Dokumentation, die threadsichere Muster und Optionen zur Durchsatzoptimierung enthält.
PDF-Dokumentverarbeitung
Die Extraktion von PDF-Barcodes ist eine eigenständige Fähigkeit im Vergleich zum bildbasierten Lesen und stellt eine signifikante Divergenz zwischen den beiden Bibliotheken dar.
Scandit SDK-Ansatz
Scandit bietet keine native PDF-Unterstützung. Das Extrahieren von Barcodes aus einer PDF-Datei mit Scandit erfordert das Rendern jeder PDF-Seite in ein Rasterbild mithilfe einer separaten PDF-Rendering-Bibliothek und die anschließende Verarbeitung dieser Bilder durch die Kamerasimulationspipeline. Dieser Ansatz führt zu einer zusätzlichen Abhängigkeit, zusätzlichen Lizenzkosten und einem erheblichen Entwicklungsaufwand für eine Aufgabe, die in Dokumentenverarbeitungs-Workflows routinemäßig anfällt. Mehrseitige Dokumente erfordern das manuelle Durchlaufen der Seiten, die Verwaltung des Speichers für gerenderte Bilder und die manuelle Koordinierung der Ergebnisse über die Seiten hinweg.
IronBarcode Ansatz
IronBarcode liest Barcodes nativ aus PDF-Dokumenten. Ein Dateipfad zu einer PDF-Datei ist ein gültiges Argument für BarcodeReader.Read, und die Ergebnisse enthalten eine PageNumber-Eigenschaft, die angibt, auf welcher Seite des Dokuments der jeweilige Barcode gefunden wurde:
// IronBarcode: extract barcodes from every page of a PDF
var results = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value} ({barcode.Format})");
}
// IronBarcode: extract barcodes from every page of a PDF
var results = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value} ({barcode.Format})");
}
Imports IronBarcode
' IronBarcode: extract barcodes from every page of a PDF
Dim results = BarcodeReader.Read("shipping-manifest.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value} ({barcode.Format})")
Next
Eine vollständige Anleitung zum Lesen von Barcodes aus PDFs , einschließlich Optionen zur Seitenbereichsauswahl und zur Extraktion mehrerer Barcodes, finden Sie in der IronBarcode Dokumentation, die das gesamte Spektrum der PDF-Verarbeitungsszenarien abdeckt.
Preis- und Lizenzierungsbedingungen
Die Lizenzstruktur beeinflusst nicht nur die Kosten einer Bibliothek, sondern auch den Zeitrahmen, der für deren Evaluierung und Einführung erforderlich ist.
Skandinavischer Ansatz
Scandit veröffentlicht keine Preisangaben. Auf der Produktseite werden Funktionen und Produktnamen – SparkScan, MatrixScan, ID Scanning, AR Overlays, Parser – aufgelistet und alle Anfragen über ein Verkaufsgespräch weitergeleitet. Der Angebotsprozess umfasst die Erläuterung des Anwendungsfalls, die Schätzung des Scanvolumens, die Spezifizierung der Geräte, die Besprechung der Supportstufen und die Verhandlung der Vertragslaufzeit, bevor ein Kostenbetrag genannt wird. Rezensionen auf Plattformen wie G2 und DiscoverSDK weisen immer wieder auf unvorhersehbare Kosten für kleine und mittlere Unternehmen sowie auf Schwierigkeiten bei der Budgetplanung hin. Jede Scandit-Produktlinie wird separat bepreist und vertraglich geregelt, was bedeutet, dass für den Zugriff auf erweiterte Funktionen zusätzliche Verkaufszyklen erforderlich sind.
IronBarcode Ansatz
IronBarcode veröffentlicht seine Lizenzstufen auf der Produktseite, ohne dass ein Formular ausgefüllt oder eine Verkaufsanfrage gestellt werden muss:
| Lizenz | Preis | Entwickler | Projekte |
|---|---|---|---|
| Lite | 749 $ einmalig | 1 | 1 |
| Professionell | 1.499 $ einmalig | 10 | 10 |
| Unbegrenzt | 2.999 $ einmalig | Unbegrenzt | Unbegrenzt |
Die Lizenzen gelten unbefristet. Es fallen keine Gebühren pro Scan, keine Gebühren pro Gerät und keine Volumenschwellenwerte an, die zu Tarifänderungen führen. Eine jährliche Verlängerung ist optional und kostet die Hälfte des ursprünglichen Preises. Die erworbene Lizenz bleibt aber auch ohne Verlängerung gültig. Alle Funktionen des IronBarcode Komplettpakets – Lesen, Generieren, PDF-Unterstützung, Erkennung mehrerer Barcodes – sind in jeder Stufe enthalten.
API-Mapping-Referenz
Die folgende Tabelle ordnet die Konzepte des Scandit SDKihren IronBarcode Äquivalenten zu, um Teams bei der Abschätzung der Übersetzungskosten einer Migration zu unterstützen:
| Scandit SDK | IronBarcode | Notizen |
|---|---|---|
DataCaptureContext.ForLicenseKey("key") |
IronBarCode.License.LicenseKey = "key" |
Eine Aufgabe; kein Kontextobjekt erforderlich |
BarcodeCaptureSettings.Create() |
new BarcodeReaderOptions() |
Wahlweise in IronBarcode |
settings.EnableSymbologies(Symbology.Code128, ...) |
(not needed) | Automatische Erkennung ist die Standardeinstellung. |
Camera.GetDefaultCamera() |
(not applicable) | Kein Kamerakonzept bei der Dateiverarbeitung |
dataCaptureContext.SetFrameSourceAsync(camera) |
(not applicable) | Keine Frame-Quelle in IronBarcode |
camera.SwitchToDesiredStateAsync(FrameSourceState.On) |
(not applicable) | Keine Kamera-Zustandsmaschine |
barcodeCapture.IsEnabled = true |
BarcodeReader.Read(path) |
Ein einzelner Anruf initiiert das Lesen |
BarcodeScanned += Ereignishandler |
Iteration über BarcodeReader.Read() Rückgabewert |
Synchrone Datenerfassung; kein Ereignissystem |
args.Session.NewlyRecognizedBarcodes |
Rückgabewert von BarcodeReader.Read() |
Direkter Zugriff auf die Sammlung |
barcode.Data |
result.Value |
Gleicher semantischer Inhalt |
barcode.Symbology |
result.Format |
Aufzählung äquivalenter Formate |
| SparkScan, MatrixScan, Ausweis-Scanning (separate Produkte) | Einzelnes IronBarcode Paket |
Keine separaten Add-ons |
Wenn Teams einen Wechsel vom Scandit SDKzu IronBarcode erwägen
Anforderungen an die serverseitige Verarbeitung
Teams, die ASP.NET CoreAPIs, Hintergrundverarbeitungsdienste oder Azure-Funktionenentwickeln, stoßen bereits bei der ersten Integrationsebene auf eine grundlegende Diskrepanz in der Architektur von Scandit. Die DataCaptureContext und die Kamerapipeline setzen Hardware voraus, die in einer Serverumgebung nicht vorhanden ist. Wenn die Barcode-Anforderungen eines Projekts vollständig serverseitig sind – also das Lesen aus hochgeladenen Dateien, die Verarbeitung von Dokumentenwarteschlangen und das Extrahieren von Barcode-Daten aus eingehenden PDFs –, fügt die Kamerapipeline Initialisierungskomplexität, Overhead durch asynchrone Zustandsmaschinen und Plattformbeschränkungen hinzu, die nichts zur Erfüllung der eigentlichen Geschäftsanforderung beitragen.
Stapelverarbeitung von Dokumenten
Organisationen, die große Mengen an Dokumenten mit Barcodes verarbeiten – Versandmanifeste, Rechnungen, Inventarlisten, medizinische Formulare – stellen fest, dass das Frame-Source-Modell von Scandit nicht mit Dokumentenwarteschlangen kompatibel ist. Die Bibliothek wurde für kontinuierliche Kamerasitzungen konzipiert, nicht für einzelne Dokumente mit festgelegten Start- und Endpunkten. Wenn das Dokumentenvolumen wächst und eine parallele Verarbeitung notwendig wird, wird die Zustandsabhängigkeit der Kamerapipeline eher zu einem technischen Hindernis als zu einem Vorteil.
Preistransparenz
Entwicklungsteams, die Budgetvorschläge, Anbietervergleiche oder Kosten-Nutzen-Analysen für neue Projekte erstellen, können diese Arbeit mit Scandit nicht abschließen, ohne zuvor einen Vertriebsprozess zu durchlaufen. Bei Projekten mit festem Budget und Zeitplan führt die fehlende Möglichkeit, die Lizenzkosten ohne Vertriebsgespräch zu ermitteln, zu Verzögerungen und Unsicherheiten, die sich wiederum auf die Projektplanung auswirken. Teams, die mehrere Bibliotheksoptionen gleichzeitig evaluieren, stellen fest, dass das Fehlen veröffentlichter Preise es schwierig macht, Scandit in einen strukturierten Vergleich einzubeziehen.
Reduzierung der Pipeline-Komplexität
Selbst wenn Scandit bereits für das Scannen mit mobilen Kameras eingesetzt wird, stellen einige Teams fest, dass die serverseitigen Barcode-Anforderungen in derselben Anwendung ein anderes Tool erfordern. Die für das mobile Echtzeit-Scannen geeignete Kamerapipeline führt bei der Anwendung auf die statische Dokumentenverarbeitung zu unnötiger Komplexität. Teams, die diesen Punkt erreichen, setzen häufig IronBarcode für die serverseitige Verarbeitung parallel zu einer bestehenden Scandit-Implementierung ein, anstatt zu versuchen, die Kamerapipeline auf Anwendungsfälle auszuweiten, für die sie nicht konzipiert wurde.
Gemeinsame Überlegungen zur Migration
Die Kamerapipeline hat keine entsprechende Datei.
Der gesamte Initialisierungsblock DataCaptureContext – Kontext-Erstellung, Konfiguration der Einstellungen, Aktivierung der Symbolik, Kameraerfassung, Zuweisung der Frame-Quelle und Zustandsübergang – hat kein Äquivalent in der dateibasierten API von IronBarcode. Bei der Migration von serverseitigem Integrationscode wird dieser Block vollständig gelöscht. Es ist nicht übersetzt; Es wurde entfernt. Der IronBarcode Ersatz besteht aus der Zuweisung eines Lizenzschlüssels, gefolgt von einem BarcodeReader.Read-Aufruf.
Ereignis-Callback an Direktrückgabe
Scandit liefert Barcode-Ergebnisse über das BarcodeScanned-Ereignis, da das Scannen mit der Live-Kamera naturgemäß asynchron erfolgt. IronBarcode gibt Ergebnisse synchron als typisierte Sammlung zurück, da das dateibasierte Lesen eine bekannte Abschlussgrenze hat. Die Migration beinhaltet die Umwandlung der Ereignisbehandlungslogik in eine Standarditeration:
// Scandit callback pattern (removed during migration)
barcodeCapture.BarcodeScanned += (sender, args) =>
{
foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
ProcessBarcode(barcode.Data, barcode.Symbology.ToString());
};
// IronBarcode direct return (replacement)
foreach (var result in BarcodeReader.Read("document.png"))
ProcessBarcode(result.Value, result.Format.ToString());
// Scandit callback pattern (removed during migration)
barcodeCapture.BarcodeScanned += (sender, args) =>
{
foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
ProcessBarcode(barcode.Data, barcode.Symbology.ToString());
};
// IronBarcode direct return (replacement)
foreach (var result in BarcodeReader.Read("document.png"))
ProcessBarcode(result.Value, result.Format.ToString());
Imports System
' Scandit callback pattern (removed during migration)
AddHandler barcodeCapture.BarcodeScanned, Sub(sender, args)
For Each barcode In args.Session.NewlyRecognizedBarcodes
ProcessBarcode(barcode.Data, barcode.Symbology.ToString())
Next
End Sub
' IronBarcode direct return (replacement)
For Each result In BarcodeReader.Read("document.png")
ProcessBarcode(result.Value, result.Format.ToString())
Next
Entfernung der Symbolerklärung
Scandit benötigt explizite EnableSymbologies-Aufrufe, bevor der Scanvorgang beginnt. IronBarcode benötigt keine vorherige Deklaration der Symbolik – alle Formate werden automatisch erkannt. Während der Migration werden alle settings.EnableSymbologies(...)-Aufrufe entfernt. Falls der ursprüngliche Scandit-Code aus Leistungsgründen die Symbologien einschränkte, ist eine gleichwertige Optimierung in IronBarcode über BarcodeReaderOptions.ExpectBarcodeTypes verfügbar, die jedoch für den Einstieg nicht erforderlich ist.
Zusätzliche IronBarcode Funktionen
Über die oben im Vergleich behandelten Bereiche hinaus bietet IronBarcode Funktionen, die seinen Nutzen in Dokumenten- und Datenverarbeitungsszenarien erweitern:
- Barcode-Generierung : Generieren Sie Barcodes als Bilddateien oder betten Sie sie in PDFs ein – und zwar in allen unterstützten Symbologien, einschließlich QR-Codes, Code 128, Data Matrix und PDF417.
- GS1 und strukturierte Datenanalyse : Dekodierung strukturierter Barcode-Datenformate einschließlich GS1-128-Anwendungskennungen direkt aus den Barcode-Ergebnissen.
- Bildkorrektur und Vorverarbeitung : Die automatische Bildkorrektur für schiefe, kontrastarme oder beschädigte Barcodes verbessert die Lesbarkeit gescannter Dokumente, ohne dass eine manuelle Vorverarbeitung erforderlich ist.
- Multi-Barcode-Erkennung : Ein einziger
BarcodeReader.Read-Aufruf erkennt alle in einem Dokument vorhandenen Barcodes, einschließlich gemischter Formate auf derselben Seite, unter Verwendung der OptionExpectMultipleBarcodes. - MAUI Barcode-Lesung : In MAUI-Anwendungen, die ein Erfassungs- und Verarbeitungsmodell verwenden, übernimmt IronBarcode den Verarbeitungsschritt, nachdem ein Foto mit
MediaPickererfasst wurde. - Stream- und Byte-Array-Eingabe : Zusätzlich zu Dateipfaden akzeptiert
BarcodeReader.Readdie EingabenStreamundbyte[], wodurch die Integration mit Upload-Handlern, Speicherpuffern und Netzwerk-Streams ohne Erstellung temporärer Dateien ermöglicht wird.
.NET-Kompatibilität und Zukunftsfähigkeit
IronBarcode unterstützt .NET Framework 4.6.2 und höher, .NET Standard 2.0 sowie alle modernen .NET Versionen, einschließlich .NET 6, .NET 7, .NET 8 und .NET 9. Die Bibliothek wird regelmäßig aktualisiert, um die Kompatibilität mit aktuellen und zukünftigen .NET Versionen, einschließlich .NET 10 (voraussichtlich Ende 2026), zu gewährleisten. Ihr zustandsloses API-Design ist mit dem in modernen .NET Versionen eingeführten asynchronen Programmiermodell kompatibel. Die Unterstützung von Linux und containerisierten Bereitstellungen prädestiniert sie für Cloud-native Workloads, in denen die .NET -Nutzung stetig zunimmt. Da die Bibliothek als einzelnes NuGet Paket ohne plattformspezifische Laufzeitabhängigkeiten über die .NET Laufzeitumgebung hinaus ausgeliefert wird, sind für ein Upgrade zwischen .NET Versionen keine separaten Bibliotheksaktualisierungen oder zusätzliche Konfigurationen erforderlich.
Abschluss
Scandit SDK und IronBarcode stellen grundlegend unterschiedliche Ansätze zur Barcode-Verarbeitung dar, die verschiedene beabsichtigte Einsatzkontexte widerspiegeln. Scandit wurde für Echtzeit-Kamera-Scanning auf mobilen Geräten entwickelt und verfügt über eine Architektur, die eine Live-Kamerasitzung, Einzelbild-Analyseeinstellungen und ereignisgesteuerte Ergebnisbereitstellung koordiniert. IronBarcode wurde für die dateibasierte und dokumentenzentrierte Verarbeitung auf Servern, Desktops und Cloud-Infrastrukturen entwickelt und verfügt über eine zustandslose API, die Dateien, Datenströme und PDFs akzeptiert und synchrone Ergebnisse zurückgibt. Hierbei handelt es sich nicht um konkurrierende Umsetzungen derselben Idee – es sind unterschiedliche Ideen, die unterschiedlichen Anwendungsfällen dienen.
Das Scandit SDKist die richtige Wahl für mobile Anwendungen, bei denen ein Benutzer die Kamera seines Geräts auf einen physischen Barcode richtet und eine visuelle Rückmeldung von unter 100 ms benötigt. Die AR-Overlay-Funktionen, die gleichzeitige Erkennung mehrerer Barcodes über MatrixScan und das Scannen von Ausweisdokumenten über ID Scanning sind speziell entwickelte Funktionen, die keine dateibasierte Barcode-Bibliothek nachbildet. Organisationen, die mobile Außendienstmitarbeiter in großem Umfang einsetzen, kundenorientierte Scan-Erlebnisse bieten oder Enterprise SLAs für mobiles Scannen benötigen, haben die Zielgruppe im Blick, für die Scandit entwickelt wurde.
IronBarcode ist die richtige Wahl, wenn Barcode-Daten als Dateien – Bilder, PDFs, Byte-Arrays oder Upload-Streams – eintreffen und die Verarbeitung ohne Kamera, ohne Benutzer und ohne Benutzeroberfläche erfolgt. Serverseitige Dokumentenverarbeitung, ASP.NET CoreAPI-Endpunkte, Azure Functions, geplante Batch-Jobs und containerisierte Microservices stellen die Umgebungen dar, für die IronBarcode entwickelt wurde. Die veröffentlichten Preise, der Zugriff auf Funktionen in einem einzigen Paket und die direkte Dateilese-API beseitigen die architektonischen Reibungsverluste und die Budgetunsicherheit, die das Kamera-Pipeline-Modell und das Kontakt-Verkaufsmodell von Scandit für diese Szenarien mit sich bringen.
Die ehrliche Einschätzung lautet, dass die Wahl weitgehend vom Einsatzkontext und weniger von den persönlichen Präferenzen abhängt. Ein Projekt, das Live-Scannen mit einer mobilen Kamera erfordert, hat eine klare Antwort. Ein Projekt, das die serverseitige Extraktion von PDF-Barcodes erfordert, hat eine ebenso klare Antwort. Die beiden Bibliotheken werden manchmal im mittleren Bereich verwechselt – bei MAUI-Anwendungen, hybriden Architekturen und Organisationen, die sowohl mobile Scan- als auch Dokumentenverarbeitungsanforderungen haben. In diesen Fällen können die beiden Bibliotheken nebeneinander existieren: Scandit übernimmt die Arbeit mit der Kamera, IronBarcode die Dokumentenverarbeitung, und keine der beiden Bibliotheken wird in eine Rolle gezwungen, für die sie nicht konzipiert wurde.
Häufig gestellte Fragen
Was ist Scandit SDK?
Scandit SDK ist eine .NET Barcode-Bibliothek zum Erzeugen und Lesen von Barcodes in C#-Anwendungen. Es 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 Scandit SDK und IronBarcode?
IronBarcode verwendet eine statische, zustandslose API, die keine Instanzverwaltung erfordert, während das Scandit SDK 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 Scandit SDK?
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 auch das Scandit SDK 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 Scandit SDK?
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 Scandit 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 Scandit SDK 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 Scandit SDK zu IronBarcode einfach?
Bei der Migration von Scandit SDK zu IronBarcode geht es in erster Linie darum, instanzbasierte API-Aufrufe durch statische Methoden von IronBarcode zu ersetzen, Lizenzierungsformulare 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.

