IRONSOFTWAREHOME
VIDÉOS

Passer de Accusoft BarcodeXpressà IronBarcode

Curtis Chau
Curtis Chau
Updated: 3 mai 2026

La majeure partie du travail lié à cette migration consiste à supprimer des données. Le système de licence à deux clés — SetSolutionName, SetSolutionKey, et SetOEMLicenseKey pour l'exécution — disparaît entièrement. Les opérations de code-barres réelles (lire une image, écrire un code-barres sur un fichier) sont traduites en équivalents plus courts d'IronBarcode. Si votre base de code comporte une classe BarcodeService qui encapsule BarcodeXpress, le code de licence en est souvent une grande partie. Après la migration, cette classe se réduit.

Pourquoi migrer depuis Accusoft BarcodeXpress?

Les équipes migrant depuis BarcodeXpress signalent les déclencheurs suivants :

Mode d'évaluation bloque le benchmarking précis : Sans une clé OEM/exécution valide, BarcodeXpress tamponne les résultats décodés avec la chaîne littérale " UNLICENSED accusoft.com " et applique le même tampon aux codes-barres 2D générés. Les tests de précision avant l'achat sur des documents réels produisent cette sortie filigranée, vous ne pouvez donc pas vérifier si la bibliothèque lit correctement vos types de scan réels avant de vous engager dans un achat.

La licence à deux clés augmente les frais opérationnels : BarcodeXpress sépare la licence SDK (SetSolutionName + SetSolutionKey) de la licence OEM/exécution (SetOEMLicenseKey). Les pipelines CI/CD, les conteneurs Docker et les orchestrateurs de conteneurs nécessitent chacun la gestion de ces deux systèmes clés comme des secrets distincts. Une clé d'exécution manquante ou invalide revient à une sortie filigranée plutôt qu'à une levée d'erreur, créant un mode d'échec qui peut passer des tests automatisés si les assertions vérifient seulement pour des résultats non nuls.

Cinq licences d'exécution minimum pour tout déploiement en production : même un déploiement sur un seul serveur nécessite l'achat d'au moins cinq licences d'exécution. Les équipes qui gèrent un serveur de production et un serveur de préproduction paient au minimum dix licences d'exécution, indépendamment de leur utilisation réelle.

Limite de 40 PPM pour l'édition standard : L'édition standard limite le traitement à 40 pages par minute. À ce rythme, le traitement d'un lot de 100 000 documents prend environ 41 heures. Pour supprimer cette limitation, il faut passer à l'édition Professional , ce qui entraîne un coût plus élevé par poste de développeur, en plus des licences d'exécution déjà achetées.

Prise en charge native des fichiers PDF non disponible : les fichiers PDF doivent être convertis en images à l'aide d'une bibliothèque distincte avant que BarcodeXpress puisse les lire. Cette dépendance externe engendre un second coût de licence, une étape de conversion et une pression supplémentaire sur la mémoire due au stockage des images de pages rendues.

La sécurité des threads nécessite l'isolation des instances : L'objet reader de BarcodeXpress est à état et n'est pas sûr pour un accès concurrent. Le traitement par lots parallèle nécessite une instance BarcodeXpress entièrement initialisée par thread, avec l'initialisation complète de la licence à deux niveaux répétée dans chaque contexte de thread.

Le problème fondamental

BarcodeXpress nécessite une initialisation en plusieurs étapes, un chargement de Bitmap, et une configuration BarcodeType[] avant que tout code-barres puisse être lu :

using var bitmap = new Bitmap(imagePath);
var barcodeXpress = new BarcodeXpress(".");
barcodeXpress.Licensing.SetSolutionName("AcmeCorp");
barcodeXpress.Licensing.SetSolutionKey(1, 2, 3, 4);
barcodeXpress.Licensing.SetOEMLicenseKey("2.0.OEMLicenseStringFromAccusoft...");

barcodeXpress.reader.BarcodeTypes = new[]
{
    BarcodeType.Code128Barcode,
    BarcodeType.DataMatrixBarcode,
    BarcodeType.QRCodeBarcode
};

Result[] results = barcodeXpress.reader.Analyze(bitmap);
var value = results.FirstOrDefault()?.BarcodeValue;

IronBarcode remplace ce bloc entier par un seul appel statique :

var value = BarcodeReader.Read(imagePath).First().Value;

Comparaison des fonctionnalités Code-barres IronBarcode et d'Accusoft BarcodeXpress

FonctionAccusoft BarcodeXpressCode-barres IronBarcode
Modèle de licenceClé SDK + clé OEM/exécution (achats séparés)Clé perpétuelle unique
Licences d'exécution minimales5 (même pour 1 serveur)Concept de licence sans exécution
Mode d'évaluationValeurs décodées et codes-barres 2D générés estampillés avec " UNLICENSED accusoft.com "Valeurs complètes renvoyées ; filigrane sur le résultat généré uniquement
Limite de débit40 PPM (Édition standard)Aucune limite à aucun niveau
Détection automatique du formatManuel — doit assigner un tableau BarcodeType[] à BarcodeTypesAutomatique pour tous les formats pris en charge
Prise en charge des fichiers PDFNécessite une bibliothèque externe pour rendre les pages en BitmapsNatif — BarcodeReader.Read("doc.pdf")
Style APIBasé sur les instances; entrée bitmap; configuration propriété/méthodeMéthodes de fabrique statiques, API fluide
Sécurité des threadsInstance par thread requiseMéthodes statiques sans état — sûres pour les threads
Configuration de la licence Dockermontage de fichier de licence ou serveur de licencesVariable d'environnement unique
secrets CI/CD requisPaire de clés SDK + clé OEM/exécutionUn secret
.NET Framework / .NET CorePaquets séparés : Accusoft.BarcodeXpress.Net et Accusoft.BarcodeXpress.NetCorePaquet unique IronBarcode (.NET Framework 4.6.2+, .NET Core 3.1+, .NET 5–8)
Linux/macOSOui (via le paquet .NetCore)Oui — Windows x64/x86, Linux x64, macOS x64/ARM
Code QR avec logoSuperposition GDI+ manuelle requiseAddBrandLogo("logo.png") intégré
point d'entrée en matière de prix$1,960+ SDK + minimum 5 licences runtimeLicence perpétuelle à 749 $ (Lite, 1 développeur)
Licence perpétuelleNon standard — contactez le service commercialOui, tous les niveaux

Démarrage rapide : Migration d'Accusoft BarcodeXpress vers IronBarcode

Étape 1 : Remplacer le package NuGet

dotnet remove package Accusoft.BarcodeXpress.NetCore
dotnet add package IronBarcode
SHELL

Étape 2 : Mise à jour des espaces de noms

// Remove
using Accusoft.BarcodeXpressSdk;

// Add
using IronBarCode;

Étape 3 : initialisation de la licence

Ajoutez l'initialisation de la licence une fois au démarrage de l'application dans Program.cs, Startup.cs, ou votre configuration d'injection de dépendances :

// Add once at application startup
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

En production, lisez la clé à partir d'une variable d'environnement ou de votre gestionnaire de secrets :

IronBarCode.License.LicenseKey =
    Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE")
    ?? throw new InvalidOperationException("IronBarcode license key not configured");

Pas de SetSolutionKey, pas de SetOEMLicenseKey, pas d'activation par serveur à l'exécution. Voilà la configuration complète des licences.

Exemples de migration de code

Initialisation de la licence

Approche BarcodeXpress :

using Accusoft.BarcodeXpressSdk;

public class BarcodeService
{
    private readonly BarcodeXpress _barcodeXpress;

    public BarcodeService()
    {
        // Constructor takes the path containing the Barcode Xpress runtime files.
        _barcodeXpress = new BarcodeXpress(".");

        // SDK license
        _barcodeXpress.Licensing.SetSolutionName("AcmeCorp");
        _barcodeXpress.Licensing.SetSolutionKey(1, 2, 3, 4);

        // OEM/runtime license — separate purchase, minimum 5 licenses required.
        // Without this call, decoded values and generated 2D barcodes are
        // stamped with " UNLICENSED accusoft.com ".
        _barcodeXpress.Licensing.SetOEMLicenseKey(
            "2.0.OEMLicenseStringFromAccusoft...");
    }
}

Approche IronBarcode :

using IronBarCode;

// In Program.cs
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");

// BarcodeService no longer needs a constructor or any license management
public class BarcodeService
{
    // Ready to use — no initialization needed
}

Le constructeur BarcodeXpress existe uniquement pour gérer deux systèmes de clés de licence et le chemin d'exécution. Code-barres IronBarcode le remplace par une ligne au démarrage de l'application. La classe BarcodeService ne nécessite aucun constructeur.

Lecture de codes-barres

Approche BarcodeXpress :

using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public string ReadFirstBarcode(string imagePath)
{
    // Analyze takes a System.Drawing.Bitmap; the SDK does not read PDFs directly.
    using var bitmap = new Bitmap(imagePath);

    _barcodeXpress.reader.BarcodeTypes = new[]
    {
        BarcodeType.Code128Barcode,
        BarcodeType.DataMatrixBarcode,
        BarcodeType.QRCodeBarcode
    };

    Result[] results = _barcodeXpress.reader.Analyze(bitmap);

    return results.FirstOrDefault()?.BarcodeValue;
}

Approche IronBarcode :

using IronBarCode;

public string ReadFirstBarcode(string imagePath)
{
    var results = BarcodeReader.Read(imagePath);
    return results.First().Value;
}

Le filtrage par tableau BarcodeTypes et l'étape de chargement new Bitmap(...) disparaissent tous les deux. Code-barres IronBarcode détecte automatiquement le format parmi toutes les symbologies prises en charge et accepte directement un chemin de fichier. Si un fournisseur passe du Code 128 au DataMatrix, Code-barres IronBarcode continue de fonctionner sans aucun changement de code. Les noms des propriétés des résultats changent également : BarcodeValue devient Value, et BarcodeType devient Format. Une fonction de recherche et de remplacement à l'échelle de la solution gère les deux renommages.

Lecture de plusieurs codes-barres à partir d'une seule image

Approche BarcodeXpress :

using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public IReadOnlyList<string> ReadAllBarcodes(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    _barcodeXpress.reader.BarcodeTypes = new[]
    {
        BarcodeType.Code128Barcode,
        BarcodeType.QRCodeBarcode
    };

    Result[] results = _barcodeXpress.reader.Analyze(bitmap);
    return results.Select(r => r.BarcodeValue).ToList();
}

Approche IronBarcode :

using IronBarCode;

public IReadOnlyList<string> ReadAllBarcodes(string imagePath)
{
    var options = new BarcodeReaderOptions { ExpectMultipleBarcodes = true };
    var results = BarcodeReader.Read(imagePath, options);
    return results.Select(r => r.Value).ToList();
}

ExpectMultipleBarcodes indique à Code-barres IronBarcode de continuer le scannage après le premier résultat correspondant, ce qui est utile pour les documents avec plusieurs codes dans différentes régions. Pour plus de détails sur les options de lecture, consultez la documentation de lecture IronBarcode .

Traitement par lots

BarcodeXpress est basé sur les instances et son objet reader est à état, donc le traitement par lots parallèle nécessite une instance par thread avec l'initialisation complète de la licence à deux niveaux répétée par thread. Les méthodes statiques d'IronBarcode sont sans état, donc Parallel.ForEach ne nécessite pas de gestion des instances.

Approche BarcodeXpress :

using System.Collections.Generic;
using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public Dictionary<string, string> ProcessBatch(IEnumerable<string> imagePaths)
{
    var results = new Dictionary<string, string>();

    foreach (var path in imagePaths)
    {
        using var bitmap = new Bitmap(path);
        _barcodeXpress.reader.BarcodeTypes = new[]
        {
            BarcodeType.Code128Barcode,
            BarcodeType.QRCodeBarcode
        };

        Result[] barcodes = _barcodeXpress.reader.Analyze(bitmap);
        if (barcodes.Length > 0)
            results[path] = barcodes[0].BarcodeValue;
    }

    return results;
}

Approche IronBarcode :

using IronBarCode;
using System.Collections.Concurrent;
using System.Threading.Tasks;

public Dictionary<string, string> ProcessBatch(string[] imagePaths)
{
    var results = new ConcurrentDictionary<string, string>();

    Parallel.ForEach(imagePaths, file =>
    {
        var r = BarcodeReader.Read(file);
        var first = r.FirstOrDefault();
        if (first != null)
            results[file] = first.Value;
    });

    return new Dictionary<string, string>(results);
}

Si la limite de 40 pages par minute de l'édition standard de BarcodeXpress vous a obligé à ajouter du code de gestion de la limite de débit (attente entre les groupes de 40, suivi d'un compteur par minute ou ajout de délais), supprimez entièrement ce code. Code-barres IronBarcode n'a pas de limite de débit.

Ajout de la prise en charge des fichiers PDF

BarcodeXpress ne lit pas les codes-barres directement à partir des fichiers PDF. La solution de contournement classique consiste à ajouter une bibliothèque de rendu PDF distincte, à convertir chaque page en image en mémoire, puis à transmettre ces images au lecteur de codes-barres une par une.

Approche BarcodeXpress :

// Requires a separate PDF library (not shown — varies by team choice)
// Pattern: render each PDF page to a Bitmap, then pass it to Analyze.
foreach (Bitmap pageBitmap in pdfRenderer.RenderPages("document.pdf"))
{
    using (pageBitmap)
    {
        _barcodeXpress.reader.BarcodeTypes = Enum.GetValues(typeof(BarcodeType));
        Result[] barcodes = _barcodeXpress.reader.Analyze(pageBitmap);
        // ... collect results
    }
}

Approche IronBarcode :

using IronBarCode;

// One call — no rendering step, no external dependency
var results = BarcodeReader.Read("document.pdf");

foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: [{barcode.Format}] {barcode.Value}");
}

Si Aspose.PDF, PdfiumViewer, itext7, ou toute autre bibliothèque PDF a été ajoutée uniquement pour supporter le flux de travail de lecture de BarcodeXpress, elle peut être retirée après la migration. Voir le guide de lecture de PDF IronBarcode pour des options supplémentaires incluant la sélection de plage de pages.

Génération de codes-barres

Approche BarcodeXpress :

using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public void GenerateBarcode(string data, string outputPath)
{
    _barcodeXpress.writer.BarcodeType = BarcodeType.Code128Barcode;
    _barcodeXpress.writer.BarcodeValue = data;

    // CreateBitmap returns a System.Drawing.Bitmap; persist via Bitmap.Save.
    using Bitmap bitmap = _barcodeXpress.writer.CreateBitmap();
    bitmap.Save(outputPath);
}

Approche IronBarcode :

using IronBarCode;

public void GenerateBarcode(string data, string outputPath)
{
    BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .ResizeTo(400, 100)
        .SaveAsPng(outputPath);
}

La chaîne fluide remplace les affectations de propriétés, l'appel CreateBitmap et l'étape Bitmap.Save. Pour obtenir le code-barres en tant que données binaires pour stockage dans une base de données ou retour d'une API :

byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ToPngBinaryData();

Génération de codes QR

Approche BarcodeXpress :

_barcodeXpress.writer.BarcodeType = BarcodeType.QRCodeBarcode;
_barcodeXpress.writer.BarcodeValue = data;

using Bitmap bitmap = _barcodeXpress.writer.CreateBitmap();
bitmap.Save("qr.png");
// Logo overlay required manual GDI+ drawing on the returned Bitmap

Approche IronBarcode :

using IronBarCode;
using IronSoftware.Drawing;

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

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

// With high error correction (for logo overlays)
QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded-high-ecc.png");

// Colored QR code
QRCodeWriter.CreateQrCode("https://example.com", 300)
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("qr-colored.png");

L'intégration de logos, le niveau de correction d'erreurs et la personnalisation des couleurs sont tous intégrés à l'API Fluent. BarcodeXpress nécessite un dessin manuel GDI+ après l'écriture initiale du fichier pour chacune de ces fonctionnalités. Pour plus d'options de QR code, voir le guide de génération de QR code.

Référence de mappage de l'API Accusoft BarcodeXpressvers IronBarcode

Accusoft BarcodeXpressCode-barres IronBarcode
new BarcodeXpress(".")Méthodes statiques — aucune instance requise
Licensing.SetSolutionName("...")IronBarCode.License.LicenseKey = "key"
Licensing.SetSolutionKey(a, b, c, d)(removed — not needed)
Licensing.SetOEMLicenseKey(string)(removed — no OEM/runtime key concept)
new Bitmap(path) + reader.Analyze(bitmap)BarcodeReader.Read(path)
reader.BarcodeTypes = new[] { BarcodeType.Code128Barcode, ... }(removed — auto-detection handles all formats)
result.BarcodeValueresult.Value
result.BarcodeTyperesult.Format
writer.BarcodeType = BarcodeType.Code128BarcodeBarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
writer.BarcodeValue = "data"(first argument to CreateBarcode)
writer.CreateBitmap() + bitmap.Save(path).SaveAsPng(path)
writer.BarcodeType = BarcodeType.QRCodeBarcodeQRCodeWriter.CreateQrCode(data, size)
Limite standard de 40 ppmAucune limite de débit à aucun niveau

Problèmes de migration courants et solutions

Problème 1 : Erreurs de compilation du nom de propriété

BarcodeXpress : Les objets de résultat exposent BarcodeValue et BarcodeType, qui n'existent pas dans IronBarcode.

Solution : Exécutez une recherche et un remplacement dans toute la solution avant la compilation :

grep -r "\.BarcodeValue" --include="*.cs" .
grep -r "\.BarcodeType" --include="*.cs" .
SHELL

Remplacez result.BarcodeValue par result.Value et result.BarcodeType par result.Format dans tous les fichiers trouvés.

Problème 2 : Appels de configuration de licence orphelins

BarcodeXpress : SetSolutionName, SetSolutionKey, et SetOEMLicenseKey appels — plus toute affirmation personnalisée qui détectent le filigrane ' UNLICENSED accusoft.com ' dans le résultat décodé — existent dans de nombreuses bases de code comme défenses contre le mode échec du résultat filigrané.

Solution : Localisez et supprimez tous ces points d'appel — Code-barres IronBarcode n'a pas d'état équivalent. La clé de licence est soit valide, soit non, et si elle ne l'est pas, les limites d'essai s'appliquent uniformément plutôt que de dégrader chaque valeur décodée individuellement :

grep -r "SetOEMLicenseKey" --include="*.cs" .
grep -r "SetSolutionName" --include="*.cs" .
grep -r "SetSolutionKey" --include="*.cs" .
grep -r "UNLICENSED accusoft" --include="*.cs" .
SHELL

Tous ces sites d'appel peuvent être supprimés.

Problème 3 : Montage du fichier de licence Docker dans une variable d'environnement

BarcodeXpress : Les déploiements Docker montent généralement un fichier de configuration de licence BarcodeXpress dans le conteneur à un chemin connu en utilisant une instruction COPY ou une instruction de montage de volume.

Solution : Supprimez la copie du fichier de configuration et remplacez-la par une variable d'environnement :

# Remove this
COPY accusoft-license.lic /app/license/

# Add this
ENV IRONBARCODE_LICENSE=YOUR-LICENSE-KEY
Text

Au démarrage de l'application :

IronBarCode.License.LicenseKey =
    Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");

Dans Kubernetes, la clé de licence devient une référence secrète dans la spécification du pod :

env:
  - name: IRONBARCODE_LICENSE
    valueFrom:
      secretKeyRef:
        name: ironbarcode-secrets
        key: license-key
Text

Problème 4 : Code de gestion des limites de débit

BarcodeXpress : Les équipes traitant de grands lots dans la limite de 40 PPM de l'édition standard ajoutaient souvent du code pour faire une pause entre les groupes de documents, suivre les compteurs par minute ou introduire des délais pour rester dans la limite.

Solution : Supprimer tout le code de limitation de débit. Localisez-le avec :

grep -r "40\|PPM\|pagesPerMinute\|minuteStart" --include="*.cs" .
SHELL

IronBarcode n'a pas de limite de débit : traitez les données à la vitesse que votre infrastructure supporte.

Problème 5 : Sécurité des threads — Suppression du pool d'instances

BarcodeXpress : Les bases de code qui supportent le traitement concurrent maintiennent souvent un pool d'instances BarcodeXpress ou utilisent un modèle ThreadLocal<BarcodeXpress> pour isoler le lecteur à état par thread.

Solution : Supprimer complètement la logique de mise en pool. Les BarcodeReader.Read et BarcodeWriter.CreateBarcode d'IronBarcode sont des méthodes statiques sans état. Les appels simultanés provenant d'un nombre quelconque de threads n'interfèrent pas entre eux.

Liste de contrôle de migration Accusoft BarcodeXpress

Tâches préalables à la migration

Avant d'apporter toute modification au code, auditez la base de code afin d'identifier toutes les utilisations de BarcodeXpress :

grep -r "BarcodeXpress" --include="*.cs" .
grep -r "Accusoft" --include="*.cs" .
grep -r "SetSolutionName" --include="*.cs" .
grep -r "SetSolutionKey" --include="*.cs" .
grep -r "SetOEMLicenseKey" --include="*.cs" .
grep -r "reader\.Analyze" --include="*.cs" .
grep -r "writer\.CreateBitmap" --include="*.cs" .
grep -r "\.BarcodeValue" --include="*.cs" .
grep -r "\.BarcodeType" --include="*.cs" .
grep -r "BarcodeType\." --include="*.cs" .
SHELL
  • Notez quels formats de code-barres sont explicitement listés dans les affectations BarcodeTypes — ils deviennent tous auto-détectés dans IronBarcode
  • Identifier tout code de gestion des limitations de débit qui peut être supprimé
  • Identifiez les bibliothèques de rendu PDF ajoutées uniquement pour la lecture BarcodeXpress ; celles-ci peuvent également être supprimées.
  • Obtenez votre clé de licence Code-barres IronBarcode et ajoutez-la à votre gestionnaire de secrets

Tâches de mise à jour du code

  1. Supprimez Accusoft.BarcodeXpress.NetCore de tous les fichiers .csproj
  2. Ajoutez IronBarcode à tous les fichiers .csproj qui nécessitent la fonctionnalité de code-barres
  3. Remplacez using Accusoft.BarcodeXpressSdk; par using IronBarCode; dans tous les fichiers
  4. Ajoutez IronBarCode.License.LicenseKey = ... au démarrage de l'application
  5. Supprimez tous les appels de constructeur BarcodeXpress et champs d'instance
  6. Supprimez tous les appels SetSolutionName, SetSolutionKey, et SetOEMLicenseKey
  7. Supprimez toutes les assertions personnalisées qui analysent les sorties décodées à la recherche du filigrane " UNLICENSED accusoft.com "
  8. Remplaceznew Bitmap(path) + reader.Analyze(bitmap)par BarcodeReader.Read(path)
  9. Supprimez toutes les affectations reader.BarcodeTypes = ...
  10. Remplacez result.BarcodeValue par result.Value
  11. Remplacez result.BarcodeType par result.Format
  12. Remplacezwriter.CreateBitmap() + bitmap.Save(path)par BarcodeWriter.CreateBarcode(data, encoding).SaveAsPng(path)
  13. Supprimer le code de limitation de débit
  14. Supprimez le code intermédiaire de rendu PDF s'il est présent.
  15. Supprimez les pools d'instance ou les modèles ThreadLocal pour les instances de BarcodeXpress
  16. Supprimez les points de montage des fichiers de licence des fichiers Dockerfile et docker-compose.
  17. Ajoutez une variable d'environnement IRONBARCODE_LICENSE aux configurations Docker et conteneur
  18. Mettre à jour les secrets Kubernetes et les spécifications des pods
  19. Mettez à jour les secrets du pipeline CI/CD — supprimez ACCUSOFT_SOLUTION_KEY et ACCUSOFT_RUNTIME_KEY ; ajoutez IRONBARCODE_LICENSE

Test de post-migration

  • Compiler la solution — corriger les erreurs de compilation restantes dues aux propriétés renommées
  • Exécuter des tests unitaires sur toutes les opérations de lecture de codes-barres
  • Exécuter des tests unitaires sur toutes les opérations de génération de codes-barres
  • Effectuer des tests avec des entrées PDF, le cas échéant.
  • Effectuez un test de traitement par lots pour confirmer l'absence de limitation de débit.
  • Déployez dans un environnement de test et vérifiez que la clé de licence est correctement résolue à partir de la variable d'environnement.

Principaux avantages de la migration vers IronBarcode

Élimination de la complexité de licence à deux clés : La configuration SetSolutionName, SetSolutionKey, et SetOEMLicenseKey disparaît entièrement. Une clé couvre chaque environnement du développement à la production, et le mode d'essai renvoie des valeurs décodées complètes (plutôt que d'estampiller chacune d'elles avec " UNLICENSED accusoft.com ") afin que la valorisation pré-achat sur des documents réels soit possible.

Aucun achat minimum de licences d'exécution : BarcodeXpress requiert un minimum de cinq licences d'exécution pour tout déploiement en production. Code-barres IronBarcode n'a pas de concept de licence d'exécution — la clé perpétuelle unique couvre un nombre illimité de déploiements en production au sein de son niveau.

Débit sans plafond : la limite de 40 PPM de l'édition standard et tout code de limitation de débit écrit pour rester en deçà peuvent être supprimés. Code-barres IronBarcode traite les données à la vitesse maximale supportée par le matériel et le réseau sous-jacents, sans plafond imposé par logiciel à aucun niveau de prix.

Lecture PDF native : BarcodeReader.Read("document.pdf") traite les fichiers PDF directement, retournant des résultats par page avec numéro de page, format, valeur, et score de confiance. Toute bibliothèque de rendu PDF ajoutée uniquement pour prendre en charge BarcodeXpress peut être supprimée, ce qui réduit les dépendances et les coûts de licence.

Sécurité des threads sans état : BarcodeReader.Read et BarcodeWriter.CreateBarcode sont des méthodes statiques sans état. Les pools d'instances, les modèles ThreadLocal et les blocs d'initialisation par thread peuvent tous être supprimés. Le traitement concurrent avec Parallel.ForEach ne nécessite pas de changements structurels au-delà de la suppression des solutions de contournement du threading.

Déploiement simplifié de conteneurs : les déploiements Docker et Kubernetes utilisent une seule variable d'environnement pour la configuration des licences. La distribution des fichiers de licence, l'infrastructure des serveurs de licences et les points de montage des fichiers de configuration sont tous éliminés.

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