Przejdź do treści stopki
PORóWNAJ Z INNYMI KOMPONENTAMI

Aspose BarCode dla przykładu .NET vs. IronBarcode: Porównanie bok do bok z przykładami kodu

Barcode4NETkontra IronBarcode: porównanie generatora kończącego żywot z nowoczesną biblioteką kodów kreskowych dla .NET

Barcode4NET faktycznie kończy swój żywot. Ostatnie wydanie —Barcode4NET2.0 od O2 Solutions — miało miejsce 25 czerwca 2007 roku. Nowe licencje nie są już sprzedawane przez ComponentSource (istniejący klienci mogą jeszcze przedłużyć wsparcie i aktualizacje oprogramowania), nigdy nie opublikowano pakietu NuGet, a biblioteka jest skierowana do.NET Framework1.1 / 2.0 / 3.x i .NET Compact Framework. Dla zespołów, które odziedziczyły zależność od Barcode4NET, niniejszy artykuł porównuje możliwości tej bibliotekiBarcode4NETz tym, co obecnie oferuje biblioteka IronBarcode— uwzględniając zasięg platformy, projekt API, możliwości odczytu kodów kreskowych oraz realia licencyjne, które sprawiają, że bezpośrednia ocena tych rozwiązań jest nieco nietypowa.

Zrozumienie Barcode4NET

Barcode4NET była komercyjną biblioteką generowania kodów kreskowych wydaną przez O2 Solutions i dystrybuowaną przez ComponentSource. Zaprojektowana dla aplikacji opartych na.NET Frameworkdla Windows — głównie Windows Forms, ASP.NET Web Forms, .NET Compact Framework i SQL Server Reporting Services 2000 / 2005 — dostarczała czyste bitmapowe i wektorowe wyniki dla jednowymiarowych i dwuwymiarowych symboli swoich czasów.

Biblioteka nigdy nie była dostępna jako pakiet NuGet. Był dystrybuowany jako biblioteka DLL, którą programiści dodawali do kontroli wersji lub umieszczali w wspólnej lokalizacji artefaktów. Kazdy projekt, ktory go uzywal, wymagal recznego elementu <Reference> w pliku .csproj wskazujacego na DLL na dysku. Była to standardowa praktyka w czasach, gdyBarcode4NETbył aktywny, ale powoduje to znaczne utrudnienia we współczesnych procesach CI/CD.

Kluczowe cechy architektury Barcode4NET:

  • API ustawiania wlasciwosci: Deweloperzy tworzyli obiekt Barcode, przypisywali Symbology, Data, Width, oraz Height jako wlasciwosci, nastepnie wywolywali GenerateBarcode(), aby otrzymac System.Drawing.Bitmap
  • Pokrycie symbologii: 39 jednowymiarowych symbologii (Code128, Code39, EAN-13, UPC-A i więcej) oraz pięć dwuwymiarowych formatów (DataMatrix, PDF417, MicroPDF417, Code 16K, CODABLOCK F); Kod QR orazAztecnie są obsługiwane
  • Tylko generowanie: produkt nigdy nie posiadał funkcji odczytu ani skanowania BarCode
  • Tylko Windows i .NET Framework: Kierowana do.NET Framework1.1 / 2.0 / 3.x i .NET Compact Framework; brak wsparcia dla .NET Core, .NET 5+, Linux, macOS,Dockerlub środowiska chmurowego
  • Brak dystrybucji NuGet: w każdym pliku projektu i potoku kompilacji wymagane jest ręczne odwołanie do biblioteki DLL
  • Koniec życia: Brak nowych licencji sprzedawanych przez ComponentSource i brak wydania kodu od 2007 roku

API generacji Barcode4NET

Cały proces generowania wBarcode4NETwykorzystywał wzorzec ustawiający właściwości:

//Barcode4NET— manual DLL,.NET Frameworkonly
// Nie Pakiet NuGet — requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;

var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
//Barcode4NET— manual DLL,.NET Frameworkonly
// Nie Pakiet NuGet — requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;

var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging

Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = "ITEM-12345"
barcode.Width = 300
barcode.Height = 100
Dim barcodeImage As Bitmap = barcode.GenerateBarcode()
barcodeImage.Save(outputPath, ImageFormat.Png)
$vbLabelText   $csharpLabel

To wszystko, co oferuje interfejs API Barcode4NET. Biblioteka nie oferowała płynnego łączenia, nie posiadała możliwości odczytu, nie wspierała kodu QR i zaawansowanych opcji 2D, takich jak osadzanie logo lub kontrola korekcji błędów.

Zrozumienie IronBarcode

IronBarcode to komercyjna biblioteka kodów kreskowych .NET firmy Iron Software, która w jednym pakiecie obejmuje zarówno generowanie, jak i odczytywanie kodów kreskowych. Jest dystrybuowany wyłącznie za pośrednictwem NuGet, obsługuje platformy od.NET Framework4.6.2 do .NET 9 i działa w systemach Windows, Linux, macOS, Docker, Azure oraz AWS Lambda.

Biblioteka opiera się na płynnym statycznym API. Generacja uzywa BarcodeWriter.CreateBarcode() z ciagiem danych i typem kodowania, nastepnie dostepne sa opcje lancuchowe dla rozmiaru, koloru i formatu. Odczyt uzywa BarcodeReader.Read(), ktory akceptuje sciezki do plikow obrazow, strumienie i dokumenty PDF bez potrzeby stosowania oddzielnej biblioteki PDF.

Kluczowe cechy IronBarcode:

  • API generacji statycznej fluent: BarcodeWriter.CreateBarcode() laczy .ResizeTo(), .AddAnnotationTextAboveBarcode() i metody zapisu w jednym wyrazeniu
  • Odczyt kodow kreskowych: BarcodeReader.Read() dekoduje kody kreskowe z obrazow i PDF w sposob natywny
  • Obsługa szerokiej gamy formatów: Code128, Code39, EAN-13, UPC-A, QR Code, Data Matrix, PDF417,Azteci inne
  • Specjalizacja kodow QR: QRCodeWriter.CreateQrCode() zapewnia opcje specyficzne dla QR, w tym umieszczanie logo i poziom korekty bledow
  • Dystrybucja NuGet: Standardowa instalacja dotnet add package IronBarcode; dotnet restore zajmuje sie wszystkimi zaleznosciami
  • Wielopłatformowość: Działa na platformach .NET 5, 6, 7, 8 i 9 w systemach Windows, Linux i macOS, w tym w kontenerachDockeri bezserwerowych środowiskach chmurowych
  • Aktywny produkt komercyjny: regularne aktualizacje, poprawki bezpieczeństwa, aktualizacje zgodności z Wersją .NET oraz licencje dostępne w sprzedaży po określonych cenach

Porównanie funkcji

Poniższa tabela przedstawia najważniejsze różnice międzyBarcode4NETa IronBarcode:

Funkcja Barcode4NET IronBarcode
Pakiet NuGet Nie — tylko ręczna biblioteka DLL Tak (IronBarcode)
Generowanie BarCode Tak Tak
Odczytywanie BarCode Nie Tak
Obsługa wielu platform Nie — tylko Windows Tak — Windows, Linux, macOS
Aktywna konserwacja Nie (koniec cyklu życia) Tak
Dostępne są nowe licencje Nie Tak

Szczegółowe porównanie funkcji

Funkcja Barcode4NET IronBarcode
Generacja
Generowanie kodu 128 Tak Tak
Generowanie kodów Code39 Tak Tak
Generowanie kodów EAN-13 / UPC-A Tak Tak
Generowanie kodów QR Nie Tak — QRCodeWriter.CreateQrCode()
Kod QR z logo Nie Tak — .AddBrandLogo()
Data Matrix / PDF417 Tak Tak
Aztec Nie Tak
Płynny, łańcuchowy interfejs API Nie Tak
Czytanie
Odczytywanie BarCode z obrazów Nie Tak — BarcodeReader.Read()
Odczytywanie BarCode'ów z plików PDF Nie Tak — natywne, bez dodatkowej biblioteki
Wykrywanie wielu kodów BarCode Nie Tak — ExpectMultipleBarcodes
Konfiguracja prędkości czytania Nie Tak — ReadingSpeed enum
Platforma
.NET Framework Tak Tak (.NET Framework 4.6.2+)
.NET 5 / 6 / 7 / 8 / 9 Nie Tak
Linux / macOS Nie Tak
Docker Nie Tak
Azure / AWS Lambda Nie Tak
Dystrybucja
Pakiet NuGet Nie Tak
dotnet restore kompatybilny Nie Tak
Integracja CI/CD Ręczne kroki dotyczące bibliotek DLL Standardowe przywracanie
Konserwacja
Aktywny rozwój Nie (koniec cyklu życia) Tak
Poprawki bezpieczeństwa Nie Tak
Poprawki błędów Nie Tak
Nowe licencje Nie Tak — Lite 749 USD, Plus 1499 USD, Professional 2999 USD, Unlimited 5999 USD

Projekt API generowania

API generowania stanowi najbardziej bezpośredni punkt porównania między tymi dwiema bibliotekami, ponieważ generowanie było jedyną funkcją oferowaną przez Barcode4NET.

Podejście Barcode4NET

Barcode4NET wykorzystywał imperatywny wzorzec ustawiający właściwości. Deweloperzy instancjowali obiekt Barcode, przypisywali indywidualne wlasciwosci, nastepnie wywolywali GenerateBarcode(), aby otrzymac System.Drawing.Bitmap:

using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;

public Bitmap GenerateLabel(string sku)
{
    var barcode = new Barcode4NET.Barcode();
    barcode.Symbology = Symbology.Code128;
    barcode.Data = sku;
    barcode.Width = 400;
    barcode.Height = 120;
    return barcode.GenerateBarcode();
}
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;

public Bitmap GenerateLabel(string sku)
{
    var barcode = new Barcode4NET.Barcode();
    barcode.Symbology = Symbology.Code128;
    barcode.Data = sku;
    barcode.Width = 400;
    barcode.Height = 120;
    return barcode.GenerateBarcode();
}
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging

Public Function GenerateLabel(sku As String) As Bitmap
    Dim barcode As New Barcode4NET.Barcode()
    barcode.Symbology = Symbology.Code128
    barcode.Data = sku
    barcode.Width = 400
    barcode.Height = 120
    Return barcode.GenerateBarcode()
End Function
$vbLabelText   $csharpLabel

Typ zwracany — System.Drawing.Bitmap — oznaczalo, ze kod wywolujacy byl odpowiedzialny za zapis, wyswietlenie lub strumieniowanie obrazu. Bylo to odpowiednie dla aplikacji WinForms, gdzie Bitmap mogl byc bezposrednio przypisany do PictureBox, ale wymagalo dodatkowych krokow konwersji dla kazdego innego celu wyjscia.

Podejście IronBarcode

IronBarcode wykorzystuje płynny statyczny interfejs API. Pojedyncze wywołanie metody inicjuje generowanie, a metody łańcuchowe konfigurują wynik przed metodą końcowego zapisania lub konwersji:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public byte[] GenerateLabel(string sku)
{
    return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 120)
        .ToPngBinaryData();
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;

public byte[] GenerateLabel(string sku)
{
    return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 120)
        .ToPngBinaryData();
}
Imports IronBarCode

Public Function GenerateLabel(sku As String) As Byte()
    Return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
        .ResizeTo(400, 120) _
        .ToPngBinaryData()
End Function
$vbLabelText   $csharpLabel

Enum BarcodeEncoding odpowiada bezposrednio enum'owi Symbology. .ResizeTo() zastepuje przypisania wlasciwosci Width i Height. Metody terminalne — .SaveAsPng(), .SaveAsJpeg(), .ToPngBinaryData() — zastepuja oddzielne wywolania GenerateBarcode() i zapisu bitmapy. W przypadku bardziej zaawansowanych scenariuszy generowania kodów kreskowych zapoznaj się z dokumentacją dotyczącą generowania kodów kreskowych IronBarcode.

Możliwość odczytu BarCode

Największą różnicą między tymi dwiema bibliotekami jest poziom zaawansowania. BarCode4NET nigdy nie oferował funkcji odczytu kodów kreskowych w żadnej wersji.IronBarcode oferuje pełną funkcjonalność odczytu w tym samym pakiecie, co generowanie.

Podejście Barcode4NET

Barcode4NET nie posiadał API do odczytu. Zespoły, które musiały dekodować BARCODES z obrazów lub zeskanowanych dokumentów, musiały zintegrować całkowicie oddzielną bibliotekę — albo ZXing.Net, alternatywę open source, albo komercyjny zestaw SDK do skanowania. W rezultacie powstały dwa oddzielne łańcuchy zależności:Barcode4NETdo generowania oraz druga biblioteka do odczytu.

Podejście IronBarcode

IronBarcode zapewnia BarcodeReader.Read() jako metode statyczna, ktora akceptuje sciezki do plikow obrazow, obiekty strumieniowe i dokumenty PDF:

using IronBarCode;

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

// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
using IronBarCode;

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

// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
Imports IronBarCode

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

' Read all barcodes from a multi-page PDF — no extra PDF library required
Dim pdfResults = BarcodeReader.Read("invoice-batch.pdf")
For Each result In pdfResults
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
$vbLabelText   $csharpLabel

Dla scenariuszy z duza iloscia danych lub zakloconych obrazow klasa BarcodeReaderOptions zapewnia kontrole nad predkoscia odczytu i wykrywaniem wielu kodow kreskowych. Opcje konfiguracyjne można znaleźć w dokumentacji dotyczącej odczytu kodów kreskowych BarCode.

Zakres platform i wdrożeń

Obsługa platform stanowi najbardziej znaczącą różnicę dla zespołów realizujących projekty modernizacji .NET.

Podejście Barcode4NET

Barcode4NET został skompilowany przy użyciu zestawów .NET Framework. Działało w systemie Windows, w aplikacjach .NET Framework, w projektach Web Forms i Windows Forms hostowanych przez IIS. Nie było kompilacji dla systemu Linux, kompilacji dla .NET Core ani obsługi środowiska uruchomieniowego w chmurze. Kiedy firma Microsoft wprowadziła platformę .NET Core, a następnie ujednoliciła ją jako .NET 5+, produktBarcode4NETnie otrzymał odpowiednich aktualizacji. Zadnen projekt celujacy w net5.0 lub nowszy nie mogl odniesc sie do biblioteki w ogole.

Model dystrybucji DLL pogłębił ograniczenia platformy. Każde środowisko kompilacji — stacja robocza programisty, agent kompilacji, kontenerDocker— wymagało, aby biblioteka DLL znajdowała się w znanej ścieżce. W wykladowych wdrozeniach oparte na kontenerach oznaczalo to albo pieczenie DLL w niestandardowy obraz bazowy, albo kopiowanie podczas budowy kontenera, zaden z nich nie jest zgodny z normalnymi procesami dotnet restore.

Podejście IronBarcode

IronBarcode obsługuje wiele frameworków z jednego pakietu NuGet: od.NET Framework4.6.2 do .NET 9 oraz wszystkie aktualne wersje .NET na systemach Windows, Linux i macOS. Wdrażanie do kontenerówDockerwykorzystuje standardowe obrazy środowiska uruchomieniowego .NET Standard bez modyfikacji. Azure Functions, AWS Lambda i inne środowiska uruchomieniowe bezserwerowe są obsługiwane przez ten sam pakiet NuGet. Polecenie dotnet restore rozwiazuje wszystkie zaleznosci bez manualnego zarzadzania plikami DLL.

Architektura licencji i status dostawcy

Sytuacja licencyjnaBarcode4NETnie jest czynnikiem konkurencyjnym — jest to praktyczne ograniczenie, które wpływa na każdą decyzję dotyczącą dalszego korzystania z biblioteki.

Podejście Barcode4NET

Barcode4NET faktycznie kończy swój żywot. Nowe licencje nie są już sprzedawane przez ComponentSource, choć istniejący klienci mogą przedłużyć wsparcie i aktualizacje oprogramowania przez ComponentSource zgodnie z warunkami dostawcy. Jeśli nowy programista dołącza do zespołu używającego Barcode4NET, nie ma mechanizmu na zakupienie dodatkowego miejsca dla niego. Ostatnia wersja kodu była wersji 2.0 w 2007 roku, więc wszelkie wykryte od tego czasu defekty lub problemy z bezpieczeństwem nie są adresowane przez patche.

Podejście IronBarcode

IronBarcode to aktywnie rozwijany produkt komercyjny z Licencją wieczystą. Ceny zaczynają się od 749 USD za Lite License dla jednego programisty, dostępne są również poziomy Plus License (1499 USD, 3 programistów), Professional License (2999 USD, 10 programistów) oraz Unlimited License (5999 USD). Wszystkie poziomy obejmują wdrożenie bez opłat licencyjnych. Poprawki bezpieczeństwa, poprawki błędów i aktualizacje zgodności z wersjami .NET są dostarczane w regularnych odstępach czasu. Dostępna jest 30-dniowa bezpłatna wersja próbna do oceny bez klucza licencyjnego.

Przewodnik po mapowaniu API

Barcode4NET IronBarcode
new Barcode4NET.Barcode() BarcodeWriter.CreateBarcode(data, encoding)
barcode.Symbology = Symbology.Code128 BarcodeEncoding.Code128 (parametr dla CreateBarcode)
barcode.Data = "ITEM-12345" Pierwszy parametr CreateBarcode()
barcode.Width = 300; BARCODE.Height = 100 .ResizeTo(300, 100)
barcode.GenerateBarcode() zwraca Bitmap .SaveAsPng(path) / .ToPngBinaryData()
Symbology.Code39 BarcodeEncoding.Code39
Symbology.EAN13 BarcodeEncoding.EAN13
Symbology.UPCA BarcodeEncoding.UPCA
Symbology.DataMatrix BarcodeEncoding.DataMatrix
Symbology.PDF417 BarcodeEncoding.PDF417
(QR Code not supported in Barcode4NET) BarcodeEncoding.QRCode
Reczne <Reference Include="Barcode4NET"> DLL <PackageReference Include="IronBarcode" />
Brak API do odczytu BarcodeReader.Read(path)
Brak obsługi plików PDF BarcodeReader.Read("doc.pdf") natywny
Tylko.NET Framework .NET Framework4.6.2 do .NET 9

Kiedy zespoły rozważają przejście zBarcode4NETna IronBarcode

Zablokowana aktualizacja .NET

Najczęstszym czynnikiem skłaniającym do tłumaczenia jest projekt modernizacji platformy .NET. Zespol celuje net8.0 w swoj .csproj, uruchamia budowe i napotyka blad ladowania, poniewazBarcode4NETbyl zbudowany dla.NET Framework1.1 / 2.0 / 3.x i nie moze byc odniesiony z nowoczesnego celu .NET. W tej chwili zespół stoi przed dylematem — cofnąć zmianę frameworka docelowego i pozostać przy.NET Frameworklub zastąpić Barcode4NET. Migracji nie można odłożyć bez zablokowania szerszych działań modernizacyjnych.

Awarie potoku CI/CD po zmianach infrastruktury

Model dystrybucji bibliotek DLL firmyBarcode4NETpowoduje utajoną niestabilność w procesach kompilacji. W przypadku ponownego skonfigurowania agenta kompilacji, aktualizacji obrazu kontenera lub skonfigurowania nowego środowiska CI, bibliotekę DLLBarcode4NETnależy ręcznie umieścić w ścieżce oczekiwanej przez plik projektu. Zespoły, które nie udokumentowały tego etapu dokładnie, odkrywają problem dopiero wtedy, gdy proces się nie powiedzie. Przejscie na IronBarcode oznacza, ze dotnet restore zajmuje sie wszystkim — problem lokalizacji DLL przestaje istniec.

Nowi członkowie zespołu nie mogą uzyskać licencji

Gdy do projektu dołącza wykonawca lub drugi programista musi pracować nad funkcjami BarCode, nie ma potrzeby zakupu licencji. Zespół musi obejść to ograniczenie — albo nowy programista całkowicie unika kodu BARCODE, albo ktoś przenosi licencję, która zgodnie z pierwotnymi warunkami może nie podlegać przeniesieniu. Żadna z tych sytuacji nie jest do utrzymania dla zespołu, który aktywnie rozwija produkt.

Audyty bezpieczeństwa i zgodności

Organizacje, które generują listy komponentów oprogramowania (SBM) lub sprawdzają zależności w bazach danych dotyczących wycofanych produktów, napotykająBarcode4NETjako wynik wyszukiwania. To komercyjny produkt bez wydawań kodu od 2007 roku i bez śledzenia CVE ani strumienia poprawek. Audytorzy bezpieczeństwa zazwyczaj traktują zależności w tym stanie inaczej niż utrzymywane aktywnie biblioteki, a wykryte problemy często stają się formalnym elementem do naprawy, a nie odłożonym ryzykiem.

Możliwość czytania dodana do istniejącego przepływu pracy

Zespoły, które początkowo używałyBarcode4NETwyłącznie do generowania kodów kreskowych, później odkrywają, że muszą weryfikować kody kreskowe ze skanowanych dokumentów, przetwarzać obrazy przesłane przez użytkowników lub wyodrębniać dane z faktur w formacie PDF. W przypadkuBarcode4NETwymaga to zintegrowania drugiej biblioteki. Funkcjonalnosc BarcodeReader.Read() w IronBarcode obsluguje zarowno obrazy jak i PDF-y natywnie, konsolidujac zaleznosc w jeden utrzymywany pakiet.

Typowe kwestie związane z migracją

Usunięcie odwołania do biblioteki DLL

Barcode4NET nigdy nie byl dystrybuowany jako pakiet NuGet, wiec nie ma komendy dotnet remove package. Kazdy plik .csproj, ktory odnosi sie do biblioteki, zawiera element <Reference Include="Barcode4NET"> z <HintPath> wskazujacym na DLL na dysku. Każdy z tych elementów musi zostać znaleziony i usunięty ręcznie. Wyszukiwanie w całym rozwiązaniu pozwala je zlokalizować:

grep -rl "Barcode4NET" --include="*.csproj" .
grep -rl "Barcode4NET" --include="*.csproj" .
SHELL

Katalog DLL w kontroli zrodel — zazwyczaj ThirdParty/Barcode4NET/ lub lib/ — musi rowniez byc przygotowany do usuniecia z git rm.

Zmiana typu zwracanego z bitmapy na tablicę bajtów

Funkcja GenerateBarcode() wBarcode4NETzwraca System.Drawing.Bitmap. W lancuchu fluent w IronBarcode konczy sie .ToPngBinaryData() zwracajac byte[], lub .SaveAsPng() zapisujac bezposrednio na dysku. Kod, ktory przypisuje wartosc zwracana do zmiennej typu Bitmap lub przekazuje go do metody oczekujacej Bitmap — takiej jak formularz WinForms PictureBox — wymaga jednej linii dostosowania w miejscu wywolania: owijanie tablicy bajtowej w MemoryStream i wywolanie Image.FromStream().

Symbologia Zmiana nazwy wyliczenia

Enum Symbology wBarcode4NETbezposrednio odwzorowuje sie na enum BarcodeEncoding w IronBarcode. Wszystkie typowe wartosci — Code128, Code39, EAN13, UPCA, QRCode — zachowuja swoje nazwy. Rozwiazanie globalne znajdz-i-zamien Symbology. na BarcodeEncoding. obejmuje wiekszosc przypadkow, chociaz kazda wymiana powinna byc sprawdzana, aby potwierdzic kontekst.

Porządkowanie skryptów kompilacji

Należy zaktualizować skrypty kompilacji oraz pliki konfiguracyjne CI/CD, które kopiują bibliotekę DLLBarcode4NETdo katalogów wyjściowych lub agentów kompilacji. Te kroki nie maja odpowiednika po migracji NuGet — dotnet restore zastepuje wszystke reczne zarzadzanie DLL. Pozostawienie nieaktualnych kopii plików DLL po migracji nie spowoduje błędów kompilacji, ale stanowią one martwą konfigurację, która może powodować zamieszanie wśród przyszłych opiekunów projektu.

Dodatkowe możliwości IronBarcode

Funkcje dostępne w IronBarcode, które nie były częściąBarcode4NETw żadnym momencie jego cyklu życia:

Zgodność z platformą .NET i gotowość na przyszłość

IronBarcode obsługuje.NET Framework4.6.2 przez .NET 9 i otrzymuje aktualizacje kompatybilności, gdy nowe wersje .NET są wypuszczane.Barcode4NETceluje w.NET Framework1.1 / 2.0 / 3.x i tylko .NET Compact Framework, oraz nie otrzymał wydania od 2007 roku. Zespoły na.NET Framework4.x mogą migrować do IronBarcode, a następnie swobodnie aktualizować swoją docelową wersję .NET do dowolnej bieżącej wersji bez ograniczeń biblioteki kodów kreskowych.

Wnioski

Barcode4NET i IronBarcode reprezentują różne etapy w historii rozwoju kodów kreskowych w środowisku .NET.Barcode4NETbyła funkcjonalną biblioteką o dobrze określonym zakresie działania jak na swoje czasy — API do ustawiania właściwości, które generowało czysty wynik bitmapowy dla aplikacji Windows Forms i Web Forms w środowisku .NET Framework.IronBarcode to aktualny produkt komercyjny z płynnym statycznym API, pełną obsługą odczytu kodów kreskowych, obsługą wielu platform oraz standardową dystrybucją NuGet.

Porównanie to jest nietypowe, ponieważBarcode4NETnie jest już aktywnym produktem. Nie otrzymuje aktualizacji, poprawek bezpieczeństwa ani nowych licencji. Zespoły oceniające, którą bibliotekę wybrać do nowego projektu, nie napotkająBarcode4NETw tej ocenie — jest ona istotna tylko dla zespołów, które już ją wykorzystują w produkcji i decydują, kiedy i jak przeprowadzić migrację.

Dla zespołów, które używająBarcode4NETw środowisku produkcyjnym,IronBarcode jest naturalnym zamiennikiem. Mapowanie API jest bezpośrednie, zmiany w kodzie są powierzchowne, a semantyka generowania jest równoważna. Korzyścią jest zależność, która jest faktycznie utrzymywana, może być zainstalowana przez nowych członków zespołu i jest kompatybilna z nowoczesnymi wersjami .NET oraz środowiskami wdrożeniowymi.

Szczera ocena jest taka, że nie jest to wybór między dwiema realnymi opcjami.Barcode4NETnie może być udostępniany nowym członkom zespołu, nie działa na nowoczesnym środowisku .NET i nie można go aktualizować w celu usunięcia luk w zabezpieczeniach.IronBarcode może to zrobić. Decyzja o migracji wynika raczej z tych praktycznych ograniczeń niż z preferencji dotyczących API lub porównania funkcji.

Często Zadawane Pytania

Czym jest Barcode4.NET?

BarCode4.NET to biblioteka kodów kreskowych .NET służąca do generowania i odczytywania kodów kreskowych w aplikacjach C#. Jest to jedna z kilku alternatyw rozważanych przez programistów przy wyborze rozwiązania do obsługi kodów kreskowych w projektach .NET.

Jakie są główne różnice między Barcode4.NET a IronBarcode?

IronBarcode wykorzystuje statyczne, bezstanowe API, które nie wymaga zarządzania instancjami, podczas gdy Barcode4.NET zazwyczaj wymaga utworzenia i konfiguracji instancji przed użyciem. IronBarcode zapewnia również natywną obsługę plików PDF, automatyczne wykrywanie formatów oraz licencjonowanie za pomocą jednego klucza we wszystkich środowiskach.

Czy licencja na IronBarcode jest łatwiejsza do uzyskania niż na Barcode4.NET?

IronBarcode wykorzystuje pojedynczy klucz licencyjny obejmujący zarówno wdrożenia deweloperskie, jak i produkcyjne. Upraszcza to procesy CI/CD oraz konfiguracje Docker w porównaniu z systemami licencyjnymi, które oddzielają klucze SDK od kluczy środowiska uruchomieniowego.

Czy IronBarcode obsługuje wszystkie formaty kodów kreskowych obsługiwane przez Barcode4.NET?

IronBarcode obsługuje ponad 30 symboli kodów kreskowych, w tym QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 i wiele innych. Automatyczne wykrywanie formatu oznacza, że nie jest wymagane jawne wyliczanie formatów.

Czy IronBarcode obsługuje natywne odczytywanie kodów kreskowych z plików PDF?

Tak. IronBarcode odczytuje kody kreskowe bezpośrednio z plików PDF za pomocą BarcodeReader.Read("document.pdf") bez konieczności korzystania z oddzielnej biblioteki do renderowania plików PDF. Wyniki dla każdej strony obejmują numer strony, format kodu kreskowego, wartość oraz wskaźnik pewności.

W jaki sposób IronBarcode radzi sobie z przetwarzaniem wsadowym w porównaniu z Barcode4.NET?

Metody statyczne IronBarcode są bezstanowe i z natury bezpieczne dla wątków, co umożliwia bezpośrednie użycie Parallel.ForEach bez zarządzania instancjami dla poszczególnych wątków. Nie ma ograniczeń przepustowości w żadnym przedziale cenowym.

Jakie wersje .NET obsługuje IronBarcode?

IronBarcode obsługuje .NET Framework 4.6.2+, .NET Core 3.1 oraz .NET 5, 6, 7, 8 i 9 w jednym pakiecie NuGet. Obsługiwane platformy to Windows x64/x86, Linux x64 oraz macOS x64/ARM.

Jak zainstalować IronBarcode w projekcie .NET?

Zainstaluj IronBarcode za pomocą NuGet: uruchom polecenie „Install-Package IronBarCode” w konsoli menedżera pakietów lub „dotnet add package IronBarCode” w interfejsie CLI. Nie są wymagane żadne dodatkowe instalatory SDK ani pliki uruchomieniowe.

Czy mogę przetestować IronBarcode przed zakupem, w przeciwieństwie do Barcode4.NET?

Tak. Tryb próbny IronBarcode zwraca pełne, zdekodowane wartości BarCode — tylko wygenerowane obrazy wyjściowe są opatrzone znakiem wodnym. Przed podjęciem decyzji o zakupie można sprawdzić dokładność odczytu na własnych dokumentach.

Jaka jest różnica w cenie między Barcode4.NET a IronBarcode?

Cena IronBarcode zaczyna się od 749 USD za Licencję wieczystą dla jednego programisty, obejmującą etapy rozwoju i produkcji. Szczegóły dotyczące cen i opcji zakupu hurtowego są dostępne na stronie licencyjnej IronBarcode. Nie ma wymogu posiadania oddzielnej licencji na środowisko uruchomieniowe.

Czy migracja z Barcode4.NET do IronBarcode jest prosta?

Migracja z Barcode4.NET do IronBarcode polega przede wszystkim na zastąpieniu wywołań API opartych na instancjach statycznymi metodami IronBarcode, usunięciu standardowych fragmentów kodu dotyczących licencji oraz aktualizacji nazw właściwości wyników. Większość migracji wiąże się raczej z redukcją kodu niż z jego dodawaniem.

Czy IronBarcode generuje kody QR z logo?

Tak. Funkcja QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") osadza obraz marki w kodzie QR w sposób natywny z konfigurowalną korekcją błędów. Kolorowe kody QR są również obsługiwane za pomocą funkcji ChangeBarCodeColor().

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ę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie