IRONSOFTWAREHOME
FILMY

Migrating fromSyncfusionBarCode to IronBarcode

Curtis Chau
Curtis Chau
Updated: 1 sierpnia 2026

Ten przewodnik zapewnia pełną ścieżkę migracji z kontrolki kodu kreskowegoSyncfusion— SfBarcode dla WinForms i WPF, SfBarcodeGenerator dla Blazor i MAUI — do IronBarcode. Obejmuje on strukturalne powody, dla których zespoły dokonują tej zmiany, szybki przewodnik krok po kroku dotyczący wymiany pakietów NuGet i konfiguracji licencji, pełne przykłady kodu "przed i po" dla każdego typowego scenariusza oraz listę kontrolną migracji do audytu istniejącej bazy kodu. Jeśli w projekcie wykorzystywane są również inne komponentySyncfusion(tabele, wykresy, harmonogramy), pakiety te i ich rejestracje pozostają bez zmian — zmiany dotyczą wyłącznie kodu związanego z kodami kreskowymi BarCode.

Dlaczego warto przejść zSyncfusionBarCode

Luka w odczycie: SfBarcode i SfBarcodeGenerator to kontrolki generujące bez możliwości odczytu. Nie ma metody .Read() ani .Scan() w żadnej z klas. Gdy projekt wymaga odczytu kodów kreskowych z przesłanych obrazów, zeskanowanych dokumentów lub plików PDF, kontrolka kodów kreskowychSyncfusionnie oferuje żadnego rozwiązania. DokumentacjaSyncfusionwskazuje zespołom rozwiązanie Barcode Reader OPX, które jest oddzielnym produktem komercyjnym, który należy nabyć, licencjonować i utrzymywać niezależnie.

OPX jako płatna nakładka na darmowe oprogramowanie: czytnik BarCode OPX wykorzystuje wewnętrznie ZXing.Net — bibliotekę open source do odczytu kodów kreskowych opublikowaną na licencji Apache 2.0. Apache 2.0 jest licencją liberalną; każdy programista .NET może zainstalować ZXing.Net bezpośrednio za pomocą dotnet add package ZXing.Net i używać go w aplikacjach komercyjnych bez opłat. Pełen przepływ pracySyncfusiondo odczytu i generowania wymaga dwóch oddzielnych produktów Syncfusion, dwóch umów licencyjnych oraz dwóch interfejsów API — podczas gdy możliwość odczytu mogłaby być zaczerpnięta bezpośrednio z bezpłatnej biblioteki, którą opx opakowuje.

Warunki licencji społecznościowej: Licencja społecznościowa firmySyncfusionwymaga spełnienia czterech warunków jednocześnie i w sposób ciągły: roczny przychód brutto poniżej 1 000 000 USD, maksymalnie pięciu programistów, maksymalnie dziesięciu pracowników ogółem oraz łączny pozyskany kapitał zewnętrzny poniżej 3 000 000 USD. Organizacje rządowe nie kwalifikują się do uzyskania licencji niezależnie od wielkości. Naruszenie któregokolwiek z tych warunków powoduje natychmiastowy obowiązek uzyskania licencji komercyjnej. Runda finansowania serii A zazwyczaj powoduje, że w dniu jej zamknięcia zebrany kapitał przekracza 3 000 000 USD, co powoduje naliczenie opłaty licencyjnej niezależnie od wielkości zespołu lub przychodów. Przejście komercyjne przechodzi z $0 do rocznej subskrypcji Essential Studio na każdego dewelopera — a ta subskrypcja obejmuje cały zestaw narzędzi, a nie tylko komponent kodów kreskowych. Opublikowana ścieżkaSyncfusionto niestandardowa oferta od działu sprzedaży.

Rotacja kluczy zależna od wersji: Klucze licencyjneSyncfusionsą powiązane z konkretnymi zakresami wersji Essential Studio. Aktualizacja z wersji 24.x do 25.x wymaga uzyskania nowego klucza z portalu konta, zaktualizowania tego klucza w magazynie sekretów każdego środowiska wdrożeniowego oraz ponownego wdrożenia, aby zapobiec pojawianiu się znaków wodnych wersji próbnej w wynikach produkcyjnych. Dla zespołów o częstym cyklu wydawniczym lub wielu celach wdrożeniowych ta rotacja staje się powtarzającym się obciążeniem operacyjnym, które jest nieproporcjonalne do podstawowego wymogu generowania obrazu BARCODE.

Podstawowy problem

Architektura kontrolkiSyncfusionsprawia, że programowe generowanie plików odbywa się w sposób pośredni. Utworzenie pliku kodu kreskowego za pomocą SfBarcode wymaga wcześniejszego przydzielenia Bitmap, wywoływania DrawToBitmap, a następnie zapisania bitmapy — wzorzec renderowania WinForms, który jest uzależniony od środowiska uruchomieniowego Windows Forms:

//SyncfusionSfBarcode: indirect file output through DrawToBitmap
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "SHIP-2024-001";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.Width = 400;
barcode.Height = 150;

using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("shipping-label.png", ImageFormat.Png);
// Reading: not possible — requires separate OPX purchase
C#

IronBarcode generuje pliki bezpośrednio i odczytuje je za pomocą tego samego pakietu:

// IronBarcode: direct generation and reading in one package
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// Generate
BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPng("shipping-label.png");

// Read — same package, no additional product required
var results = BarcodeReader.Read("shipping-label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");

##IronBarcode aSyncfusionBarCode: porównanie funkcji

FunkcjaSyncfusionBarCodeIronBarcode
Generowanie BarCode'ówTak — kontrolki interfejsu użytkownika (WinForms, WPF, Blazor, MAUI)Tak — statyczne API, wszystkie środowiska
Odczytywanie BarCodeNie — wymagany jest oddzielny czytnik BarCode OPXTak — ten sam pakiet
Produkt do odczytu plików OPX wykorzystuje bibliotekę ZXing.Net (Apache 2.0)TakNie dotyczy
Wyjście w formacie PDF z kodem kreskowym BarCodeNie — wymaga dodatkowo Syncfusion.PDFTak — SaveAsPdf() wbudowany
Odczytywanie BarCodes z plików PDFNieTak — native
Generowanie po stronie serwera / bezinterfejsoweWymaga środowiska uruchomieniowego WinForms (DrawToBitmap)Natywny — bez zależności od interfejsu użytkownika
Wdrożenie w środowisku Docker / LinuxOgraniczonePełne wsparcie
Minimalny interfejs API .NET CoreNieobsługiwane bezpośrednioPełne wsparcie
Kod QR z osadzonym logoNieTak — .AddBrandLogo()
Automatyczne wykrywanie formatu podczas odczytuNie dotyczyTak
Społeczność / poziom darmowyLicencja społecznościowa (cztery warunki równoczesne)30-dniowy okres próbny (tylko znak wodny)
Model licencji komercyjnejRoczna subskrypcja (Essential Studio)Wieczysta (jednorazowa, zobacz ironsoftware.com/csharp/barcode/licensing)
Zakres klucza licencyjnegoSpecyficzne dla wersji, aktualizowane wraz z głównymi aktualizacjami NuGetWersja stabilna w ramach głównej wersji
Kroki rejestracji platformy3–4 kroki (RegisterLicense + AddSyncfusionBlazor + ConfigureSyncfusionCore + importy Razor)Jedna linia, wszystkie platformy
Zakres formatów 1DCode 128, Code 39, EAN, UPC, Codabar i inneWszystkie formatySyncfusionPlus PDF417, Aztec, MaxiCode, GS1, USPS IMb i ponad 50 innych
Zakres formatów 2DKod QR, DataMatrixQR Code, DataMatrix, PDF417, Micro PDF417, Aztec, MaxiCode

Szybki start

Krok 1: Zastąp pakiety NuGet

Usuń pakiet kodów kreskowychSyncfusiondla używanej platformy. Jeśli projekt jest przeznaczony dla wielu platform, uruchom usuwanie dla każdej z nich:

# Blazor
dotnet remove package Syncfusion.Blazor.BarcodeGenerator

# WinForms
dotnet remove package Syncfusion.SfBarcode.Windows

# WPF
dotnet remove package Syncfusion.SfBarcode.WPF

# MAUI
dotnet remove package Syncfusion.Maui.Barcode
SHELL

Jeśli po usunięciu pakietu BarCode w projekcie nie pozostały żadne inne pakiety Syncfusion, usuń również pakiet licencyjny:

dotnet remove package Syncfusion.Licensing
SHELL

Zainstaluj IronBarcode— jeden pakiet dla wszystkich platform:

dotnet add package IronBarcode
SHELL

Krok 2: Aktualizacja przestrzeni nazw

Usuń przestrzenie nazwSyncfusionBarCode i dodaj przestrzeń nazw IronBarcode:

// Remove these (barcode-specific; leave others if non-barcodeSyncfusioncontrols remain)
using Syncfusion.Windows.Forms.Barcode;
using Syncfusion.Licensing;
// @using Syncfusion.Blazor.BarcodeGenerator  (in _Imports.razor)

// Add this
using IronBarCode;
C#

Krok 3: Inicjalizacja licencji

Usuń rejestrację licencjiSyncfusioni konfigurację platformy z sekcji uruchamiania aplikacji. Następnie dodaj pojedynczy wiersz licencji IronBarcode w tym samym miejscu:

// Remove from Program.cs / App.xaml.cs / MauiProgram.cs:
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");
builder.Services.AddSyncfusionBlazor();         // Blazor only — remove if no otherSyncfusioncontrols
builder.ConfigureSyncfusionCore();              // MAUI only — remove if no otherSyncfusioncontrols

// Add at the same startup point:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
C#

W przypadku potoków CI/CD i kontenerów Docker należy zapisać klucz w zmiennej środowiskowej:

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

Przykłady migracji kodu

WinForms SfBarcode do BarcodeWriter

Migracja WinForms eliminuje DrawToBitmap i zastępuje ją bezpośrednim łańcuchem wyjściowym pliku. WzórSyncfusionwymaga wcześniejszego przydziału Bitmap o znanych wymiarach;IronBarcode oblicza wymiary w ramach wywołania generującego.

Podejście firmy Syncfusion:

using Syncfusion.Windows.Forms.Barcode;
using System.Drawing;
using System.Drawing.Imaging;

Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "ORD-20240315-001";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.BarHeight = 100;
barcode.NarrowBarWidth = 1;
barcode.ShowText = true;
barcode.Width = 400;
barcode.Height = 150;

using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("order-label.png", ImageFormat.Png);

Podejście IronBarcode:

using IronBarCode;

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

BarcodeWriter.CreateBarcode("ORD-20240315-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .AddBarcodeText()
    .SaveAsPng("order-label.png");

BarcodeSymbolType.Code128A mapuje się do BarcodeEncoding.Code128. Sekwencja DrawToBitmap + Bitmap.Save redukuje się do .SaveAsPng(). Jeśli kod kreskowy musi być wyświetlony wewnątrz komponentu WinForms PictureBox zamiast być zapisany na dysku, użyj .ToPngBinaryData() do załadowania obrazu do kontrolki. Pełen zakres formatów kodów kreskowych 1D w IronBarcode znacznie wykracza poza listę obsługiwanych formatów przez kontrolkę Syncfusion.

Blazor SfBarcodeGenerator do minimalnego punktu końcowego API

Migracja do Blazora to raczej zmiana strukturalna niż zamiana linii po linii. SfBarcodeGenerator to komponent Razor, który renderuje się w przeglądarce przez warstwę JavaScript Syncfusion.IronBarcode nie posiada komponentu Razor; Jest to biblioteka po stronie serwera. Wzorzec zastępczy to minimalny punkt końcowy API na serwerze, który zwraca bajty kodu kreskowego, odwołujące się w stronie Razor jako źródło obrazu.

Podejście firmy Syncfusion:

@page "/fulfillment"
@using Syncfusion.Blazor.BarcodeGenerator

<SfBarcodeGenerator
    Width="300px"
    Height="150px"
    Type="BarcodeType.Code128"
    Value="@orderNumber">
    <BarcodeGeneratorDisplayText Visibility="true"></BarcodeGeneratorDisplayText>
</SfBarcodeGenerator>

@code {
    private string orderNumber = "ORD-20240315-001";
}
Text

Podejście IronBarcode:

Dodaj punkt końcowy generowania w Program.cs:

using IronBarCode;

app.MapGet("/barcode/{value}", (string value) =>
{
    var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
        .ResizeTo(300, 150)
        .AddBarcodeText()
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});

Odwołaj się do punktu końcowego w komponencie Razor:

@page "/fulfillment"

<img src="/barcode/@orderNumber" alt="Order barcode: @orderNumber" />

@code {
    private string orderNumber = "ORD-20240315-001";
}
Text

Ten punkt końcowy można testować niezależnie, można go ponownie wykorzystać z dowolnego klienta HTTP i jest on zgodny z Blazor Server, Blazor WebAssembly z hostowanym backendem API oraz dowolnym innym frontendem internetowym.

Generowanie kodów QR

KomponentSyncfusionQR jest również renderowany przez przeglądarkę bez ścieżki wyjściowej po stronie serwera.IronBarcode generuje kody QR po stronie serwera z bezpośrednim wypisem do pliku.

Podejście firmy Syncfusion:

@using Syncfusion.Blazor.BarcodeGenerator

<SfQRCodeGenerator
    Width="300px"
    Height="300px"
    Value="https://example.com/product/ABC-123">
    <QRCodeGeneratorDisplayText Visibility="false">
    </QRCodeGeneratorDisplayText>
</SfQRCodeGenerator>
Text

Podejście IronBarcode:

using IronBarCode;

// Standard QR code
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 300,
    QRCodeWriter.QrErrorCorrectionLevel.High)
    .SaveAsPng("product-qr.png");

// QR code with embedded brand logo — not available in Syncfusion
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("product-qr-branded.png");

Zastąpienie czytania OPX

Jeśli w projekcie używano czytnika kodów kreskowych BarCode OPX — lub odłożono wymóg odczytu do przyszłego zakupu OPX —IronBarcode zastępuje tę zależność pakietem, który jest już zainstalowany. Brak produktu dodatkowego, brak drugiej licencji.

PodejścieSyncfusion(BarCode Reader OPX):

// Requires separateSyncfusionBarCode Reader OPX purchase
// OPX wraps ZXing.Net internally (Apache 2.0 — free to use directly)
using Syncfusion.BarcodeReader;

var reader = new BarcodeReader();
var results = reader.ReadBarcodes("warehouse-scan.png");
foreach (var result in results)
    Console.WriteLine($"Value: {result.Value}");
C#

Podejście IronBarcode:

using IronBarCode;

// Included in the same NuGet package as generation — no second product required
var results = BarcodeReader.Read("warehouse-scan.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Confidence: {result.Confidence}%");
}

Dokumentacja dotycząca odczytu kodów kreskowych obejmuje odczyt z tablic bajtów dla procedur obsługi przesyłania, dostosowanie szybkości w stosunku do dokładności oraz wykrywanie wielu kodów kreskowych.

Generowanie BarCode'ów w formacie PDF

Kontrolki BarCodeSyncfusionnie mają ścieżki wyjściowej PDF.IronBarcode traktuje PDF jako format wyjściowy pierwszej klasy.

Podejście firmy Syncfusion:

// Nie direct path — requires combining Syncfusion.Barcode.WinForms and Syncfusion.Pdf
// Step 1: Generate to Bitmap via DrawToBitmap
// Step 2: LoadSyncfusionPDF document
// Step 3: Insert bitmap as image element
// Two packages, two APIs, two license obligations
C#

Podejście IronBarcode:

using IronBarCode;

// Generate directly to PDF — no secondary library required
BarcodeWriter.CreateBarcode("PALLET-2024-0891", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPdf("pallet-label.pdf");

// Read barcodes from an existing PDF
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");

Przewodnik po generowaniu plików PDF z kodami kreskowymi obejmuje wielostronicowe pliki PDF oraz osadzanie kodów kreskowych obok innych treści dokumentu.

##SyncfusionBarCode API do IronBarcode Mapping Reference

SyncfusionIronBarcode
SyncfusionLicenseProvider.RegisterLicense("KEY")IronBarCode.License.LicenseKey = "key"
builder.Services.AddSyncfusionBlazor()Nie jest wymagane
builder.ConfigureSyncfusionCore()Nie jest wymagane
new SfBarcode()BarcodeWriter.CreateBarcode() (statyczny)
barcode.Text = "value"Pierwszy parametr CreateBarcode()
barcode.Symbology = BarcodeSymbolType.Code128ABarcodeEncoding.Code128
barcode.Symbology = BarcodeSymbolType.QRBarcodeQRCodeWriter.CreateQrCode()
barcode.BarHeight = 100.ResizeTo(width, 100)
barcode.ShowText = true.AddBarcodeText()
barcode.DrawToBitmap(bitmap, rect).SaveAsPng(path)
Ręczne BitmapMemoryStream.ToPngBinaryData()
<SfBarcodeGenerator Type="BarcodeType.Code128" Value="...">BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128) w punkcie końcowym API
<SfQRCodeGenerator Value="...">QRCodeWriter.CreateQrCode(value, size) w punkcie końcowym API
BarcodeType.Code128 (enum Blazor)BarcodeEncoding.Code128
Czytnik kodów kreskowych OPX (oddzielny produkt, wykorzystujący bibliotekę ZXing.Net)BarcodeReader.Read(path) — natywnie, ten sam pakiet
Brak odczytu API w kontroliBarcodeReader.Read(path)
Brak możliwości generowania plików PDF.SaveAsPdf(path)
Brak możliwości odczytu plików PDFBarcodeReader.Read("document.pdf")

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

Problem 1: Znak wodny wersji próbnej po aktualizacji NuGet

Syncfusion: Aktualizacja z Essential Studio 24.x do 25.x powoduje unieważnienie istniejącego klucza licencyjnego. Wszelkie dane wyjściowe wygenerowane przed aktualizacją magazynu kluczy będą zawierały znak wodny wersji próbnej. Jest to cicha awaria — aplikacja nadal działa, ale generuje wyniki niezgodne z wymaganiami.

Rozwiązanie: Po aktualizacji pakietu IronBarcode NuGet klucz licencyjny nie zmienia się w ramach tej samej wersji głównej. W przypadku wydania wersji z drobnymi zmianami lub poprawkami nie jest wymagana aktualizacja ani ponowne wdrożenie. Podczas aktualizacji do nowej głównej wersji należy zaktualizować klucz raz w punkcie wejścia aplikacji:

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

Problem 2: Funkcja DrawToBitmap nie działa w środowiskach bezinterfejsowych

Syncfusion: SfBarcode.DrawToBitmap zależy od potoku renderowania Windows Forms. W procesie ASP.NET Core, Azure Function lub kontenerze Docker na Linuxie, wywołanie DrawToBitmap spowoduje rzucenie InvalidOperationException lub wygenerowanie pustej bitmapy, ponieważ nie ma pętli komunikatów Windows Forms.

Rozwiązanie: Zastąp BarcodeWriter.CreateBarcode().IronBarcode generuje kody w kodzie zarządzanym bez żadnych zależności od środowiska uruchomieniowego interfejsu użytkownika:

// Works in ASP.NET Core, Azure Functions, Docker on Linux, console apps
var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .ToPngBinaryData();

Problem 3: SfBarcodeGenerator nie ma wyjścia po stronie serwera

Syncfusion: SfBarcodeGenerator to komponent Razor bez powierzchni API po stronie serwera. Próby użycia go w akcji kontrolera lub usłudze działającej w tle nie znajdą żadnej odpowiedniej metody do generowania bajtów kodu kreskowego BarCode.

Rozwiązanie: Utwórz minimalny punkt końcowy API, który generuje kod kreskowy po stronie serwera i zwraca go jako odpowiedź HTTP. Odniesienie do punktu końcowego z komponentu Razor za pomocą tagu <img src="...">:

app.MapGet("/barcode/{value}", (string value) =>
{
    var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
        .ResizeTo(300, 150)
        .ToPngBinaryData();
    return Results.File(bytes, "image/png");
});

Problem 4: Brak możliwości odczytu (nie zakupiono OPX)

Syncfusion: Projekty, w których odłożono odczyt kodów BARCODE, ponieważ nie zakupiono jeszcze OPX, nie mają kodu do odczytu, który należałoby przenieść. Dodanie możliwości odczytu od podstaw wymaga zakupu OPX, integracji oraz nowej Umowy licencyjnej.

Rozwiązanie: Odczyt kodów kreskowych IronBarcode jest zawarty w tym samym pakiecie. Nie jest wymagane żadne zamówienie ani dodatkowa licencja. Dodaj BarcodeReader.Read(path) zawsze, gdy potrzebny jest odczyt:

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

Problem 5: Wygaśnięcie licencji społecznościowej podczas migracji

Syncfusion: Zespół korzystający z licencji Community, który przekroczy dowolny próg kwalifikacyjny w okresie migracji — w tym zamknie rundę finansowania — może zauważyć, że kontrolkiSyncfusionprzestaną generować prawidłowe wyniki przed zakończeniem migracji.

Rozwiązanie: 30-dniowy okres próbny IronBarcode umożliwia pełną ocenę bez żadnych warunków dotyczących przychodów, liczby pracowników czy kapitału. Na wygenerowanym wyniku pojawia się znak wodny wersji próbnej; Aktywacja zakupionego klucza licencyjnego powoduje jego usunięcie. W modelu licencyjnym IronBarcode nie ma ograniczeń dotyczących wielkości organizacji.

Lista kontrolna migracji BarCode Syncfusion

Zadania przed migracją

Przeprowadź audyt kodu źródłowego, aby zlokalizować każdy plik odwołujący się do BarCODE-a Syncfusion:

grep -r "SyncfusionLicenseProvider.RegisterLicense\|AddSyncfusionBlazor\|ConfigureSyncfusionCore" --include="*.cs" .
grep -r "new SfBarcode\(\)\|SfBarcodeGenerator\|SfQRCodeGenerator" --include="*.cs" --include="*.razor" .
grep -r "BarcodeSymbolType\.\|BarcodeType\." --include="*.cs" --include="*.razor" .
grep -r "DrawToBitmap\|barcode\.Text\s*=" --include="*.cs" .
grep -r "Syncfusion\.Barcode\|Syncfusion\.Blazor\.BarcodeGenerator" --include="*.csproj" .
SHELL

Przed napisaniem jakiegokolwiek kodu migracyjnego należy udokumentować następujące kwestie:

  • Wypisz każdy plik, który wywołuje SyncfusionLicenseProvider.RegisterLicense
  • Wypisz każde utworzenie SfBarcode i przypisywanie jego właściwości
  • Wypisz każde użycie komponentu Razor <SfBarcodeGenerator> i <SfQRCodeGenerator>
  • Wypisz każde wywołanie DrawToBitmap i ścieżkę zapisu lub wyświetlania w dół strumienia
  • Sprawdź, czy zainstalowany jest program BarCode Reader OPX; jeśli tak, wymień wszystkie wezwania do odczytu

Zadania związane z aktualizacją kodu

  1. Usuń pakiety NuGet z kodami BARCODESyncfusiondla każdej platformy w projekcie
  2. Usuń pakiet NuGet Syncfusion.Licensing, jeśli nie pozostają żadne inne kontrolki Syncfusion
  3. Zainstaluj pakiet NuGet IronBarcode
  4. Zastąp SyncfusionLicenseProvider.RegisterLicense("KEY") za pomocą IronBarCode.License.LicenseKey = "KEY" w punkcie wejścia aplikacji
  5. Usuń builder.Services.AddSyncfusionBlazor(), jeśli nie pozostają żadne inne kontrolki Syncfusion
  6. Usuń builder.ConfigureSyncfusionCore(), jeśli nie pozostają żadne inne kontrolki Syncfusion
  7. Usuń @using Syncfusion.Blazor i @using Syncfusion.Blazor.BarcodeGenerator z _Imports.razor, jeśli dotyczy
  8. Zastąp using Syncfusion.Windows.Forms.Barcode i using Syncfusion.Licensing za pomocą using IronBarCode
  9. Zastąp każdy blok new SfBarcode() + przypisania właściwości + DrawToBitmap za pomocą BarcodeWriter.CreateBarcode(value, BarcodeEncoding.X).ResizeTo(w, h).SaveAsPng(path)
  10. Zastąp BarcodeSymbolType.Code128A (i odpowiedniki) za pomocą BarcodeEncoding.Code128
  11. Zastąp BarcodeType.Code128 (enum Blazor) za pomocą BarcodeEncoding.Code128
  12. Zastąp każdy komponent Razor <SfBarcodeGenerator> komponentem API minimalnym i odniesieniem <img src="..."> w komponencie
  13. Zastąp każdy komponent Razor <SfQRCodeGenerator> komponentem API QRCodeWriter.CreateQrCode() i odniesieniem <img src="...">
  14. Zastąp wszystkie wywołania odczytu Barcode Reader OPX za pomocą BarcodeReader.Read(path)
  15. Dodaj BarcodeReader.Read(path) zawsze, gdy wcześniej brakowało możliwości odczytu z powodu braku zakupu OPX

Testy po migracji

  • Sprawdź, czy wygenerowane obrazy BarCode nadają się do skanowania, używając skanera sprzętowego lub aplikacji do odczytu.
  • Sprawdź, czy po aktywacji klucza licencyjnego na wygenerowanym pliku nie pojawiają się żadne znaki wodne wersji próbnej
  • Potwierdź, że BarcodeReader.Read() zwraca oczekiwaną wartość i format dla każdego używanego typu kodu kreskowego
  • Przetestuj wyjście PDF za pomocą .SaveAsPdf(), aby potwierdzić, że wymiary strony i kodu kreskowego odpowiadają wymaganiom projektowym
  • Przetestuj bezpośrednio minimalny punkt końcowy API Blazor (przez przeglądarkę lub klienta HTTP) przed testowaniem w komponencie Razor
  • Sprawdź, czy wdrożenie w środowisku Docker i Linux daje identyczne wyniki jak na komputerach programistycznych z systemem Windows
  • Przeprowadź ostateczny audyt grep, aby potwierdzić brak pozostałych odniesień do SfBarcode, SfBarcodeGenerator, DrawToBitmap, BarcodeSymbolType, lub SyncfusionLicenseProvider

Kluczowe korzyści wynikające z migracji do IronBarcode

Ujednolicone generowanie i odczyt: Po migracji zarówno generowanie, jak i odczyt działają za pośrednictwem jednego pakietu NuGet na jednej licencji. Nie ma potrzeby zakupu dodatkowego produktu, nauki obsługi kolejnego interfejsu API ani korzystania z opakowania ZXing.Net, które pochłania budżet licencyjny, który można by przeznaczyć na bezpośrednią bibliotekę open source.

Eliminacja rotacji kluczy specyficznej dla wersji: Klucze licencyjne IronBarcode zachowują ważność w przypadku aktualizacji pomniejszych i poprawek w ramach głównej wersji. Całkowicie eliminuje się nakłady operacyjne związane z uzyskiwaniem nowego klucza, aktualizowaniem sekretów w każdym środowisku wdrożeniowym oraz ponownym wdrażaniem w celu usunięcia znaków wodnych wersji próbnej przy każdej większej Aktualizacji wersji NuGet.

Wdrożenie niezależne od platformy: Ten sam pakiet IronBarcode i ten sam interfejs API generowania działają w aplikacjach desktopowych WinForms, usługach ASP.NET Core, Azure Functions, aplikacjach konsolowych oraz kontenerach Docker na systemie Linux. Zależność środowiska uruchomieniowego Windows Forms wprowadzonego przez DrawToBitmap jest usunięta, a wdrożenia Blazor przenoszą się z przeglądarek komponentów na API po stronie serwera, które jest niezależnie testowalne i agnostyczne dla klienta.

Natywna obsługa plików PDF: Generowanie i odczyt plików PDF odbywa się w sposób natywny. Tworzenie pliku PDF z kodem kreskowym nie wymaga już koordynacji dwóch produktów Syncfusion; Odczytywanie BarCodes z manifestów PDF i dokumentów wysyłkowych nie wymaga już oddzielnego etapu ekstrakcji plików PDF.

Przewidywalna ekonomika licencji: Model licencji wieczystej IronBarcode nie nakłada żadnych limitów dotyczących przychodów, liczby pracowników ani kapitału. Zespoły, które przekroczyły warunki kwalifikacyjne licencjiSyncfusionCommunity License — lub które przewidują, że tak się stanie — przechodzą na model licencyjny, w którym rozwój organizacji nie powoduje konieczności dostosowania się do nowych warunków.

Zwróć uwagę: Syncfusion i ZXing.NET to zarejestrowane znaki towarowe ich odpowiednich właścicieli. Ta strona nie jest powiązana z, wspierana ani sponsorowana przezSyncfusionlub ZXing.NET. 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