IRONSOFTWAREHOME
VIDEOS

Migrating from LEADTOOLSBarCodeto IronBarcode

Curtis Chau
Curtis Chau
Updated: 1. August 2026

Dieser Leitfaden beschreibt die vollständige Migration von LEADTOOLSBarCodezu IronBarcode for .NET Entwickler. Es beschäftigt sich mit der Entfernung von LEADTOOLSNuGet-Paketen und einer nativen Laufzeitanforderung, dem Ersatz der dateibasierten LEADTOOLS-Lizenzinitialisierungssequenz durch einen Zeichenfolgenschlüssel und der Übersetzung der Lese- und Schreibmuster von LEADTOOLSin die statische, ausdrucksstarke API von IronBarcode. Für jedes wichtige Migrationsszenario werden Codebeispiele bereitgestellt, zusammen mit einer API-Zuordnungstabelle, einer strukturierten Checkliste und Hinweisen zu Problemen, die während der Umstellung auftreten können.

Warum von LEADTOOLSBarCodemigrieren?

Dateibasierte Lizenzbereitstellung: LEADTOOLS-Lizenzierung erfordert, dass eine .LIC-Datei physisch auf der Festplatte an einem bekannten Pfad auf jedem Computer vorhanden ist, auf dem die Anwendung läuft. Entwickler-Workstations, CI-Build-Agents, Staging-Server und Produktionscontainer benötigen jeweils die Bereitstellung der Datei vor der Initialisierung der Anwendung. Dies ist ein grundlegend anderes Betriebsmodell als bei zeichenkettenbasierten Geheimnissen, die sich nahtlos in Umgebungsvariablen, Geheimnismanager und die Konfiguration von CI/CD-Pipelines integrieren lassen. Jede neue Umgebung, die einer Bereitstellungstopologie hinzugefügt wird – eine neue Cloud-Region, ein neuer Kubernetes-Knotenpool, ein neuer Entwickler-Onboarding-Prozess – erfordert einen Dateibereitstellungsschritt, der bei der zeichenkettenbasierten Lizenzierung nicht erforderlich ist.

SDK-Abdruck: LEADTOOLSBarcode-Installation erfordert das Leadtools.Barcode NuGet-Paket (das Leadtools, Leadtools.Codecs und verwandte Abhängigkeiten einbezieht). PDF-Barcode-Extraktion fügt Leadtools.Pdf hinzu. Unter Windows ist die MSVC++ 2017 Runtime eine separate native Abhängigkeit. Die veröffentlichte Ausgabe einer LEADTOOLS-Barcode-Anwendung beträgt ungefähr 148 MB. Anwendungen, die lediglich Barcodes lesen oder generieren müssen, tragen die volle Last einer umfassenden Bildverarbeitungsplattform – OCR-Infrastruktur, Formatcodec-Architektur und Dokumentenanzeigefunktionen – unabhängig davon, ob diese Funktionen genutzt werden oder nicht.

Legacy-API-Design: LEADTOOLS-Barcode-Operationen erfordern die Erstellung mehrerer Objekte in einer bestimmten Reihenfolge, bevor überhaupt eine Operation durchgeführt werden kann. Das Lesen eines Barcodes erfordert eine RasterCodecs Instanz, um das Bild zu laden, und eine BarcodeEngine Instanz, um es zu scannen, mit einem expliziten BarcodeSymbology Array, das angibt, welche Formate zu suchen sind. Das Erzeugen eines Barcodes erfordert den Aufbau eines BarcodeData Objekts, das Erstellen eines leeren RasterImage mit expliziten Pixelparametern, das Auffüllen mit einer Hintergrundfarbe mittels FillCommand, das Schreiben des Barcodes darauf und das Speichern mit RasterCodecs. Diese API spiegelt die Designmuster ihrer Zeit wider. IronBarcode führt die gleichen Operationen über statische Methodenaufrufe durch, die Dateipfade direkt akzeptieren.

Preistransparenz: LEADTOOLS-Einsatzlizenzen für Produktionsserver werden separat über LEADTOOLS-Vertrieb angeboten und sind nicht auf ihrer Website veröffentlicht. Teams, die ein vollständiges Kostenbild benötigen, bevor sie mit der Entwicklung beginnen, müssen mit dem Vertrieb in Kontakt treten, bevor sie bestätigen können, dass LEADTOOLSin ihr Budget passt. IronBarcode bietet eine unbefristete Einmallizenz, die die Entwicklung und den Einsatz zusammen abdeckt, ohne dass eine separate Produktionslizenz erforderlich ist.

Das grundsätzliche Problem

Die Initialisierungssequenz von LEADTOOLSerfordert über 20 Zeilen und vier Verifikationsschritte, bevor eine BarcodeEngine erstellt werden kann. IronBarcode ersetzt die gesamte Sequenz durch eine einzige Zuweisung:

// LEADTOOLS: file path, expiry check, three feature lock checks, engine creation
using Leadtools;
using Leadtools.Barcode;

RasterSupport.SetLicense(
    @"C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC",
    "your-developer-key-here");

if (RasterSupport.KernelExpired)
    throw new InvalidOperationException("LEADTOOLS license has expired");

if (RasterSupport.IsLocked(RasterSupportType.Barcode1DRead))
    throw new InvalidOperationException("1D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.Barcode2DRead))
    throw new InvalidOperationException("2D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.BarcodeWrite))
    throw new InvalidOperationException("Barcode writing is locked");

var engine = new BarcodeEngine();
// IronBarcode: one line, no file required
using IronBarCode;

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

IronBarcode vs. LEADTOOLSBarcode: Funktionsvergleich

FeatureLEADTOOLSBarCodeIronBarcode
LizenzmodellDatei + EntwicklerschlüsselNur Zeichenkettenschlüssel
Erforderliche NuGet Pakete5+1
Native LaufzeitabhängigkeitMSVC++ 2017 (Windows)None
Veröffentlichte Ausgabegröße~148 MB~39 MB
Unterstützte Symboliken40+50+
Automatische Barcode-ErkennungBeschränktJa
PDF-Barcode-ExtraktionSeparates Paket erforderlichEingebaut
ML-FehlerkorrekturNeinJa
QR-Code-Logo-BrandingNeinJa
Docker-EinsatzDatei muss eingebunden werdenUmgebungsvariable
Initialisierungscode20+ Zeilen1 Zeile
API-StilLegacy-ObjektgraphStatisch fließend
PlattformübergreifendTeilweise (native Abhängigkeiten)Vollversion (.NET Standard)
Preisgestaltung für BereitstellungslizenzenKontakt Vertrieb (nicht veröffentlicht)Im Dauerkauf enthalten

Schnellstart: LEADTOOLSBarcode-zu- IronBarcode -Migration

Schritt 1: LEADTOOLS-Pakete entfernen

Entfernen Sie alle LEADTOOLS-Pakete aus dem Projekt:

dotnet remove package Leadtools.Barcode
dotnet remove package Leadtools
dotnet remove package Leadtools.Codecs
dotnet remove package Leadtools.Codecs.Png
dotnet remove package Leadtools.Codecs.Jpeg
SHELL

Wenn der PDF-Codec zur Barcode-Extraktion aus PDF-Dateien hinzugefügt wurde:

dotnet remove package Leadtools.Pdf
SHELL

Bei Windows Server-Bereitstellungen kann die MSVC++ 2017 Runtime nach Abschluss der Migration aus den Bereitstellungsskripten entfernt werden. IronBarcode hat auf keiner Plattform native Laufzeitabhängigkeiten.

Schritt 2: IronBarcode installieren

dotnet add package IronBarcode
SHELL

Dieses Einzelpaket beinhaltet die Unterstützung aller Bildformate, die native PDF-Barcode-Extraktion, die ML-Fehlerkorrektur und alle über 50 unterstützten Symbologien. Es werden keine zusätzlichen Codec-Pakete benötigt.

Schritt 3: Lizenz initialisieren

Ersetzen Sie den gesamten LEADTOOLS-Initialisierungsblock durch eine einzige Zeile. Finden Sie jeden Aufruf von RasterSupport.SetLicense in der Codebasis — in der Regel gibt es genau einen, beim Anwendungsstart — und ersetzen Sie die gesamte umliegende Initialisierungssequenz:

// Before: entire LEADTOOLSinitialization block (20+ lines)
// After:
using IronBarCode;

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

Der Lizenzschlüssel kann aus jedem stringfähigen Konfigurationsmechanismus bezogen werden: eine Umgebungsvariable, appsettings.json, Azure Key Vault, AWS Secrets Manager oder ein Kubernetes-Geheimnis. Informationen zur umgebungsbasierten Lizenzkonfiguration, zu Docker-Bereitstellungsmustern und zu allen unterstützten Konfigurationsansätzen finden Sie in der Dokumentation zur Lizenzschlüssel-Einrichtung .

Beispiele für die Code-Migration

Barcodes aus Bildern lesen

LEADTOOLS trennt das Laden von Bildern vom Scannen von Barcodes in zwei separate Objektebenen. Eine RasterCodecs Instanz lädt die Bilddatei in ein RasterImage, und eine BarcodeEngine Instanz scannt sie. Der Anrufer muss auch ein explizites Array von BarcodeSymbology-Werten angeben; Formate, die nicht im Array aufgeführt sind, werden nicht erkannt.

LEADTOOLS-Ansatz:

using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

using var codecs = new RasterCodecs();
using var image = codecs.Load("scan.png");

var engine = new BarcodeEngine();

var symbologies = new[]
{
    BarcodeSymbology.Code128,
    BarcodeSymbology.Code39,
    BarcodeSymbology.QR,
    BarcodeSymbology.DataMatrix,
    BarcodeSymbology.EAN13,
    BarcodeSymbology.UPCA
};

var barcodes = engine.Reader.ReadBarcodes(
    image,
    LogicalRectangle.Empty,
    0,
    symbologies);

foreach (var barcode in barcodes)
    Console.WriteLine($"{barcode.Symbology}: {barcode.Value}");

IronBarcode -Ansatz:

using IronBarCode;

var results = BarcodeReader.Read("scan.png");

foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");

IronBarcode akzeptiert den Dateipfad direkt, lädt das Bild intern und erkennt automatisch Formate aller über 50 unterstützten Symbologien, ohne dass der Aufrufer die erwarteten Typen angeben muss. Erweiterte Konfigurationseinstellungen – wie die Optimierung der Lesegeschwindigkeit, die Erkennung mehrerer Barcodes und die Verarbeitung von Bildern mit geringer Qualität – finden Sie im Leitfaden zum Lesen von Barcodes aus Bildern .

Generieren eines Code-128-Barcodes

Die Erzeugung von LEADTOOLSerfordert den Aufbau eines BarcodeData Objekts, die Zuweisung eines leeren RasterImage mit expliziten Speicherflags, Pixeltiefe und Byte-Reihenfolge, das Bild mit einer Hintergrundfarbe zu füllen, den Barcode darauf zu schreiben und dann mit RasterCodecs zu speichern. IronBarcode führt all diese Schritte über eine einzige flüssige Methodenkette aus.

LEADTOOLS-Ansatz:

using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

var engine = new BarcodeEngine();

var barcodeData = new BarcodeData()
{
    Symbology = BarcodeSymbology.Code128,
    Value = "ITEM-98765",
    Bounds = new LeadRect(0, 0, 500, 120)
};

using var image = new RasterImage(
    RasterMemoryFlags.Conventional,
    500, 120, 24,
    RasterByteOrder.Bgr,
    RasterViewPerspective.TopLeft,
    null, IntPtr.Zero, 0);

new FillCommand(RasterColor.White).Run(image);
engine.Writer.WriteBarcode(image, barcodeData, null);

using var codecs = new RasterCodecs();
codecs.Save(image, "item-barcode.png", RasterImageFormat.Png, 0);

IronBarcode -Ansatz:

using IronBarCode;

BarcodeWriter.CreateBarcode("ITEM-98765", BarcodeEncoding.Code128)
    .ResizeTo(500, 120)
    .SaveAsPng("item-barcode.png");

Eine vollständige Anleitung zu Größenanpassung, Formatierung, Randsteuerung und unterstützten Ausgabeformaten finden Sie unter Erstellen von Barcode-Bildern .

Erstellen eines QR-Codes mit Logo-Branding

LEADTOOLS QR-Code-Erzeugung folgt demselben mehrstufigen RasterImage-Konstruktionsmuster wie andere Barcodetypen. IronBarcode bietet QRCodeWriter mit einer speziellen AddBrandLogo Methode zum Einbetten eines Logos in die Mitte eines QR-Codes.

LEADTOOLS-Ansatz:

using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

var engine = new BarcodeEngine();

var qrData = new BarcodeData()
{
    Symbology = BarcodeSymbology.QR,
    Value = "https://example.com/product/12345",
    Bounds = new LeadRect(0, 0, 400, 400)
};

using var image = new RasterImage(
    RasterMemoryFlags.Conventional,
    400, 400, 24,
    RasterByteOrder.Bgr,
    RasterViewPerspective.TopLeft,
    null, IntPtr.Zero, 0);

new FillCommand(RasterColor.White).Run(image);
engine.Writer.WriteBarcode(image, qrData, null);

using var codecs = new RasterCodecs();
codecs.Save(image, "product-qr.png", RasterImageFormat.Png, 0);

IronBarcode -Ansatz:

using IronBarCode;

QRCodeWriter.CreateQrCode("https://example.com/product/12345", 400, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("brand-logo.png")
    .SaveAsPng("product-qr.png");

Barcodes aus PDF-Dokumenten extrahieren

LEADTOOLS PDF-Barcode-Extraktion erfordert das separate Leadtools.Pdf Paket, explizite PDF-Ladekonfiguration, eine manuelle Anfrage zur Seitenzählung und eine Schleife über jede Seite. Jede Seite muss individuell als RasterImage geladen werden, bevor gescannt wird. IronBarcode beinhaltet PDF-Unterstützung im Basispaket und übernimmt die Seiteniteration intern.

LEADTOOLS-Ansatz:

using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

// Requires: dotnet add package Leadtools.Pdf
using var codecs = new RasterCodecs();
codecs.Options.Pdf.Load.Resolution = 300;
codecs.Options.Pdf.Load.DisplayDepth = 24;

var engine = new BarcodeEngine();
var results = new List<string>();
int pageCount = codecs.GetTotalPages("shipment.pdf");

for (int page = 1; page <= pageCount; page++)
{
    using var image = codecs.Load(
        "shipment.pdf", 0,
        CodecsLoadByteOrder.BgrOrGray,
        page, page);

    var barcodes = engine.Reader.ReadBarcodes(
        image, LogicalRectangle.Empty, 0, null);

    foreach (var barcode in barcodes)
        results.Add($"Page {page}: {barcode.Value}");
}

IronBarcode -Ansatz:

using IronBarCode;

var results = BarcodeReader.Read("shipment.pdf");

foreach (var result in results)
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");

Docker-Bereitstellung

Die Dateiverwaltungsanforderung, die jede LEADTOOLSDocker-Bereitstellung kennzeichnet, entfällt bei der Migration zu IronBarcode vollständig.

LEADTOOLS-Ansatz:

FROM mcr.microsoft.com/dotnet/aspnet:8.0

WORKDIR /app
COPY publish/ .

# License file must be physically present in the container image
COPY LEADTOOLS.LIC /app/license/LEADTOOLS.LIC

ENV LEADTOOLS_LICENSE_PATH=/app/license/LEADTOOLS.LIC
ENV LEADTOOLS_DEVELOPER_KEY=your-developer-key

ENTRYPOINT ["dotnet", "YourApp.dll"]
Text

IronBarcode -Ansatz:

FROM mcr.microsoft.com/dotnet/aspnet:8.0

WORKDIR /app
COPY publish/ .

ENV IRONBARCODE_LICENSE=your-license-key

ENTRYPOINT ["dotnet", "YourApp.dll"]
Text

Der Lizenzschlüssel wird zur Laufzeit des Containers über Docker Secrets, Kubernetes Secrets oder einen beliebigen Mechanismus mit Umgebungsvariablen eingebunden. Es ist kein Dateibereitstellungsschritt erforderlich. Der Docker- und Linux-Bereitstellungsleitfaden behandelt Alpine- und Debian-Basis-Images, mehrstufige Builds und Kubernetes-Bereitstellungsmuster.

LEADTOOLSBarcode-API zu IronBarcode -Mapping-Referenz

LEADTOOLSIronBarcodeNotizen
RasterSupport.SetLicense(path, key)IronBarCode.License.LicenseKey = "key"Nur Schlüssel – keine Datei
RasterSupport.KernelExpired(removed)Keine Ablaufprüfung erforderlich
RasterSupport.IsLocked(RasterSupportType.Barcode1DRead)(removed)Alle Funktionen enthalten
RasterSupport.IsLocked(RasterSupportType.Barcode2DRead)(removed)Alle Funktionen enthalten
RasterSupport.IsLocked(RasterSupportType.BarcodeWrite)(removed)Alle Funktionen enthalten
new BarcodeEngine()Statisch – keine InstanzBarcodeReader, BarcodeWriter sind statisch
new RasterCodecs()(removed)Dateipfad direkt übergeben
codecs.Load(imagePath)(removed)Dateipfad direkt übergeben
engine.Reader.ReadBarcodes(image, LogicalRectangle.Empty, 0, symbologies)BarcodeReader.Read(imagePath)Automatische Symbolerkennung
BarcodeData.Valueresult.ValueGleicher Eigenschaftsname
BarcodeData.Symbologyresult.FormatImmobilie umbenannt
new BarcodeData() { Symbology = BarcodeSymbology.Code128 }BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)Flüssige Erstellung
BarcodeSymbology.Code128BarcodeEncoding.Code128Namensraumänderung
BarcodeSymbology.QRBarcodeEncoding.QRCodeNamensänderung
BarcodeSymbology.DataMatrixBarcodeEncoding.DataMatrixGleicher Name
BarcodeSymbology.PDF417BarcodeEncoding.PDF417Gleicher Name
BarcodeSymbology.EAN13BarcodeEncoding.EAN13Gleicher Name
BarcodeSymbology.UPCABarcodeEncoding.UPCAGleicher Name
BarcodeSymbology.Interleaved2of5BarcodeEncoding.Interleaved2of5Gleicher Name
BarcodeSymbology.CodabarBarcodeEncoding.CodabarGleicher Name
engine.Writer.WriteBarcode(image, data, null) + codecs.Save(...).SaveAsPng(path)Eine Methodenkette
new RasterImage(...) + new FillCommand(RasterColor.White).Run(image)(removed)Intern bei IronBarcode

Gängige Migrationsprobleme und Lösungen

Problem 1: Verweise auf .LIC-Dateien in CI/CD

LEADTOOLS: CI/CD-Pipelines, die LEADTOOLS-Anwendungen aufbauen oder bereitstellen, müssen die .LIC-Datei bereitstellen — entweder indem sie in die Versionskontrolle eingecheckt wird, aus einem Base64-Geheimnis dekodiert oder als Volumenartefakt eingebunden wird. Jede Pipeline-Stufe, die die Anwendung ausführt, benötigt Zugriff auf die Datei.

Lösung: Entfernen Sie alle .LIC Datei-Handling aus der Pipeline. Ersetzen Sie es durch ein String-Geheimnis:

# Example: GitHub Actions environment variable
env:
  IRONBARCODE_LICENSE: ${{secrets.IRONBARCODE_LICENSE}}
Text

Der Zeichenkettenwert wird im CI/CD-Geheimnisspeicher zusammen mit anderen Zeichenketten-Anmeldeinformationen gespeichert. Keine Dateidekodierung, keine Artefaktbereitstellung, keine Volumenkonfiguration erforderlich.

Problem 2: MSVC++-Laufzeitabhängigkeit unter Windows

LEADTOOLS: Für die Bereitstellung von Windows Server muss die MSVC++ 2017-Runtime auf dem Host installiert sein. Bereitstellungsskripte, Container-Basisabbilder und Windows-AMIs, die für LEADTOOLS-Bereitstellungen verwendet werden, enthalten in der Regel einen Schritt zur Installation dieser Runtime.

Lösung: Entfernen Sie den Installationsschritt für die MSVC++ 2017-Laufzeitumgebung aus allen Windows-Bereitstellungsskripten und Containerabbildern. IronBarcode hat keine nativen Laufzeitabhängigkeiten. Das dotnet/aspnet Basisabbild ist ohne zusätzliche Laufzeitpakete ausreichend.

Problem 3: Überprüfung der RasterSupportType-Funktionssperre

LEADTOOLS: Die Initialisierungssequenz beinhaltet RasterSupport.IsLocked()-Überprüfungen für jede Barcode-Funktion — Barcodes1D, Barcodes2D und BarcodeWrite. Diese Prüfungen sind defensiver Code, der von der LEADTOOLS-Architektur benötigt wird, um zu überprüfen, ob die Lizenzdatei alle erforderlichen Funktionen abdeckt.

Lösung: Entfernen Sie alle RasterSupport.IsLocked()-Aufrufe. IronBarcode beinhaltet alle Lese- und Schreibfunktionen in einer einzigen Lizenz. Es gibt keine Sperrzustände für einzelne Funktionen und es ist kein Funktionsverifizierungsschritt erforderlich:

// Remove these lines entirely:
// if (RasterSupport.IsLocked(RasterSupportType.Barcode1DRead)) ...
// if (RasterSupport.IsLocked(RasterSupportType.Barcode2DRead)) ...
// if (RasterSupport.IsLocked(RasterSupportType.BarcodeWrite)) ...

Ausgabe 4: Entfernung des Barcode-Symbologie-Arrays

LEADTOOLS: Jeder Aufruf von engine.Reader.ReadBarcodes() erfordert einen expliziten BarcodeSymbology[] Parameter. Barcodes, deren Symbologie nicht im Array aufgeführt ist, werden nicht erkannt, was zu stillen Lesefehlern führen kann, wenn ein neuer Barcode-Typ in ein Eingabedokument eingeführt wird.

Lösung: Entfernen Sie das Symbolisierungsarray. BarcodeReader.Read() erkennt alle unterstützten Formate automatisch. Wenn eine Leistungsoptimierung für ein bekanntes Formatsatz erforderlich ist, bietet BarcodeReaderOptions optionale Hinweise, ohne eine erschöpfende Aufzählung zu erfordern:

// Optional: hint the reader for performance in format-known scenarios
var options = new BarcodeReaderOptions
{
    ExpectBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};
var results = BarcodeReader.Read("scan.png", options);

LEADTOOLSBarcode-Migrations-Checkliste

Vor der Migration anfallende Aufgaben

Prüfen Sie vor jeglichen Änderungen alle LEADTOOLS-Nutzungen im Quellcode:

grep -r "using Leadtools" --include="*.cs" .
grep -r "RasterSupport\|BarcodeEngine\|RasterCodecs" --include="*.cs" .
grep -r "BarcodeSymbology\|BarcodeData\|RasterImage" --include="*.cs" .
grep -r "LEADTOOLS.LIC\|SetLicense\|KernelExpired" --include="*.cs" .
grep -r "COPY LEADTOOLS.LIC\|LEADTOOLS_LICENSE_PATH" --include="*.dockerfile" --include="Dockerfile" .
SHELL

Dokumentieren Sie die Anzahl und Position von Initialisierungsblöcken, Leseaufrufstellen, Schreibaufrufstellen und Dockerfile-Referenzen, bevor Sie mit den Codeänderungen beginnen.

Aufgaben der Code-Aktualisierung

  1. Entfernen Sie alle fünf LEADTOOLSNuGet Pakete (und den PDF-Codec, falls vorhanden).
  2. Installieren Sie IronBarcode über dotnet add package IronBarcode
  3. Ersetzen Sie alle using Leadtools.* Namespace-Importe durch using IronBarCode
  4. Ersetzen Sie den gesamten RasterSupport.SetLicense Initialisierungsblock durch IronBarCode.License.LicenseKey = "key"
  5. Entfernen Sie alle RasterSupport.KernelExpired Überprüfungen
  6. Entfernen Sie alle RasterSupport.IsLocked(RasterSupportType.*) Überprüfungen
  7. Entfernen Sie alle new BarcodeEngine() Instanziierungen
  8. Entfernen Sie alle new RasterCodecs() Instanziierungen aus Barcode-Codepfaden
  9. Ersetzen Sie codecs.Load(path) + engine.Reader.ReadBarcodes(image, ...) durch BarcodeReader.Read(path)
  10. Ersetzen Sie new BarcodeData(...) + new RasterImage(...) + FillCommand + WriteBarcode + codecs.Save() durch BarcodeWriter.CreateBarcode(...).SaveAsPng(path)
  11. Ersetzen Sie BarcodeSymbology.*-Enum-Verweise durch BarcodeEncoding.* (Hinweis: QR wird zu QRCode)
  12. Entfernen Sie COPY LEADTOOLS.LIC-Zeilen aus allen Dockerfiles
  13. Entfernen Sie LEADTOOLS_LICENSE_PATH und LEADTOOLS_DEVELOPER_KEY Umgebungsvariablen-Deklarationen aus Dockerfiles und Bereitstellungskonfiguration
  14. Fügen Sie die IRONBARCODE_LICENSE Umgebungsvariable zu Dockerfiles und Geheimniskonfiguration hinzu
  15. Entfernen Sie die Installation der MSVC++ 2017-Laufzeitumgebung aus den Windows-Bereitstellungsskripten.

Post-Migrationstests

  • Überprüfen Sie, ob alle Barcode-Leseoperationen erwartete Werte für alle durch das BarcodeSymbology[] Array zuvor abgedeckten Symbologien zurückgeben
  • Überprüfen Sie, ob Code 128, QR-Code und alle anderen generierten Barcode-Typen gültige, scannbare Ausgaben erzeugen.
  • Bestätigen Sie, dass die PDF-Barcode-Extraktion ohne Leadtools.Pdf korrekt funktioniert
  • Bauen und starten Sie das Containerabbild, ohne eine .LIC Datei einzubinden, und bestätigen Sie, dass die Anwendung korrekt initialisiert
  • Führen Sie die CI/CD-Pipeline ohne den .LIC Datei-Bereitstellungsschritt aus und bestätigen Sie, dass alle Stufen erfolgreich abgeschlossen werden
  • Überprüfen Sie, ob sich die Größe der veröffentlichten Ausgabedatei und die Abrufzeit des Container-Images verbessert haben.

Wichtigste Vorteile der Migration zu IronBarcode

Vereinfachte Bereitstellungsarchitektur: Nach der Migration erhält jede Umgebung – Entwicklung, CI, Staging, Produktion – die Lizenz über denselben Mechanismus mit Zeichenketten-basierten Geheimnissen, der auch für API-Schlüssel, Datenbankpasswörter und andere Anmeldeinformationen verwendet wird. Es ist keine Dateibereitstellung, keine Artefaktverarbeitung und keine Volume-Mounts erforderlich. Das Hinzufügen einer neuen Bereitstellungsumgebung ist der gleiche Vorgang wie das Hinzufügen eines beliebigen anderen Geheimnisses.

Reduzierte Abhängigkeitsfläche: Ein NuGet Paket ersetzt fünf, und die MSVC++ 2017 Runtime-Anforderung entfällt. Die veröffentlichte Ausgabemenge eines Barcode-Dienstes sinkt von etwa 148 MB auf etwa 39 MB. Kleinere Images bedeuten schnellere Container-Pulls, geringere Speicherkosten in Container-Registries und kürzere Kaltstartzeiten in serverlosen und Auto-Scaling-Umgebungen.

Optimierter Anwendungsstart: Die 20-zeilige Initialisierungssequenz von LEADTOOLS– Dateipfadauflösung, Ablaufprüfung und drei Sperrprüfungen pro Funktion – wurde durch eine einzige Zeile ersetzt. Der Anwendungsstart erfolgt schneller, und der Initialisierungscode ist unabhängig vom Dateisystem und könnte in einer neuen Umgebung nicht fehlschlagen.

Umfassende Formaterkennung: IronBarcode liest alle über 50 unterstützten Symbologien, ohne dass der Aufrufer die erwarteten Formate angeben muss. Das Risiko stiller verpasster Lesevorgänge — verursacht durch das Auslassen einer Symbologie aus dem LEADTOOLSBarcodeSymbology[] Array — wird beseitigt. Wenn in einem Eingabedokument ein neuer Barcode-Typ auftaucht, erkennt IronBarcode diesen, ohne dass eine Codeänderung erforderlich ist.

Vorhersehbare Gesamtkosten: Mit dem Kauf einer einzigen unbefristeten Lizenz sind Entwicklung, Tests und unbegrenzte Produktionsbereitstellungen abgedeckt – ohne Bereitstellungsnachverfolgung, ohne jährliche Verlängerungspflicht und ohne separate Produktionslizenz. Teams können die Gesamtkosten der Bibliothek vor Beginn der Entwicklung ohne Verkaufsgespräch bestätigen.

Modernes API-Design: BarcodeReader.Read() und BarcodeWriter.CreateBarcode() sind statische Einstiegspunkte, die Dateipfade direkt akzeptieren. Die mehrschichtige Objektkonstruktion, die LEADTOOLSzum Lesen und Schreiben benötigt – Codec-Instanzen, Engine-Instanzen, Bildzuordnung, Hintergrundfüllung – wird intern gehandhabt. Code, der Barcodes liest und generiert, ist kürzer, leichter zu überprüfen und einfacher zu testen.

Hinweis:: LEADTOOLS ist eine eingetragene Marke des jeweiligen Eigentümers. Diese Seite ist nicht mit LEAD Technologies verbunden, wird nicht von ihr unterstützt oder gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.
Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.