IRONSOFTWAREHOME
COMPARER À D'AUTRES COMPOSANTS

Code-barres DevExpress vs Code-barres IronBarcode : Contrôle UI vs Bibliothèque autonome

Curtis Chau
Curtis Chau
Updated: 26 avril 2026

DevExpress est un kit d'outils d'interface utilisateur .NET très réputé. Les contrôles de grille, de planification, de graphique et de tableau croisé dynamique sont largement utilisés par les équipes d'entreprise. La prise en charge des codes-barres, en revanche, est une autre histoire. DevExpress fournit un BarCodeControl — un contrôle WinForms et une balise Blazor DxBarCode — qui vous permet de rendre un code-barres sur un formulaire. Le support DevExpress a confirmé qu'il n'existe aucune capacité de lecture et qu'il n'y a pas de plans actuels pour l'ajouter. Si vos codes-barres sont exécutés en arrière-plan, via une API web, dans un document PDF ou dans tout autre environnement sans formulaire d'interface utilisateur, cette règle ne s'applique pas.

Cette contrainte restreint l'offre de codes-barres DevExpress à un créneau spécifique : le rendu visuel d'un code-barres dans une interface utilisateur DevExpress WinForms ou Blazor . Pour ce créneau spécifique, il convient parfaitement. Pour tout le reste (génération côté serveur, lecture d'images ou de PDF, traitement sans interface graphique dans Azure Functions ou des conteneurs Docker), il vous faut un autre outil.

Comprendre les contrôles de codes-barres DevExpress

DevExpress BarCodeControl se trouve dans DevExpress.XtraEditors, avec ses classes génératrices de symbologie dans DevExpress.XtraPrinting.BarCode. Il ne s'agit pas d'une bibliothèque autonome. Il est inclus dans la suite DXperience, qui commence à 1 699,99 $ par an (les abonnements universels sont de 2 299,99 $). Il n'existe pas de package NuGet distinct dédié aux codes-barres que vous puissiez installer.

Le BarCodeControl est un contrôle WinForms. Vous le configurez à l'aide d'un objet de symbologie, vous définissez ses propriétés, et il s'affiche à l'écran. Enregistrer ce rendu dans un fichier nécessite d'appeler DrawToBitmap, qui attend un Bitmap préalloué de la bonne taille :

// DevExpress WinForms: UI control, not a library
using DevExpress.XtraEditors;              // BarCodeControl
using DevExpress.XtraPrinting.BarCode;     // Code128Generator, etc.
using System.Drawing;
using System.Drawing.Imaging;

var barCode = new BarCodeControl();
var symbology = new Code128Generator();
symbology.CharacterSet = Code128CharacterSet.CharsetAuto;
barCode.Symbology = symbology;
barCode.Text = "ITEM-12345";
barCode.Module = 0.02f;  // document units, not pixels
barCode.ShowText = true;

// File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400;
barCode.Height = 100;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("barcode.png", ImageFormat.Png);
bitmap.Dispose();

Remarquez plusieurs points de friction ici. D'abord, barCode.Module est en unités de document plutôt qu'en pixels, ce qui crée un décalage si vous pensez en dimensions en pixels. Ensuite, vous devez connaître la taille finale en pixels avant d'allouer le Bitmap. Troisièmement, le contrôle nécessite le chargement des assemblys WinForms, ce qui signifie qu'une API minimale ASP.NET Core ou un service d'arrière-plan de console doit charger l'infrastructure Windows Forms uniquement pour générer une image de code-barres.

La balise Blazor DxBarCode est conceptuellement similaire mais est un composant Razor pour le rendu de l'interface utilisateur, et non une API de génération côté serveur.

Aucune capacité de lecture

La position officielle de DevExpress est qu'ils ne fournissent pas de fonctionnalité de reconnaissance ou de lecture de codes-barres. Le Centre de Support DevExpress déclare : "Le contrôle DevExpress BarCode est conçu uniquement pour la génération de codes-barres. Nous ne fournissons pas de fonctionnalité de reconnaissance/scan de codes-barres." Il n'y a aucun plan actuel pour l'ajouter.

Pour les équipes qui développent une application DevExpress WinForms et qui doivent ensuite scanner un code-barres à partir d'une image ou lire un code QR à partir d'une pièce jointe PDF, la boîte à outils DevExpress ne suffit pas. Il est nécessaire d'utiliser une bibliothèque externe pour la lecture, ce qui soulève la question de la cohérence de l'API côté génération : faut-il également migrer vers cette bibliothèque ?

IronBarcode gère les deux sens :

// Code-barres IronBarcode reading — works on images, PDFs, and byte arrays
// NuGet: dotnet add package IronBarcode
using IronBarCode;

var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}

La lecture d'un fichier PDF ne nécessite aucune bibliothèque supplémentaire :

// Reading barcodes from a PDF — no PdfiumViewer or similar required
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page barcode: {result.Value}");
}

Le problème du regroupement des Suite

Les composants de codes-barres DevExpress ne sont pas vendus en tant que produit autonome. Pour utiliser BarCodeControl dans n'importe quel projet, votre équipe a besoin d'un abonnement DevExpress — le niveau ASP.NET & Blazor commence à 1 099,99 $/an, DXperience (WinForms + WPF) est à 1 699,99 $/an, et l'Universal est à 2 299,99 $/an. La Suite comprend la grille, le graphique, le planificateur, le tableau croisé dynamique et de nombreux autres contrôles, ce qui est raisonnable si vous développez une application DevExpress WinForms ou Blazor complète. Si vous n'avez besoin que de la génération de codes-barres pour un service backend, vous payez pour une suite logicielle d'interface utilisateur complète que ce service n'utilisera jamais.

IronBarcode est un package autonome :

dotnet add package IronBarcode
SHELL

La licence Lite perpétuelle est proposée à partir de 749 $ pour un développeur. Aucun kit d'outils d'interface utilisateur n'est intégré. Vous bénéficiez de la génération et de la lecture de codes-barres, de la compatibilité multiplateforme, et de rien d'autre que ce que vous avez demandé.

Limitation de l'utilisation sans interface graphique

Le problème fondamental avec BarCodeControl dans les scénarios côté serveur est qu'il s'agit d'un contrôle WinForms. Dans un projet d'API minimale ASP.NET Core .NET 6+, les assemblys WinForms ne sont pas référencés par défaut. Pour instancier BarCodeControl, votre projet d'API doit soit cibler explicitement Windows et charger l'exécution Windows Forms, soit ajouter des références de contournement qui intègrent une infrastructure d'interface que votre API ne rendra jamais.

Dans un plan de consommation Azure Functions, vous n'avez aucune couche d'interface utilisateur. Dans un conteneur Docker exécutant une image de base Linux, les dépendances Windows Forms GDI+ peuvent être totalement absentes. DevExpress ne prend pas officiellement en charge l'utilisation de BarCodeControl dans ces environnements sans interface.

IronBarcode utilise une API statique et entièrement programmable :

// IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
// NuGet: dotnet add package IronBarcode
using IronBarCode;

BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

Cet appel précis fonctionne dans une application console, un contrôleur ASP.NET Core , une fonction Azure déclenchée par un message Service Bus ou un conteneur Docker exécuté sous Linux. L'API reste inchangée d'un environnement à l'autre. Il n'y a aucune dépendance d'assemblage d'interface utilisateur.

Voici à quoi ressemble un point de terminaison ASP.NET Core qui renvoie un code-barres sous forme de fichier PNG :

app.MapGet("/barcode/{sku}", (string sku) =>
{
    var bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 100)
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});

Il n'existe pas de modèle équivalent avec BarCodeControl sans contournements significatifs.

Comprendre IronBarcode

IronBarcode est une bibliothèque .NET autonome permettant de générer et de lire des codes-barres. L'API est entièrement statique — aucune instance à gérer, aucun cycle de vie de contrôle, aucune dépendance à l'interface utilisateur. La génération et la lecture fonctionnent toutes deux dans le même appel :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .SaveAsPng("order-label.png");

// Generate and get bytes (for HTTP responses, blob storage, etc.)
byte[] pngBytes = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .ToPngBinaryData();

// Read from an image file
var results = BarcodeReader.Read("order-label.png");
Console.WriteLine(results.First().Value); // ORDER-9921

L'activation de la licence se fait en une seule ligne au démarrage :

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

Aucun appel réseau. Pas de code répétitif pour la gestion des erreurs. Validation locale.

Code QR côte à côte

Les codes QR illustrent le fossé en matière d'API entre un contrôle d'interface utilisateur et une bibliothèque de programmation.

Code QR DevExpress — Contrôle WinForms :

// DevExpress: QR via BarCodeControl + QRCodeGenerator symbology
using DevExpress.XtraEditors;              // BarCodeControl
using DevExpress.XtraPrinting.BarCode;     // QRCodeGenerator + QRCodeErrorCorrectionLevel

var barCode = new BarCodeControl();
var symbology = new QRCodeGenerator();
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H;
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric;
barCode.Symbology = symbology;
barCode.Text = "https://example.com";
barCode.Width = 500;
barCode.Height = 500;

var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("qr.png", ImageFormat.Png);
bitmap.Dispose();

Code QR Code-barres IronBarcode — même résultat, aucun assemblage d'interface utilisateur requis :

// IronBarcode: QR in one method chain
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .SaveAsPng("qr.png");

Ajouter un logo de marque au centre du code QR :

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("qr-branded.png");

DevExpress ne propose pas d'équivalent pour les logos intégrés. La commande génère un code QR standard, et rien de plus.

Comparaison des fonctionnalités

FonctionCode-barres DevExpressCode-barres IronBarcode
génération de codes-barresOui (contrôle WinForms, balise Blazor )Oui (API programmatique, tous environnements)
Lecture/scan des codes-barresNon — confirmation officielleOui — images, PDF, tableaux d'octets
lecture de codes-barres PDFNonOui, natif, sans bibliothèque supplémentaire
package NuGet autonomeNon — Suite DXperience requiseOui — IronBarcode uniquement
coût de la SuiteDe 1 099,99 $/an (ASP.NET & Blazor) à 2 299,99 $/an (Universal)N/A — autonome
Coût de la licenceAbonnement uniquementPerpétuel à partir de 749
ASP.NET Core / API minimaleNécessite des solutions de contournement pour WinFormsSupport natif
Azure FunctionsNon pris en charge en mode sans interface graphiquePrise en charge complète
Docker / LinuxProblèmes GDI+ sur les images de base LinuxPrise en charge complète
Applications consoleNécessite le chargement de l'assembly WinFormsSupport natif
génération de code QROui (via la symbologie QRCodeGenerator)Oui (QRCodeWriter)
QR avec logo intégréNonOui — .AjouterLogoDeMarque()
niveaux de correction d'erreur QRH, Q, M, LTrès élevé, Élevé, Moyen, Faible
Code 128OuiOui
Matrice de donnéesOuiOui
PDF417OuiOui
AztèqueOuiOui
Sortie de fichierDrawToBitmap — allocation manuelle de bitmap.EnregistrerAuFormatPng(), .EnregistrerAuFormatGif(), .EnregistrerAuFormatSVG()
Sortie binaire (réponse HTTP)Bitmap manuel → MemoryStream.ToPngBinaryData()
Lecture multithreadN/A — aucune lectureMaxParallelThreads = 4
Lecture de plusieurs codes-barresN/A — aucune lectureExpectMultipleBarcodes = true
PlateformesWindows (WinForms / Blazor)Windows, Linux, macOS, Docker, Azure, AWS Lambda
Prise en charge des versions .NET.NET Framework + .NET moderne (Windows).NET Framework 4.6.2 vers .NET actuel

Référence de mappage d'API

Les équipes familières avec le modèle BarCodeControl de DevExpress trouveront ces équivalences utiles :

Code-barres DevExpressCode-barres IronBarcode
new BarCodeControl()Statique — aucune instance nécessaire
new Code128Generator() + barCode.Symbology = symbologyBarcodeEncoding.Code128 passé en tant que paramètre
new QRCodeGenerator() + QRCodeErrorCorrectionLevel.HQRCodeWriter.CreateQrCode("data", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
new DataMatrixGenerator() + DataMatrixSize.Matrix26x26BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix)
new PDF417Generator()BarcodeWriter.CreateBarcode("data", BarcodeEncoding.PDF417)
new AztecGenerator()BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Aztec)
barCode.Module = 0.02f (unités de document).ResizeTo(width, height) (pixels)
barCode.ShowText = true.AddBarcodeText()
DrawToBitmap(bitmap, rect) — allocation manuelle de Bitmap.SaveAsPng(path) — gère la dimension automatiquement
Manuel BitmapMemoryStream pour réponse HTTP.ToPngBinaryData()
API de lecture indisponibleBarcodeReader.Read(imagePath)
Pas de type de résultat de lecture.Value (chaîne de caractères), .Format (BarcodeEncoding)
Assemblage de l'interface utilisateur requis dans chaque projetFonctionne avec tout type de projet .NET
Exclusivement suite (à partir de 1 099,99 $/an)Autonome (à partir de 749 $ pour une licence perpétuelle)

Quand les équipes changent

Plusieurs scénarios spécifiques déclenchent généralement le passage des contrôles de codes-barres DevExpress à IronBarcode.

Une nouvelle exigence de lecture apparaît. Le scénario le plus courant est celui d'une application WinForms qui génère des codes-barres depuis des années, et une nouvelle demande de fonctionnalité arrive : l'application doit désormais scanner ou vérifier les codes-barres à partir d'images téléchargées ou de captures d'écran. DevExpress ne possède pas d'API de lecture. L'équipe a de toute façon besoin d'une nouvelle bibliothèque, et il est logique de centraliser la génération sur cette même bibliothèque.

Besoin d'un point de terminaison d'API web. Une équipe développe un microservice qui génère des étiquettes de code-barres à la demande, accessible depuis une interface web, une application mobile ou un autre service. Le projet ASP.NET Core ne dépend pas de WinForms et l'équipe ne souhaite pas en ajouter. L'API statique d'IronBarcode s'intègre à un point de terminaison HTTP sans aucun bagage d'assemblage d'interface utilisateur.

Déploiement de fonctions Azure ou Lambda. Les déploiements sans serveur utilisent souvent des images de base Linux et des environnements d'exécution minimaux. BarCodeControl n'est pas conçu pour cet environnement. Code-barres IronBarcode fonctionne sous Linux, dans des conteneurs Docker, dans Azure Functions et dans AWS Lambda sans modification de configuration.

Coût de renouvellement de la suite pour une seule fonctionnalité. Quand vient le temps du renouvellement et qu'une équipe examine ce qu'elle utilise réellement de la suite DXperience, découvrir que le seul composant DevExpress dans un service particulier est BarCodeControl crée une conversation sur le coût. Payer un abonnement complet DXperience (1 699,99 $/an neuf, 849,99 $/an au renouvellement) pour la génération de codes-barres alors qu'une bibliothèque autonome coûte 749 $ perpétuel est un argument difficile à faire.

Lecture de plusieurs codes-barres à partir de fichiers PDF. Les flux de traitement de documents (lecture des codes-barres à partir de factures PDF, de manifestes d'expédition ou de formulaires numérisés) nécessitent à la fois la prise en charge et la capacité de lecture des fichiers PDF. Code-barres IronBarcode lit directement les fichiers PDF sans bibliothèque supplémentaire. DevExpress ne propose aucune de ces fonctionnalités.

Conclusion

L'offre de codes-barres de DevExpress s'apparente davantage à une fonctionnalité de rendu d'interface utilisateur intégrée à une boîte à outils d'interface utilisateur. Si votre application est une application WinForms ou Blazor qui utilise déjà DevExpress pour ses contrôles de grille et de graphique, et que votre seul besoin en code-barres est d'afficher visuellement un code-barres sur un formulaire, le BarCodeControl est un choix raisonnable — vous avez déjà la licence.

Au moment où vous avez besoin de l'une des fonctionnalités suivantes, BarCodeControl cesse d'être l'outil approprié : lire des codes-barres, générer des codes-barres dans un contexte côté serveur, fonctionner dans un environnement sans interface, travailler sur Linux, ou opérer sans référence d'assemblage WinForms. Le support DevExpress a confirmé l'absence de fonctionnalité de lecture et n'a pas l'intention d'en ajouter une. La limitation du mode sans interface graphique est d'ordre architectural, et non liée à un problème de configuration. Un contrôle d'interface utilisateur est un contrôle d'interface utilisateur.

IronBarcode est conçu pour le traitement programmatique des codes-barres — génération et lecture via une API statique, dans n'importe quel environnement, sur n'importe quelle plateforme. Ces deux outils résolvent des problèmes différents. Le code-barres DevExpress est destiné à être affiché à l'intérieur d'un formulaire. Code-barres IronBarcode sert au traitement des codes-barres.

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 et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise