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

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.Barkoder i Barkoder.Xamarin udostę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
$vbLabelText   $csharpLabel

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() i BarcodeWriter.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
$vbLabelText   $csharpLabel

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);
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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))
$vbLabelText   $csharpLabel

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().

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