BarcodeLib vs IronBarcode: Porównanie bibliotek kodów kreskowych C#
Barkoder SDKvs IronBarcode: Mobilne skanowanie kamery vs pełne pokrycie kodu kreskowego .NET
Barkoder SDK pojawia się w niemalnym każdym zestawieniu "najlepszych SDK do obsługi kodów kreskowych 2026", wymieniany obok ZXing, Dynamsoft, Scandit i IronBarcode w tabelach porównawczych. Programiści oceniający rozwiązania do obsługi kodów kreskowych dla projektów .NET natrafiają na nie na wczesnym etapie swoich poszukiwań — czytają o MatrixSight, trybie DeBlur, wykrywaniu wielu kodów kreskowych i obsłudze DPM i uznają je za naprawdę atrakcyjne. Na NuGet, Barkoder udostępnia dwa oficjalne pakiety .NET: Plugin.Maui.Barkoder i Barkoder.Xamarin. Oba są komponentami do skanowania kamerą dla mobilnych aplikacji MAUI i Xamarin. To, czego Barkoder nie dostarcza, to ogólnego przeznaczenia biblioteka .NET: brak ASP.NET Core, konsoli, powierzchni desktopowej, serwera lub PDF. To porównanie wyjaśnia, czym jest Barkoder, co czyni go silnym w jego natywnej domenie i jak IronBarcode pokrywa szersze wymagania, które zazwyczaj mają deweloperzy .NET.
Zrozumienie Barkoder SDK
Barkoder to komercyjny zestaw SDK do skanowania kodów kreskowych, zbudowany w oparciu o rdzeń przetwarzający w języku C/C++, opakowany w natywne zestawy SDK dla systemów iOS i Android. Jest skierowany do programistów aplikacji mobilnych, którzy potrzebują skanowania kamerą w czasie rzeczywistym — takiego, jakie wykonuje pracownik magazynu na telefonie lub technik terenowy na tablecie. Model dystrybucji w pełni odzwierciedla tę grupę docelową.
Pakiet SDK jest dystrybuowany dla systemu iOS za pośrednictwem CocoaPods z interfejsami API Swift i Objective-C, dla systemu Android za pośrednictwem Maven z interfejsami API Kotlin i Java, a dla urządzeń mobilnych typu hybrydowego poprzez oficjalne wtyczki dla React Native, Flutter, Cordova i Capacitor. Na .NET, Barkoder publikuje dwa oficjalne pakiety NuGet — Plugin.Maui.Barkoder i Barkoder.Xamarin — które integrują natywne iOS i Android SDK oraz udostępniają kontrolkę do skanowania kamerą dla aplikacji mobilnych MAUI i Xamarin.
Poza MAUI i Xamarin nie ma opcji Barkoder na .NET. Nie ma ogólnego pakietu Barkoder.NET, brak wsparcia dla ASP.NET Core, Azure Functions, AWS Lambda, Docker, czy serwerów linuksowych, brak konsoli, usługi roboczej, WPF, WinForms, Avalonia, czy Blazor, brak trybu wejściowego plików lub strumieni, brak odczytu PDF i generowania kodów kreskowych. Dla pracy z .NET poza głowicą aplikacji mobilnej MAUI czy Xamarin, Barkoder nie znajduje się w zakresie.
Kluczowe cechy architektury Barkoder SDK:
- Architektura z ukierunkowaniem na mobilność: Zaprojektowane dla pipeline kamery iOS i Android; całe przetwarzanie odbywa się na urządzeniu poprzez rdzeń C/C++
- .NET Surface Ograniczone do MAUI / Xamarin: Oficjalne pakiety
Plugin.Maui.BarkoderiBarkoder.Xamarinudostępniają kontrolkę do skanowania kamerą; nie ma ogólnego celu biblioteki .NET - Brak generowania BarCodes: Barkoder jest pakietem SDK tylko do odczytu; nie ma zdolności do wytwarzania lub kodowania kodów kreskowych
- Brak wejścia PDF lub pliku: SDK nie posiada koncepcji odczytywania kodów kreskowych z dokumentów PDF, obrazów z systemów plików czy obiegów dokumentów po stronie serwera
- Brak wdrożenia serwera: SDK nie działa w ASP.NET Core, Azure Functions, kontenerach Docker, czy jakimkolwiek środowisku wykonawczym .NET po stronie serwera
- Tylko wejście z klatki kamery: Wejście jest zawsze żywą klatką kamery; nie ma przeciążenia dla ścieżki pliku, strumienia czy tablicy bajtów
Jak wygląda architektura Barkoder
Rdzeń SDK w języku C/C++ obsługuje przetwarzanie obrazów. Opakowania iOS i Android udostępniają rdzeń poprzez natywne API platformy. Na .NET, wtyczki MAUI i Xamarin opakowują te same natywne SDK i udostępniają kontrolkę BarkoderView:
// dotnet add package Plugin.Maui.Barkoder
// XAML hosts a BarkoderView; this is the code-behind callback.
using Barkoder.Maui;
public partial class ScanPage : ContentPage, IBarkoderDelegate
{
public ScanPage()
{
InitializeComponent();
BarkoderView.SetFlashEnabled(false);
BarkoderView.SetZoomFactor(1.5f);
BarkoderView.StartScanning(this);
}
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
{
Console.WriteLine($"Type: {r.BarcodeTypeName}");
Console.WriteLine($"Value: {r.TextualData}");
}
}
}
// dotnet add package Plugin.Maui.Barkoder
// XAML hosts a BarkoderView; this is the code-behind callback.
using Barkoder.Maui;
public partial class ScanPage : ContentPage, IBarkoderDelegate
{
public ScanPage()
{
InitializeComponent();
BarkoderView.SetFlashEnabled(false);
BarkoderView.SetZoomFactor(1.5f);
BarkoderView.StartScanning(this);
}
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
{
Console.WriteLine($"Type: {r.BarcodeTypeName}");
Console.WriteLine($"Value: {r.TextualData}");
}
}
}
Imports Barkoder.Maui
Public Partial Class ScanPage
Inherits ContentPage
Implements IBarkoderDelegate
Public Sub New()
InitializeComponent()
BarkoderView.SetFlashEnabled(False)
BarkoderView.SetZoomFactor(1.5F)
BarkoderView.StartScanning(Me)
End Sub
Public Sub DidFinishScanning(result As BarcodeResult()) Implements IBarkoderDelegate.DidFinishScanning
For Each r In result
Console.WriteLine($"Type: {r.BarcodeTypeName}")
Console.WriteLine($"Value: {r.TextualData}")
Next
End Sub
End Class
To działa wewnątrz mobilnej aplikacji MAUI z żywą kamerą. Nie ma przeciążenia pliku, brak przeciążenia strumienia, brak przeciążenia PDF i brak równoważnej powierzchni dla ASP.NET Core, konsoli czy projektów desktopowych. Natywne ścieżki kodu iOS i Android korzystają z tego samego modelu komponentów w Swift, Objective-C, Kotlin lub Java.
Funkcje, które zapewniają Barkoderowi miejsce w podsumowaniach, są rzeczywiście zdolnościami. MatrixSight i tryb DeBlur zapewniają autorską technologię odzyskiwania uszkodzonych danych, która odczytuje BarCodes, które są fizycznie uszkodzone, źle wydrukowane lub zeskanowane przy słabym oświetleniu. Funkcja wykrywania wielu BarCodes umożliwia jednoczesne odczytywanie wielu BarCodes w jednym kadrze z kamery, co pozwala pracownikom magazynu skanować całe półki za jednym razem. Skanowanie DPM (Direct Part Marking) obsługuje format DataMatrix i inne formaty w konfiguracjach grawerowanych laserowo i punktowo, z którymi większość bibliotek ogólnego przeznaczenia nie radzi sobie dobrze. Obsługa formatów o wysokiej gęstości obejmuje PDF417,Azteci inne formaty 2D z wysoką dokładnością w aparatach telefonów komórkowych.
Zrozumienie IronBarcode
IronBarcode to natywna biblioteka .NET, która obsługuje cały proces pracy z kodami kreskowymi — odczyt i generowanie — w każdym środowisku .NET. Jest to funkcjonalny odpowiednik możliwości Barkodera dla platformy .NET, z dodatkowymi funkcjami, które mają sens tylko w kontekście serwerów i komputerów stacjonarnych.
IronBarcode instaluje się za pośrednictwem NuGet i działa całkowicie lokalnie. Podczas operacji związanych z kodami barcode nie są wykonywane żadne wywołania sieciowe. Działa w środowiskach odizolowanych, na Azure Functions, w kontenerach Docker, wAWS Lambdaoraz we wszystkich środowiskach uruchomieniowych .NET od .NET Framework 4.6.2 do .NET 9. Statyczny model API oznacza, że nie ma instancji skanera do zarządzania, nie ma cyklu życia do śledzenia i nie ma obaw dotyczących bezpieczeństwa wątków wynikających z jednoczesnych wywołań.
Kluczowe cechy IronBarcode:
- Pełna obsługa platformy .NET: Obsługuje .NET Framework 4.6.2+, .NET 6, 7, 8 i 9; działa na systemach Windows, Linux, macOS, Docker, Azure i AWS
- Odczyt i generowanie: obejmuje zarówno odczyt BarCode'ów z plików, strumieni i plików PDF, jak i generowanie BarCode'ów w ponad 50 formatach
- Statyczny Projekt API:
BarcodeReader.Read()iBarcodeWriter.CreateBarcode()to statyczne wywołania bez potrzeby zarządzania stanowymi instancjami - Korekcja błędów oparta na uczeniu maszynowym: oparty na uczeniu maszynowym proces przetwarzania wstępnego obrazów radzi sobie z uszkodzonymi, zniszczonymi i niskiej jakości BarCode'ami
- Natywna obsługa plików PDF: odczytuje kody kreskowe bezpośrednio z dokumentów PDF bez pośredniego wyodrębniania obrazów
- Pełna integracja z ekosystemem .NET: Kompatybilność z wstrzykiwaniem zależności ASP.NET Core, async/await, oprogramowaniem pośredniczącym oraz wzorcami hostingu
Porównanie funkcji
Poniższa tabela przedstawia podstawowe różnice międzyBarkoder SDKa IronBarcode:
| Funkcja | Barkoder SDK | IronBarcode |
|---|---|---|
| Obsługa .NET / C# | MAUI / Xamarin UI kamery tylko | Pełna — wszystkie środowiska uruchomieniowe .NET |
| Pakiet NuGet | Plugin.Maui.Barkoder, Barkoder.Xamarin |
IronBarcode |
| Odczytywanie BarCode | Tak — aparat w telefonie | Tak — pliki, strumienie, pliki PDF |
| Generowanie kodów kreskowych | None | Pełna wersja — ponad 50 formatów |
| Przetwarzanie plików PDF | None | Język ojczysty |
| Wdrożenie po stronie serwera | None | Pełna wersja — ASP.NET Core, Azure, Lambda, Docker |
| Ceny | Licencjonowanie mobilnego zestawu SDK | Dostępna jest Licencja wieczysta |
Szczegółowe porównanie funkcji
| Funkcja | Barkoder SDK | IronBarcode |
|---|---|---|
| Czytanie | ||
| Odzyskiwanie uszkodzonych kodów kreskowych | MatrixSight / DeBlur | Korekcja błędów ML, ReadingSpeed.ExtremeDetail |
| Wykrywanie wielu kodów BarCode | Tak — kadr kamery | ExpectMultipleBarcodes = true |
| Obsługa DataMatrix / DPM | Tak | Tak — BarcodeEncoding.DataMatrix |
| Odczytywanie kodów QR | Tak | Tak |
| PDF417 | Tak | Tak |
| Aztec | Tak | Tak |
| Code128, Code39, EAN | Tak | Tak — ponad 50 formatów |
| Automatyczne wykrywanie formatowania | Tak | Tak |
| Generacja | ||
| Generowanie BarCode'ów | None | Pełna wersja — wszystkie formaty |
| Generowanie kodów QR | None | QRCodeWriter.CreateQrCode() |
| Logo/branding na kodzie QR | None | AddBrandLogo() |
| Platforma | ||
| .NET / C# | MAUI / Xamarin UI kamery tylko | Pełna |
| iOS (natywny) | Tak (główne) | Za pośrednictwem .NET MAUI |
| Android (natywny) | Tak (główne) | Za pośrednictwem .NET MAUI |
| Windows / Linux / macOS | None | Pełna |
| Docker / kontenery | None | Pełna |
| Azure Functions | None | Pełna |
| AWS Lambda | None | Pełna |
| Srodowiska odizolowane / Offline | Tak (na urządzeniu) | Tak (w pełni lokalne) |
| Projektowanie API | ||
| Obsługa Async/await | Nie dotyczy | Pełna |
| Wstrzykiwanie zależności | None | Pełna integracja z .NET DI |
| Wprowadzanie dokumentów PDF | None | BarcodeReader.Read("doc.pdf") |
| Licencjonowanie | ||
| Model licencji | Licencjonowanie mobilnego zestawu SDK | Wielorazowa, jednorazowa licencja |
| Cena (poziom podstawowy) | Skontaktuj się z działem sprzedaży | See ironsoftware.com/csharp/barcode/licensing |
Model wdrażania .NET
Najbardziej fundamentalna różnica międzyBarkoder SDKa IronBarcode to zakres. Powierzchnia .NET Barkoder ogranicza się do UI kamery MAUI i Xamarin;IronBarcode obejmuje resztę ekosystemu .NET.
Podejście Barkoder SDK
Barkoder's published platform list is iOS Język ojczysty (Swift / Objective-C), Android Język ojczysty (Kotlin / Java), React Native, Flutter, Cordova, Capacitor, .NET MAUI, Xamarin, and Web (WASM). Na .NET w szczególności jest to mapowane na Plugin.Maui.Barkoder i Barkoder.Xamarin. ASP.NET Core, Azure Functions, AWS Lambda, Docker, serwery Linux, WPF, WinForms, Avalonia i Blazor są nieobecne. Architektura SDK opiera się na potoku obrazu z kamery na żywo w urządzeniu mobilnym. Nie ma trybu wprowadzania danych z plików, interfejsu API strumieniowego, ścieżki przetwarzania wsadowego ani modelu wykonywania po stronie serwera.
Dla pracy .NET poza aplikacją mobilną MAUI czy Xamarin – interfejs API backendu, serwis pracowniczy, narzędzie desktopowe, pipeline dokumentów PDF – Barkoder nie oferuje ścieżki. Nie ma powierzchni API async do użytku serwera, brak integracji z wstrzykiwaniem zależności, brak wsparcia dla Azure lubAWS Lambdai brak zdolności przetwarzania PDF.
Podejście IronBarcode
IronBarcode instaluje się z NuGet za pomocą jednego polecenia i inicjuje się przy użyciu klucza licencyjnego podczas uruchamiania:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Read a barcode from an image
var results = BarcodeReader.Read("scan.png");
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format}");
Console.WriteLine($"Value: {result.Value}");
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Read a barcode from an image
var results = BarcodeReader.Read("scan.png");
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format}");
Console.WriteLine($"Value: {result.Value}");
}
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' Read a barcode from an image
Dim results = BarcodeReader.Read("scan.png")
For Each result In results
Console.WriteLine($"Format: {result.Format}")
Console.WriteLine($"Value: {result.Value}")
Next
Biblioteka działa całkowicie lokalnie — bez wywołań sieciowych, bez transmisji danych, bez zewnętrznych zależności. Integruje się z wstrzykiwaniem zależności .NET Core, obsługuje async/await i umożliwia wdrażanie w Dockerze,Azure FunctionsorazAWS Lambdabez konieczności modyfikacji. Aby uzyskać informacje na temat integracji ASP.NET Core na poziomie produkcyjnym, zapoznaj się z dokumentacją IronBarcode.
Odzyskiwanie uszkodzonych kodów kreskowych
Odzyskiwanie uszkodzonych kodów kreskowych to funkcja, która najczęściej skłania programistów do zapoznania się z Barkoderem. Rozwiązania MatrixSight i tryb DeBlur firmy Barkoder są promowane w scenariuszach logistycznych i produkcyjnych, w których fizyczne etykiety ulegają zużyciu, zamoczeniu lub częściowemu zasłonięciu.
Podejście Barkoder SDK
Tryb DeBlur aplikacji Barkoder stosuje przetwarzanie wstępne obrazu — wzmocnienie kontrastu, wyostrzanie, korekcję obrotu — przed próbą dekodowania. Działa to wyłącznie w ramach potoku przetwarzania obrazu z kamery mobilnej. Tryb jest konfigurowany na poziomie SDK przed rozpoczęciem skanowania, a obraz z kamery jest przetwarzany w sposób ciągły. Nie ma odpowiednika ścieżki opartej na pliku.
// dotnet add package Plugin.Maui.Barkoder
// Configured against the BarkoderView in a MAUI ContentPage
BarkoderView.DeblurEnabled = true;
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.Code128 });
BarkoderView.StartScanning(this);
// dotnet add package Plugin.Maui.Barkoder
// Configured against the BarkoderView in a MAUI ContentPage
BarkoderView.DeblurEnabled = true;
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.Code128 });
BarkoderView.StartScanning(this);
Podejście IronBarcode
IronBarcode rozwiązuje ten sam problem poprzez ReadingSpeed.ExtremeDetail, która aktywuje wielokrotne przetwarzanie analizy obrazu — stosując odzyskiwanie uszkodzeń oparte na ML, wzmacnianie kontrastu, poprawę ostrości i korekcję obrotu — zanim przystąpi do dekodowania. Działa to na dowolnym pliku, strumieniu lub tablicy bajtów jako danych wejściowych:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("worn-shipping-label.png", options);
if (results.Any())
{
Console.WriteLine($"Recovered: {results.First().Value}");
}
else
{
Console.WriteLine("Could not decode — image quality too low");
}
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("worn-shipping-label.png", options);
if (results.Any())
{
Console.WriteLine($"Recovered: {results.First().Value}");
}
else
{
Console.WriteLine("Could not decode — image quality too low");
}
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
Dim results = BarcodeReader.Read("worn-shipping-label.png", options)
If results.Any() Then
Console.WriteLine($"Recovered: {results.First().Value}")
Else
Console.WriteLine("Could not decode — image quality too low")
End If
ReadingSpeed.Balanced obsługuje większość czystych lub lekko uszkodzonych kodów kreskowych i działa szybciej. Zarezerwuj ExtremeDetail na przypadki, gdy Balanced zawiedzie — jest dokładny, ale znacznie wolniejszy. Więcej wskazówek dotyczących odczytywania trudnych kodów kreskowych można znaleźć w dokumentacji dotyczącej odczytu IronBarcode.
Wykrywanie wielu BarCodes
Wykrywanie wielu BarCode'ów działa bezpośrednio między dwiema platformami: Barkoder obsługuje wiele BarCode'ów w kadrze kamery;IronBarcode obsługuje wiele kodów w dokumencie lub pliku graficznym.
Podejście Barkoder SDK
Tryb wielu kodów kreskowych aplikacji Barkoder wykrywa i dekoduje jednocześnie kilka kodów kreskowych z jednego kadru z kamery. W kontekście magazynowym pracownik trzyma telefon nad półką i otrzymuje wszystkie wartości BARCODE-ów jednocześnie. Konfiguracja ta odbywa się na poziomie SDK przed rozpoczęciem skanowania:
// Plugin.Maui.Barkoder — multi-scan mode in a MAUI ContentPage
BarkoderView.MulticodeCachingEnabled = true;
BarkoderView.StartScanning(this);
// IBarkoderDelegate callback delivers all decoded codes per frame
public void DidFinishScanning(BarcodeResult[] results)
{
foreach (var r in results)
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}");
}
// Plugin.Maui.Barkoder — multi-scan mode in a MAUI ContentPage
BarkoderView.MulticodeCachingEnabled = true;
BarkoderView.StartScanning(this);
// IBarkoderDelegate callback delivers all decoded codes per frame
public void DidFinishScanning(BarcodeResult[] results)
{
foreach (var r in results)
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}");
}
' Plugin.Maui.Barkoder — multi-scan mode in a MAUI ContentPage
BarkoderView.MulticodeCachingEnabled = True
BarkoderView.StartScanning(Me)
' IBarkoderDelegate callback delivers all decoded codes per frame
Public Sub DidFinishScanning(results As BarcodeResult())
For Each r In results
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}")
Next
End Sub
Podejście IronBarcode
W aplikacjach po stronie serwera .NET scenariusz z wieloma BARCODE-ami zazwyczaj dotyczy dokumentu — faktury z BARCODE-em do śledzenia przesyłki i BARCODE-em produktu lub listu przewozowego z wieloma pozycjami na stronie.IronBarcode obsługuje to za pomocą ExpectMultipleBarcodes = true, i ta sama opcja działa identycznie na obrazach i PDF:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
};
// Works on images and PDFs — single method call
var results = BarcodeReader.Read("shipping-manifest.pdf", options);
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}");
}
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
};
// Works on images and PDFs — single method call
var results = BarcodeReader.Read("shipping-manifest.pdf", options);
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}");
}
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True
}
' Works on images and PDFs — single method call
Dim results = BarcodeReader.Read("shipping-manifest.pdf", options)
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}")
Next
Brak wyodrębniania stron, brak wielokrotnych żądań, brak obciążenia sieciowego związanego z każdym BarCode. Plik PDF jest odczytywany natywnie w ramach jednego wywołania. Więcej informacji na temat odczytu wielu kodów kreskowych i plików PDF można znaleźć w dokumentacji IronBarcode.
Obsługa formatów DataMatrix i High-Density
DataMatrix ma kluczowe znaczenie w zastosowaniach przemysłowych i DPM — formatach, na których Barkoder kładzie nacisk w branżach produkcyjnej, opieki zdrowotnej i motoryzacyjnej.
Podejście Barkoder SDK
Barkoder obsługuje odczyt kodów DataMatrix z konfiguracjami DPM dla znaków wygrawerowanych laserowo i wybijanych punktowo. SDK obsługuje również formaty PDF417,Azteci inne formaty 2D o wysokiej gęstości, zapewniając wysoką dokładność w przypadku aparatów w urządzeniach mobilnych. Wszystko to działa w ramach potoku przetwarzania obrazu w systemach iOS lub Android:
// Plugin.Maui.Barkoder — DataMatrix scanning in a MAUI ContentPage
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.DataMatrix });
BarkoderView.StartScanning(this);
// Plugin.Maui.Barkoder — DataMatrix scanning in a MAUI ContentPage
BarkoderView.SetEnabledBarcodeTypes(new[] { BarcodeType.DataMatrix });
BarkoderView.StartScanning(this);
' Plugin.Maui.Barkoder — DataMatrix scanning in a MAUI ContentPage
BarkoderView.SetEnabledBarcodeTypes(New BarcodeType() { BarcodeType.DataMatrix })
BarkoderView.StartScanning(Me)
Barkoder nie generuje kodów DataMatrix ani żadnych innych formatów kodów kreskowych. Jest to pakiet SDK tylko do odczytu.
Podejście IronBarcode
IronBarcode natywnie odczytuje i generuje kody DataMatrix. Po stronie odczytu, ReadingSpeed.ExtremeDetail obsługuje niski kontrast i szorstkie krawędzie typowe dla oznaczeń DPM wycinanych laserowo. Po stronie generowania, BarcodeWriter.CreateBarcode() produkuje DataMatrix do tworzenia etykiet części:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix)
.SaveAsPng("part-label.png");
// Generate a QR code with brand logo
QRCodeWriter.CreateQrCode("https://parts.example.com/A42", 500)
.AddBrandLogo("company-logo.png")
.SaveAsPng("branded-qr.png");
// Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
var results = BarcodeReader.Read("etched-part.png");
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix)
.SaveAsPng("part-label.png");
// Generate a QR code with brand logo
QRCodeWriter.CreateQrCode("https://parts.example.com/A42", 500)
.AddBrandLogo("company-logo.png")
.SaveAsPng("branded-qr.png");
// Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
var results = BarcodeReader.Read("etched-part.png");
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-ID-20240315-A42", BarcodeEncoding.DataMatrix) _
.SaveAsPng("part-label.png")
' Generate a QR code with brand logo
QRCodeWriter.CreateQrCode("https://parts.example.com/A42", 500) _
.AddBrandLogo("company-logo.png") _
.SaveAsPng("branded-qr.png")
' Read auto-detects format — DataMatrix, QR, Code128, PDF417, etc.
Dim results = BarcodeReader.Read("etched-part.png")
Pełna lista obsługiwanych formatów i opcji generowania znajduje się w przewodniku po generowaniu kodów kreskowych IronBarcode.
Przewodnik po mapowaniu API
Ta tabela określa konceptualne równoważności między API skanowania kamerą MAUI Barkoder, a jak IronBarcode osiąga ten sam rezultat dla wejścia pliku, strumienia, czy PDF w dowolnym projekcie .NET:
| Koncepcja Barkoder | Odpowiednik IronBarcode |
|---|---|
| Inicjalizacja SDK za pomocą klucza licencyjnego | IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" |
BarkoderView.DeblurEnabled = true |
Speed = ReadingSpeed.ExtremeDetail |
BarkoderView.MulticodeCachingEnabled = true |
ExpectMultipleBarcodes = true |
SetEnabledBarcodeTypes(BarcodeType.DataMatrix) |
BarcodeEncoding.DataMatrix (automatycznie wykrywane podczas odczytu) |
BarkoderView.StartScanning(this) |
BarcodeReader.Read("image.png") — wynik synchroniczny |
BarcodeResult.TextualData |
result.Value |
BarcodeResult.BarcodeTypeName |
result.Format |
| MatrixSight – odzyskiwanie danych po awarii | ReadingSpeed.ExtremeDetail z wstępnym przetwarzaniem ML |
| Analiza klatek z kamery | Wejście pliku / strumienia / tablicy bajtów |
| Przetwarzanie na urządzeniu | W pełni lokalne — bez połączeń sieciowych |
| Brak obsługi generacji | BarcodeWriter.CreateBarcode() / QRCodeWriter.CreateQrCode() |
| Brak obsługi plików PDF | BarcodeReader.Read("document.pdf") — natywny |
| Brak wdrożenia na serwerze | Działa w ASP.NET Core, Docker, Azure Functions, Lambda |
Kiedy zespoły rozważają przejście zBarkoder SDKna IronBarcode
Wymagania Projektów .NET Poza MAUI
Najczęstszy scenariusz jest prosty: programista lub zespół tworzy aplikację .NET — ASP.NET Core, usługę Windows, narzędzie konsolowe, aplikację desktopową — i podczas poszukiwań informacji natrafia na Barkoder. Czytają o MatrixSight, DeBlur i wykrywaniu wielokodowym, znajdują funkcje interesujące, a następnie odkrywają, że powierzchnia .NET to Plugin.Maui.Barkoder i Barkoder.Xamarin — obie tylko dla mobilnych interfejsów kamer. Zespoły w tej sytuacji nie rezygnują z Barkoder; od samego początku wybierają odpowiednie narzędzie dla swojej platformy.IronBarcode to odpowiedź środowiska .NET na wymagania, które Barkoder spełnia na urządzeniach mobilnych.
Procesy przetwarzania BarCodes po stronie serwera
Niektóre zespoły początkowo tworzą prototyp procesu przetwarzania kodów kreskowych przy użyciu mobilnej aplikacji do skanowania — Barkoder lub innego mobilnego zestawu SDK — a później muszą odtworzyć lub rozszerzyć ten proces po stronie serwera. Typowe przykłady obejmują przetwarzanie przesłanych obrazów kodów kreskowych za pośrednictwem punktu końcowego API, odczytywanie kodów kreskowych z dokumentów PDF w systemie zarządzania dokumentami lub przetwarzanie wsadowe zeskanowanych archiwów etykiet. Żadna z tych procedur nie jest możliwa w przypadku Barkoder, który nie posiada modelu wdrożenia po stronie serwera.IronBarcode obsługuje je wszystkie za pomocą tego samego statycznego API w ASP.NET Core, Azure Functions, Dockerze i AWS Lambda.
Wymagania dotyczące generowania BarCode
Zespoły tworzące aplikacje .NET dla logistyki, zarządzania zapasami lub zgodności z przepisami często odkrywają, że odczyt BARCODE'ów to tylko połowa procesu. Równie ważne jest generowanie kodów BarCode — drukowanie etykiet, osadzanie kodów QR w dokumentach, tworzenie listów przewozowych. Barkoder jest z założenia tylko do odczytu; nie posiada funkcji generowania. Gdy zakres projektu wykracza poza zwykłe czytanie, biblioteka obejmująca obie strony przepływu pracy eliminuje potrzebę integracji drugiej zależności.IronBarcode zapewnia zarówno odczyt, jak i generowanie w ponad 50 formatach za pośrednictwem spójnego interfejsu API.
Przetwarzanie dokumentów PDF
W aplikacjach Enterprise .NET BarCodes często pojawiają się w dokumentach PDF — fakturach, listach przewozowych, dokumentacji medycznej, dokumentach dotyczących zgodności. Barkoder nie ma pojęcia o tym przepływie pracy; Jest przeznaczona do wprowadzania danych za pomocą aparatu w urządzeniu mobilnym. Zespoły, które muszą odczytywać kody kreskowe z przychodzących dokumentów PDF, wyodrębniać dane z kodów kreskowych na potrzeby logiki biznesowej lub weryfikować obecność kodów kreskowych w archiwach dokumentów, potrzebują biblioteki z natywną obsługą formatu PDF.IronBarcode odczytuje kody kreskowe bezpośrednio z plików PDF bez pośredniego wyodrębniania obrazów.
Przewidywalność cen i wdrożenia
Cena mobilnego SDK Barkoder jest zorganizowana wokół modelu aplikacji mobilnych i dystrybucji — subskrypcji, na aplikację i na urządzenie, powiązana z wdrożeniem mobilnym. Dla zespołów, których praca z .NET jest poza MAUI czy Xamarin, ten model cenowy nie ma zastosowania, ponieważ SDK tam nie działa. Kiedy IronBarcode jest odpowiednim narzędziem, model cenowy jest prosty: licencja wieczysta bez opłat za zapytanie i bez limitów wolumenu na liczbę przetwarzanych kodów kreskowych.
Typowe kwestie związane z migracją
Od danych z kamery mobilnej do danych z plików
Zespoły, które wdrożyły prototyp mobilnego skanowania oparty na Barkoderze i muszą odtworzyć tę funkcjonalność w .NET, zauważą, że model wejściowy zmienia się z klatek z kamery na plik, strumień lub tablicę bajtów.IronBarcode akceptuje te same dane w wielu formach — ciąg ścieżki pliku, Stream, byte[] lub System.Drawing.Image. Logika przetwarzania BarCode jest poza tym identyczna:
// All of these call the same underlying pipeline
var results1 = BarcodeReader.Read("scan.png");
var results2 = BarcodeReader.Read(imageStream);
var results3 = BarcodeReader.Read(imageBytes);
// All of these call the same underlying pipeline
var results1 = BarcodeReader.Read("scan.png");
var results2 = BarcodeReader.Read(imageStream);
var results3 = BarcodeReader.Read(imageBytes);
' All of these call the same underlying pipeline
Dim results1 = BarcodeReader.Read("scan.png")
Dim results2 = BarcodeReader.Read(imageStream)
Dim results3 = BarcodeReader.Read(imageBytes)
Kompromis między szybkością a dokładnością
Tryb DeBlur Barkodera jest zawsze aktywny po skonfigurowaniu i działa w pętli kamery mobilnej.IronBarcode wyraźnie ujawnia kompromis dokładność-wydajność poprzez ReadingSpeed. Dla większości plików, ReadingSpeed.Balanced jest odpowiedni. Dla uszkodzonego lub zdegradowanego wejścia, którego Balanced nie może zdekodować, ReadingSpeed.ExtremeDetail stosuje pełną wielokrotną przepustową ML. Strukturyzowanie przetwarzania wsadowego do użycia Balanced domyślnie i powrót do ExtremeDetail tylko w przypadku niepowodzeń jest zalecaną metodą dla przepływów pracy wrażliwych na wydajność.
Integracja asynchroniczna w ASP.NET Core
Metoda BarcodeReader.Read()IronBarcode jest synchroniczna. W ASP.NET Core punktach końcowych, które obsługują równoczesne żądania, otocz wywołanie w Task.Run(), aby uniknąć blokowania wątku żądania:
var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));
var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));
Dim results = Await Task.Run(Function() BarcodeReader.Read(imageBytes, options))
Specyfikacja formatu dla wydajności
IronBarcode domyślnie automatycznie wykrywa formaty kodów kreskowych. W scenariuszach o dużej przepustowości, gdzie znany jest oczekiwany format, określenie formatu skraca czas przetwarzania poprzez wyeliminowanie testów formatów, które nie będą pasować. Skorzystaj z BarcodeReaderOptions.ExpectBarcodeTypes, aby ograniczyć wyszukiwanie, kiedy format jest znany z wyprzedzeniem.
Dodatkowe możliwości IronBarcode
Oprócz bezpośrednich odpowiedników funkcji mobilnych Barkoder,IronBarcode oferuje możliwości, które są istotne szczególnie w kontekście serwerów .NET i komputerów stacjonarnych:
- Osadzanie Loga w Kodzie QR:
QRCodeWriter.CreateQrCode().AddBrandLogo()dodaje obraz marki do centrum wygenerowanego kodu QR — częsty wymóg w przepływach pracy marketingowych i opakowaniowych - Odczytywanie BarCodes z plików PDF: natywne przetwarzanie plików PDF oznacza brak konieczności pośredniego wyodrębniania obrazów; Wielostronicowe pliki PDF są skanowane za pomocą jednego wywołania
- Umieszczanie kodów kreskowych w plikach PDF:IronBarcode może generować kody kreskowe i umieszczać je w istniejących dokumentach PDF, umożliwiając zautomatyzowane procesy tworzenia etykiet i dokumentów
- Odczyt Zbiorczy Obrazów:
BarcodeReader.ReadBulk()przetwarza wiele obrazów równocześnie dla operacji wsadowych o wysokiej przepustowości - Generowanie stylizowanych kodów QR: niestandardowe kolory, marginesy i poziomy korekcji błędów dla kodów QR
- Formaty GS1 i HIBC: Obsługa standardów BarCODE dla służby zdrowia i łańcucha dostaw wykraczająca poza standardowe formaty 1D i 2D
Zgodność z platformą .NET i gotowość na przyszłość
IronBarcode wspiera .NET Framework 4.6.2 i wszystkie nowoczesne wersje .NET przez .NET 9, z aktywnym rozwojem śledzącym cykl wydawania .NET 10. Biblioteka działa na Windows, Linux, i macOS, i jest testowana w docelowych środowiskach wdrożeniowych na Docker,Azure Functionsi AWS Lambda. W miarę jak ekosystem .NET ewoluuje w kierunku wzorców wielopłatformowych i natywnych dla chmury, model w pełni lokalnego wykonywania IronBarcode— bez zależności od chmury, bez zarządzania kluczami API i bez opóźnień sieciowych — wpisuje się w kierunek rozwoju nowoczesnej architektury aplikacji .NET.
Wnioski
Barkoder SDK i IronBarcode działają w dużej mierze w różnych domenach. Barkoder to SDK do skanowania kamerą mobilną zbudowany dla iOS i Android, z rdzeniem przetwarzającym C/C++, hybrydową dystrybucją mobilną i Plugin.Maui.Barkoder oraz Barkoder.Xamarin na NuGet dla MAUI i interfejsu kamer Xamarin.IronBarcode to natywna biblioteka .NET zbudowana dla serwera, desktopu, programatycznego przetwarzania MAUI i wdrożeń chmurowych, dystrybuowana przez NuGet i zintegrowana z ekosystemem .NET przez standardowe wzorce. Dwie biblioteki nakładają się wąsko — tylko MAUI i Xamarin, i tylko dla przypadku użycia UI kamery.
Barkoder to właściwy wybór, kiedy budujesz UI do skanowania kamerą wewnątrz mobilnej aplikacji MAUI, Xamarin, React Native, Flutter, Cordova lub Capacitor. Jego zdolności MatrixSight i DeBlur są rzeczywiście silne do scenariuszy skanowania w terenie, gdzie nie można kontrolować jakości obrazu. Funkcja wykrywania wielu BarCodes oraz obsługa DPM doskonale sprawdzają się w mobilnych procesach roboczych w produkcji i logistyce. Jeśli twój zespół buduje mobilny frontend dla pracowników skanujących fizyczne przedmioty za pomocą kamery urządzenia, Barkoder należy do oceny.
IronBarcode to właściwy wybór podczas tworzenia aplikacji .NET — interfejsów API ASP.NET Core, usług Windows, potoków przetwarzania dokumentów, narzędzi desktopowych lub funkcji w chmurze — które wymagają odczytu kodów kreskowych, generowania kodów kreskowych lub obu tych funkcji. Obejmuje pełny proces obsługi kodów kreskowych z jednego pakietu NuGet, działa całkowicie lokalnie bez zależności sieciowych i integruje się ze standardowymi wzorcami .NET, w tym wstrzykiwaniem zależności, async/await oraz hostingiem w chmurze. Dla deweloperów .NET, którzy zostali skierowani do Barkoder przez porównania,IronBarcode zapewnia te same kluczowe zdolności — odporność na uszkodzenia, wykrywanie wielu kodów kreskowych, wsparcie formatu DataMatrix i wysokiej gęstości — wdrożone do wejściowego pliku, strumienia i PDF przez platformę .NET.
Praktyczne wnioski są proste: wybieraj według przypadku użycia. UI kamery MAUI mapuje się bezpośrednio na Barkoder; plik, strumień, PDF, generacja, lub każda powierzchnia .NET poza MAUI mapuje się bezpośrednio na IronBarcode. Wiele systemów produkcyjnych obsługuje oba — Barkoder po stronie klienta mobilnego i IronBarcode na serwerze — a oba integrują się naturalnie jako hybryda.
Często Zadawane Pytania
Czym jest Barkoder SDK?
Barkoder SDK 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 Barkoder SDK a IronBarcode?
IronBarcode wykorzystuje statyczne, bezstanowe API, które nie wymaga zarządzania instancjami, podczas gdy Barkoder SDK 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 Barkoder SDK?
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 Barkoder SDK?
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 Barkoder SDK?
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 Barkoder?
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 Barkoder SDK 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 Barkoder SDK do IronBarcode jest prosta?
Migracja z Barkoder SDK 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().

