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, przypisywaliSymbology,Data,Width, orazHeightjako wlasciwosci, nastepnie wywolywaliGenerateBarcode(), aby otrzymacSystem.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)
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 restorezajmuje 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
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
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
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" .
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:
- Odczyt kodow kreskowych z obrazow:
BarcodeReader.Read()dekoduje wszystkie glowny 1D i 2D symbologie z PNG, JPEG, TIFF i innych formatow obrazow - Odczytywanie kodów kreskowych z plików PDF: natywna obsługa plików PDF — nie jest wymagana oddzielna biblioteka do wyodrębniania danych z plików PDF
- Umieszczanie loga w kodzie QR:
QRCodeWriter.CreateQrCode()z.AddBrandLogo()dla markowych kodow QR - Generowanie formatów 2D: Data Matrix, PDF417 iAztecoprócz kodu QR
- Wykrywanie wielu kodow kreskowych:
BarcodeReaderOptions.ExpectMultipleBarcodesznajduje wszystkie kody kreskowe w jednym obrazie - Dopasowanie predkosci odczytu: enum
ReadingSpeedrownowazy przepustowosc wobec dokladnosci dla obrobki o duzej liczbie danych - Integracja ASP.NET Core: Zwraca
byte[]bezposrednio z.ToPngBinaryData()dla czystych odpowiedzi akcji kontrolera
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().

