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

Cloudmersive Barcode API vs IronBarcode : Comparaison de la bibliothèque de codes-barres C#

Avec un volume de 10 000 codes-barres par jour (un chiffre réaliste pour le traitement des factures, la validation des étiquettes d'expédition ou la réception de documents), l'API CloudmersiveBarcode coûte environ 3 650 $ par an. À volume égal, chaque code-barres ajoute 100 à 500 ms au temps d'aller-retour sur le réseau. De plus, chaque document, chaque image, chaque donnée de code-barres quitte votre réseau pour être transférée vers les serveurs de Cloudmersive.

Voilà, en termes simples, le modèle Cloudmersive. Pour les équipes qui découvrent ce problème en cours de projet — après la mise en place de l'intégration et la configuration de la clé API —, ces trois éléments constituent souvent une mauvaise surprise. Cette comparaison vise à les clarifier avant même la mise en place de l'intégration.

Comprendre l'API de code-barres Cloudmersive

Cloudmersive propose une collection d'API REST couvrant la conversion de documents, la reconnaissance optique de caractères (OCR), le traitement d'images et les opérations sur les codes-barres. La fonctionnalité de code-barres ne représente qu'une partie d'un portefeuille d'API plus vaste. Pour les développeurs .NET , Cloudmersivefournit un package client NuGet qui encapsule leurs points de terminaison REST :

// Cloudmersive: HTTP client, per-request billing, data leaves your network
using Cloudmersive.APIClient.NETCore.Barcode.Api;
using Cloudmersive.APIClient.NETCore.Barcode.Client;

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
var apiInstance = new GenerateBarcodeApi();

// Each call = HTTPS request to Cloudmersiveservers
byte[] result = apiInstance.GenerateBarcodeQRCode("https://example.com");
// Cloudmersive: HTTP client, per-request billing, data leaves your network
using Cloudmersive.APIClient.NETCore.Barcode.Api;
using Cloudmersive.APIClient.NETCore.Barcode.Client;

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
var apiInstance = new GenerateBarcodeApi();

// Each call = HTTPS request to Cloudmersiveservers
byte[] result = apiInstance.GenerateBarcodeQRCode("https://example.com");
Imports Cloudmersive.APIClient.NETCore.Barcode.Api
Imports Cloudmersive.APIClient.NETCore.Barcode.Client

Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY")
Dim apiInstance As New GenerateBarcodeApi()

' Each call = HTTPS request to Cloudmersive servers
Dim result As Byte() = apiInstance.GenerateBarcodeQRCode("https://example.com")
$vbLabelText   $csharpLabel

L'important à comprendre concernant ce code, c'est ce qu'il fait réellement : il envoie une requête HTTPS à l'infrastructure de Cloudmersive, attend une réponse et renvoie le résultat. Chaque ligne de traitement des codes-barres dans une intégration Cloudmersivesuit ce modèle. Il n'y a pas de traitement local. Il n'existe pas de voie hors ligne. Chaque opération nécessite une connexion internet active et un serveur Cloudmersivedisponible.

Modèle de client HTTP

Le kit de développement logiciel (SDK) .NET de Cloudmersiveest un client API généré. En dessous, il s'agit d'un HttpClient@ faisant des appels REST. Les conséquences découlent de ce fait :

  • La latence du réseau est inévitable et non négligeable (100 à 500 ms par appel). Vos données transitent entre vos serveurs externes et le serveur lors de chaque opération.
  • Les limites de débit sont appliquées au niveau de l'API.
  • Les clés API expirent et doivent être renouvelées.
  • Les pannes de Cloudmersiveinterrompent complètement le traitement de vos codes-barres.
  • La robustesse de la production nécessite une logique de nouvelle tentative, une gestion des délais d'attente et des disjoncteurs.

Pour la lecture de codes-barres dans une chaîne de traitement de documents — où l'on peut traiter des centaines de documents par heure —, il ne s'agit pas de préoccupations théoriques.

Coût à l'échelle

Cloudmersive utilise une tarification par requête. Le coût exact par requête dépend de votre niveau d'abonnement, mais le modèle de base reste le même à tous les niveaux : chaque opération de code-barres consomme une requête de votre quota mensuel.

Les calculs mathématiques pour des volumes de production courants :

Volumequotidien Volumemensuel Coût annuel (est.) Code-barres IronBarcode
100/jour ~3 000/mois environ 240 $ par an 749 $ (une seule fois)
1 000/jour ~30 000/mois environ 1 200 $ par an 749 $ (une seule fois)
10 000/jour ~300 000/mois environ 3 650 $ par an 749 $ (une seule fois)
50 000/jour ~1 500 000/mois ~18 000 $/an 749 $ (une seule fois)
100 000/jour ~3 000 000/mois environ 36 500 $ par an 749 $ (une seule fois)

La licence perpétuelle Code-barres IronBarcode à 749 $ (Lite, développeur unique) couvre un nombre illimité d'opérations de codes-barres. Il n'y a pas de frais par requête, quel que soit le volume. Une équipe traitant 10 000 codes-barres par jour amortit le coût de la licence en moins de dix jours par rapport à ce qu'elle paierait annuellement à Cloudmersive.

Pour une équipe de 3 développeurs, la licence Plus à 1 499 $ (paiement unique) se compare à 3 650 $ par an pour 10 000 codes-barres par jour. La licence Code-barres IronBarcode est rentabilisée en cinq mois d'économies grâce à Cloudmersive.

La falaise de l'escalade

La tarification à la demande pose un problème spécifique lorsque l'utilisation augmente : le coût est proportionnel au volume. Si votre flux de traitement de documents passe de 2 000 à 20 000 documents par mois, votre facture Cloudmersiveest multipliée par dix. Vos coûts d'ingénierie n'augmentent pas — le même code traite davantage de documents — mais votre facture API, elle, augmente.

IronBarcode ne possède pas cette propriété. Le traitement de dix fois plus de codes-barres ne coûte rien de plus.

Impact de la latence

Chaque opération de lecture de code-barres Cloudmersiveimplique :

  1. Sérialisation de la requête (octets d'image ou données de code-barres)
  2. Établir ou réutiliser une connexion HTTPS
  3. Transmission des données aux serveurs Cloudmersive
  4. Attente du traitement côté serveur
  5. Réception de la réponse
  6. Désérialisation du résultat

La latence mesurée pour les opérations de lecture de codes-barres Cloudmersiveest généralement de 100 à 500 ms par appel, en fonction de la charge du serveur, de la proximité géographique et de la taille de l'image. À 250 ms par appel :

Volume Frais généraux totaux du réseau
10 codes-barres 2,5 secondes
100 codes-barres 25 secondes
1 000 codes-barres 4,2 minutes
10 000 codes-barres 41,7 minutes
100 000 codes-barres ~7 heures

Pour les points de terminaison destinés aux utilisateurs — un formulaire Web où un utilisateur télécharge une image et attend un résultat — une latence de 250 ms sur une seule lecture de code-barres peut être acceptable. Pour les tâches de traitement de documents en arrière-plan, la latence accumulée devient le coût dominant du flux de travail.

Le traitement local d'IronBarcode s'effectue en 10 à 50 ms par code-barres sur un matériel standard. Avec 10 000 codes-barres, cela représente environ 8 minutes au total, contre 41 minutes de surcharge réseau uniquement dans le modèle Cloudmersive.

Latence dans ASP.NET Core

Pour les points de terminaison d'API Web qui doivent respecter les SLA de temps de réponse, la latence de Cloudmersiveconstitue un seuil minimal fixe. Un point de terminaison qui lit un code-barres et renvoie la valeur ne peut pas répondre plus rapidement que 100 ms, quel que soit le matériel du serveur, car le temps d'aller-retour minimal vers une API externe est dicté par la physique du réseau.

IronBarcode traite les données localement. Le seuil de latence est déterminé par votre matériel et la complexité de l'image.

Souveraineté des données

Chaque opération de lecture de code-barres Cloudmersivetransmet des données aux serveurs de Cloudmersive. Pour la lecture des codes-barres, cela signifie que vos images — pouvant contenir des identifiants de patients, des numéros de comptes financiers, des adresses de livraison, des identifiants d'employés ou des données d'inventaire confidentielles — quittent votre réseau.

Les implications en matière de conformité dépendent de votre environnement réglementaire :

Règlement Modèle Cloudmersive Code-barres IronBarcode
HIPAA Les données de santé protégées (PHI) contenues dans les images de codes-barres nécessitent l'utilisation de BAA avec Cloudmersive ; les données quittent le réseau Traitement entièrement local – aucun accord de partenariat commercial (BAA) requis
RGPD Données personnelles transmises à des serveurs américains ; évaluation de l'adéquation requise Aucune transmission de données — RGPD simplifié
ITAR Les données techniques relatives à la défense ne peuvent pas être transmises à des services externes Entièrement local — conforme à la réglementation ITAR dès sa conception
CMMC Les informations non classifiées contrôlées ne peuvent pas transiter par des réseaux externes. Aucun appel réseau externe
FedRAMP Les données du gouvernement américain nécessitent des services cloud autorisés par FedRAMP Non applicable — traitement local
PCI DSS Les données des titulaires de cartes contenues dans les codes-barres nécessitent un traitement spécifique pour la transmission externe Les données ne quittent jamais votre environnement
Réseaux isolés Impossible — nécessite une connexion internet Assistance complète — fonctionne sans accès réseau
Politique interne en matière de données De nombreuses organisations interdisent l'envoi de données opérationnelles à des API tierces. Aucune transmission par un tiers

Pour les charges de travail liées à la santé, la défense, les services financiers ou le gouvernement, le modèle cloud de Cloudmersiveest souvent un obstacle majeur avant même toute évaluation des fonctionnalités ou du coût. Le fait que les données quittent votre réseau est rédhibitoire.

IronBarcode traite tout en local. Les images des codes-barres ne quittent jamais la machine hôte. Aucune donnée n'est transmise.

Fiabilité

Cloudmersive est une dépendance externe. La fiabilité du traitement des codes-barres de votre application est limitée par la disponibilité de Cloudmersive.

Que se passe-t-il lors d'une panne ?

En cas d'interruption de service chez Cloudmersive :

  • Les opérations de lecture de codes-barres échouent ou expirent.
  • Les requêtes de génération de codes-barres renvoient des erreurs
  • Les chaînes de traitement de documents s'arrêtent Toute logique de nouvelle tentative que vous avez implémentée commence à consommer des ressources de calcul en attendant la récupération.

Si le traitement de vos codes-barres fait partie du chemin critique (système de prise de commandes, flux de travail de réception, formulaire d'inscription des patients), une panne de Cloudmersiveentraîne une panne de votre application.

limitation de débit

Cloudmersive applique des limites de requêtes simultanées à chaque niveau de tarification. Sur les niveaux inférieurs, cette limite peut être aussi basse que 1 requête simultanée, ce qui signifie que le traitement parallèle des documents est sérialisé par l'API. Le dépassement de votre quota mensuel entraîne l'échec ou la mise en file d'attente indéfinie des opérations.

Le code de production utilisant Cloudmersivedoit gérer :

// Production Cloudmersivecode requires significant infrastructure
using Cloudmersive.APIClient.NETCore.Barcode.Api;
using Cloudmersive.APIClient.NETCore.Barcode.Client;
using System;
using System.Threading;
using System.Threading.Tasks;

public class CloudmersiveBarcodeService
{
    private readonly BarcodeScanApi _scanApi;
    private static int _requestCount = 0;

    public CloudmersiveBarcodeService()
    {
        Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
        _scanApi = new BarcodeScanApi();
    }

    public async Task<string> ScanWithRetry(byte[] imageBytes, int maxRetries = 3)
    {
        for (int attempt = 1; attempt <= maxRetries; attempt++)
        {
            try
            {
                // Track quota consumption
                Interlocked.Increment(ref _requestCount);

                using var stream = new System.IO.MemoryStream(imageBytes);
                var result = await _scanApi.BarcodeScanImageAsync(stream);

                if (result.Successful == true)
                    return result.RawText;

                throw new InvalidOperationException("Scan unsuccessful");
            }
            catch (ApiException ex) when (ex.ErrorCode == 429)
            {
                // Rate limited — exponential backoff
                if (attempt < maxRetries)
                    await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, attempt)));
                else
                    throw;
            }
            catch (Exception) when (attempt < maxRetries)
            {
                // Network error — retry
                await Task.Delay(TimeSpan.FromMilliseconds(500 * attempt));
            }
        }
        throw new InvalidOperationException("All retry attempts failed");
    }
}
// Production Cloudmersivecode requires significant infrastructure
using Cloudmersive.APIClient.NETCore.Barcode.Api;
using Cloudmersive.APIClient.NETCore.Barcode.Client;
using System;
using System.Threading;
using System.Threading.Tasks;

public class CloudmersiveBarcodeService
{
    private readonly BarcodeScanApi _scanApi;
    private static int _requestCount = 0;

    public CloudmersiveBarcodeService()
    {
        Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY");
        _scanApi = new BarcodeScanApi();
    }

    public async Task<string> ScanWithRetry(byte[] imageBytes, int maxRetries = 3)
    {
        for (int attempt = 1; attempt <= maxRetries; attempt++)
        {
            try
            {
                // Track quota consumption
                Interlocked.Increment(ref _requestCount);

                using var stream = new System.IO.MemoryStream(imageBytes);
                var result = await _scanApi.BarcodeScanImageAsync(stream);

                if (result.Successful == true)
                    return result.RawText;

                throw new InvalidOperationException("Scan unsuccessful");
            }
            catch (ApiException ex) when (ex.ErrorCode == 429)
            {
                // Rate limited — exponential backoff
                if (attempt < maxRetries)
                    await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, attempt)));
                else
                    throw;
            }
            catch (Exception) when (attempt < maxRetries)
            {
                // Network error — retry
                await Task.Delay(TimeSpan.FromMilliseconds(500 * attempt));
            }
        }
        throw new InvalidOperationException("All retry attempts failed");
    }
}
Imports Cloudmersive.APIClient.NETCore.Barcode.Api
Imports Cloudmersive.APIClient.NETCore.Barcode.Client
Imports System
Imports System.Threading
Imports System.Threading.Tasks

Public Class CloudmersiveBarcodeService
    Private ReadOnly _scanApi As BarcodeScanApi
    Private Shared _requestCount As Integer = 0

    Public Sub New()
        Configuration.Default.ApiKey.Add("Apikey", "YOUR-CLOUDMERSIVE-API-KEY")
        _scanApi = New BarcodeScanApi()
    End Sub

    Public Async Function ScanWithRetry(imageBytes As Byte(), Optional maxRetries As Integer = 3) As Task(Of String)
        For attempt As Integer = 1 To maxRetries
            Try
                ' Track quota consumption
                Interlocked.Increment(_requestCount)

                Using stream As New System.IO.MemoryStream(imageBytes)
                    Dim result = Await _scanApi.BarcodeScanImageAsync(stream)

                    If result.Successful = True Then
                        Return result.RawText
                    End If

                    Throw New InvalidOperationException("Scan unsuccessful")
                End Using
            Catch ex As ApiException When ex.ErrorCode = 429
                ' Rate limited — exponential backoff
                If attempt < maxRetries Then
                    Await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, attempt)))
                Else
                    Throw
                End If
            Catch ex As Exception When attempt < maxRetries
                ' Network error — retry
                Await Task.Delay(TimeSpan.FromMilliseconds(500 * attempt))
            End Try
        Next
        Throw New InvalidOperationException("All retry attempts failed")
    End Function
End Class
$vbLabelText   $csharpLabel

IronBarcode n'exige rien de tout cela. Il n'y a pas de limites de débit, pas de clés API, pas d'infrastructure de nouvelle tentative, pas de suivi des quotas :

// IronBarcode: local, instant, no cost per call
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Generate — no network call
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

// Read — no network call
var result = BarcodeReader.Read("barcode.png").First();
Console.WriteLine(result.Value);
// IronBarcode: local, instant, no cost per call
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Generate — no network call
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

// Read — no network call
var result = BarcodeReader.Read("barcode.png").First();
Console.WriteLine(result.Value);
Imports IronBarCode

' IronBarcode: local, instant, no cost per call
' NuGet: dotnet add package IronBarcode

IronBarCode.License.LicenseKey = "YOUR-KEY"

' Generate — no network call
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode) _
    .SaveAsPng("qr.png")

' Read — no network call
Dim result = BarcodeReader.Read("barcode.png").First()
Console.WriteLine(result.Value)
$vbLabelText   $csharpLabel

Aucune logique de nouvelle tentative. Aucune gestion des limites de débit. Aucune gestion des exceptions HTTP. Pas de gestion des quotas.

Comprendre IronBarcode

IronBarcode est une bibliothèque .NET native qui traite les codes-barres entièrement sur la machine hôte. Elle prend en charge la lecture et la génération de plus de 50 formats de codes-barres, traite nativement les fichiers PDF et fonctionne sur toutes les plateformes .NET , de .NET Framework 4.6.2 à .NET 9.

Caractéristiques principales :

  • Traitement entièrement local : aucun appel réseau lors de l'opération de lecture de codes-barres
  • Aucun coût par requête : une seule licence couvre un nombre illimité d'opérations de codes-barres
  • Aucune limite de débit : Traitez autant de codes-barres que votre matériel le permet.
  • Aucune dépendance externe à l'exécution : aucune connexion Internet requise
  • Prise en charge native des PDF : lecture des codes-barres directement dans les PDF, sans extraction préalable des images.
  • Lecture et écriture complètes : Générez des codes-barres dans tous les principaux formats, lisez des images, des PDF et des flux de données.
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// QR code generation
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .SaveAsPng("qr.png");

// QR code with brand logo
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .AddBrandLogo("logo.png")
    .SaveAsPng("branded-qr.png");

// Code128 generation
BarcodeWriter.CreateBarcode("SHIP-2024031500428", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

// Get bytes for embedding in document or API response
byte[] bytes = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .ToPngBinaryData();

// Read from image
var results = BarcodeReader.Read("barcode.png");
foreach (var r in results)
{
    Console.WriteLine($"{r.Format}: {r.Value}");
}

// Read from PDF — native, no image extraction step
var pdfResults = BarcodeReader.Read("invoices.pdf");
foreach (var r in pdfResults)
{
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}");
}

// Multi-barcode detection
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};
var multiResults = BarcodeReader.Read("manifest.png", options);
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// QR code generation
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .SaveAsPng("qr.png");

// QR code with brand logo
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .AddBrandLogo("logo.png")
    .SaveAsPng("branded-qr.png");

// Code128 generation
BarcodeWriter.CreateBarcode("SHIP-2024031500428", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

// Get bytes for embedding in document or API response
byte[] bytes = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .ToPngBinaryData();

// Read from image
var results = BarcodeReader.Read("barcode.png");
foreach (var r in results)
{
    Console.WriteLine($"{r.Format}: {r.Value}");
}

// Read from PDF — native, no image extraction step
var pdfResults = BarcodeReader.Read("invoices.pdf");
foreach (var r in pdfResults)
{
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}");
}

// Multi-barcode detection
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};
var multiResults = BarcodeReader.Read("manifest.png", options);
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-KEY"

' QR code generation
QRCodeWriter.CreateQrCode("https://example.com", 500) _
    .SaveAsPng("qr.png")

' QR code with brand logo
QRCodeWriter.CreateQrCode("https://example.com", 500) _
    .AddBrandLogo("logo.png") _
    .SaveAsPng("branded-qr.png")

' Code128 generation
BarcodeWriter.CreateBarcode("SHIP-2024031500428", BarcodeEncoding.Code128) _
    .SaveAsPng("barcode.png")

' Get bytes for embedding in document or API response
Dim bytes As Byte() = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128) _
    .ToPngBinaryData()

' Read from image
Dim results = BarcodeReader.Read("barcode.png")
For Each r In results
    Console.WriteLine($"{r.Format}: {r.Value}")
Next

' Read from PDF — native, no image extraction step
Dim pdfResults = BarcodeReader.Read("invoices.pdf")
For Each r In pdfResults
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}")
Next

' Multi-barcode detection
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True
}
Dim multiResults = BarcodeReader.Read("manifest.png", options)
$vbLabelText   $csharpLabel

Comparaison des fonctionnalités

Fonction API de code-barres Cloudmersive Code-barres IronBarcode
Lieu de traitement Serveurs Cloudmersive Local — uniquement sur votre machine
Internet requis Oui — chaque opération Non
Transmission de données Toutes les images/données sont envoyées à Cloudmersive Aucun
Latence par opération 100–500 ms (réseau) 10–50 ms (local)
Modèle de coût Quota mensuel par demande Licence perpétuelle à usage unique
Coût de 10 000 codes-barres par jour environ 3 650 $ par an 749 $ une fois
Limites de tarifs Oui — simultané et mensuel Aucun
Hors ligne / Isolation physique Pas possible Prise en charge complète
HIPAA Nécessite un accord de partenariat commercial (BAA) ; données laisse réseau Réservé aux résidents locaux – aucune BAA requise
RGPD Données transférées vers des serveurs américains Aucun transfert de données
ITAR / CMMC Transmission externe interdite Conforme dès sa conception
Impact de la panne Votre traitement s'arrête Aucune dépendance externe
Génération de codes-barres Oui Oui
Lecture de codes-barres Oui Oui
Prise en charge native des fichiers PDF Non — extraire les images séparément Oui — lecture directe de PDF
Détection de plusieurs codes-barres Limité Oui - ExpectMultipleBarcodes = true
Récupération de codes-barres endommagés Basique ML-powered, ReadingSpeed.ExtremeDetail
Formats pris en charge Formats courants Plus de 50 formats
Gestion des nouvelles tentatives/erreurs Requis dans le code de production Pas nécessaire
Prise en charge du .NET Framework .NET Core uniquement .NET Framework 4.6.2+ à .NET 9
Docker / Linux via client HTTP Natif
Fonctions Azure via client HTTP Natif

Référence de mappage d'API

Cloudmersive Code-barres IronBarcode
Configuration.Default.ApiKey.Add("Apikey", "key") IronBarCode.License.LicenseKey = "key"
new GenerateBarcodeApi() Statique — aucune instance nécessaire
new BarcodeScanApi() Statique — aucune instance nécessaire
apiInstance.GenerateBarcodeQRCode(value) BarcodeWriter.CreateBarcode(value, BarcodeEncoding.QRCode).ToPngBinaryData()
apiInstance.GenerateBarcodeCode128By(value) BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128).ToPngBinaryData()
apiInstance.GenerateBarcodeEAN13(value) BarcodeWriter.CreateBarcode(value, BarcodeEncoding.EAN13).ToPngBinaryData()
scanApi.BarcodeScanImage(imageFile) BarcodeReader.Read(imageBytes)
result.RawText result.Value
result.Type result.Format
result.Successful == true La collection de résultats n'est pas vide.
HTTPS vers les serveurs Cloudmersive Traitement local — sans réseau
Latence de 100 à 500 ms 10–50 ms local
Consommation mensuelle de quotas Illimité — sans quota
Rotation de la clé API requise Clé de licence unique
Logique de nouvelle tentative requise Pas nécessaire

Quand les équipes changent

Le déclencheur du passage de Cloudmersiveà Code-barres IronBarcode est presque toujours l'une des quatre situations suivantes :

Exigence de conformité : Un examen de sécurité, un contrat client ou un audit réglementaire révèle que des images de codes-barres contenant des données sensibles quittent le réseau. La conformité aux normes HIPAA, RGPD ou ITAR exige un traitement local. L'intégration Cloudmersivedoit être remplacée, quels que soient son coût ou sa praticité.

Coûts imprévus à grande échelle : le projet démarre avec un faible volume d'utilisation couvert par les offres gratuites ou à faible coût de Cloudmersive. À mesure que l'application gagne des utilisateurs ou que le flux de traitement des documents s'accroît, la facture mensuelle augmente proportionnellement. À un certain moment (généralement entre 100 et 200 dollars par mois), l'équipe effectue le calcul du seuil de rentabilité par rapport à la licence perpétuelle d'IronBarcode et décide de migrer.

Environnement isolé : L'application doit fonctionner dans un environnement sans accès à Internet — une usine, une installation gouvernementale, un établissement de santé avec des restrictions de réseau. Cloudmersiveest impossible dans ces environnements. Code-barres IronBarcode fonctionne sans aucune connexion réseau.

Latence dans un SLA : Un accord de niveau de service exige des temps de réponse que la surcharge réseau de Cloudmersiverend impossible à garantir. Le traitement local avec Code-barres IronBarcode permet de réaliser les opérations de codes-barres dans les limites du SLA.

Exemple de pipeline de traitement de documents

Scénario réaliste Enterprise : une équipe de comptabilité fournisseurs traite 2 000 factures par jour. Chaque facture est un PDF comportant un ou plusieurs codes-barres pour le numéro de commande, le code fournisseur et les références des lignes de commande.

Approche immersive dans le cloud :

  • 2 000 factures × 3 codes-barres en moyenne = 6 000 appels API par jour
  • À 250 ms par appel : 25 minutes de temps d'attente réseau par jour
  • Mensuel : environ 180 000 requêtes → niveau d'abonnement important
  • Coût annuel : environ 2 000 $ à 4 000 $
  • Risque : Le traitement s'interrompt si Cloudmersiveest indisponible
  • Conformité : Les factures fournisseurs peuvent contenir des numéros de compte transmis à l'extérieur

Approche IronBarcode :

using IronBarCode;

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

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};

string[] invoicePaths = Directory.GetFiles("invoices", "*.pdf");

foreach (var invoicePath in invoicePaths)
{
    // One call per invoice — processes all pages and all barcodes
    var barcodes = BarcodeReader.Read(invoicePath, options);

    foreach (var barcode in barcodes)
    {
        Console.WriteLine($"Invoice: {invoicePath} | Page: {barcode.PageNumber} | {barcode.Format}: {barcode.Value}");
    }
}
using IronBarCode;

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

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};

string[] invoicePaths = Directory.GetFiles("invoices", "*.pdf");

foreach (var invoicePath in invoicePaths)
{
    // One call per invoice — processes all pages and all barcodes
    var barcodes = BarcodeReader.Read(invoicePath, options);

    foreach (var barcode in barcodes)
    {
        Console.WriteLine($"Invoice: {invoicePath} | Page: {barcode.PageNumber} | {barcode.Format}: {barcode.Value}");
    }
}
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-KEY"

Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True
}

Dim invoicePaths As String() = Directory.GetFiles("invoices", "*.pdf")

For Each invoicePath As String In invoicePaths
    ' One call per invoice — processes all pages and all barcodes
    Dim barcodes = BarcodeReader.Read(invoicePath, options)

    For Each barcode In barcodes
        Console.WriteLine($"Invoice: {invoicePath} | Page: {barcode.PageNumber} | {barcode.Format}: {barcode.Value}")
    Next
Next
$vbLabelText   $csharpLabel
  • 2 000 factures traitées localement en quelques minutes, et non 25 minutes de latence réseau.
  • Coût annuel : 749 $ (un seul développeur)
  • Risque : Aucune dépendance externe
  • Conformité : Les données de facturation ne quittent jamais le réseau

Conclusion

L'API CloudmersiveBarcode est un service REST cloud. Son prix est proportionnel à votre utilisation. Sa latence est déterminée par Internet. Sa disponibilité dépend de l'infrastructure de Cloudmersive. Vos données sont transmises à des serveurs externes à chaque opération de lecture de code-barres.

Ce sont des propriétés structurelles du modèle d'API cloud, et non des critiques spécifiques à Cloudmersive. Ce modèle convient parfaitement au prototypage en petite série ou aux applications où aucune de ces propriétés n'a d'importance. Cela devient coûteux, lent et potentiellement non conforme à mesure que le volume augmente et que les exigences se durcissent.

La licence unique d'IronBarcode à 749 $ couvre un nombre illimité d'opérations de codes-barres, fonctionne localement sans transmission de données, traite les PDF nativement et ne nécessite aucune infrastructure de nouvelle tentative comme le requièrent les intégrations Cloudmersiveen production. Avec 10 000 codes-barres par jour, les calculs sont en faveur d'IronBarcode dès les deux premières semaines.

Questions Fréquemment Posées

Qu'est-ce que l'API BarCode de Cloudmersive ?

Cloudmersive Barcode API 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 Cloudmersive Barcode API et IronBarcode ?

IronBarcode utilise une API statique, sans état, ne nécessitant aucune gestion d'instance, tandis que l'API BarCode de Cloudmersive nécessite généralement la création et la configuration d'une instance avant utilisation. IronBarcode offre également une prise en charge native des PDF, une détection automatique des formats et une licence à clé unique dans tous les environnements.

IronBarcode est-il plus facile à licencier que Cloudmersive Barcode API ?

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 Cloudmersive Barcode API 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 à l'API de codes-barres de Cloudmersive ?

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

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 Cloudmersive Barcode API 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 l'API BarCode de Cloudmersive vers IronBarcode ?

La migration de Cloudmersive Barcode API vers IronBarcode implique principalement le remplacement des appels d'API basés sur des 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