Scandit SDK vs IronBarcode : Comparaison de la bibliothèque BarCode C#
Pour commencer à lire des codes-barres avec Scandit, vous configurez un DataCaptureContext, créez un BarcodeCaptureSettings, activez explicitement les symbologies, obtenez une caméra, définissez-la comme source d'images, faites passer la caméra à l'état activé et activez la capture. Le prix n'est toujours pas indiqué sur le site web.
Cette combinaison — un pipeline de caméra obligatoire et une tarification Enterprise opaque — définit précisément quand Scandit n'est pas l'outil approprié pour un projet .NET . Si vous développez un flux de traitement de documents côté serveur, une API ASP.NET Corequi lit les codes-barres des fichiers téléchargés ou une fonction Azure qui traite les PDF d'expédition, l'architecture de Scandit vous pénalise à chaque étape. Cette comparaison examine l'origine de cette architecture, la place qu'offre Code-barres IronBarcode et le coût de chaque choix.
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 a été 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 gammes 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 principal contexte de déploiement de Scandit concerne les travailleurs mobiles sur le terrain, les opérations d'entrepôt et les scénarios de points de vente où une caméra physique, un utilisateur en direct et un temps de réponse inférieur à 100 ms sont tous présents simultanément.
L'architecture de la bibliothèque est organisée autour du pipeline DataCaptureContext, qui coordonne une session de caméra, des paramètres d'analyse d'images et une configuration de capture de codes-barres en tant que système unifié avec état. É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 de DataCaptureContext: Chaque intégration commence par la construction d'un
DataCaptureContextet son câblage à une instance de caméra avant que tout travail sur les codes-barres puisse avoir lieu. - Déclaration explicite de la symbologie: Les formats de BarCode doivent être activés individuellement à l'aide de
EnableSymbologiesavant le début de la session de capture. La détection automatique n'est pas disponible. - Event-Driven Result Delivery: Les résultats des BarCodes sont livrés de manière asynchrone par le biais de rappels d'événements (
BarcodeScanned) plutôt que renvoyés de manière synchrone à partir d'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 (Contactez-nous pour les ventes) : Aucun prix n'est publié. Chaque intégration nécessite une demande de renseignements commerciaux avant que le coût de la licence ne soit connu.
- 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.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
Chaque ligne de ce bloc représente une infrastructure de caméras. Il n'y a pas d'argument de chemin de fichier. Il n'y a pas de PDF. Il n'y a pas de flux. La bibliothèque suppose qu'une caméra est en marche avant de pouvoir commencer tout traitement des codes-barres.
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 seul appel statique à 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 distribué sous la forme d'un seul package NuGet contenant toutes les fonctionnalités de lecture et de génération pour plus de 30 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 simultané: L'API sans état est intrinsèquement à l'abri des threads, ce qui permet d'utiliser des modèles
Parallel.ForEachet asynchrones pour les scénarios de traitement par 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 | Non conçu pour | Cible de déploiement principale |
| Configuration de la symbologie | Obligatoire avant la numérisation | Facultatif; l'autodétection est une option par défaut |
| 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 | Non conçu pour | 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.) | 30+ | 30+ |
| 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 | Limité | 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 | Non conçu pour | Prise en charge complète |
| Fonctions Azure/ 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 | Non conçu pour | 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 | Oui | 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 images des caméras en temps réel. Le DataCaptureContext maintient une session de caméra active, et le BarcodeCapture écoute les codes-barres dans chaque image entrante. Les résultats des BarCodes sont livrés de manière asynchrone par le biais de 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
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-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
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 d'exécution, 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 | Non conçu pour |
| Fonctions Azure | Pas pratique |
| Serveur Docker/Linux | Non pris en charge |
| service console/arrière-plan | Non conçu pour |
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 |
| Fonctions Azure/ 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 caméras de Scandit a été conçu pour une seule session de caméras au service d'un seul utilisateur ou d'un seul appareil. Le modèle FrameSourceState suppose une session de caméra persistante et continue - et non une file d'attente de documents traités à un débit élevé. 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
La méthode BarcodeReader.Read d'IronBarcode étant sans état, il est intrinsèquement sûr de l'appeler à partir de plusieurs threads simultanément. Le traitement simultané par lots ne nécessite aucune configuration particulière autre que la définition du 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)
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
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 ses tarifs. La page produit répertorie les fonctionnalités et les noms des produits — SparkScan, MatrixScan, numérisation d'identité, superpositions AR, analyseur syntaxique — et redirige toutes les demandes vers une conversation commerciale. Le processus de devis comprend l'explication du cas d'utilisation, l'estimation du volume de numérisation, la spécification des appareils, la discussion des niveaux de support et la négociation de la durée du contrat avant qu'un chiffre ne soit fourni. Les avis publiés sur des plateformes telles que G2 et DiscoverSDK font régulièrement état de coûts imprévisibles pour les petites et moyennes entreprises et de difficultés à établir des prévisions budgétaires. Chaque gamme de produits Scandit est tarifée et contractuellement séparée, ce qui signifie que l'accès à des fonctionnalités étendues nécessite des cycles de vente supplémentaires.
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 |
| Professional | 1 499 $ une seule fois | 10 | 10 |
| Nombre illimité | 2 999 $ en 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 |
BarcodeScanned += gestionnaire d'événements |
Itération sur BarcodeReader.Read() valeur de retour |
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 qui développent des API ASP.NET Core, des services de traitement en arrière-plan ou des fonctions Azure constatent dès la première ligne d'intégration une inadéquation fondamentale avec l'architecture de Scandit. Le DataCaptureContext et le pipeline de caméras supposent un matériel qui n'existe pas dans un environnement serveur. Lorsque les exigences d'un projet en matière de codes-barres sont entièrement côté serveur (lecture des fichiers téléchargés, traitement des files d'attente de documents, extraction des données de codes-barres des PDF entrants), le pipeline de la caméra ajoute une complexité d'initialisation, une surcharge de machine à états asynchrone et des contraintes de plateforme qui ne contribuent en rien à l'exigence commerciale réelle.
Traitement par lots de documents
Les organisations qui traitent de gros volumes de documents comportant des codes-barres (manifestes d'expédition, factures, registres d'inventaire, formulaires médicaux) constatent que le modèle de source de trames de Scandit ne se combine pas avec les files d'attente de documents. La bibliothèque a été conçue pour des sessions photo continues, et non pour des documents discrets avec des points de départ et d'arrivée déterministes. Lorsque le volume de documents augmente et que le traitement parallèle devient nécessaire, la gestion des états du pipeline de la caméra devient un obstacle technique plutôt qu'un atout.
Transparence des prix
Les équipes de développement qui travaillent sur des propositions budgétaires, des comparaisons de fournisseurs ou des analyses coûts-avantages pour de nouveaux projets ne peuvent pas finaliser ce travail avec Scandit sans avoir préalablement entamé un cycle de vente. Lorsqu'un projet dispose d'un budget et d'un calendrier définis, l'impossibilité de déterminer le coût de la licence sans discussion commerciale engendre des retards et une incertitude qui ont des répercussions sur la planification du projet. Les équipes qui évaluent simultanément plusieurs options de bibliothèques constatent que l'absence de prix publiés rend difficile l'inclusion de Scandit dans une comparaison structurée.
Réduire la complexité des pipelines
Même lorsque Scandit est déjà déployé pour la numérisation par caméra mobile, certaines équipes constatent que les exigences en matière de codes-barres côté serveur dans la même application nécessitent un outil différent. Le pipeline de traitement de la caméra adapté à la numérisation mobile en temps réel introduit une complexité inutile lorsqu'il est appliqué au traitement de documents statiques. Les équipes qui atteignent ce stade adoptent souvent Code-barres IronBarcode pour le traitement côté serveur en parallèle d'un déploiement Scandit existant, plutôt que d'essayer d'étendre le pipeline de la caméra à des cas d'utilisation pour lesquels il n'a pas été conçu.
Considérations courantes en matière de migration
Le pipeline de la caméra n'a pas d'équivalent de fichier.
L'ensemble du bloc d'initialisation DataCaptureContext - création du contexte, configuration des paramètres, activation de la symbologie, acquisition de la caméra, affectation de la source d'image et transition d'état - n'a pas d'équivalent dans l'API basée sur les fichiers 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 de l'IronBarcode est une attribution de clé de licence suivie d'un appel BarcodeReader.Read.
Rappel d'événement pour un retour direct
Scandit fournit les résultats des codes-barres par le biais de l'événement BarcodeScanned car le balayage par caméra en direct est asynchrone par nature. 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
Suppression de la déclaration de symbologie
Scandit exige des appels explicites EnableSymbologies avant le début de la numérisation. Code-barres IronBarcode ne nécessite aucune déclaration préalable de la symbologie — tous les formats sont détectés automatiquement. Lors de la migration, tous les appels settings.EnableSymbologies(...) sont supprimés. Si le code Scandit d'origine restreignait les symbologies pour des raisons de performance, une optimisation équivalente dans Code-barres IronBarcode est disponible via BarcodeReaderOptions.ExpectBarcodeTypes, mais elle n'est pas nécessaire 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.Readdétecte tous les codes-barres présents dans un document, y compris les formats mixtes sur la même page, à l'aide de l'optionExpectMultipleBarcodes. - Lecture de codes-barres MAUI:Dans les applications MAUI utilisant un modèle de capture et de traitement, Code-barres IronBarcode prend en charge l'étape de traitement après la capture d'une photo à l'aide de
MediaPicker. - Entrée de flux et de tableau d'octets: En plus des chemins d'accès aux fichiers,
BarcodeReader.Readaccepte les entréesStreametbyte[], ce qui permet l'intégration avec les gestionnaires de téléchargement, les tampons de mémoire et les 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 versions ultérieures, .NET Standard 2.0, ainsi que toutes les versions modernes de .NET , notamment .NET 6, .NET 7, .NET 8 et .NET 9. La bibliothèque bénéficie de mises à jour régulières afin de garantir sa compatibilité avec les versions actuelles et futures de .NET , y compris .NET 10, attendu fin 2026. Son API sans état est compatible avec le modèle de programmation asynchrone introduit dans les versions modernes de .NET, et sa prise en charge de Linux et des déploiements conteneurisés la positionne avantageusement pour les charges de travail natives du cloud, où l'adoption de .NET est en constante progression. É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 fonctions Azure, 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 via un seul package et son API de lecture directe de fichiers éliminent les frictions architecturales et l'incertitude budgétaire que le modèle de pipeline de caméra et le modèle de vente par contact de Scandit introduisent dans ces scénarios.
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 gestionnaire de paquets, 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().

