IRONSOFTWAREHOME
FILMY

Migrating fromLEADTOOLSBarCode to IronBarcode

Curtis Chau
Curtis Chau
Updated: 1 sierpnia 2026

Niniejszy przewodnik obejmuje kompletną migrację zLEADTOOLSBarCode do IronBarcode for .NET dla programistów .NET. Rozwiązuje to usunięcieLEADTOOLSpaczek NuGet i jednego natywnego zależności runtime, zastąpienie sekwencją inicjalizacji licencji opartych na plikachLEADTOOLSna klucz w postaci ciągu znaków oraz przekształcenie wzorców odczytu i zapisuLEADTOOLSna statyczne płynne API IronBarcode. Dla każdego głównego scenariusza migracji podano przykłady kodu wraz z tabelą mapowania API, uporządkowaną listą kontrolną oraz wskazówkami dotyczącymi problemów pojawiających się podczas przejścia.

Dlaczego warto przejść zLEADTOOLSBarCode

Rozmieszczenie licencji opartej na pliku: LicencjonowanieLEADTOOLSwymaga, aby plik .LIC był fizycznie obecny na dysku w znanej ścieżce na każdym komputerze, na którym działa aplikacja. Stacje robocze programistów, agenci kompilacji CI, serwery stagingowe i kontenery produkcyjne wymagają, aby plik został przygotowany przed uruchomieniem aplikacji. Jest to model operacyjny zasadniczo różniący się od sekretów opartych na ciągach znaków, które idealnie pasują do zmiennych środowiskowych, menedżerów sekretów i konfiguracji potoku CI/CD. Każde nowe środowisko dodane do topologii wdrożenia — nowy region chmury, nowa pula węzłów Kubernetes, nowy programista — wymaga etapu przygotowania plików, czego nie wymaga licencjonowanie oparte na ciągach znaków.

Slad SDK: InstalacjaLEADTOOLSbarcode wymaga pakietu Leadtools.Barcode NuGet (który podejmuje Leadtools, Leadtools.Codecs i powiązane zależności). Ekstrakcja kodu kreskowego z PDF dodaje Leadtools.Pdf. W systemie Windows środowisko uruchomieniowe MSVC++ 2017 jest oddzielną zależnością natywną. Publikowany wynik działania aplikacji do obsługi kodów kreskowychLEADTOOLSwynosi około 148 MB. Aplikacje, które wymagają jedynie odczytu lub generowania BarCode'ów, korzystają z pełnego zakresu możliwości kompleksowej platformy obrazówania — infrastruktury OCR, architektury kodeków formatów oraz funkcji przeglądania dokumentów — niezależnie od tego, czy te funkcje są wykorzystywane.

Projekt starszego API: Operacje związane z kodami barcode wLEADTOOLSwymagają utworzenia wielu obiektów w określonej kolejności, zanim będzie można wykonać jakąkolwiek pracę. Odczytanie kodu kreskowego wymaga instancji RasterCodecs do załadowania obrazu oraz instancji BarcodeEngine do jego zeskanowania, z wyraźną deklaracją tablicy BarcodeSymbology określającą, które formaty należy szukać. Generowanie kodu kreskowego wymaga skonstruowania obiektu BarcodeData, stworzenia pustego RasterImage z wyraźnymi parametrami pikselowymi, wypełnienia go kolorem tła za pomocą FillCommand, nałożenia kodu kreskowego na niego i zapisania za pomocą RasterCodecs. To API odzwierciedla wzorce projektowe swojej epoki.IronBarcode wykonuje te same operacje poprzez wywołania metod statycznych, które bezpośrednio akceptują ścieżki do plików.

Przejrzystość cen: Licencje wdrożenioweLEADTOOLSdla serwerów produkcyjnych są dodatkowo kwotowane przez sprzedażLEADTOOLSi nie są publikowane na ich stronie internetowej. Zespoły, które potrzebują pełnego obrazu kosztów przed rozpoczęciem rozwoju, muszą skontaktować się ze sprzedażą przed potwierdzeniem, żeLEADTOOLSpasuje do ich budżetu.IronBarcode oferuje jednorazową licencję wieczystą, która obejmuje rozwój i wdrożenie razem, bez wymaganej osobnej licencji produkcyjnej.

Podstawowy problem

Sekwencja inicjalizacjiLEADTOOLSwymaga ponad 20 linii i cztery kroki weryfikacji przed utworzeniem BarcodeEngine.IronBarcode zastępuje całą sekwencję pojedynczym przypisaniem:

// 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 aLEADTOOLSBarCode: porównanie funkcji

FunkcjaLEADTOOLSBarCodeIronBarcode
Model licencjiPlik + klucz programistyTylko klucz ciągu znaków
Wymagane pakiety NuGet5+1
Natywna zależność środowiska uruchomieniowegoMSVC++ 2017 (Windows)None
Rozmiar opublikowanego pliku~148 MB~39 MB
Łączna liczba obsługiwanych symboli40+50+
Automatyczne wykrywanie formatu BarCodeOgraniczoneTak
Pobieranie kodów kreskowych z plików PDFWymagany osobny pakietWbudowane
Korekta błędów MLNieTak
Logo z kodem QRNieTak
Wdrożenie DockerWymagane zamontowanie plikuZmienna środowiskowa
Kod inicjalizacyjnyPonad 20 wierszy1 wiersz
Styl APIGraf obiektów starszego typuStatyczne płynne
WielopłatformoweCzęściowe (natywne zależności)Pełna wersja (.NET Standard)
Ceny licencji wdrożeniowychSkontaktuj się z działem sprzedaży (numer nie jest publikowany)Wliczone w zakup na czas nieokreślony

Szybki start: Migracja zLEADTOOLSBarCode do IronBarcode

Krok 1: Usuń pakiety LEADTOOLS

Usuń wszystkie pakietyLEADTOOLSz projektu:

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

Jeśli dodano kodek PDF do wyodrębniania BARCODE-ów z plików PDF:

dotnet remove package Leadtools.Pdf
SHELL

W przypadku wdrożeń na serwerach Windows Server środowisko uruchomieniowe MSVC++ 2017 można usunąć ze skryptów provisioningu po zakończeniu migracji.IronBarcode nie ma żadnych natywnych zależności środowiskowych na żadnej platformie.

Krok 2: Zainstaluj IronBarcode

dotnet add package IronBarcode
SHELL

Ten pojedynczy pakiet obejmuje obsługę wszystkich formatów obrazów, natywne wyodrębnianie BARCODE-ów z plików PDF, korekcję błędów opartą na uczeniu maszynowym oraz wszystkie ponad 50 obsługiwanych symboli. Nie są wymagane żadne dodatkowe pakiety kodeków.

Krok 3: Zainicjuj licencję

Zastąpić cały blok inicjalizacjiLEADTOOLSjednym wierszem. Zlokalizuj każde wywołanie do RasterSupport.SetLicense w kodzie — zazwyczaj będzie to tylko jedno wywołanie, przy starcie aplikacji — i zastąp całą otaczającą sekwencję inicjalizacji:

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

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

Klucz licencyjny można uzyskać z dowolnego mechanizmu konfiguracji, który obsługuje ciągi znaków: zmiennej środowiskowej, appsettings.json, Azure Key Vault, AWS Secrets Manager lub sekretu Kubernetes. Informacje na temat konfiguracji licencji opartej na środowisku, wzorców wdrażania Docker oraz wszystkich obsługiwanych metod konfiguracji można znaleźć w dokumentacji dotyczącej konfiguracji klucza licencyjnego.

Przykłady migracji kodu

Odczytywanie BarCodes z obrazów

LEADTOOLS oddziela ładowanie obrazów od skanowania BARCODE, tworząc dwie odrębne warstwy obiektów. Instancja RasterCodecs ładuje plik obrazu do RasterImage, a instancja BarcodeEngine skanuje go. Dzwoniący musi również zapewnić wyraźną tablicę wartości BarcodeSymbology; formaty niewymienione w tablicy nie zostaną wykryte.

Podejście LEADTOOLS:

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}");

Podejście IronBarcode:

using IronBarCode;

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

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

IronBarcode akceptuje bezpośrednio ścieżkę do pliku, ładuje obraz wewnętrznie i automatycznie wykrywa formaty spośród ponad 50 obsługiwanych symboli, bez konieczności wyliczania oczekiwanych typów przez wywołującego. Aby uzyskać informacje na temat zaawansowanej konfiguracji — dostosowywania prędkości odczytu, wykrywania wielu kodów kreskowych oraz obsługi obrazów o niskiej jakości — zapoznaj się z przewodnikiem dotyczącym odczytu kodów kreskowych z obrazów.

Generowanie kodu kreskowego Code 128 BarCode

GenerowanieLEADTOOLSwymaga skonstruowania obiektu BarcodeData, przydzielenia pustego RasterImage z wyraźnymi flagami pamięci, głębokością pikseli i kolejnością bajtów, wypełnienia obrazu kolorem tła, umieszczenia na nim kodu kreskowego, a następnie zapisania za pomocą RasterCodecs.IronBarcode wykonuje wszystkie te kroki za pomocą jednego płynnego łańcucha metod.

Podejście LEADTOOLS:

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);

Podejście IronBarcode:

using IronBarCode;

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

Pełny przewodnik dotyczący rozmiarów, stylów, kontroli marginesów i obsługiwanych formatów wyjściowych można znaleźć w sekcji tworzenie obrazów BARCODE.

Generowanie kodu QR z logo marki

Generacja kodu QRLEADTOOLSpodąża tym samym wieloetapowym wzorcem konstrukcji RasterImage, co inne typy kodów kreskowych.IronBarcode oferuje QRCodeWriter z dedykowaną metodą AddBrandLogo do osadzania logo w centrum kodu QR.

Podejście LEADTOOLS:

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);

Podejście IronBarcode:

using IronBarCode;

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

Pobieranie BarCode'ów z dokumentów PDF

Ekstrakcja kodu kreskowego z PDFLEADTOOLSwymaga osobnego pakietu Leadtools.Pdf, wyraźnej konfiguracji ładowania PDF, zapytania o liczbę stron manualnych i pętli po każdej stronie. Każda strona musi być załadowana indywidualnie jako RasterImage przed skanowaniem.IronBarcode zawiera obsługę plików PDF w pakiecie podstawowym i wewnętrznie obsługuje iterację stron.

Podejście LEADTOOLS:

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}");
}

Podejście IronBarcode:

using IronBarCode;

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

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

Wdrażanie Docker

Wymóg zarządzania plikami, który definiuje każde wdrożenieLEADTOOLSw Dockerze, zostaje całkowicie wyeliminowany podczas migracji do IronBarcode.

Podejście LEADTOOLS:

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

Podejście IronBarcode:

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

WORKDIR /app
COPY publish/ .

ENV IRONBARCODE_LICENSE=your-license-key

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

Klucz licencyjny jest wstrzykiwany w czasie wykonywania kontenera za pośrednictwem sekretów Docker, sekretów Kubernetes lub dowolnego mechanizmu zmiennych środowiskowych. Nie jest wymagane dostarczanie plików. Przewodnik wdrażania Docker i Linux obejmuje obrazy bazowe Alpine i Debian, kompilacje wieloetapowe oraz wzorce wdrażania Kubernetes.

Dokumentacja API kodów kreskowychLEADTOOLSdo IronBarcode

LEADTOOLSIronBarcodeUwagi
RasterSupport.SetLicense(path, key)IronBarCode.License.LicenseKey = "key"Tylko klucz — bez pliku
RasterSupport.KernelExpired(removed)Nie jest wymagana kontrola ważności
RasterSupport.IsLocked(RasterSupportType.Barcode1DRead)(removed)Wszystkie funkcje w zestawie
RasterSupport.IsLocked(RasterSupportType.Barcode2DRead)(removed)Wszystkie funkcje w zestawie
RasterSupport.IsLocked(RasterSupportType.BarcodeWrite)(removed)Wszystkie funkcje w zestawie
new BarcodeEngine()Statyczne — brak instancjiBarcodeReader, BarcodeWriter są statyczne
new RasterCodecs()(removed)Przekaż ścieżkę do pliku bezpośrednio
codecs.Load(imagePath)(removed)Przekaż ścieżkę do pliku bezpośrednio
engine.Reader.ReadBarcodes(image, LogicalRectangle.Empty, 0, symbologies)BarcodeReader.Read(imagePath)Automatyczne wykrywanie symboli
BarcodeData.Valueresult.ValueTa sama nazwa właściwości
BarcodeData.Symbologyresult.FormatZmieniono nazwę właściwości
new BarcodeData() { Symbology = BarcodeSymbology.Code128 }BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)Płynne tworzenie
BarcodeSymbology.Code128BarcodeEncoding.Code128Zmiana przestrzeni nazw
BarcodeSymbology.QRBarcodeEncoding.QRCodeZmiana nazwy
BarcodeSymbology.DataMatrixBarcodeEncoding.DataMatrixTa sama nazwa
BarcodeSymbology.PDF417BarcodeEncoding.PDF417Ta sama nazwa
BarcodeSymbology.EAN13BarcodeEncoding.EAN13Ta sama nazwa
BarcodeSymbology.UPCABarcodeEncoding.UPCATa sama nazwa
BarcodeSymbology.Interleaved2of5BarcodeEncoding.Interleaved2of5Ta sama nazwa
BarcodeSymbology.CodabarBarcodeEncoding.CodabarTa sama nazwa
engine.Writer.WriteBarcode(image, data, null) + codecs.Save(...).SaveAsPng(path)Łańcuch metod
new RasterImage(...) + new FillCommand(RasterColor.White).Run(image)(removed)Wewnętrzne dla IronBarcode

Typowe problemy związane z migracją i ich rozwiązania

Problem 1: Odwołania do plików .LIC w CI/CD

LEADTOOLS: Potoki CI/CD, które budują lub wdrażają aplikacje LEADTOOLS, muszą zapewnić plik .LIC — albo go wprowadzając do kontroli źródła, dekodując z tajemnicy base64, albo montując jako artefakt woluminu. Każdy etap potoku, w którym uruchamiana jest aplikacja, wymaga dostępu do tego pliku.

Rozwiązanie: Usunąć całą obsługę plików .LIC z potoku. Zastąpić sekretem w postaci ciągu znaków:

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

Wartość ciągu znaków jest przechowywana w magazynie sekretów CI/CD wraz z innymi poświadczeniami o wartości ciągu znaków. Nie jest wymagane dekodowanie plików, dostarczanie artefaktów ani konfiguracja woluminów.

Problem 2: Zależność środowiska uruchomieniowego MSVC++ od systemu Windows

LEADTOOLS: Wdrożenia na serwerach Windows wymagają zainstalowania środowiska uruchomieniowego MSVC++ 2017 na hoście. Skrypty provisioningu, obrazy bazowe kontenerów i obrazy AMI systemu Windows używane do wdrożeńLEADTOOLSzazwyczaj zawierają krok polegający na instalacji tego środowiska uruchomieniowego.

Rozwiązanie: Usuń krok instalacji środowiska uruchomieniowego MSVC++ 2017 ze wszystkich skryptów konfiguracyjnych systemu Windows i obrazów kontenerów.IronBarcode nie ma żadnych natywnych zależności środowiskowych. Obraz bazowy dotnet/aspnet wystarcza bez dodatkowych pakietów uruchomieniowych.

Problem 3: Kontrola blokady funkcji RasterSupportType

LEADTOOLS: Sekwencja inicjalizacji obejmuje kontrole RasterSupport.IsLocked() dla każdej funkcji kodu kreskowego — Barcodes1D, Barcodes2D, i BarcodeWrite. Są to kody zabezpieczające wymagane przez architekturęLEADTOOLSw celu weryfikacji, czy plik licencji obejmuje wszystkie wymagane funkcje.

Rozwiązanie: Usunąć wszystkie wywołania do RasterSupport.IsLocked().IronBarcode obejmuje wszystkie funkcje odczytu i zapisu w ramach jednej licencji. Nie ma stanów blokady poszczególnych funkcji i nie jest wymagany etap weryfikacji funkcji:

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

Problem 4: Usunięcie tablicy BarcodeSymbology

LEADTOOLS: Każde wywołanie do engine.Reader.ReadBarcodes() wymaga wyraźnego parametru BarcodeSymbology[]. BarCodes, których symbolika nie jest wymieniona w tablicy, nie zostaną wykryte, co może spowodować ciche pominięcia odczytów w przypadku wprowadzenia nowego typu BarCoda w dokumencie wejściowym.

Rozwiązanie: Usuń tablicę symboli. BarcodeReader.Read() automatycznie wykrywa wszystkie obsługiwane formaty. Jeśli konieczna jest optymalizacja wydajności dla znanego zestawu formatów, BarcodeReaderOptions dostarcza opcjonalnych wskazówek bez potrzeby wyczerpującego wyliczania:

// 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);

Lista kontrolna migracji kodów kreskowych LEADTOOLS

Zadania przed migracją

Przed wprowadzeniem jakichkolwiek zmian należy sprawdzić wszystkie użyciaLEADTOOLSw kodzie źródłowym:

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

Przed rozpoczęciem wprowadzania zmian w kodzie należy udokumentować liczbę i lokalizację bloków inicjalizacyjnych, miejsc wywołań odczytu, miejsc wywołań zapisu oraz odwołań do pliku Dockerfile.

Zadania związane z aktualizacją kodu

  1. Usuń wszystkie pięć pakietówLEADTOOLSNuGet (oraz kodek PDF, jeśli jest obecny)
  2. Zainstaluj IronBarcode poprzez dotnet add package IronBarcode
  3. Zastąp wszystkie importy przestrzeni nazw using Leadtools.* przez using IronBarCode
  4. Zastąp cały blok inicjalizacji RasterSupport.SetLicense przez IronBarCode.License.LicenseKey = "key"
  5. Usuń wszystkie kontrole RasterSupport.KernelExpired
  6. Usuń wszystkie kontrole RasterSupport.IsLocked(RasterSupportType.*)
  7. Usuń wszystkie instancje new BarcodeEngine()
  8. Usuń wszystkie instancje new RasterCodecs() z ścieżek kodów kreskowych
  9. Zastąp codecs.Load(path) + engine.Reader.ReadBarcodes(image, ...) przez BarcodeReader.Read(path)
  10. Zastąp new BarcodeData(...) + new RasterImage(...) + FillCommand + WriteBarcode + codecs.Save() przez BarcodeWriter.CreateBarcode(...).SaveAsPng(path)
  11. Zastąp odniesienia BarcodeSymbology.* do wyliczeń przez BarcodeEncoding.* (uwaga: QR staje się QRCode)
  12. Usuń linie COPY LEADTOOLS.LIC z wszystkich plików Dockerfile
  13. Usuń deklaracje zmiennych środowiskowych LEADTOOLS_LICENSE_PATH i LEADTOOLS_DEVELOPER_KEY z Dockerfiles i konfiguracji wdrożenia
  14. Dodaj zmienną środowiskową IRONBARCODE_LICENSE do Dockerfiles i konfiguracji tajemnic
  15. Usuń instalację środowiska uruchomieniowego MSVC++ 2017 ze skryptów konfiguracyjnych systemu Windows

Testy po migracji

  • Zweryfikuj, że wszystkie operacje odczytu kodu kreskowego zwracają oczekiwane wartości dla wszystkich typów symboliki, które wcześniej obsługiwała tablica BarcodeSymbology[]
  • Kod Verify Code 128, kod QR i wszelkie inne generowane typy BARCODE-ów zapewniają prawidłowy, skanowalny wynik
  • Potwierdź, że ekstrakcja kodu kreskowego z PDF działa poprawnie bez Leadtools.Pdf
  • Zbuduj i uruchom obraz kontenerowy bez montowania jakiegokolwiek pliku .LIC i potwierdź, że aplikacja prawidłowo się inicjalizuje
  • Uruchom potok CI/CD bez kroku povizjonowania pliku .LIC i potwierdź, że wszystkie etapy kończą się sukcesem
  • Sprawdź, czy poprawiły się rozmiar opublikowanego pliku wyjściowego oraz czas pobierania obrazu kontenera

Kluczowe korzyści wynikające z migracji do IronBarcode

Uproszczona architektura wdrażania: Po migracji każde środowisko — programistyczne, CI, stagingowe, produkcyjne — otrzymuje licencję za pośrednictwem tego samego mechanizmu sekretów o wartości ciągu znaków, który jest używany dla kluczy API, haseł do baz danych i innych poświadczeń. Nie jest wymagane dostarczanie plików, obsługa artefaktów ani montowanie woluminów. Dodanie nowego środowiska wdrożeniowego jest operacją taką samą jak dodanie dowolnego innego sekretu.

Zmniejszona powierzchnia zależności: jeden pakiet NuGet zastępuje pięć, a wymóg środowiska uruchomieniowego MSVC++ 2017 został wyeliminowany. Publikowany wynik usługi BarCode zmniejsza się z około 148 MB do około 39 MB. Mniejsze obrazy oznaczają szybsze pobieranie kontenerów, niższe koszty przechowywania w rejestrach kontenerów oraz skrócony czas zimnego startu w środowiskach bezserwerowych i z automatycznym skalowaniem.

Usprawnione uruchamianie aplikacji: 20-wierszowa sekwencja inicjalizacjiLEADTOOLS— rozpoznawanie ścieżki pliku, weryfikacja ważności oraz trzy kontrole blokady dla poszczególnych funkcji — została zastąpiona jednym wierszem. Uruchamianie aplikacji przebiega szybciej, a ścieżka kodu inicjalizacji nie jest uzależniona od systemu plików, co mogłoby spowodować awarię w nowym środowisku.

**Kompleksowe wykrywanie formatów:**IronBarcode odczytuje wszystkie z ponad 50 obsługiwanych symboli bez konieczności określania oczekiwanych formatów przez użytkownika. Ryzyko wyciszonych pominiętych odczytów — spowodowane pominięciem symboliki z tablicy BarcodeSymbology[]LEADTOOLS— jest wyeliminowane. Gdy w dokumencie wejściowym pojawia się nowy typ kodu kreskowego,IronBarcode wykrywa go bez konieczności zmiany kodu.

Przewidywalny całkowity koszt: Zakup pojedynczej licencji wieczystej obejmuje rozwój, testowanie i nieograniczoną liczbę wdrożeń produkcyjnych bez śledzenia wdrożeń, bez wymogu corocznego odnawiania i bez konieczności uzyskiwania oddzielnej licencji produkcyjnej. Zespoły mogą potwierdzić całkowity koszt biblioteki przed rozpoczęciem prac programistycznych, bez konieczności prowadzenia rozmów handlowych.

Nowoczesny projekt API: BarcodeReader.Read() i BarcodeWriter.CreateBarcode() są statycznymi punktami wejścia, które akceptują ścieżki plików bezpośrednio. Wielowarstwowa konstrukcja obiektów wymagana do odczytu i zapisu wLEADTOOLS— instancje kodeków, instancje silników, alokacja obrazów, wypełnienie tła — jest obsługiwana wewnętrznie. Kod odczytujący i generujący BARCODES jest krótszy, łatwiejszy do przeglądu i łatwiejszy do testowania.

LEADTOOLS jest zarejestrowanym znakiem towarowym swojego właściciela. Ta strona nie jest powiązana, zatwierdzona ani sponsorowana przez LEAD Technologies. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.)}]

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta