IRONSOFTWAREHOME
COMPARER À D'AUTRES COMPOSANTS

ZXing.Net.MAUI vs Code-barres IronBarcode : Comparaison du Barcode C# MAUI 2026

Curtis Chau
Curtis Chau
Updated: 1 août 2026

ZXing.Net.Maui.Controls v0.7.4. Stable sur NuGet mais encore pré-1.0. Le balayage MAUI Windows n'est pas pris en charge (génération uniquement). Autofocus de l'iPhone 15 Pro documenté comme affecté (problème #260). Fuite de ressources caméra sans Dispose() (problème #164). C'est la bibliothèque que la plupart des développeurs .NET MAUI utilisent en premier lieu — et celle qui fait le plus souvent émerger des problèmes de production avant la mise en production d'un projet.

Comprendre ZXing .NET.MAUI

ZXing .NET.MAUI est un portage .NET MAUI maintenu par la communauté de la bibliothèque de codes-barres ZXing .NET , développée et publiée par Jon Dick (GitHub: Redth) sous la licence MIT. Il fournit un contrôle de caméra XAML, CameraBarcodeReaderView, qui intègre un viseur de balayage en direct dans les pages MAUI. Les développeurs connectent un événement BarcodesDetected pour recevoir les résultats du balayage lorsque la caméra capture des images. La bibliothèque hérite du moteur de format de code-barres complet de ZXing.Net, y compris son enum BarcodeFormats et son modèle de configuration BarcodeReaderOptions.

Le package ZXing.Net.Maui.Controls est enregistré dans MauiProgram.cs via builder.UseBarcodeReader() et est conçu autour du pipeline de caméra mobile pour iOS et Android. La bibliothèque n'est affiliée à aucune organisation commerciale, ne bénéficie d'aucun contrat de niveau de service (SLA) et ne propose aucun niveau d'assistance payant. Sa version v0.7.4 est une version stable NuGet mais reste pré-1.0 sous la version sémantique.

Principales caractéristiques architecturales de ZXing .NET.MAUI :

  • Statut pré-1.0 : Le package NuGet est à v0.7.4 — stable, mais toujours pré-1.0. Les changements d'API de version mineure restent possibles avant la 1.0, le rythme des corrections de bugs dépend du mainteneur communautaire, et il n'y a pas de contrat de support commercial.
  • Balayage iOS et Android : La bibliothèque est construite autour des API de caméra plateforme pour iOS et Android. Windows MAUIprend en charge uniquement la génération — le balayage par caméra n'est pas implémenté. Mac Catalyst est inclus dans la liste de frameworks cibles mais le balayage n'est pas officiellement documenté.
  • Viseur de caméra continu : CameraBarcodeReaderView est un contrôle de caméra en direct qui fonctionne en continu tant que la page est visible. Elle occupe de l'espace à l'écran et nécessite une gestion du cycle de vie des pages.
  • Pas d'implémentation Dispose() : Le contrôle n'implémente pas IDisposable. Les ressources de la caméra ne sont pas officiellement libérées lors de la navigation dans les pages, exigeant une solution manuelle IsDetecting = false dans OnDisappearing() (problème GitHub #164).
  • Problème de mise au point automatique de l'iPhone 15 Pro : le problème GitHub #260 documente que les appareils iPhone 15 Pro et Pro Max (identifiants matériels iPhone16,1 et iPhone16,2) ne parviennent pas à obtenir une mise au point fiable pour la détection de codes-barres. Aucune solution programmatique n'est actuellement disponible.
  • Problème de compatibilité de la caméra Android : le problème GitHub #275 suit les échecs de construction dus à des conflits de compatibilité avec AndroidX Camera 1.5.0, avec une solution en fixant les packages caméra à 1.4.x ou en relevant le minSdkVersion du projet.
  • Hérite de la spécification de format ZXing.Net : Chaque session de balayage nécessite une déclaration explicite des valeurs BarcodeFormats à balayer. Les formats non répertoriés dans BarcodeReaderOptions.Formats sont ignorés en silence, même lorsqu'ils sont visibles dans le cadre de la caméra.
  • Architecture basée uniquement sur la caméra : la bibliothèque ne possède ni API d'entrée de fichier, ni API de lecture de flux, ni capacité d'extraction de codes-barres PDF. Toute numérisation doit être effectuée via le viseur de la caméra en direct.

Architecture CameraBarcodeReaderView

Le contrôle CameraBarcodeReaderView est le composant central de ZXing.Net.MAUI. Il est déclaré en XAML et configuré via une liaison BarcodeReaderOptions. Chaque page l'utilisant doit implémenter OnAppearing et OnDisappearing pour gérer l'état IsDetecting :

<!-- ZXing.Net.Maui XAML: requires xmlns declaration and lifecycle wiring -->
<ContentPage xmlns:zxing="clr-namespace:ZXing.Net.Maui.Controls;assembly=ZXing.Net.MAUI.Controls">
    <zxing:CameraBarcodeReaderView
        x:Name="CameraView"
        Options="{Binding ReaderOptions}"
        BarcodesDetected="OnBarcodesDetected" />
</ContentPage>
XML
// Toggling IsDetecting in lifecycle overrides is the documented pattern
protected override void OnDisappearing()
{
    base.OnDisappearing();
    if (CameraView != null)
        CameraView.IsDetecting = false;  // Non IDisposable on the control
}

protected override void OnAppearing()
{
    base.OnAppearing();
    if (CameraView != null)
        CameraView.IsDetecting = true;
}
C#

Chaque page de numérisation d'une application ZXing .NET.MAUI contient ce modèle de cycle de vie. L'absence de IDisposable signifie que l'état de la caméra doit être géré manuellement via le drapeau IsDetecting plutôt que via le modèle standard Dispose.

Comprendre IronBarcode

IronBarcode est une bibliothèque de codes-barres .NET commercialement prise en charge, développée par Iron Software. Il fournit à la fois la lecture et la génération de codes-barres via une API statique, BarcodeReader.Read(), qui accepte les octets d'image, les chemins de fichiers, les flux et les documents PDF. Dans un contexte MAUI, Code-barres IronBarcode s'associe au MediaPicker intégré de MAUI pour capturer des images via la caméra du système, puis traite l'image résultante après la capture plutôt que de traiter un flux de caméra continu.

La bibliothèque cible toutes les plateformes MAUI — iOS, Android, Windows et macOS — via le même package et les mêmes chemins de code. Aucun enregistrement de service spécifique à la plateforme n'est requis dans MauiProgram.cs, aucun contrôle de visualisation de caméra n'est intégré dans XAML, et aucune gestion du cycle de vie n'est nécessaire car Code-barres IronBarcode ne maintient pas d'état de caméra en cours d'exécution.

Caractéristiques principales d' IronBarcode:

  • Version commerciale stable : publiée sous forme de package NuGet prêt pour la production avec support commercial, SLA et un rythme de publication régulier.
  • Toutes les plateformes MAUI : Prend en charge les cibles MAUI iOS, Android, Windows et macOS à partir d'un seul package et d'un seul modèle de code.
  • API sans état : BarcodeReader.Read() est un appel de méthode statique. Aucun processus en arrière-plan ne s'exécute entre les analyses, aucun hook de cycle de vie n'est requis et aucune ressource de la caméra ne s'accumule lors des navigations entre les pages. Détection automatique de tous les formats : détecte automatiquement plus de 50 formats de codes-barres sans liste de spécifications. Aucune configuration n'est requise pour scanner un format inconnu.
  • Lecture de fichiers et de PDF : lit nativement les codes-barres à partir de chemins de fichiers, de tableaux d'octets, de flux et de documents PDF, couvrant des scénarios que les bibliothèques de caméras en direct ne peuvent pas prendre en charge.
  • Récupération de codes-barres endommagés par apprentissage automatique : applique des modèles d'apprentissage automatique pour récupérer les codes-barres à partir d'images endommagées, partiellement masquées ou de faible qualité, au-delà des capacités des algorithmes de seuillage.
  • Génération de codes-barres : Génère tous les principaux formats de codes-barres 1D et 2D sous forme d'images avec une taille, une couleur et une marge configurables.
  • Déploiement multiplateforme : le même package s'exécute dans ASP.NET Core, WPF, WinForms, les applications console, Azure Functions et les conteneurs Docker, parallèlement à MAUI.

Comparaison des fonctionnalités

Le tableau suivant met en évidence les principales différences entre ZXing .NET.MAUI et IronBarcode:

FonctionZXing.Net.MAUICode-barres IronBarcode
État de la publicationStable mais pré-1.0 (v0.7.4)Version stable et commerciale
Support de la plateformeiOS, balayage Android (génération Windows uniquement)iOS, Android, Windows, macOS, serveur
Spécification de format requiseOuiNon (détection automatique)
Gestion des ressources de la caméraManuel (IsDetecting)Non applicable — apatride
Extraction de codes-barres PDFNon disponibleOui
LicenceMIT (gratuit, communautaire)Commercial
Soutien commercialNoneOui

Comparaison détaillée des fonctionnalités

FonctionZXing.Net.MAUICode-barres IronBarcode
Plateforme
iOS MAUIOui (problème de mise au point iPhone 15 Pro #260)Oui
Android MAUIOui (problème de build Camera 1.5.0 #275)Oui
Windows MAUIGénération uniquement — balayage non implémentéOui
macOS MAUIMac Catalyst ciblé ; balayage pas officiellement documentéOui
ASP.NET Core / ServeurNonOui
WPF / WinFormsNonOui
Azure Functions / DockerNonOui
.NET Framework 4.6.2+NonOui
En lisant
Détection automatique du formatNon — il faut préciser les formatsOui (plus de 50 formats)
Saisie du chemin de fichierVia ZXing .NET Core uniquementOui
Entrée du fluxVia ZXing .NET Core uniquementOui
extraction de codes-barres PDFNonOui
Récupération de codes-barres endommagésTryHarder uniquementOui (basé sur l'apprentissage automatique)
Intégration de la caméra
Contrôle du viseur en directOuiNon (interface utilisateur du système MediaPicker)
Gestion du cycle de vie requiseOui (Détection en cours)Non
implémentation de Dispose()NonSans objet
Mise au point automatique de l'iPhone 15 ProAffecté (problème GitHub #260)Sans objet
Génération
génération de codes-barresOui (via ZXing .NET)Oui
Maintenance
État de la publicationStable mais pré-1.0 (v0.7.4)Prêt pour la production
Soutien commercialNoneOui
garantie de stabilité de l'APIPré-1.0 — changements de version mineure possiblesOui
LicenceMIT (gratuit)Commercial

Support de la plateforme

La couverture de la plateforme est une différence structurelle entre ZXing .NET.MAUI et Code-barres IronBarcode car les deux bibliothèques sont construites sur des hypothèses fondamentalement différentes quant à l'endroit où s'exécutent les applications .NET MAUI .

Approche ZXing .NET.MAUI

ZXing.Net.MAUI est conçu autour des API de caméra plateforme pour iOS et Android. Windows MAUIprend uniquement en charge la génération des codes-barres — le balayage par caméra n'est pas implémenté et n'est pas sur une feuille de route publique. Cela reflète le choix architectural de construire la bibliothèque autour d'un contrôle de viseur de caméra en direct dont les implémentations de plateforme ont été écrites uniquement pour les systèmes d'exploitation mobiles.

Un projet MAUI ciblant net8.0-windows10.0.19041.0 n'obtiendra pas de fonctionnalité de balayage de code-barres de ZXing.Net.MAUI. Mac Catalyst est présent dans la liste des frameworks cibles, mais le balayage sur cette cible n'est pas officiellement documenté. Les équipes qui commencent un projet avec des cibles uniquement mobiles et ajoutent plus tard une exigence Windows ou macOS trouveront que ZXing.Net.MAUI ne peut pas couvrir le balayage sur ces cibles. Le support iOS lui-même comporte une mise en garde : le problème GitHub #260 documente que les appareils iPhone 15 Pro et Pro Max sont affectés par un problème d'autofocus qui empêche la détection fiable.

Approche IronBarcode

IronBarcode prend en charge tous les frameworks cibles MAUI (iOS, Android, Windows et macOS) à partir du même package et du même modèle de code. L'approche MediaPicker + BarcodeReader.Read() s'adapte naturellement à chaque plateforme : sur mobile, MediaPicker.CapturePhotoAsync() invoque la caméra de l'appareil ; Sous Windows, cela correspond au sélecteur de fichiers, ce qui est un comportement approprié pour un environnement de bureau. Aucun code spécifique à la plateforme, aucune compilation conditionnelle et aucun enregistrement de service de plateforme ne sont requis.

Le modèle de code-barres MAUI pour ordinateurs de bureau Windows et macOS est géré par le même package que celui qui gère la numérisation mobile. Le même appel BarcodeReader.Read() qui s'exécute sur un appareil Android s'exécute également dans un point de terminaison ASP.NET Core, une application de bureau WinForms ou une fonction Azure — la cible de déploiement n'affecte pas l'API.

Intégration et cycle de vie de la caméra

Les deux bibliothèques adoptent des positions architecturales opposées sur le fonctionnement de l'accès à la caméra dans une application MAUI.

Approche ZXing .NET.MAUI

CameraBarcodeReaderView est un contrôle de caméra persistant intégré dans la page XAML. Il commence à traiter les images de la caméra lorsque IsDetecting est réglé sur true et s'arrête lorsqu'il est réglé sur false. L'absence d'une implémentation Dispose() signifie que les ressources de la caméra ne sont pas libérées via le modèle standard IDisposable lorsque l'utilisateur se déplace. L'atténuation documentée consiste à régler IsDetecting = false dans OnDisappearing() et à le restaurer dans OnAppearing() :

// ZXing.Net.MAUI: toggle IsDetecting in page lifecycle overrides
protected override void OnDisappearing()
{
    base.OnDisappearing();
    CameraView.IsDetecting = false;
}

protected override void OnAppearing()
{
    base.OnAppearing();
    CameraView.IsDetecting = true;
}

Ce modèle doit être répété sur chaque page contenant un scanner. Les applications qui naviguent fréquemment vers et depuis des pages de balayage peuvent accumuler des ressources caméra qui n'ont pas été entièrement libérées, ce qui est suivi dans le problème GitHub #164 avec des rapports de croissance de la mémoire et d'initialisation intermittente de la caméra au retour. Le problème de mise au point automatique de l'iPhone 15 Pro (problème GitHub #260) est une préoccupation distincte dans la couche d'intégration de la caméra : la vue de la caméra rend le code-barres clairement, mais le système de mise au point automatique ne se verrouille pas suffisamment net pour la détection sur le matériel iPhone16,1 et iPhone16,2. La solution de contournement documentée est d'indiquer à l'utilisateur d'ajuster manuellement la distance entre l'appareil et le code-barres.

Approche IronBarcode

IronBarcode n'intègre pas de contrôle de caméra dans la mise en page XAML. Au lieu de cela, l'appel MediaPicker.CapturePhotoAsync() ouvre l'interface utilisateur de la caméra du système lorsque l'utilisateur appuie sur un bouton. Le système de caméra gère la mise au point, l'exposition et l'autofocus indépendamment. Lorsque l'utilisateur confirme la capture, l'image résultante est transmise à BarcodeReader.Read() sous forme de tableau d'octets :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

private async void ScanButton_Clicked(object sender, EventArgs e)
{
    var photo = await MediaPicker.CapturePhotoAsync();
    if (photo == null) return;

    using var stream = await photo.OpenReadAsync();
    using var ms = new MemoryStream();
    await stream.CopyToAsync(ms);

    var results = BarcodeReader.Read(ms.ToArray());
    foreach (var barcode in results)
        Console.WriteLine($"{barcode.Format}: {barcode.Value}");
}

// Non OnAppearing or OnDisappearing needed — no camera state to manage
C#

Le tutoriel sur le lecteur de codes-barres .NET MAUI couvre la configuration complète du projet pour ce modèle, y compris la configuration des autorisations pour iOS et Android. Puisqu'il n'y a pas de vue caméra persistante, il n'y a pas de ressource à libérer, pas d'état à basculer et pas de code de cycle de vie à maintenir d'une page à l'autre.

Spécification du format

La manière dont une bibliothèque gère la détection du format des codes-barres a des conséquences directes sur la fiabilité de la numérisation dans les déploiements réels.

Approche ZXing .NET.MAUI

ZXing .NET.MAUI hérite des exigences de spécification de format de ZXing .NET . Avant le début du balayage, le développeur doit remplir BarcodeReaderOptions.Formats avec un masque binaire des valeurs enum BarcodeFormats qui doivent être détectées. Les formats non inclus dans cette liste ne seront pas détectés — silencieusement, sans erreur ni avertissement :

// ZXing.Net.MAUI: formats must be declared explicitly
// Formats not listed here are not detected
ReaderOptions = new BarcodeReaderOptions
{
    Formats = BarcodeFormats.QRCode |
              BarcodeFormats.Code128 |
              BarcodeFormats.Ean13 |
              BarcodeFormats.UpcA,
    TryHarder = true,
    AutoRotate = true
};

Si un utilisateur pointe la caméra sur un GS1 DataBar, un code Aztec, un MaxiCode, ou tout format qui n'a pas été déclaré dans les options, le balayage ne renvoie aucun résultat sans émettre d'erreur. La caméra rend le code-barres et aucun résultat n'est renvoyé à l'application. Dans un environnement contrôlé — un entrepôt où chaque article porte une étiquette Code128 —, cela est gérable. Dans les déploiements où les formats de code-barres sont déterminés par des fournisseurs externes, des clients, ou des systèmes tiers, l'absence d'un chemin de secours devient un problème de support récurrent.

Approche IronBarcode

IronBarcode effectue une détection automatique du format pour tous les formats pris en charge, sans aucune préconfiguration. BarcodeReader.Read() analyse l'image et renvoie les résultats pour chaque code-barres qu'il identifie, quel que soit le format. Aucune liste BarcodeReaderOptions n'est requise :

// IronBarcode: no format specification needed
// All 50+ formats detected automatically
var results = BarcodeReader.Read(imageBytes);
foreach (var barcode in results)
    Console.WriteLine($"{barcode.Format}: {barcode.Value}");

Si un réglage des performances est nécessaire dans un scénario contrôlé où un seul format est attendu, des indications de format peuvent être transmises en option, mais elles ne sont jamais requises pour une détection correcte. Un code-barres dont le format n'a pas été prévu par le développeur sera tout de même détecté et renvoyé.

Traitement de fichiers et de PDF

Au-delà de la numérisation en direct par caméra, de nombreux flux de travail de production de codes-barres impliquent la lecture de documents stockés : factures d'expédition, billets numériques, images téléchargées et pièces jointes PDF.

Approche ZXing .NET.MAUI

ZXing .NET.MAUI est une bibliothèque de contrôle de caméra. Il ne dispose d'aucune API pour la lecture des codes-barres à partir des chemins de fichiers, des tableaux d'octets transmis directement depuis le stockage ou des documents PDF. Le contrôle CameraBarcodeReaderView nécessite un flux de caméra en direct ; Il n'existe pas de méthode statique qui accepte un chemin de fichier et renvoie des résultats de code-barres. Les équipes qui doivent lire les codes-barres à partir de fichiers PDF téléchargés, de systèmes de gestion de documents ou de files d'attente de traitement d'images par lots ne peuvent pas utiliser ZXing .NET.MAUI pour ces scénarios et doivent introduire une bibliothèque distincte.

Approche IronBarcode

IronBarcode lit les codes-barres à partir de n'importe quelle source via la même méthode BarcodeReader.Read(). Il accepte les chemins de fichiers, les tableaux d'octets, les flux et les documents PDF. L'analyse des PDF est native — Code-barres IronBarcode traite directement les pages PDF sans étape de rastérisation intermédiaire :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Read barcodes from a PDF file
var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format}{barcode.Value}");

// Read from a user-selected file using MAUI FilePicker
var file = await FilePicker.PickAsync();
if (file != null)
{
    var fileResults = BarcodeReader.Read(file.FullPath);
    foreach (var result in fileResults)
        ResultLabel.Text += $"\n{result.Format}: {result.Value}";
}

Le flux de travail complet de lecture des codes-barres PDF, y compris les documents multipages et les formats de codes-barres mixtes sur plusieurs pages, est documenté dans le guide de lecture des codes-barres à partir de PDF . Cela couvre les factures d'expédition, les billets numériques, les flux de travail de gestion de documents et les scénarios de traitement par lots que l'architecture uniquement basée sur la caméra de ZXing .NET.MAUI ne peut pas prendre en charge.

Référence de mappage d'API

ZXing.Net.MAUICode-barres IronBarcodeNotes
builder.UseBarcodeReader()Non requisRetirer de MauiProgram.cs
xmlns:zxing="clr-namespace:ZXing.Net.Maui.Controls;..."Non requisSupprimer la déclaration d'espace de noms XAML
<zxing:CameraBarcodeReaderView>Remplacer par <Button> + MediaPickerChangement architectural
Options="{Binding ReaderOptions}"Non requisAucun objet d'options nécessaire
BarcodesDetected="OnBarcodesDetected"Valeur de retour BarcodeReader.Read()Événement → retour de méthode
new BarcodeReaderOptions { Formats = BarcodeFormats.X | ... }Non requisLa détection automatique remplace ceci
BarcodeDetectionEventArgs eIEnumerable<BarcodeResult>Modèle de prestation de résultats différent
e.ResultsValeur de retour de BarcodeReader.Read()
barcode.Valueresult.ValueMême nom de propriété
barcode.Formatresult.FormatMême nom de propriété
BarcodeFormats.QRCodeBarcodeEncoding.QRCoderenommer l'énumération
BarcodeFormats.Code128BarcodeEncoding.Code128renommer l'énumération
BarcodeFormats.Ean13BarcodeEncoding.EAN13renommer l'énumération
CameraView.IsDetecting = false (OnDisappearing)Non requis — supprimez la méthodeCode-barres IronBarcode est sans état
CameraView.IsDetecting = true (OnAppearing)Non requis — supprimez la méthodeCode-barres IronBarcode est sans état
API sans fichierBarcodeReader.Read("path/to/file.png")Nouvelle capacité
API PDF indisponibleBarcodeReader.Read("document.pdf")Nouvelle capacité

Lorsque les équipes envisagent de passer de ZXing .NET.MAUI à IronBarcode

Plusieurs scénarios concrets motivent la décision d'évaluer Code-barres IronBarcode comme alternative à ZXing .NET.MAUI. Il s'agit de conditions au niveau du projet et du produit, et non de préférences de mise en œuvre.

Configuration requise pour Windows MAUI

Le déclencheur le plus courant d'une réévaluation est l'ajout d'une cible Windows MAUIà un projet qui a débuté uniquement pour iOS et Android. Les équipes MAUI commencent souvent par des versions optimisées pour les mobiles et étendent ensuite leur utilisation aux ordinateurs de bureau à mesure que les besoins évoluent. Lorsque cette expansion aura lieu, ZXing .NET.MAUI ne propose aucune solution de rechange : la plateforme Windows n'est pas implémentée et ne figure pas dans la feuille de route publique. L'équipe doit soit accepter que la lecture de codes-barres ne soit pas disponible sous Windows, soit remplacer la bibliothèque. Étant donné que le remplacement implique de toute façon une modification structurelle du schéma de numérisation, les équipes effectuent généralement le changement simultanément sur toutes les plateformes.

Compatibilité matérielle de génération actuelle

Le problème de mise au point automatique de l'iPhone 15 Pro (problème GitHub #260) est une réelle considération pour toute équipe qui expédie un scanner de code-barres en production aux utilisateurs iOS. Les iPhone 15 Pro et Pro Max sont courants dans le segment des consommateurs qui s'attendent à une expérience d'application raffinée, et une solution de contournement demandant aux utilisateurs d'ajuster leur distance par rapport à un code-barres est une régression UX notable par rapport aux anciens matériels iPhone. Les équipes qui rencontrent ce problème en QA, ou reçoivent des rapports de support des utilisateurs iPhone 15 Pro, font face à un choix entre rester sur une bibliothèque où aucune solution n'est actuellement disponible ou migrer vers une approche qui n'est pas affectée par le modèle de mise au point de vue de la caméra.

Traitement des fichiers et des documents

Les exigences en matière de lecture de codes-barres se limitent rarement à la capture vidéo en direct. Les applications qui débutent comme scanners d'inventaire s'étendent fréquemment pour inclure la lecture de codes-barres à partir de fichiers PDF téléchargés, le traitement des factures d'expédition ou la gestion des billets numériques provenant de pièces jointes aux courriels. ZXing .NET.MAUI ne dispose d'aucune API pour aucun de ces scénarios. Lorsqu'une exigence produit est ajoutée au backlog et implique la lecture d'un code-barres à partir d'un fichier ou d'un document, les équipes utilisant ZXing .NET.MAUI doivent introduire une bibliothèque distincte pour la gérer. Si l'équipe utilise déjà Code-barres IronBarcode pour l'un de ces scénarios basés sur des fichiers, l'intégration de la numérisation par caméra MAUI dans la même bibliothèque devient la prochaine étape naturelle.

Exigences de stabilité de la production

La désignation pré-1.0 à la version v0.7.4 — bien que le package lui-même soit une version NuGet stable — a des implications pour les équipes soumises à l'analyse de la composition logicielle, aux audits de dépendance, ou aux processus d'approbation internes. Certains environnements d'entreprise exigent que les dépendances de production portent une version stable 1.0+, un contrat de support commercial, ou les deux. ZXing.Net.MAUI est maintenu par la communauté et pré-1.0, ce qui est adapté aux outils internes et aux prototypes mais ajoute des étapes de révision dans les applications destinées aux clients où le scanner de code-barres est un flux de travail principal. L'absence de niveau de support payant signifie que tout bug critique dépend de la disponibilité du mainteneur communautaire.

Considérations courantes en matière de migration

Le changement structurel de ZXing .NET.MAUI à Code-barres IronBarcode implique trois remplacements techniques spécifiques qui affectent chaque fichier du code source participant à la lecture des codes-barres.

Modèle CameraBarcodeReaderView vers MediaPicker

Le contrôle XAML CameraBarcodeReaderView et sa déclaration de namespace xmlns:zxing sont entièrement supprimés. Dans chaque fichier XAML contenant une vue de scan, le remplacement est un contrôle Button qui invoque MediaPicker.CapturePhotoAsync() dans son gestionnaire Clicked. Le modèle orienté événement — où les résultats arrivent via BarcodesDetected — est remplacé par la lecture de la valeur de retour de BarcodeReader.Read() directement dans le gestionnaire asynchrone.

Détection de la suppression du cycle de vie

Chaque OnAppearing et OnDisappearing substitution qui existe uniquement pour basculer CameraView.IsDetecting peut être supprimée. Si ces substitutions contiennent d'autres logiques de cycle de vie de la page, les lignes IsDetecting sont supprimées et la logique restante est préservée. Il n'y a pas d'équivalent Code-barres IronBarcode à IsDetecting car il n'y a pas d'état de caméra persistant à gérer entre les navigations de pages.

Suppression de l'enregistrement UseBarcodeReader()

ZXing.Net.MAUI nécessite un appel builder.UseBarcodeReader() unique dans MauiProgram.cs pour enregistrer ses services de caméra de plateforme. Code-barres IronBarcode ne nécessite aucun enregistrement MauiProgram.cs. La ligne UseBarcodeReader() est supprimée, et l'importation de namespace using ZXing.Net.Maui; qui la prend en charge est également supprimée avec la désinstallation du package.

Fonctionnalités supplémentaires IronBarcode

Au-delà des scénarios abordés dans cette comparaison, Code-barres IronBarcode offre des fonctionnalités de code-barres qui vont bien au-delà de ce qu'une commande MAUI basée sur une caméra peut offrir :

  • Balayage de code-barres iOS : Plein support de MAUI iOS utilisant le même modèle MediaPicker + BarcodeReader.Read() — pas de gestion de caméra spécifique à la plateforme, pas de listes de formats, et pas de code généré de cycle de vie.
  • Numérisation de codes-barres Android : numérisation Android MAUIvia la même API unifiée, sans les problèmes de dépendance à Camera 1.5.0 présents dans ZXing .NET.MAUI.
  • Génération de codes-barres : Génère des codes QR, Code128, EAN-13, PDF417, Data Matrix et tous les principaux formats sous forme d'images avec une taille, une couleur, une zone de silence et un niveau de correction d'erreur configurables.
  • Traitement par lots : Lit tous les codes-barres de toutes les pages d'un PDF multipage ou d'un répertoire d'images en un seul appel, en renvoyant les métadonnées du numéro de page avec chaque résultat.
  • Déploiement côté serveur : Le même package NuGet et le même appel BarcodeReader.Read() fonctionnent dans les points de terminaison ASP.NET Core, les fonctions Azure et les containers Docker — un package couvre à la fois le client mobile et le backend serveur.
  • Récupération de codes-barres endommagés : les modèles d'apprentissage automatique récupèrent les codes-barres à partir d'étiquettes physiquement endommagées, d'impressions à faible contraste et d'images capturées sous des angles sous-optimaux que les décodeurs standard basés sur un seuil ne peuvent pas traiter.
  • Génération de codes-barres stylisés : Génère des codes-barres avec des couleurs personnalisées, des logos intégrés, des coins arrondis et du texte d'annotation, au-delà de la simple sortie monochrome disponible via ZXing .NET.

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

IronBarcode maintient un développement actif avec des mises à jour régulières ciblant les versions actuelles de .NET . La bibliothèque prend en charge .NET 8, .NET 9, et suit les versions .NET ultérieures. Elle prend également en charge .NET Framework 4.6.2 et versions ultérieures pour les environnements d'applications héritées. ZXing.Net.MAUI, en tant que package pré-1.0 maintenu par la communauté, ne porte pas d'engagements formels sur les chronologies de support des versions .NET. Pour les projets MAUI — qui sont liés au rythme de publication de .NET — la disponibilité d'une bibliothèque activement maintenue et bénéficiant d'un support commercial, qui suit chaque version de .NET, est pertinente pour la planification à long terme.

Conclusion

ZXing .NET.MAUI et Code-barres IronBarcode représentent des réponses différentes au même problème — la lecture des codes-barres dans une application .NET MAUI — mais elles partent de prémisses architecturales différentes. ZXing .NET.MAUI intègre un viseur de caméra en direct directement dans la page XAML, fonctionnant comme un contrôle de caméra persistant qui déclenche des événements au fur et à mesure que les images sont analysées. Code-barres IronBarcode traite la caméra comme un dispositif de capture accessible via le MediaPicker du système, en traitant une image statique après la capture plutôt qu'un flux continu. Cette différence d'approche détermine presque tout le reste : la couverture de la plateforme, la complexité du cycle de vie, la gestion des formats et la portée du déploiement.

ZXing.Net.MAUI est véritablement approprié pour des profils de projet spécifiques : applications iOS et Android, prototypes et outils internes, équipes qui connaissent à l'avance leurs formats de code-barres, projets sans exigence de balayage MAUI Windows, et situations où la licence MIT à coût zéro est le facteur décisif. Pour un scanner d'inventaire d'entrepôt sur un ensemble fixe d'appareils Android scannant des étiquettes Code128, ZXing .NET.MAUI fonctionnera correctement. Le statut pré-1.0, le problème iPhone 15 Pro, et le modèle de cycle de vie sont de réels compromis qui valent la peine d'être acceptés dans le bon contexte.

IronBarcode convient lorsque la portée du projet est plus large : cibles MAUI Windows ou macOS, formats de codes-barres inconnus ou variables provenant de systèmes externes, exigences incluant la lecture de codes-barres à partir de fichiers PDF ou de fichiers téléchargés, besoins de stabilité de niveau production ou traitement des codes-barres côté serveur en plus de la numérisation mobile. La licence commerciale est un investissement qui couvre le support, la maintenance et les mises à jour de compatibilité pour toutes les versions de .NET . L'API sans état élimine une catégorie de bugs — fuites de ressources de la caméra, erreurs d'état du cycle de vie — que ZXing .NET.MAUI exige des développeurs qu'ils préviennent manuellement.

En toute honnêteté, aucune des deux bibliothèques n'est universellement correcte. ZXing .NET.MAUI mérite sa place de première bibliothèque essayée par la plupart des développeurs MAUI car elle est gratuite, familière et rapide à intégrer. Les problèmes qu'il soulève sont réels, mais ils n'ont d'importance que dans certaines conditions de projet. Lorsque ces conditions sont réunies (exigence Windows, matériel iPhone de dernière génération, numérisation de fichiers ou normes de stabilité de production), Code-barres IronBarcode les prend toutes en charge. Le choix dépend de si les contraintes spécifiques du projet le placent à l'intérieur ou à l'extérieur des scénarios où les limitations connues de ZXing .NET.MAUI deviennent des obstacles.

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