Passer au contenu du pied de page
COMPARER à D'AUTRES COMPOSANTS

NetBarcode vs IronBarcode : Comparaison de la bibliothèque de codes-barres C#

Kit de développement logiciel Scandit vs Code-barres IronBarcode : Numérisation par Pipeline de Caméra vs Traitement de Documents Basé sur des Fichiers

Pour commencer à lire des codes-barres avec Scandit, vous configurez un DataCaptureContext, créez un BarcodeCaptureSettings, activez explicitement les symbologies, obtenez une caméra, la définissez comme source de trame, passez la caméra à l'état On et activez la capture. Les tarifs sont contractuels-vente uniquement, sans prix de liste publié.

Cette combinaison — un pipeline axé sur la caméra et un modèle de tarification basé sur les contacts commerciaux — façonne les scénarios .NET où Scandit s'intègre et ceux où il ne s'intègre pas. Pour le traitement de documents côté serveur, une API ASP.NET Corequi lit des codes-barres à partir de fichiers téléchargés, ou une fonction Azure qui traite des PDF d'expédition, les hypothèses de pipeline de caméra deviennent une friction plutôt qu'une capacité. Cette comparaison examine d'où vient l'architecture de Scandit, où Code-barres IronBarcode s'intègre à la place, et comment les deux bibliothèques diffèrent en pratique.

Comprendre le SDK Scandit

Scandit SDK est une plateforme Enterprise de lecture de codes-barres conçue pour les environnements informatiques mobiles et de périphérie. La bibliothèque est conçue pour prendre en charge la numérisation par caméra en temps réel sur les appareils iOS, Android et MAUI, avec des lignes de produits spécialisées couvrant les superpositions de réalité augmentée, la détection simultanée de plusieurs codes-barres, et la numérisation de documents d'identité. Le contexte de déploiement principal de Scandit est les travailleurs de terrain mobiles, les opérations d'entrepôt, et les scénarios de point d'interaction dans le commerce de détail où une caméra physique et un utilisateur en direct sont présents.

L'architecture de la bibliothèque est organisée autour du pipeline DataCaptureContext, qui coordonne une session de caméra, les paramètres d'analyse de trame, et la configuration de capture de code-barres en tant que système d'état unifié. Étant donné que chaque gamme de produits de la plateforme Scandit (SparkScan, MatrixScan, numérisation d'identité, superpositions AR et analyseur syntaxique) fait l'objet d'une licence et d'une tarification distinctes selon un modèle de vente sur contact, le coût total de toute intégration Scandit ne peut être déterminé qu'après une discussion commerciale.

Les principales caractéristiques architecturales du SDK Scandit sont les suivantes :

  • Conception axée sur la caméra : le SDK suppose une caméra physique et une source d'images en cours d'exécution. La lecture des codes-barres s'effectue sur des images vidéo en direct, et non sur des fichiers ou des flux statiques.
  • Initialisation Obligatoire du DataCaptureContext : Chaque intégration commence par la construction d'un DataCaptureContext et le raccordement à une instance de caméra avant que tout travail sur le code-barres puisse avoir lieu.
  • Déclaration Explicite des Symbologies : Les formats de code-barres doivent être activés individuellement en utilisant EnableSymbologies avant le début de la session de capture. La détection automatique n'est pas disponible.
  • Livraison des Résultats Basée sur Événements : Les résultats des codes-barres sont livrés de manière asynchrone via des rappels d'événements (BarcodeScanned) plutôt qu'en étant retournés de manière synchrone depuis un appel de méthode.
  • Architecture modulaire du produit : SparkScan, MatrixScan, la numérisation d'identité, les superpositions AR et l'analyseur syntaxique sont des fonctionnalités facturées séparément qui nécessitent des lignes de contrat individuelles.
  • Tarification Basée sur les Devis : Selon la page de tarification de Scandit, les éditions payantes sont soumises à devis en fonction de l'édition, des appareils, du volume de numérisation, et de la durée du contrat; un essai gratuit et une édition communautaire sont disponibles.
  • Ciblage prioritaire des plateformes mobiles : le support principal concerne iOS et Android. Les déploiements côté serveur, Docker et sans serveur ne font pas partie du périmètre de conception du SDK.

Le pipeline DataCaptureContext

Chaque intégration Scandit commence par cette séquence d'initialisation de la caméra avant même qu'un seul code-barres puisse être lu :

// Scandit SDK: full camera pipeline setup
// NuGet: Scandit.DataCapture.Core.Maui, Scandit.DataCapture.Barcode.Maui

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.DataCapture.Core.Maui, Scandit.DataCapture.Barcode.Maui

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.Maui
Imports Scandit.DataCapture.Barcode.Maui

' Scandit SDK: full camera pipeline setup
' NuGet: Scandit.DataCapture.Core.Maui, Scandit.DataCapture.Barcode.Maui

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
$vbLabelText   $csharpLabel

Chaque ligne de ce bloc configure l'infrastructure de la caméra. L'API n'expose pas de chemin de fichier, PDF, ou argument de flux à ce point d'entrée — elle suppose une caméra en fonctionnement avant que le travail de code-barres ne commence.

Comprendre IronBarcode

IronBarcode est une bibliothèque .NET commerciale pour la lecture et la génération de codes-barres. Cette bibliothèque est conçue pour les environnements serveur, de bureau et cloud où les données de codes-barres arrivent sous forme de fichiers, de flux, de tableaux d'octets ou de contenu intégré dans des documents PDF. Son API est sans état — il n'y a pas d'objet session, pas de pipeline caméra à initialiser et pas de contexte persistant à gérer entre les lectures. Un appel statique unique à BarcodeReader.Read accepte un chemin de fichier, un flux, un tableau d'octets ou un PDF et renvoie une collection de résultats.

IronBarcode est livré sous forme d'un seul package NuGet contenant toutes les capacités de lecture et de génération pour plus de 50 formats de codes-barres 1D et 2D. La bibliothèque prend en charge la détection automatique du format, ce qui signifie que l'appelant n'est pas tenu de spécifier les symbologies à rechercher. Le prix est affiché sur la page du produit, sans qu'il soit nécessaire de discuter avec un vendeur.

Les principales caractéristiques d' Code-barres IronBarcode sont les suivantes :

  • API sans état basée sur les fichiers : la lecture commence par un simple appel de méthode acceptant un chemin de fichier, un flux, un tableau d'octets ou un document PDF.
  • Détection automatique du format : tous les formats de codes-barres pris en charge sont détectés automatiquement. La configuration explicite de la symbologie est une optimisation optionnelle des performances, et non une condition préalable.
  • Prise en charge native des fichiers PDF : les documents PDF multipages sont lus directement, les résultats étant indexés par numéro de page. Aucune bibliothèque de rendu PDF externe n'est requise.
  • Compatible serveur et cloud : prend en charge ASP.NET Core, Azure Functions, Docker sur Linux et les déploiements conteneurisés sans solutions de contournement architecturales.
  • Traitement Concurent : L'API sans état est intrinsèquement sécurisée pour les threads, permettant Parallel.ForEach et des modèles asynchrones pour des scénarios de lots à haut débit.
  • Génération de codes-barres : produit des codes-barres aux formats image et PDF pour toutes les symbologies prises en charge. La génération et la lecture sont incluses dans le même package.
  • Licence perpétuelle publiée : les prix sont affichés publiquement sous forme d'achats perpétuels uniques, sans frais par numérisation ni par appareil.

Comparaison des fonctionnalités

Le tableau suivant met en évidence les différences fondamentales entre Kit de développement logiciel Scandit et IronBarcode:

Fonction Kit de développement logiciel Scandit Code-barres IronBarcode
Cas d'utilisation principal Numérisation par caméra en temps réel sur mobile Lecture de fichiers, de flux et de codes-barres PDF sur serveur
Caméra requise Oui Non
Extraction de codes-barres PDF Non pris en charge Support natif
Modèle de tarification Contactez le service des ventes, par produit Niveaux perpétuels publiés
Traitement côté serveur Pas une cible documentée Cible de déploiement principale
Configuration de la symbologie Obligatoire avant la numérisation Facultatif; auto-detection is default
Génération de codes-barres Non pris en charge Inclus dans un seul emballage

Comparaison détaillée des fonctionnalités

Fonction Kit de développement logiciel Scandit Code-barres IronBarcode
En lisant
Lecture de fichiers image Pas une cible documentée Objectif principal
extraction de codes-barres PDF Non pris en charge Page native multipage
Entrée de flux / tableau d'octets Non pris en charge Oui
Détection automatique du format Non (à préciser) Oui
Formats 1D (Code 128, EAN, UPC, etc.) Complet (selon la documentation des symbologies de Scandit) 50 ans et plus
Formats 2D (QR, DataMatrix, Aztec, PDF417) Oui Oui
Détection de plusieurs codes-barres par document MatrixScan (produit séparé) Oui (forfait individuel)
Récupération de codes-barres endommagés Pas une caractéristique de traitement de fichier documentée Oui (basé sur l'apprentissage automatique)
Génération
génération de codes-barres Non pris en charge Oui
Sortie vers un fichier image Non pris en charge Oui
Exporter au format PDF Non pris en charge Oui
Architecture
Modèle d'initialisation pipeline de caméra avec état appel de méthode sans état
Résultats obtenus Rappel d'événement (asynchrone) valeur de retour synchrone
Dépendance à la caméra Les exigences sont les suivantes Sans objet
Symbolique avant la déclaration Les exigences sont les suivantes En option
Plateforme
iOS / Android (MAUI) Cible principale Utilisation programmatique
ASP.NET Core Pas une cible documentée Prise en charge complète
Azure Functions/sans serveur Pas pratique Prise en charge complète
Serveur Docker/Linux Non pris en charge Prise en charge complète
service console/arrière-plan Pas une cible documentée Prise en charge complète
Licence
transparence des prix Contacter les ventes Publié sur le site web
Type de licence Annuel (par produit) perpétuel à usage unique
Frais par analyse ou par appareil Possible (listé comme variables de tarification) Non
Accès à toutes les fonctionnalités avec un seul forfait Non (produits modulaires) Oui

Architecture de lecture des codes-barres

La différence structurelle la plus significative entre ces deux bibliothèques réside dans la manière dont elles modélisent la relation entre les entrées et les sorties.

Approche du SDK Scandit

Scandit traite les trames de la caméra en temps réel. Le DataCaptureContext maintient une session de caméra active, et le BarcodeCapture écoute les codes-barres dans chaque trame entrante. Les résultats des codes-barres sont livrés de manière asynchrone via l'événement BarcodeScanned. La lecture d'un fichier image statique avec Scandit nécessite d'adapter le pipeline de la caméra pour traiter un fichier comme une source d'images — un flux de travail qui n'est pas pris en charge nativement et qui nécessite un effort d'ingénierie pour être approximé.

// 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
$vbLabelText   $csharpLabel

Le modèle événementiel est adapté à la numérisation en direct continue, où les codes-barres arrivent de manière imprévisible dans un flux vidéo. Pour le traitement basé sur les fichiers, le modèle introduit une complexité inutile : l'entrée a une limite d'achèvement connue, la session caméra ne se termine jamais naturellement et le modèle de rappel asynchrone ne s'intègre pas bien aux architectures de serveur requête-réponse.

Approche IronBarcode

IronBarcode traite chaque entrée comme un document distinct avec un résultat déterministe. La méthode BarcodeReader.Read accepte un chemin de fichier, un flux ou un tableau d'octets, effectue toutes les détections de manière synchrone et renvoie une collection de résultats. Il n'y a aucune session à ouvrir, aucune source de trame à configurer et aucun événement auquel s'abonner.

// IronBarcode: direct file reading
// NuGet: dotnet add package IronBarcode

IronBarCode.License.LicenseKey = "YOUR-LICENSE-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-LICENSE-KEY";
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
    Console.WriteLine($"{result.Value} ({result.Format})");
Imports IronBarCode

' IronBarcode: direct file reading
' NuGet: dotnet add package IronBarcode

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
    Console.WriteLine($"{result.Value} ({result.Format})")
Next
$vbLabelText   $csharpLabel

Pour la lecture des codes-barres à partir d'images , l'API sans état ne nécessite aucune initialisation au-delà de la clé de licence. La détection du format est automatique. Le programme complet ci-dessus lit n'importe quel format de code-barres pris en charge à partir d'un fichier image en trois lignes de code opérationnel.

Assistance à la plateforme et au déploiement

Le contexte de déploiement d'une bibliothèque de codes-barres détermine si elle peut s'exécuter dans l'environnement cible, indépendamment de ses fonctionnalités.

Approche du SDK Scandit

L'architecture de Scandit nécessite un matériel caméra et une plateforme mobile capable de l'exposer via une API caméra native. iOS et Android sont les principales plateformes prises en charge. Le poste de travail Windows est une cible secondaire. ASP.NET Core, Azure Functions, les conteneurs Docker et les serveurs Linux ne font pas partie du périmètre de conception de la bibliothèque. Le DataCaptureContext suppose une session de caméra en cours, ce qui n'a pas d'équivalent dans les environnements de calcul sans serveur, les déploiements conteneurisés ou les services de traitement en arrière-plan.

Plateforme Kit de développement logiciel Scandit
iOS / Android (MAUI) Cible principale
Bureau Windows Soutien secondaire
ASP.NET Core Pas une cible documentée
Azure Functions Pas pratique
Serveur Docker/Linux Non pris en charge
service console/arrière-plan Pas une cible documentée

Approche IronBarcode

IronBarcode a été conçu pour les environnements serveur, cloud et conteneurisés. L'API sans état ne dépend d'aucun matériel et ne requiert aucune initialisation spécifique à la plateforme. Le déploiement sur Azure Functions pour le traitement des codes-barres est une méthode prise en charge et documentée. Docker sur Linux est une cible de déploiement standard. Les points de terminaison ASP.NET Corelisant les codes-barres des fichiers téléchargés représentent un scénario pris en charge de base ne nécessitant aucune solution de contournement architecturale.

Plateforme Code-barres IronBarcode
iOS / Android (MAUI) Traitement de fichiers par programme
ASP.NET Core Prise en charge complète
Azure Functions/Lambda Prise en charge complète
Serveur Docker/Linux Prise en charge complète
service console/arrière-plan Prise en charge complète
Serveur Blazor Prise en charge complète

Traitement par lots simultané

Le traitement de grands volumes de documents comportant des codes-barres est une exigence courante côté serveur que les deux bibliothèques abordent selon des positions fondamentalement différentes.

Approche du SDK Scandit

Le pipeline de la caméra de Scandit a été conçu pour une seule session de caméra servant un seul utilisateur ou appareil. Le modèle FrameSourceState suppose une session de caméra persistante et continue — pas une file d'attente de documents traités à débit. Adapter la bibliothèque pour traiter des lots de fichiers nécessite de simuler une session caméra par document ou de sérialiser le traitement des documents via un pipeline partagé, deux solutions qui ne constituent ni un modèle pris en charge ni un modèle efficace.

Approche IronBarcode

Parce que la méthode BarcodeReader.Read d'IronBarcode est sans état, il est intrinsèquement sûr de l'appeler depuis plusieurs threads simultanément. Le traitement par lots concurrent ne nécessite aucune configuration spéciale au-delà de la définition 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)
$vbLabelText   $csharpLabel

Pour des exemples détaillés de lecture de codes-barres asynchrone et multithread , la documentation Code-barres IronBarcode couvre les modèles thread-safe et les options d'optimisation du débit.

Traitement des documents PDF

L'extraction de codes-barres PDF est une capacité distincte de la lecture d'images et représente une divergence significative entre les deux bibliothèques.

Approche du SDK Scandit

Scandit n'a pas de support PDF natif. L'extraction de codes-barres à partir d'un PDF avec Scandit nécessite le rendu de chaque page PDF en image raster à l'aide d'une bibliothèque de rendu PDF distincte, puis le traitement de ces images par le système de simulation de caméra. Cette approche engendre une dépendance supplémentaire, des coûts de licence additionnels et un effort d'ingénierie considérable pour une tâche courante dans les flux de travail de traitement de documents. Les documents multipages nécessitent l'itération sur les pages, la gestion de la mémoire pour les images rendues et la coordination manuelle des résultats entre les pages.

Approche IronBarcode

IronBarcode lit nativement les codes-barres des documents PDF. Un chemin de fichier vers un PDF est un argument valide pour BarcodeReader.Read, et les résultats incluent une propriété PageNumber indiquant sur quelle page du document chaque code-barres a été trouvé :

// 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
$vbLabelText   $csharpLabel

Pour des instructions complètes sur la lecture des codes-barres dans les fichiers PDF , y compris les options de sélection de plage de pages et d'extraction de plusieurs codes-barres, la documentation Code-barres IronBarcode couvre l'ensemble des scénarios de traitement des PDF.

Tarification et licences

La structure des licences influe non seulement sur le coût d'une bibliothèque, mais aussi sur le délai nécessaire à son évaluation et à son adoption.

Approche scandinave

Scandit ne publie pas de prix de liste. La page produit liste les fonctionnalités et les noms de produits — SparkScan, MatrixScan, ID Scanning, AR Overlays, Parser — et oriente les demandes de prix via une conversation de vente. Le processus de devis implique généralement de décrire le cas d'utilisation, d'estimer le volume de numérisation, de spécifier les appareils, de discuter des niveaux de support, et de sélectionner une durée de contrat avant qu'une figure de coût ne soit fournie. Chaque ligne de produit Scandit est tarifée et contractée séparément, donc l'accès aux fonctionnalités élargies peut nécessiter un cycle de vente supplémentaire.

Approche IronBarcode

IronBarcode publie ses niveaux de licence sur la page produit sans exiger de formulaire ni de demande commerciale :

Licence Prix Développeurs Projets
Lite 749 $ (une seule fois) 1 1
Plus 1 499 $ une seule fois 3 3
Professional 2 999 $ en une seule fois 10 10
Nombre illimité $5,999 une seule fois Nombre illimité Nombre illimité

Les licences sont perpétuelles. Il n'y a pas de frais par analyse, pas de frais par appareil et aucun seuil de volume ne déclenche de changement de niveau. Le renouvellement annuel est optionnel et coûte la moitié du prix initial, mais la licence achetée reste valable sans renouvellement. Toutes les fonctionnalités du package Code-barres IronBarcode unique — lecture, génération, prise en charge des PDF, détection multi-codes-barres — sont incluses à tous les niveaux.

Référence de mappage d'API

Le tableau suivant établit une correspondance entre les concepts du SDK Scandit et leurs équivalents Code-barres IronBarcode pour les équipes évaluant le coût de traduction d'une migration :

Kit de développement logiciel Scandit Code-barres IronBarcode Notes
DataCaptureContext.ForLicenseKey("key") IronBarCode.License.LicenseKey = "key" Une mission ; aucun objet contextuel n'est requis
BarcodeCaptureSettings.Create() new BarcodeReaderOptions() Optionnel dans Code-barres IronBarcode
settings.EnableSymbologies(Symbology.Code128, ...) (not needed) La détection automatique est le mode par défaut.
Camera.GetDefaultCamera() (not applicable) Aucun concept de caméra dans le traitement des fichiers
dataCaptureContext.SetFrameSourceAsync(camera) (not applicable) Aucune source de cadre dans Code-barres IronBarcode
camera.SwitchToDesiredStateAsync(FrameSourceState.On) (not applicable) Machine à états sans caméra
barcodeCapture.IsEnabled = true BarcodeReader.Read(path) Un seul appel déclenche la lecture
Gestionnaire d'événements BarcodeScanned += Itération sur la valeur de retour BarcodeReader.Read() Collecte synchrone ; système sans événement
args.Session.NewlyRecognizedBarcodes Valeur de retour de BarcodeReader.Read() Accès direct à la collection
barcode.Data result.Value Même contenu sémantique
barcode.Symbology result.Format Énumération au format équivalent
SparkScan, MatrixScan, numérisation de cartes d'identité (produits distincts) Paquet unique IronBarcode Aucun module complémentaire séparé

Quand les équipes envisagent de passer du SDK Scandit à IronBarcode

Exigences de traitement côté serveur

Les équipes construisant des APIs ASP.NET Core, des services de traitement en arrière-plan, ou des Azure Functionstrouvent que l'architecture de Scandit est orientée autour d'hypothèses qui ne tiennent pas dans un environnement serveur. Le DataCaptureContext et le pipeline de la caméra attendent du matériel de caméra et une source de trames en direct. Lorsque les exigences en matière de code-barres d'un projet sont entièrement côté serveur — lecture à partir de fichiers téléchargés, traitement de files d'attente de documents, extraction de données de code-barres à partir de PDFs entrants — le pipeline de caméra ajoute des étapes d'initialisation et des contraintes de plate-forme qui ne sont pas pertinentes pour la charge de travail.

Traitement par lots de documents

Les organisations traitant de grands volumes de documents portant des code-barres — manifestes d'expédition, factures, enregistrements d'inventaire, formulaires médicaux — trouvent que le modèle de source de trame de Scandit est orienté vers des sessions de caméra continues plutôt que des documents discrets avec des points de début et de fin déterministes. Lorsque le volume de documents augmente et que le traitement parallèle devient nécessaire, la conception avec état du pipeline de caméra nécessite un ingénierie supplémentaire pour s'adapter.

Transparence des prix

Les équipes de développement travaillant sur les propositions de budget, les comparaisons de fournisseurs ou les analyses coût-bénéfice pour de nouveaux projets ont besoin d'une conversation commerciale pour déterminer le coût de la licence Scandit. Lorsque un projet a un budget défini et une timeline définie, exiger une conversation commerciale pour obtenir un devis ajoute des étapes à l'évaluation et à la planification. Les équipes évaluant plusieurs options de bibliothèque simultanément peuvent trouver que l'absence de tarification publiée rend la comparaison structurée côte à côte plus difficile.

Réduire la complexité des pipelines

Même lorsque Scandit est déjà déployé pour la numérisation de caméra mobile, les exigences en matière de code-barres côté serveur dans la même application peuvent nécessiter un outil différent. Le pipeline de caméra qui convient à la numérisation mobile en temps réel ajoute de la complexité lorsqu'il est appliqué au traitement de documents statiques. Les équipes atteignant ce point adoptent souvent Code-barres IronBarcode pour le traitement côté serveur parallèlement à un déploiement Scandit existant, plutôt que d'étendre le pipeline de caméra pour couvrir les flux de travail de documents.

Considérations courantes en matière de migration

Le pipeline de la caméra n'a pas d'équivalent de fichier.

Le bloc d'initialisation complet DataCaptureContext — création de contexte, configuration des paramètres, activation des symbologies, acquisition de caméra, affectation de source de trame et transition d'état — n'a pas d'équivalent dans l'API basée sur fichier d'IronBarcode. Lors de la migration du code d'intégration côté serveur, ce bloc est supprimé dans son intégralité. Il n'est pas traduit ; Il est supprimé. Le remplacement d'IronBarcode est une assignation de clé de licence suivie d'un appel BarcodeReader.Read.

Rappel d'événement pour un retour direct

Scandit livre les résultats des codes-barres via l'événement BarcodeScanned parce que le balayage par caméra en direct est par nature asynchrone. Code-barres IronBarcode renvoie les résultats de manière synchrone sous forme de collection typée car la lecture basée sur les fichiers a une limite d'achèvement connue. La migration implique la conversion de la logique du gestionnaire d'événements en itération standard :

// Scandit callback pattern (removed during migration)
barcodeCapture.BarcodeScanned += (sender, args) =>
{
    foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
        ProcessBarcode(barcode.Data, barcode.Symbology.ToString());
};

// Code-barres 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());
};

// Code-barres 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

' Code-barres IronBarcode direct return (replacement)
For Each result In BarcodeReader.Read("document.png")
    ProcessBarcode(result.Value, result.Format.ToString())
Next
$vbLabelText   $csharpLabel

Suppression de la déclaration de symbologie

Scandit nécessite des appels explicites EnableSymbologies avant que le balayage ne commence. Code-barres IronBarcode ne nécessite aucune déclaration préalable de la symbologie — tous les formats sont détectés automatiquement. Pendant la migration, tous les appels settings.EnableSymbologies(...) sont supprimés. Si le code Scandit original restreignait les symbologies pour des raisons de performance, une optimisation équivalente est disponible dans Code-barres IronBarcode via BarcodeReaderOptions.ExpectBarcodeTypes, mais elle n'est pas requise pour commencer.

Fonctionnalités supplémentaires IronBarcode

Au-delà des domaines abordés dans la comparaison ci-dessus, Code-barres IronBarcode offre des fonctionnalités qui étendent son utilité dans les scénarios de traitement de documents et de données :

  • Génération de codes-barres : Générez des codes-barres sous forme de fichiers image ou intégrez-les dans des PDF pour toutes les symbologies prises en charge, y compris les codes QR, Code 128, Data Matrix et PDF417.
  • Analyse des données GS1 et structurées : Décodez les formats de données de codes-barres structurés, y compris les identifiants d'application GS1-128, directement à partir des résultats des codes-barres.
  • Correction et prétraitement d'images : La correction automatique des images de codes-barres déformés, à faible contraste ou endommagés améliore les taux de lecture sur les documents numérisés sans nécessiter de prétraitement manuel.
  • Détection Multi-Codes-Barres : Un seul appel BarcodeReader.Read détecte tous les codes-barres présents dans un document, y compris les formats mixtes sur la même page, en utilisant l'option ExpectMultipleBarcodes.
  • Lecture de Codes-Barres MAUI : Dans les applications MAUI utilisant un modèle de capture et de traitement, Code-barres IronBarcode gère l'étape de traitement après qu'une photo soit capturée à l'aide de MediaPicker.
  • Entrée de Flux et de Tableau d'Octets : En plus des chemins de fichier, BarcodeReader.Read accepte des entrées Stream et byte[], permettant l'intégration avec des gestionnaires de téléchargement, des tampons de mémoire et des flux réseau sans création de fichiers temporaires.

Compatibilité .NET et préparation à l'avenir

IronBarcode prend en charge .NET Framework 4.6.2 et ultérieur, .NET Standard 2.0, et les versions modernes de .NET, y compris .NET 6, .NET 8, .NET 9, et .NET 10. La bibliothèque reçoit des mises à jour régulières pour maintenir la compatibilité avec les versions actuelles de .NET. Son design d'API sans état s'adapte au modèle de programmation async-prioritaire utilisé à travers le .NET moderne, et son support pour Linux et les déploiements conteneurisés convient aux charges de travail natives du cloud. Étant donné que la bibliothèque est distribuée sous forme d'un seul package NuGet sans dépendances d'exécution spécifiques à la plateforme autres que l'environnement d'exécution .NET lui-même, la mise à niveau entre les versions .NET ne nécessite pas de mises à jour de bibliothèque distinctes ni de configuration supplémentaire.

Conclusion

Scandit SDK et Code-barres IronBarcode représentent des approches fondamentalement différentes du traitement des codes-barres, reflétant des contextes de déploiement différents. Scandit a été conçu pour la numérisation en temps réel par caméra sur du matériel mobile, avec une architecture qui coordonne une session de caméra en direct, des paramètres d'analyse par image et une livraison des résultats pilotée par les événements. Code-barres IronBarcode a été conçu pour le traitement de fichiers et de documents sur serveurs, ordinateurs de bureau et infrastructures cloud, avec une API sans état qui accepte les fichiers, les flux et les PDF et renvoie des résultats synchrones. Il ne s'agit pas de mises en œuvre concurrentes d'une même idée, mais d'idées différentes répondant à des cas d'utilisation différents.

Le kit de développement logiciel Scandit est le choix idéal pour les applications mobiles où l'utilisateur pointe l'appareil photo de son téléphone vers un code-barres physique et a besoin d'un retour visuel inférieur à 100 ms. Ses capacités de superposition AR, la détection simultanée de plusieurs codes-barres via MatrixScan et la numérisation de documents d'identité via ID Scanning sont des fonctionnalités conçues spécifiquement pour cet usage et qu'aucune bibliothèque de codes-barres basée sur des fichiers ne reproduit. Les organisations qui déploient à grande échelle des travailleurs mobiles sur le terrain, qui proposent des expériences de numérisation destinées aux consommateurs ou qui exigent des SLA pour la numérisation mobile Enterprise s'intéressent au public que Scandit a été conçu pour servir.

IronBarcode est le choix approprié lorsque les données de codes-barres arrivent sous forme de fichiers (images, PDF, tableaux d'octets ou flux de téléchargement) et que le traitement s'effectue sans caméra, sans utilisateur et sans interface utilisateur. Le traitement des documents côté serveur, les points de terminaison d'API ASP.NET Core, les Azure Functions, les tâches par lots planifiées et les microservices conteneurisés représentent les environnements pour lesquels Code-barres IronBarcode a été conçu. Sa tarification publiée, son accès aux fonctionnalités en un seul package, et son API de lecture de fichiers direct est conçu pour ces scénarios, où le modèle de pipeline de caméra de Scandit et la tarification basée sur les contacts commerciaux sont orientés vers une forme de déploiement différente.

En toute honnêteté, le choix est largement déterminé par le contexte de déploiement plutôt que par les préférences personnelles. Un projet nécessitant une numérisation en direct par caméra mobile a une réponse claire. Un projet nécessitant l'extraction de codes-barres PDF côté serveur trouve une réponse tout aussi claire. La confusion entre les deux bibliothèques se situe parfois au niveau intermédiaire : applications MAUI, architectures hybrides et organisations ayant à la fois des besoins en matière de numérisation mobile et de traitement de documents. Dans ces cas-là, les deux bibliothèques peuvent coexister : Scandit gère le traitement des données face à la caméra, Code-barres IronBarcode gère le traitement des documents, et aucune des deux bibliothèques n'est forcée à un rôle pour lequel elle n'a pas été conçue.

Questions Fréquemment Posées

Qu'est-ce que Scandit SDK ?

Scandit SDK est une bibliothèque de codes-barres .NET permettant de générer et de lire des codes-barres dans des applications C#. C'est l'une des nombreuses alternatives que les développeurs évaluent lorsqu'ils choisissent une solution de codes-barres pour les projets .NET.

Quelles sont les principales différences entre Scandit SDK et IronBarcode ?

IronBarcode utilise une API statique, sans état, ne nécessitant aucune gestion d'instance, tandis que Scandit SDK nécessite généralement la création et la configuration d'une instance avant utilisation. IronBarcode offre également une prise en charge native du format PDF, une détection automatique du format et une licence à clé unique pour tous les environnements.

IronBarcode est-il plus facile à licencier que Scandit SDK ?

IronBarcode utilise une clé de licence unique couvrant à la fois les déploiements de développement et de production. Cela simplifie les pipelines CI/CD et les configurations Docker par rapport aux systèmes de licence qui séparent les clés SDK des clés d'exécution.

IronBarcode prend-il en charge tous les formats de codes-barres que Scandit SDK prend en charge ?

IronBarcode prend en charge plus de 30 symbologies de codes-barres, notamment QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1, et bien d'autres encore. L'auto-détection du format signifie qu'aucune énumération explicite du format n'est nécessaire.

IronBarcode prend-il en charge la lecture de codes-barres PDF en mode natif ?

Oui. IronBarcode lit les codes-barres directement à partir de fichiers PDF en utilisant BarcodeReader.Read("document.pdf") sans nécessiter de bibliothèque de rendu PDF séparée. Les résultats par page comprennent le numéro de page, le format du code-barres, la valeur et le score de confiance.

Comment IronBarcode gère-t-il le traitement par lots par rapport à Scandit SDK ?

Les méthodes statiques d'IronBarcode sont sans état et naturellement à l'abri des threads, ce qui permet d'utiliser directement Parallel.ForEach sans gestion d'instance par thread. Il n'y a pas de plafond de débit, quel que soit le niveau de prix.

Quelles versions de .NET sont prises en charge par IronBarcode ?

IronBarcode prend en charge .NET Framework 4.6.2+, .NET Core 3.1 et .NET 5, 6, 7, 8 et 9 dans un seul package NuGet. Les plates-formes visées sont Windows x64/x86, Linux x64 et macOS x64/ARM.

Comment installer IronBarcode for .NET dans un projet .NET ?

Installez IronBarcode via NuGet : exécutez "Install-Package IronBarCode" dans la console du Package Manager, ou "dotnet add package IronBarCode" dans le CLI. Aucun installateur SDK ou fichier d'exécution supplémentaire n'est nécessaire.

Puis-je évaluer IronBarcode avant de l'acheter, contrairement à Scandit ?

Oui. Le mode d'essai d'IronBarcode renvoie des valeurs de code-barres décodées complètes - seules les images de sortie générées reçoivent un filigrane. Vous pouvez comparer la précision de lecture sur vos propres documents avant de vous engager dans un achat.

Quelle est la différence de prix entre Scandit SDK et IronBarcode ?

IronBarcode est proposé à partir de 749 dollars pour une licence perpétuelle pour un seul développeur couvrant le développement et la production. Les détails des prix et les options de volume sont disponibles sur la page de licence d'IronBarcode. Il n'est pas nécessaire de disposer d'une licence d'exécution distincte.

Est-il simple de migrer de Scandit SDK à IronBarcode ?

La migration de Scandit SDK vers IronBarcode implique principalement le remplacement des appels d'API basés sur des instances par les méthodes statiques d'IronBarcode, la suppression des modèles de licence et la mise à jour des noms des propriétés des résultats. La plupart des migrations impliquent une réduction du code plutôt qu'un ajout.

IronBarcode génère-t-il des codes QR avec des logos ?

Oui. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") incorpore une image de marque dans un code QR de manière native avec une correction d'erreur configurable. Les codes QR colorés sont également pris en charge via ChangeBarCodeColor().

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi