Aspose BarCode for .NET : comparaison directe avec IronBarcode et exemples de code
Barcode4NETvs Code-barres IronBarcode : Comparaison d'un générateur en fin de vie avec une bibliothèque moderne de codes-barres .NET
Barcode4NET est effectivement en fin de vie. La dernière version - Barcode4NET2.0 de O2 Solutions - a été publiée le 25 juin 2007. De nouvelles licences ne sont plus vendues via ComponentSource (les clients existants peuvent encore renouveler le Support et les Mises à jour logicielles), aucun package NuGet n'a jamais été publié, et la bibliothèque cible .NET Framework1.1 / 2.0 / 3.x et .NET Compact Framework. Pour les équipes ayant hérité d'une dépendance à Barcode4NET, cet article compare les fonctionnalités de cette bibliothèque à celles d' Code-barres IronBarcode aujourd'hui : portée de la plateforme, conception de l'API, capacité de lecture des codes-barres et réalité des licences, ce qui rend une évaluation comparative plutôt inhabituelle.
Comprendre Barcode4NET
Barcode4NET était une bibliothèque commerciale de génération de codes-barres publiée par O2 Solutions et distribuée par ComponentSource. Elle était conçue pour les applications .NET Frameworkbasées sur Windows - principalement Windows Forms, ASP.NET Web Forms, .NET Compact Framework, et SQL Server Reporting Services 2000 / 2005 - et délivrait des sorties en bitmap et vecteur propres pour les symbologies 1D et 2D de son époque.
La bibliothèque n'a jamais été disponible sous forme de package NuGet . Elle était distribuée sous forme de DLL que les développeurs intégraient au système de contrôle de version ou plaçaient dans un emplacement partagé pour les artefacts. Chaque projet qui l'utilisait nécessitait un élément <Reference> manuel dans le fichier .csproj pointant vers le DLL sur le disque. C'était une pratique courante lorsque Barcode4NETétait actif, mais cela crée des frictions importantes dans les flux de travail CI/CD modernes.
Principales caractéristiques architecturales de Barcode4NET :
- API de réglage des propriétés : Les développeurs créaient un objet
Barcode, assignaientSymbology,Data,Width, etHeightcomme propriétés, puis appelaientGenerateBarcode()pour recevoir unSystem.Drawing.Bitmap. - Couverture des symbologies: 39 symbologies 1D (Code128, Code39, EAN-13, UPC-A, et plus) plus cinq formats 2D (DataMatrix, PDF417, MicroPDF417, Code 16K, CODABLOCK F); Le QR Code et Aztèque ne sont pas pris en charge
- Génération uniquement : aucune fonctionnalité de lecture ou de numérisation de codes-barres n'a jamais fait partie du produit.
- Windows and .NET Frameworkonly: Targets .NET Framework1.1 / 2.0 / 3.x and .NET Compact Framework; pas de prise en charge pour .NET Core, .NET 5+, Linux, macOS, Docker, ou runtime cloud
- Aucune distribution NuGet : une référence DLL manuelle est requise dans chaque fichier projet et pipeline de build.
- Fin de vie: Aucune nouvelle licence vendue via ComponentSource et aucune version de code depuis 2007
API de génération Barcode4NET
Le flux de travail de génération complet dans Barcode4NETutilisait un modèle de définition de propriétés :
// Barcode4NET— manual DLL, .NET Frameworkonly
// Non Paquet NuGet— requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
// Barcode4NET— manual DLL, .NET Frameworkonly
// Non Paquet NuGet— requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = "ITEM-12345"
barcode.Width = 300
barcode.Height = 100
Dim barcodeImage As Bitmap = barcode.GenerateBarcode()
barcodeImage.Save(outputPath, ImageFormat.Png)
Ceci représente l'intégralité de l'interface de l'API Barcode4NET. La bibliothèque n'offrait aucun enchaînement fluide, aucune capacité de lecture, pas de support pour les codes QR, et pas d'options 2D avancées comme l'intégration de logo ou le contrôle de correction d'erreurs.
Comprendre IronBarcode
IronBarcode est une bibliothèque commerciale .NET de codes-barres développée par Iron Software , qui couvre à la fois la génération et la lecture des codes-barres dans un seul package. Il est distribué exclusivement via NuGet, cible .NET Framework4.6.2 à .NET 9 et fonctionne sous Windows, Linux, macOS, Docker, Azure et AWS Lambda.
La bibliothèque est construite autour d'une API statique fluide. La génération utilise BarcodeWriter.CreateBarcode() avec une chaîne de données et un type d'encodage, suivie d'options chaînables pour la taille, la couleur et le format. La lecture utilise BarcodeReader.Read() qui accepte les chemins de fichiers image, les flux, et les documents PDF sans nécessiter une bibliothèque PDF séparée.
Caractéristiques principales d' IronBarcode:
- API de génération statique fluide :
BarcodeWriter.CreateBarcode()enchaîne.ResizeTo(),.AddAnnotationTextAboveBarcode(), et les méthodes de sauvegarde dans une seule expression. - Lecture de code-barres :
BarcodeReader.Read()décode les codes-barres à partir d'images et de PDFs nativement. - Prise en charge de nombreux formats : Code128, Code39, EAN-13, UPC-A, QR Code, Data Matrix, PDF417, Aztec, et bien d'autres.
- Spécialisation en QR code :
QRCodeWriter.CreateQrCode()fournit des options spécifiques aux QR, y compris l'intégration de logos et le niveau de correction d'erreur. - Distribution NuGet : Installation standard
dotnet add package IronBarcode;dotnet restoregère toutes les dépendances - Multiplateforme : Fonctionne sur .NET 5, 6, 7, 8 et 9 sous Windows, Linux et macOS, y compris les conteneurs Dockeret les environnements d'exécution cloud sans serveur.
- Produit commercial actif : mises à jour régulières, correctifs de sécurité, mises à jour de compatibilité avec les versions .NET et licences disponibles à l'achat à des prix définis.
Comparaison des fonctionnalités
Le tableau suivant met en évidence les différences les plus importantes entre Barcode4NETet IronBarcode:
| Fonction | Barcode4NET | Code-barres IronBarcode |
|---|---|---|
| package NuGet | Non — DLL manuelle uniquement | Oui (IronBarcode) |
| génération de codes-barres | Oui | Oui |
| Lecture de codes-barres | Non | Oui |
| Prise en charge multiplateforme | Non — Windows uniquement | Oui — Windows, Linux, macOS |
| Maintenance active | Non (fin de vie) | Oui |
| Nouvelles licences disponibles | Non | Oui |
Comparaison détaillée des fonctionnalités
| Fonction | Barcode4NET | Code-barres IronBarcode |
|---|---|---|
| Génération | ||
| Génération Code128 | Oui | Oui |
| Génération Code39 | Oui | Oui |
| Génération EAN-13 / UPC-A | Oui | Oui |
| génération de code QR | Non | Oui — QRCodeWriter.CreateQrCode() |
| Code QR avec logo | Non | Oui — .AddBrandLogo() |
| Data Matrix / PDF417 | Oui | Oui |
| Aztèque | Non | Oui |
| API chaînable fluide | Non | Oui |
| En lisant | ||
| Lecture de codes-barres à partir d'images | Non | Oui — BarcodeReader.Read() |
| Lecture de codes-barres à partir de fichiers PDF | Non | Oui, natif, sans bibliothèque supplémentaire |
| Détection de plusieurs codes-barres | Non | Oui — ExpectMultipleBarcodes |
| configuration de vitesse de lecture | Non | Oui — enum ReadingSpeed |
| Plateforme | ||
| .NET Framework | Oui | Oui (.NET Framework 4.6.2+) |
| .NET 5 / 6 / 7 / 8 / 9 | Non | Oui |
| Linux / macOS | Non | Oui |
| Docker | Non | Oui |
| Azure / AWS Lambda | Non | Oui |
| Distribution | ||
| Paquet NuGet | Non | Oui |
dotnet restore compatible |
Non | Oui |
| Intégration CI/CD | Étapes manuelles de la DLL | Restauration standard |
| Maintenance | ||
| Développement actif | Non (fin de vie) | Oui |
| correctifs de sécurité | Non | Oui |
| Corrections de bugs | Non | Oui |
| Nouvelles licences | Non | Oui — Lite 749 $, Plus 1 499 $, Professional 2 999 $, Illimité 5 999 $ |
Conception d'API de génération
L'API de génération représente le point de comparaison le plus direct entre ces deux bibliothèques, puisque la génération était la seule fonctionnalité offerte par Barcode4NET.
Approche Barcode4NET
Barcode4NET utilisait un modèle de définition de propriétés impératif. Les développeurs instancient un objet Barcode, assignent des propriétés individuelles, et appellent GenerateBarcode() pour recevoir un System.Drawing.Bitmap :
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public Bitmap GenerateLabel(string sku)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
return barcode.GenerateBarcode();
}
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public Bitmap GenerateLabel(string sku)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
return barcode.GenerateBarcode();
}
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Public Function GenerateLabel(sku As String) As Bitmap
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = sku
barcode.Width = 400
barcode.Height = 120
Return barcode.GenerateBarcode()
End Function
Le type de retour — System.Drawing.Bitmap — signifiait que le code appelant était responsable de sauvegarder, d'afficher ou de diffuser l'image. Cela était approprié pour les applications WinForms où un Bitmap pouvait être assigné directement à un PictureBox, mais nécessitait des étapes de conversion supplémentaires pour toute autre cible de sortie.
Approche IronBarcode
IronBarcode utilise une API statique fluide. Un simple appel de méthode lance la génération, et des méthodes chaînables configurent le résultat avant une méthode de sauvegarde ou de conversion terminale :
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public byte[] GenerateLabel(string sku)
{
return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public byte[] GenerateLabel(string sku)
{
return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
}
Imports IronBarCode
Public Function GenerateLabel(sku As String) As Byte()
Return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
.ResizeTo(400, 120) _
.ToPngBinaryData()
End Function
L'enum BarcodeEncoding correspond directement à l'enum Symbology. .ResizeTo() remplace les assignations de propriétés Width et Height. Les méthodes terminales — .SaveAsPng(), .SaveAsJpeg(), .ToPngBinaryData() — remplacent les appels séparés de GenerateBarcode() et de sauvegarde bitmap. Pour des scénarios de génération plus avancés, consultez la documentation sur la génération de codes-barres IronBarcode .
Capacité de lecture des codes-barres
La capacité de lecture représente la plus grande différence de capacités entre ces deux bibliothèques. Barcode4NETn'a jamais proposé la lecture de codes-barres dans aucune de ses versions. Code-barres IronBarcode intègre des fonctionnalités de lecture complètes dans le même package que la génération.
Approche Barcode4NET
Barcode4NET ne disposait pas d'API de lecture. Les équipes qui devaient décoder les codes-barres à partir d'images ou de documents numérisés devaient intégrer une bibliothèque entièrement distincte : soit ZXing .NET, une alternative open source, soit un SDK de scanner commercial. Il en a résulté deux chaînes de dépendances distinctes : Barcode4NETpour la génération et une seconde bibliothèque pour la lecture.
Approche IronBarcode
IronBarcode fournit BarcodeReader.Read() comme méthode statique qui accepte les chemins de fichiers image, les objets flux, et les documents PDF :
using IronBarCode;
// Read from an image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Format: {result.Format}");
}
// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
using IronBarCode;
// Read from an image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Format: {result.Format}");
}
// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
Imports IronBarCode
' Read from an image file
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"Value: {result.Value}")
Console.WriteLine($"Format: {result.Format}")
Next
' Read all barcodes from a multi-page PDF — no extra PDF library required
Dim pdfResults = BarcodeReader.Read("invoice-batch.pdf")
For Each result In pdfResults
Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
Pour des scénarios d'images à haut volume ou bruyantes, la classe BarcodeReaderOptions offre un contrôle sur la vitesse de lecture et la détection multi-code-barres. Consultez la documentation relative à la lecture des codes-barres pour connaître les options de configuration.
Couverture de la plateforme et du déploiement
La prise en charge de la plateforme représente la différence la plus importante pour les équipes qui entreprennent des projets de modernisation .NET .
Approche Barcode4NET
Barcode4NET a été compilé avec les assemblys du .NET Framework. Il fonctionnait sous Windows, dans les applications .NET Framework, dans les projets Web Forms et Windows Forms hébergés sur IIS. Il n'y avait pas de versions Linux, pas de versions .NET Core , ni de prise en charge du runtime cloud. Lorsque Microsoft a introduit .NET Core , puis a unifié la plateforme sous le nom de .NET 5+, Barcode4NETn'a bénéficié d'aucune mise à jour correspondante. Tout projet ciblant net5.0 ou plus tard ne pouvait pas référencer la bibliothèque du tout.
Le modèle de distribution des DLL a accentué la contrainte de la plateforme. Chaque environnement de compilation (poste de travail du développeur, agent de compilation, conteneur Docker) nécessitait que la DLL soit présente à un emplacement connu. Dans les déploiements basés sur des conteneurs, cela signifiait soit intégrer le DLL dans une image de base personnalisée, soit le copier lors de la construction du conteneur, ce qui n'est compatible avec aucun des flux de travail standard dotnet restore.
Approche IronBarcode
IronBarcode cible plusieurs frameworks à partir d'un seul package NuGet : .NET Framework4.6.2 à .NET 9, et toutes les versions actuelles de .NET sur Windows, Linux et macOS. Le déploiement sur des conteneurs Dockerutilise les images d'exécution .NET standard sans modification. Azure Functions, AWS Lambda et d'autres environnements d'exécution sans serveur sont pris en charge par le même package NuGet . La commande dotnet restore résout toutes les dépendances sans aucune gestion de DLL manuelle.
Architecture des licences et statut du fournisseur
La situation des licences pour Barcode4NETn'est pas un point concurrentiel — c'est une contrainte pratique qui influence chaque décision quant à la poursuite ou non de l'utilisation de la bibliothèque.
Approche Barcode4NET
Barcode4NET est effectivement en fin de vie. De nouvelles licences ne sont plus vendues via ComponentSource, bien que les clients existants puissent renouveler le Support et les Mises à jour logicielles via ComponentSource selon les termes du fournisseur. Si un nouveau développeur rejoint une équipe utilisant Barcode4NET, il n'y a aucun mécanisme pour acheter une place supplémentaire pour eux. La dernière version du code était la version 2.0 en 2007, donc tout défaut ou problème de sécurité découvert depuis cette version n'est pas traité par des correctifs.
Approche IronBarcode
IronBarcode est un produit commercial activement maintenu avec une licence perpétuelle. Les niveaux commencent à 749 $ pour une licence Lite mono-développeur, avec les niveaux Plus (1 499 $, 3 développeurs), Professional (2 999 $, 10 développeurs) et Illimité (5 999 $) disponibles. Tous les niveaux incluent un déploiement sans redevance. Les correctifs de sécurité, les corrections de bogues et les mises à jour de compatibilité avec les versions .NET sont déployés à un rythme de publication régulier. Un essai gratuit de 30 jours est disponible pour évaluation sans clé de licence.
Référence de mappage d'API
| Barcode4NET | Code-barres IronBarcode |
|---|---|
new Barcode4NET.Barcode() |
BarcodeWriter.CreateBarcode(data, encoding) |
barcode.Symbology = Symbology.Code128 |
BarcodeEncoding.Code128 (paramètre à CreateBarcode) |
barcode.Data = "ITEM-12345" |
Premier paramètre de CreateBarcode() |
barCode.Width = 300 ; hauteur du code-barres = 100 |
.ResizeTo(300, 100) |
barcode.GenerateBarcode() retourne Bitmap |
.SaveAsPng(path) / .ToPngBinaryData() |
Symbology.Code39 |
BarcodeEncoding.Code39 |
Symbology.EAN13 |
BarcodeEncoding.EAN13 |
Symbology.UPCA |
BarcodeEncoding.UPCA |
Symbology.DataMatrix |
BarcodeEncoding.DataMatrix |
Symbology.PDF417 |
BarcodeEncoding.PDF417 |
| (QR Code not supported in Barcode4NET) | BarcodeEncoding.QRCode |
Gestion manuelle de DLL <Reference Include="Barcode4NET">| <PackageReference Include="IronBarcode" /> |
|
| API de lecture indisponible | BarcodeReader.Read(path) |
| Prise en charge des fichiers PDF non disponible | BarcodeReader.Read("doc.pdf") natif |
| .NET Frameworkuniquement | .NET Framework4.6.2 à .NET 9 |
Lorsque les équipes envisagent de passer de Barcode4NETà IronBarcode
Mise à niveau .NET bloquée
L'événement déclencheur le plus courant est un projet de modernisation .NET . Une équipe cible net8.0 dans leur .csproj, exécute la compilation, et rencontre un échec de chargement car Barcode4NETa été construit pour .NET Framework1.1 / 2.0 / 3.x et ne peut pas être référencé à partir d'une cible .NET moderne. À ce stade, l'équipe est confrontée à un choix binaire : revenir sur la modification du framework cible et rester sur .NET Framework, ou remplacer Barcode4NET. La migration ne peut être reportée sans bloquer l'effort de modernisation plus large.
Échecs des pipelines CI/CD suite à des modifications d'infrastructure
Le modèle de distribution de DLL de Barcode4NETcrée une fragilité latente dans les pipelines de compilation. Lorsqu'un agent de construction est reconfiguré, qu'une image de conteneur est mise à jour ou qu'un nouvel environnement CI est configuré, la DLL Barcode4NETdoit être placée manuellement à l'emplacement attendu par le fichier projet. Les équipes qui n'ont pas soigneusement documenté cette étape ne découvrent le problème que lorsque le processus échoue. Passer à Code-barres IronBarcode signifie dotnet restore gère tout — le problème de l'emplacement du DLL cesse d'exister.
Les nouveaux membres de l'équipe ne peuvent pas obtenir de licence.
Lorsqu'un sous-traitant rejoint le projet ou qu'un deuxième développeur doit travailler sur les fonctionnalités des codes-barres, aucune licence n'est à acheter. L'équipe doit contourner cette contrainte : soit le nouveau développeur évite complètement le code-barres, soit quelqu'un transfère une licence qui pourrait ne pas être légalement transférable selon les termes originaux. Aucune de ces situations n'est viable pour une équipe qui développe activement le produit.
Audits de sécurité et de conformité
Les organisations qui effectuent la génération de nomenclatures logicielles ou vérifient les dépendances par rapport aux bases de données en fin de vie découvrent Barcode4NET. C'est un produit commercial sans version de code depuis 2007 et sans suivi CVE ni flux de correctifs. Les auditeurs de sécurité traitent généralement les dépendances dans cet état différemment des bibliothèques activement maintenues, et la découverte devient souvent un élément de remédiation formel plutôt qu'un risque différé.
Ajout d'une fonctionnalité de lecture à un flux de travail existant
Les équipes qui utilisaient initialement Barcode4NETpour des flux de travail de génération uniquement découvrent par la suite qu'elles doivent vérifier les codes-barres des documents numérisés, traiter les images téléchargées par les utilisateurs ou extraire des données des factures PDF. Avec Barcode4NET, cela nécessite l'intégration d'une seconde bibliothèque. Le BarcodeReader.Read() d'IronBarcode gère à la fois les images et les PDFs nativement, consolidant la dépendance en un seul paquet maintenu.
Considérations courantes en matière de migration
Suppression de la référence DLL
Barcode4NET n'a jamais été distribué en tant que package NuGet, donc il n'y a pas de commande dotnet remove package. Chaque fichier .csproj qui référence la bibliothèque contient un élément <Reference Include="Barcode4NET"> avec un <HintPath> pointant vers le DLL sur le disque. Chacun de ces éléments doit être trouvé et supprimé manuellement. Une recherche grep sur la solution permet de les localiser :
grep -rl "Barcode4NET" --include="*.csproj" .
grep -rl "Barcode4NET" --include="*.csproj" .
Le répertoire DLL dans le contrôle de version — normalement ThirdParty/Barcode4NET/ ou lib/ — doit également être préparé pour suppression avec git rm.
Changement du type de retour : de Bitmap à tableau d'octets
Le GenerateBarcode() de Barcode4NETretourne un System.Drawing.Bitmap. La chaîne fluide d'IronBarcode se termine par .ToPngBinaryData() retournant byte[], ou .SaveAsPng() écrivant directement sur le disque. Le code qui assigne la valeur de retour à une variable de type Bitmap ou la passe à une méthode qui attend un Bitmap — tel qu'un PictureBox WinForms — nécessite une correction en une ligne au site d'appel : envelopper le tableau d'octets dans un MemoryStream et appeler Image.FromStream().
Symbologie Enum Renommer
L'enum Symbology dans Barcode4NETs'aligne directement avec l'enum BarcodeEncoding dans IronBarcode. Toutes les valeurs communes — Code128, Code39, EAN13, UPCA, QRCode — conservent leurs noms. Un remplacement solution-wide de Symbology. avec BarcodeEncoding. couvre la plupart des cas, même si chaque remplacement devrait être revu pour confirmer le contexte.
Nettoyage du script de compilation
Les scripts de compilation et les fichiers de configuration CI/CD qui copient la DLL Barcode4NETdans les répertoires de sortie ou les agents de compilation doivent être mis à jour. Ces étapes n'ont pas d'équivalent après la migration NuGet — dotnet restore remplace toute gestion manuelle de DLL. Laisser en place des étapes de copie de DLL obsolètes après la migration n'entraînera pas d'échecs de compilation, mais elles représentent une configuration morte qui crée de la confusion pour les futurs responsables de la maintenance.
Fonctionnalités supplémentaires IronBarcode
Fonctionnalités disponibles dans Code-barres IronBarcode qui n'ont jamais fait partie de Barcode4NET :
- Lecture de code-barres à partir d'images :
BarcodeReader.Read()décode toutes les principales symbologies 1D et 2D à partir de PNG, JPEG, TIFF et autres formats d'image - Lecture des codes-barres PDF : Prise en charge native de l'entrée PDF — aucune bibliothèque d'extraction PDF supplémentaire requise
- Intégration de logo dans le QR code :
QRCodeWriter.CreateQrCode()avec.AddBrandLogo()pour des QR codes de marque - Génération de formats 2D : Data Matrix, PDF417 et Aztec, en plus des codes QR
- Détection de codes-barres multiples :
BarcodeReaderOptions.ExpectMultipleBarcodestrouve tous les codes-barres dans une seule image - Réglage de la vitesse de lecture : l'enum
ReadingSpeedéquilibre le débit contre la précision pour un traitement à haut volume - Intégration ASP.NET Core : Retourne
byte[]directement à partir de.ToPngBinaryData()pour des réponses d'action de contrôleur propres
Compatibilité .NET et préparation à l'avenir
IronBarcode prend en charge .NET Framework4.6.2 jusqu'à .NET 9, et reçoit des mises à jour de compatibilité à mesure que de nouvelles versions de .NET sont publiées. Barcode4NETcible uniquement .NET Framework1.1 / 2.0 / 3.x et .NET Compact Framework, et n'a pas reçu de sortie depuis 2007. Les équipes sur .NET Framework4.x peuvent migrer vers Code-barres IronBarcode et ensuite mettre à jour librement leur framework cible vers toute version .NET actuelle sans contraintes de bibliothèque de codes-barres.
Conclusion
Barcode4NET et Code-barres IronBarcode représentent différentes étapes de l'histoire du développement des codes-barres .NET . Barcode4NETétait une bibliothèque fonctionnelle et bien conçue pour son époque — une API de définition de propriétés qui générait une sortie bitmap propre pour les applications Windows Forms et Web Forms sur .NET Framework. Code-barres IronBarcode est un produit commercial actuel doté d'une API statique fluide, d'une prise en charge complète de la lecture des codes-barres, d'une couverture d'exécution multiplateforme et d'une distribution NuGet standard.
Cette comparaison est inhabituelle car Barcode4NETn'est plus un produit vivant. Il ne reçoit plus de mises à jour, de correctifs de sécurité ni de nouvelles licences. Les équipes chargées d'évaluer quelle bibliothèque adopter pour un nouveau projet ne rencontreraient pas Barcode4NETlors de cette évaluation ; celle-ci ne concerne que les équipes qui l'utilisent déjà en production et qui décident quand et comment migrer.
Pour les équipes qui utilisent déjà Barcode4NETen production, Code-barres IronBarcode est le remplaçant naturel. Le mappage de l'API est direct, les modifications du code sont superficielles et la sémantique de génération est équivalente. L'avantage est une dépendance qui est réellement maintenue, installable par les nouveaux membres de l'équipe et compatible avec les versions modernes de .NET et les environnements de déploiement.
En toute honnêteté, il ne s'agit pas d'un choix concurrentiel entre deux options viables. Barcode4NETne peut pas être étendu à de nouveaux membres d'équipe, ne peut pas fonctionner sur les versions modernes de .NET et ne peut pas être corrigé pour les problèmes de sécurité. Code-barres IronBarcode peut. La décision de migrer est motivée par ces contraintes pratiques plutôt que par une préférence pour une API ou une comparaison des fonctionnalités.
Questions Fréquemment Posées
Qu'est-ce que Barcode4.NET ?
Barcode4.NET 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 Barcode4.NET et IronBarcode ?
IronBarcode utilise une API statique, sans état, ne nécessitant aucune gestion d'instance, alors que Barcode4.NET requiert 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 Barcode4.NET ?
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 Barcode4.NET 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 à Barcode4.NET ?
Les méthodes statiques d'IronBarcode sont sans état et naturellement à l'abri des threads, ce qui permet d'utiliser directement Parallel.ForEach sans gestion d'instance par thread. Il n'y a pas de plafond de débit, quel que soit le niveau de prix.
Quelles versions de .NET sont prises en charge par IronBarcode ?
IronBarcode prend en charge .NET Framework 4.6.2+, .NET Core 3.1 et .NET 5, 6, 7, 8 et 9 dans un seul package NuGet. Les plates-formes visées sont Windows x64/x86, Linux x64 et macOS x64/ARM.
Comment installer IronBarcode for .NET dans un projet .NET ?
Installez IronBarcode via NuGet : exécutez "Install-Package IronBarCode" dans la console du Package Manager, ou "dotnet add package IronBarCode" dans le CLI. Aucun installateur SDK ou fichier d'exécution supplémentaire n'est nécessaire.
Puis-je évaluer IronBarcode avant l'achat, contrairement à Barcode4.NET ?
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 Barcode4.NET 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 Barcode4.NET vers IronBarcode ?
La migration de Barcode4.NET vers IronBarcode implique principalement le remplacement des appels API basés sur les 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().

