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

Neodynamic Barcode Professional vs IronBarcode : Comparaison de la bibliothèque de codes-barres C#

Le kit de développement logiciel (SDK) de lecture de codes-barres de Neodynamic ne peut pas lire les codes QR. Vous pouvez acheter les deux SDK Neodynamic et vous retrouver malgré tout incapable de lire les mêmes codes QR que ceux produits par le générateur associé. Cette simple contradiction — un générateur qui prend en charge les formats QR Code, DataMatrix, PDF417 et Aztec associé à un lecteur qui ne prend en charge aucun de ces formats — définit l'expérience pratique de travail avec les outils de codes-barres de Neodynamic et encadre la comparaison avec Code-barres IronBarcode qui suit.

Comprendre les codes-barres néodynamiques

Neodynamic propose des fonctionnalités de code-barres via deux produits commerciaux entièrement distincts : le SDK Barcode Professional pour la génération de codes-barres et le SDK Barcode Reader pour la lecture des codes-barres. Chaque produit est distribué sous forme de package NuGet distinct, nécessite son propre achat et possède sa propre clé de licence. Un projet nécessitant à la fois la génération et la lecture doit intégrer les deux packages indépendamment, les maintenir tous deux par le biais de cycles de mise à jour distincts et les configurer tous deux au démarrage de l'application.

Le SDK Barcode Professional est le composant de génération. Il prend en charge une large gamme de symbologies, y compris les formats linéaires (Code 128, Code 39, EAN-13, UPC-A, Codabar, ITF) et les formats 2D (QR Code, DataMatrix, PDF417, Aztec). Le SDK utilise une API basée sur les instances : un objet BarcodeInfo est construit, ses propriétés sont assignées et GetImage() est appelé pour produire un System.Drawing.Image@ qui est sauvegardé via le pipeline System.Drawing.Imaging standard. Le SDK est dépendant de System.Drawing, ce qui limite le déploiement multiplateforme.

Le SDK de lecteur de codes-barres est le composant de lecture. Il accepte un System.Drawing.Bitmap et renvoie des résultats pour les symbologies 1D uniquement. Les codes QR, DataMatrix, PDF417, Aztec et tous les autres formats 2D ne sont pas pris en charge par le lecteur. Lorsqu'un code-barres 2D est soumis, le SDK ne renvoie aucun résultat — il ne lève pas d'exception, il produit simplement un ensemble de résultats vide. Les équipes travaillant avec les produits Neodynamic qui découvrent cette limitation après avoir mis en place un flux de travail de génération constatent que la récupération de la capacité de lecture 2D nécessite l'ajout d'une troisième bibliothèque en dehors de l'écosystème Neodynamic.

Caractéristiques architecturales clés du code-barres néodynamique :

  • Produits distincts pour la génération et la lecture : deux packages NuGet , deux achats et deux clés de licence sont nécessaires pour un projet qui utilise les deux fonctionnalités.
  • Génération 2D sans lecture 2D : le SDK Barcode Professional génère des codes QR, DataMatrix, PDF417 et Aztec, mais le SDK Barcode Reader associé ne peut lire aucun de ces formats.
  • Instance-based generation API: La génération nécessite la construction d'un objet BarcodeInfo et l'attribution de propriétés avant d'appeler GetImage().
  • Dépendance System.Drawing: Les deux SDK dépendent de System.Drawing, ce qui limite le déploiement dans les environnements Linux et de conteneurs sans configuration supplémentaire.
  • Portée de lecture 1D uniquement : le SDK du lecteur de codes-barres prend en charge les codes Code 128, EAN-13, UPC-A, Code 39, Codabar, Interleaved 2 of 5 et MSI/Plessey. Aucun format 2D n'est inclus.
  • Aucune prise en charge native du format PDF : aucun des deux SDK ne lit directement les codes-barres à partir des documents PDF ; Une étape d'extraction d'image distincte est nécessaire.
  • Aucune détection automatique du format : le lecteur déduit le format à partir des fonctionnalités qu'il prend en charge plutôt qu'à partir du contenu de l'image.

L'architecture du SDK fractionné

Un projet qui achète les deux SDK de Neodynamic doit configurer deux blocs de licence distincts au démarrage. Les deux affectations LicenseOwner et LicenseKey utilisent des espaces de noms et des noms de classes différents, et aucun des deux blocs n'est conscient de l'existence de l'autre :

// Neodynamic: two products, two license configurations
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;

// Generation license (Barcode Professional SDK)
BarcodeInfo.LicenseOwner = "Company";
BarcodeInfo.LicenseKey = "GEN-KEY";

// Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY";
// Neodynamic: two products, two license configurations
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;

// Generation license (Barcode Professional SDK)
BarcodeInfo.LicenseOwner = "Company";
BarcodeInfo.LicenseKey = "GEN-KEY";

// Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY";
Imports Neodynamic.SDK.Barcode
Imports Neodynamic.SDK.BarcodeReader

' Neodynamic: two products, two license configurations

' Generation license (Barcode Professional SDK)
BarcodeInfo.LicenseOwner = "Company"
BarcodeInfo.LicenseKey = "GEN-KEY"

' Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company"
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY"
$vbLabelText   $csharpLabel

Ce schéma se répète dans tous les environnements (développement, préproduction et production) et doit être maintenu chaque fois que le produit est mis à jour ou renouvelé.

Comprendre IronBarcode

IronBarcode est une bibliothèque commerciale de codes-barres .NET développée par Iron Software qui permet la génération et la lecture de codes-barres via un seul package NuGet sous une seule licence. La bibliothèque utilise un modèle d'API statique : la génération est effectuée via BarcodeWriter.CreateBarcode() et la lecture via BarcodeReader.Read(). Les deux méthodes fonctionnent sur toutes les symbologies prises en charge sans nécessiter de chemins de code spécifiques au format.

IronBarcode est construit sans dépendance à System.Drawing, ce qui le rend déployable sur Linux, macOS et dans des conteneurs Docker sans configuration spécifique à la plateforme. La bibliothèque lit nativement les codes-barres des fichiers image, des flux d'images et des documents PDF, sans nécessiter d'étape d'extraction d'image séparée pour les sources PDF.

Caractéristiques principales d' IronBarcode:

  • Un seul package pour la génération et la lecture : un package NuGet , une clé de licence et un bloc de configuration couvrent toutes les opérations sur les codes-barres.
  • Prise en charge unifiée des codes 1D et 2D : la même API lit et génère les codes Code 128, EAN-13, QR Code, DataMatrix, PDF417, Aztec et plus de 50 autres symbologies.
  • Static fluent API: BarcodeWriter.CreateBarcode()@ renvoie un résultat chaînable ; BarcodeReader.Read() accepte les chemins de fichiers, les flux et les documents PDF.
  • Détection automatique du format : le lecteur identifie la symbologie à partir du contenu de l'image sans que l'appelant ait besoin de spécifier le format attendu.
  • Aucune dépendance à System.Drawing : le déploiement multiplateforme sur Linux et dans les conteneurs fonctionne sans configuration supplémentaire de bibliothèque native.
  • Lecture native des PDF : les codes-barres intégrés aux documents PDF sont lus directement, renvoyant les métadonnées de numéro de page ainsi que les valeurs des codes-barres.
  • Async and batch processing: BarcodeReader.ReadAsync()@ et les opérations de traitement par lots de plusieurs pages prennent en charge les charges de travail des serveurs à haut débit.

Comparaison des fonctionnalités

Le tableau suivant récapitule les principales différences entre les produits Neodynamic et IronBarcode:

Fonction Code-barres néodynamique Professional Lecteur de codes-barres néodynamique Code-barres IronBarcode
génération de codes-barres Oui Non Oui
Lecture de codes-barres 1D Non Oui Oui
Lecture de codes-barres 2D Non Non Oui
Produits requis 1 (génération uniquement) 1 (lecture seulement) 1 (les deux)
Clés de licence requises 1 par produit acheté 1 par produit acheté 1 au total
Lecture native des codes-barres PDF Non Non Oui
Dépendance de dessin du système Oui Oui Non

Comparaison détaillée des fonctionnalités

Fonction Code-barres néodynamique Professional Lecteur de codes-barres néodynamique Code-barres IronBarcode
Génération
Génération du code 128 Oui N/A Oui
Génération EAN-13 / UPC-A Oui N/A Oui
Génération du code 39 Oui N/A Oui
génération de code QR Oui N/A Oui
Génération de DataMatrix Oui N/A Oui
Génération PDF417 Oui N/A Oui
Génération aztèque Oui N/A Oui
En lisant
Lecture du code 128 N/A Oui Oui
Lecture EAN-13 / UPC-A N/A Oui Oui
Lecture du code 39 N/A Oui Oui
Lecture de Codabar N/A Oui Oui
Lecture de code QR N/A Non Oui
Lecture DataMatrix N/A Non Oui
Lecture PDF417 N/A Non Oui
lecture aztèque N/A Non Oui
Détection automatique du format N/A Non Oui
Sources d'entrée
Entrée de fichier image Oui Oui Oui
Saisie de documents PDF Non Non Oui
Entrée du flux Oui Oui Oui
Plateforme et licences
Dépendance de dessin du système Oui Oui Non
Prise en charge de Linux/Docker Limité Limité Oui
.NET Standard 2.0 Oui Oui Oui
.NET 8 / .NET 9 Oui Limité Oui
Packages NuGet requis 1 par produit 1 par produit 1 au total
Clés de licence requises 1 par produit 1 par produit 1 au total

Support du format de lecture

La différence technique la plus significative dans cette comparaison réside dans la limite du format de lecture entre les deux SDK Neodynamic et Code-barres IronBarcode .

Approche néodynamique du lecteur de codes-barres

Le lecteur de codes-barres Neodynamic prend uniquement en charge les codes-barres linéaires. Lorsqu'un code-barres 2D est soumis au lecteur, le SDK renvoie un ensemble de résultats vide ou nul. Aucune exception n'est levée et aucun message d'erreur n'indique ce qui s'est passé. Les équipes travaillant avec ce SDK découvrent généralement cette limitation après avoir déployé du code qui appelle le lecteur sur des images de code QR et constaté que la collection de résultats est toujours vide.

Dans les bases de code utilisant Neodynamic Reader, une pratique courante de protection consiste à effectuer une vérification explicite qui lève une exception lorsqu'un format 2D est attendu :

// Lecteur de codes-barres néodynamique SDK: QR code reading is not supported
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string ReadQrCode(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var results = BarcodeReader.Read(bitmap);

    // Results will be null or empty — QR codes are not recognised by this SDK
    if (results == null || !results.Any())
    {
        throw new NotSupportedException(
            "Neodynamic Barcode Reader does not support QR codes");
    }

    return results.First().Value;
}
// Lecteur de codes-barres néodynamique SDK: QR code reading is not supported
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string ReadQrCode(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var results = BarcodeReader.Read(bitmap);

    // Results will be null or empty — QR codes are not recognised by this SDK
    if (results == null || !results.Any())
    {
        throw new NotSupportedException(
            "Neodynamic Barcode Reader does not support QR codes");
    }

    return results.First().Value;
}
Imports Neodynamic.SDK.BarcodeReader
Imports System.Drawing

Public Function ReadQrCode(imagePath As String) As String
    Using bitmap As New Bitmap(imagePath)
        Dim results = BarcodeReader.Read(bitmap)

        ' Results will be null or empty — QR codes are not recognised by this SDK
        If results Is Nothing OrElse Not results.Any() Then
            Throw New NotSupportedException("Neodynamic Barcode Reader does not support QR codes")
        End If

        Return results.First().Value
    End Using
End Function
$vbLabelText   $csharpLabel

Cette méthode ne peut pas être mise en œuvre avec le seul SDK Neodynamic Reader. Le NotSupportedException n'est pas une solution de contournement - c'est la seule réponse honnête que le lecteur peut fournir pour la saisie 2D.

Approche IronBarcode

IronBarcode lit toutes les symbologies prises en charge par le biais du même appel BarcodeReader.Read(). Le format est détecté automatiquement à partir du contenu de l'image. Un code QR, un code 128 et un code-barres DataMatrix utilisent tous le même code d'appel :

using IronBarCode;

public string ReadQrCode(string imagePath)
{
    // QR codes, DataMatrix, PDF417 — all handled automatically
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}
using IronBarCode;

public string ReadQrCode(string imagePath)
{
    // QR codes, DataMatrix, PDF417 — all handled automatically
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}
Imports IronBarCode

Public Function ReadQrCode(imagePath As String) As String
    ' QR codes, DataMatrix, PDF417 — all handled automatically
    Dim result = BarcodeReader.Read(imagePath).FirstOrDefault()
    Return If(result?.Value, Nothing)
End Function
$vbLabelText   $csharpLabel

L'appelant ne précise pas de format attendu. Code-barres IronBarcode identifie la symbologie et renvoie la valeur. Pour plus de détails sur les options de lecture d'images, y compris la détection de plusieurs codes-barres et le prétraitement des images, consultez le guide de lecture des codes-barres à partir d'images .

Génération de Codes-barres

Neodynamic Barcode Professional et Code-barres IronBarcode sont tous deux capables de générer des codes-barres 1D et 2D. La différence réside dans le style de l'API et son empreinte de dépendances plutôt que dans sa capacité de sortie.

Approche Professional néodynamique des codes-barres

L'API de génération de Neodynamic est basée sur les instances. Un objet BarcodeInfo est construit, ses propriétés sont assignées individuellement et GetImage() est appelé pour renvoyer un System.Drawing.Image. L'image est ensuite enregistrée à l'aide de l'énumération System.Drawing.Imaging.ImageFormat :

using Neodynamic.SDK.Barcode;

// Configure license first
BarcodeInfo.LicenseOwner = "Your Company";
BarcodeInfo.LicenseKey = "YOUR-KEY";

// Build the barcode through property assignment
var barcode = new BarcodeInfo();
barcode.Value = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.TextAlign = BarcodeTextAlignment.BelowCenter;
barcode.Dpi = 300;

// Get image and save via System.Drawing
System.Drawing.Image image = barcode.GetImage();
image.Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
using Neodynamic.SDK.Barcode;

// Configure license first
BarcodeInfo.LicenseOwner = "Your Company";
BarcodeInfo.LicenseKey = "YOUR-KEY";

// Build the barcode through property assignment
var barcode = new BarcodeInfo();
barcode.Value = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.TextAlign = BarcodeTextAlignment.BelowCenter;
barcode.Dpi = 300;

// Get image and save via System.Drawing
System.Drawing.Image image = barcode.GetImage();
image.Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
Imports Neodynamic.SDK.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging

' Configure license first
BarcodeInfo.LicenseOwner = "Your Company"
BarcodeInfo.LicenseKey = "YOUR-KEY"

' Build the barcode through property assignment
Dim barcode As New BarcodeInfo()
barcode.Value = "12345678"
barcode.Symbology = Symbology.Code128
barcode.TextAlign = BarcodeTextAlignment.BelowCenter
barcode.Dpi = 300

' Get image and save via System.Drawing
Dim image As Image = barcode.GetImage()
image.Save("output.png", ImageFormat.Png)
$vbLabelText   $csharpLabel

Le SDK offre des options de personnalisation légitimes, notamment le contrôle du DPI, l'alignement du texte, les paramètres de couleur et le dimensionnement de la zone silencieuse. Ces outils sont utiles pour les flux de production d'impression où la précision des dimensions physiques est importante. La capacité de génération elle-même est complète ; Les limitations qui incitent à la migration se situent du côté de la lecture, et non du côté de la génération.

Approche IronBarcode

IronBarcode utilise une approche statique fluide. L'encodage et les données sont transmis en tant que paramètres à BarcodeWriter.CreateBarcode(), et le format de sortie est exprimé sous la forme d'un nom de méthode sur l'objet retourné. Aucune importation System.Drawing n'est requise :

using IronBarCode;

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .SaveAsPng("output.png");
using IronBarCode;

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .SaveAsPng("output.png");
Imports IronBarCode

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
    .SaveAsPng("output.png")
$vbLabelText   $csharpLabel

Pour la génération de codes-barres 2D, la classe dédiée QRCodeWriter fournit des options supplémentaires spécifiques aux codes QR :

using IronBarCode;

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.High)
    .SaveAsPng("qrcode.png");
using IronBarCode;

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.High)
    .SaveAsPng("qrcode.png");
Imports IronBarCode

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.High) _
    .SaveAsPng("qrcode.png")
$vbLabelText   $csharpLabel

Pour obtenir des conseils sur la génération de symbologies 1D avec des options de dimensionnement et d'annotation, consultez le guide de création de codes-barres 1D . Pour la création de codes-barres 2D, y compris DataMatrix et PDF417, consultez le guide de création de codes-barres 2D .

Structure des licences et des produits

Le modèle de licence représente l'une des différences les plus pratiques entre les deux options pour les équipes qui développent des systèmes nécessitant à la fois la génération et la lecture.

Approche néodynamique

La fonctionnalité de code-barres de Neodynamic est répartie entre deux produits sous licence distincte. Le kit de développement logiciel Barcode Professional SDK gère la génération de codes-barres, tandis que le kit de développement logiciel Barcode Reader SDK gère la lecture. Chaque produit nécessite un achat séparé et possède sa propre clé de licence. Une équipe qui achète les deux produits doit maintenir deux blocs de configuration LicenseOwner / LicenseKey, suivre deux dates de renouvellement distinctes et traiter avec deux canaux d'assistance distincts en cas de problème.

Le kit de développement logiciel Barcode Professional (SDK) est proposé à environ 245 $ pour une licence développeur unique. Le kit de développement logiciel (SDK) de lecture de codes-barres est facturé séparément. Un projet nécessitant à la fois la génération et la lecture de codes 1D implique donc des dépenses totales avoisinant ou dépassant 500 $ pour un seul développeur. Un projet nécessitant une lecture 2D ne peut satisfaire cette exigence avec les produits Neodynamic, quel que soit leur prix ; une troisième bibliothèque doit être ajoutée. Consultez la page des formats de codes-barres pris en charge par IronBarcode pour obtenir la liste complète des formats couverts par une licence unique.

Approche IronBarcode

IronBarcode est vendu comme un produit unique qui couvre toutes les opérations de codes-barres — génération et lecture pour toutes les symbologies prises en charge — sous une seule clé de licence. Il n'y a pas de licence de lecture séparée, pas de licence de génération séparée et aucun coût supplémentaire pour la prise en charge du format 2D. La clé de licence est définie une seule fois au démarrage de l'application et ne nécessite aucune autre configuration :

IronBarCode.License.LicenseKey = "YOUR-KEY";
IronBarCode.License.LicenseKey = "YOUR-KEY";
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-KEY"
$vbLabelText   $csharpLabel

IronBarcode Lite est proposé au prix de 749 $ pour un développeur unique et couvre l'ensemble des fonctionnalités. Pour connaître les tarifs et les options de volume actuels, consultez la page de licences IronBarcode .

Référence de mappage d'API

API néodynamique Équivalent Code-barres IronBarcode Notes
BarcodeInfo.LicenseOwner = "..." IronBarCode.License.LicenseKey = "key" Une seule clé remplace le propriétaire et la paire de clés.
BarcodeInfo.LicenseKey = "..." (part of single key above) Aucun champ propriétaire séparé
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner (removed) Non requis
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey (removed) Non requis
new BarcodeInfo() BarcodeWriter.CreateBarcode(data, encoding) Méthode statique, sans instance
barcode.Value = data Premier paramètre de CreateBarcode Adopté lors de la construction
barcode.Symbology = Symbology.Code128 BarcodeEncoding.Code128 Deuxième paramètre
barcode.Symbology = Symbology.QRCode BarcodeEncoding.QRCode Aller-retour complet pris en charge
barcode.GetImage().Save(path, ImageFormat.Png) .SaveAsPng(path) Fluent, sans énumération ImageFormat
BarcodeReader.Read(bitmap) BarcodeReader.Read(imagePath) Le chemin du fichier remplace l'objet Bitmap
result.Value result.Value Même nom de propriété
throw new NotSupportedException(...) pour QR BarcodeReader.Read(imagePath) Remplacer par un appel de lecture standard

Quand les équipes envisagent de passer du code-barres néodynamique au IronBarcode

Exigences de lecture des codes QR

Le scénario le plus courant qui amène les équipes de Neodynamic à Code-barres IronBarcode est la découverte que les codes QR générés par le SDK Barcode Professional ne peuvent pas être lus par le SDK Barcode Reader. Les équipes qui développent des systèmes d'étiquetage de produits, des outils de gestion des stocks ou des flux de travail de suivi des documents mettent souvent en œuvre la génération et la lecture comme des phases distinctes d'un système plus vaste. Lorsque la génération est d'abord effectuée à l'aide de Barcode Professional, la limitation du lecteur ne devient apparente que lors de la tentative de lecture. À ce stade, le projet a déjà opté pour Neodynamic pour la génération, et l'ajout d'une troisième bibliothèque pour couvrir la lecture 2D introduit une complexité de gestion des versions qui n'existerait pas avec un SDK unifié.

Réduire la complexité du produit

Certaines équipes migrent non pas à cause d'un écart de format spécifique, mais parce que la charge de travail liée à la maintenance de deux produits distincts pour ce qui est conceptuellement une seule fonctionnalité devient un point de friction récurrent. Deux paquets dans le fichier .csproj, deux cycles de renouvellement de licence, deux ensembles de notes de version à examiner et deux sources potentielles d'incompatibilité lorsque des mises à jour .NET ou Windows sont appliquées - aucun de ces frais généraux n'offre de fonctionnalités supérieures à celles qu'un seul paquet unifié offrirait. Les équipes qui effectuent un audit des dépendances dans le cadre d'une mise à niveau .NET identifient souvent l'arrangement à double paquetage de Neodynamic comme une opportunité de simplification.

Traitement des codes-barres PDF

Les applications qui traitent des documents PDF contenant des codes-barres représentent un scénario où les deux SDK Neodynamic présentent simultanément des lacunes. Ni le SDK de génération ni le SDK de lecture ne peuvent ouvrir un fichier PDF et extraire les valeurs des codes-barres de ses pages. Les équipes travaillant avec des manifestes d'expédition, des factures, des dossiers médicaux ou tout flux de travail documentaire où des codes-barres sont intégrés dans des PDF doivent implémenter une étape intermédiaire d'extraction d'image avant toute lecture. Cette étape d'extraction nécessite une bibliothèque supplémentaire, ce qui signifie que le projet comporte déjà une troisième dépendance pour contourner une limitation qu'une seule installation Code-barres IronBarcode permettrait d'éliminer.

Cohérence du format entre la lecture et l'écriture

Les équipes qui gèrent des flux de travail de codes-barres à grande échelle constatent parfois que les incohérences dans la prise en charge des formats entre la génération et la lecture créent des problèmes de test et de validation. Lorsqu'un système génère des codes QR à une fin et lit des types de formats différents à une autre, la divergence entre ce que le générateur prend en charge et ce que le lecteur prend en charge crée des lacunes dans les tests aller-retour. Un système où la génération et la lecture partagent la même bibliothèque et la même liste de formats pris en charge est plus simple à valider. La vérification qu'un code-barres généré peut être lu avec succès devient une opération à bibliothèque unique plutôt qu'un test d'intégration à bibliothèques multiples.

Considérations courantes en matière de migration

Retrait du double colis

La migration depuis Neodynamic nécessite la suppression des deux paquets NuGet : Neodynamic.SDK.Barcode et Neodynamic.SDK.BarcodeReader. Les deux doivent être supprimés du fichier .csproj et les deux directives using correspondantes doivent être supprimées des fichiers sources. L'exécution de dotnet remove package pour chacun d'entre eux est suffisante ; Il n'existe aucune dépendance partagée entre les deux qui nécessiterait un nettoyage supplémentaire.

Nettoyage de la configuration de double licence

Les deux blocs de configuration de licence - un pour BarcodeInfo et un pour Neodynamic.SDK.BarcodeReader.BarcodeReader - sont tous deux remplacés par une seule affectation IronBarCode.License.LicenseKey. Cette affectation est effectuée une fois au démarrage de l'application, généralement dans Program.cs ou dans l'amorçage de l'injection de dépendances de l'application. Tous les fichiers de configuration ou les variables d'environnement qui stockent les clés de licence Neodynamic peuvent être supprimés après la vérification de la migration.

Suppression de l'exception NotSupported

Les bases de code qui ont rencontré la limitation de la lecture 2D au cours du développement contiennent souvent des méthodes de remplacement qui lancent NotSupportedException pour le code QR ou la lecture DataMatrix. Ces méthodes ne sont pas des solutions de contournement, mais des reconnaissances honnêtes que la capacité n'existait pas. Après la migration vers IronBarcode, chaque corps de méthode de ce type est remplacé par un appel BarcodeReader.Read(imagePath)standard. Aucune manipulation particulière n'est nécessaire ; Le format est détecté automatiquement.

Fonctionnalités supplémentaires IronBarcode

Au-delà des principaux points de comparaison, Code-barres IronBarcode offre des fonctionnalités qui ne sont disponibles dans aucun des produits Neodynamic :

  • Lecture native de codes-barres PDF: BarcodeReader.Read("document.pdf") lit les codes-barres directement à partir des documents PDF, renvoyant les informations relatives au numéro de page en même temps que les valeurs du code-barres, sans qu'aucune extraction d'image intermédiaire ne soit nécessaire.
  • Traitement par lots synchrone: BarcodeReader.ReadAsync() prend en charge les lectures non bloquantes adaptées aux charges de travail côté serveur qui traitent simultanément de grands volumes d'images ou de documents.
  • Correction d'erreurs par apprentissage automatique : Code-barres IronBarcode applique une correction d'erreurs basée sur l'apprentissage automatique pour récupérer les valeurs d'images de codes-barres endommagées, partiellement masquées ou à faible résolution qui renverraient des résultats vides avec les décodeurs standard.
  • Détection multi-codes-barres : Un seul appel BarcodeReader.Read() renvoie tous les codes-barres présents dans une image, y compris les images de format mixte contenant simultanément des symbologies 1D et 2D.
  • Intégration de codes-barres dans les PDF : Code-barres IronBarcode peut insérer directement des images de codes-barres dans des documents PDF existants sans nécessiter de bibliothèque PDF distincte.
  • Options de prétraitement d'image : la correction de la luminosité, la gestion de la rotation et la réduction du bruit peuvent être configurées sur le lecteur pour améliorer les taux de reconnaissance des images capturées dans des conditions difficiles.

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

IronBarcode prend en charge .NET Standard 2.0, .NET Framework 4.6.2 et supérieur, .NET Core 3.1 et toutes les versions actuelles de .NET, y compris .NET 8 et .NET 9. La bibliothèque ne dépend pas de System.Drawing, ce qui signifie qu'elle fonctionne sans modification sur Linux et dans les conteneurs Docker. La compatibilité de BarCode Reader SDK de Neodynamic avec .NET 8 et .NET 9 est limitée en raison de sa dépendance System.Drawing et de la configuration supplémentaire de la bibliothèque native que cette dépendance exige dans les environnements non Windows. Code-barres IronBarcode bénéficie de mises à jour régulières alignées sur le rythme de publication de .NET , et la compatibilité avec .NET 10, prévue pour fin 2026, est maintenue dans le cadre d'un développement actif.

Conclusion

Le kit de développement logiciel Code-barres néodynamique Professional SDK et le kit de développement logiciel Lecteur de codes-barres néodynamique SDK représentent ensemble un modèle de produit divisé dans lequel la génération et la lecture sont des offres commerciales distinctes avec des limites de capacité séparées. Le générateur prend en charge les codes QR, DataMatrix, PDF417 et Aztec. Le lecteur, lui, ne le fait pas. Cette asymétrie n'est pas une omission mineure : elle signifie que les deux produits ne peuvent pas former un flux de travail complet de codes-barres pour toute application nécessitant la lecture de codes-barres 2D, et que les formats les plus utilisés dans les paiements mobiles, le suivi pharmaceutique, la logistique d'expédition et le traitement de documents sont absents des capacités du lecteur.

Neodynamic Barcode Professional est un choix judicieux lorsque le seul besoin est la génération de codes-barres. Le SDK produit une sortie de haute qualité sur une large gamme de symbologies, prend en charge le contrôle DPI et la personnalisation spécifique à l'impression, et s'intègre à l'écosystème plus large de Neodynamic ThermalLabel. Les équipes disposant de déploiements exclusivement sous Windows et n'ayant besoin que de la lecture de codes-barres 1D peuvent également utiliser le SDK du lecteur de codes-barres sans rencontrer ses limitations de format. Dans ce cadre opérationnel restreint — génération uniquement, ou lecture 1D uniquement sous Windows — les produits Neodynamic offrent ce qu'ils décrivent.

IronBarcode est le choix approprié lorsqu'un projet nécessite à la fois la génération et la lecture, lorsqu'une partie quelconque du flux de travail implique des formats 2D, lorsque des documents PDF sont une source d'entrée de codes-barres, ou lorsqu'une architecture à package unique est préférée pour la gestion des dépendances. Le modèle de licence unifié, l'absence de dépendance System.Drawing et la détection automatique du format à travers toutes les symbologies prises en charge le rendent adapté aux applications multiplateformes, aux déploiements dans le cloud et aux systèmes qui traitent un mélange de formats de codes-barres provenant de sources diverses.

Le choix entre les deux se résume finalement à la question de savoir si la limite de format dans le lecteur de Neodynamic affecte le projet en question. Pour les équipes dont les flux de travail se limitent à la génération et à la lecture de codes-barres 1D sous Windows, cette limite ne sera peut-être jamais atteinte. Pour les équipes qui ont besoin de codes QR à la fois pour la génération et la lecture au sein d'un même système, la limite est insurmontable au sein de la gamme de produits Neodynamic, et une bibliothèque différente est nécessaire quelle que soit celle choisie.

Questions Fréquemment Posées

Qu'est-ce que Neodynamic BarCode Professional ?

Neodynamic Barcode Professional 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 code-barres pour les projets .NET.

Quelles sont les principales différences entre Neodynamic BarCode Professional et IronBarcode ?

IronBarcode utilise une API statique, sans état, ne nécessitant aucune gestion d'instance, tandis que Neodynamic Barcode Professional 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 Neodynamic Barcode Professional ?

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 Neodynamic Barcode Professional 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 à Neodynamic Barcode Professional ?

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 à Neodynamic ?

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 Neodynamic BarCode Professional 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 Neodynamic Barcode Professional vers IronBarcode ?

La migration de Neodynamic Barcode Professional vers IronBarcode implique principalement le remplacement des appels API basés sur les instances par les méthodes statiques d'IronBarcode, la suppression du boilerplate 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().

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite

Équipe de soutien Iron

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