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

Neodynamic Barcode Professional vs IronBarcode: Porównanie bibliotek kodów kreskowych C#

Scanbot SDKvs IronBarcode: Potok Kamery vs Przetwarzanie Plików

Scanbot SDK otwiera pełnoekranowy widok skanowania kodów barcode przy użyciu aparatu urządzenia. Nie ma metody BarcodeScanner.Read(imagePath). Skaner to interfejs użytkownika kamery. Jeśli BARCODE znajduje się na fakturze w formacie PDF na serwerze, Scanbot nie będzie w stanie pomóc. Nie jest to krytyka — to opis architektury.Scanbot SDKto kontroler kamery, który owija natywne API skanowania iOS, Android i UWP/WinUI 3 w komponent celowniczy. ScanbotSDKMain.Barcode.StartScannerAsync(configuration) przekazuje kontrolę do pełnoekranowego doświadczenia z kamerą, użytkownik kieruje urządzenie na kod kreskowy, SDK wykrywa go w strumieniu wideo na żywo, a wynik zostaje zwrócony do aplikacji. Ma to znaczenie, ponieważ nazwa pakietu NuGet — ScanbotBarcodeSDK.MAUI — i kategoria produktu — "barcode SDK" — mogą skłonić deweloperów do oceny go pod kątem przetwarzania dokumentów po stronie serwera, aplikacji desktopowych WPF lub API ASP.NET Core. Ten artykuł wyjaśnia różnicę architektoniczną między tymi dwoma narzędziami i pokazuje, do czego są zbudowane.

Zrozumienie Scanbot SDK

Scanbot SDK to komercyjne SDK do skanowania kodów kreskowych opracowane przez doo GmbH. Jego główna oferta .NET to ScanbotBarcodeSDK.MAUI (v8.0.0), pakiet skierowany do net9.0-android i net9.0-ios. Oddzielny pakiet, Scanbot.BarcodeSDK.Windows (v7.0.0), obejmuje aplikacje desktopowe UWP i WinUI 3 na Windows 10 1809+ (x64) z autofokusem kamery. Wszystkie obsługiwane cele są powiązane z kamerą — SDK nie będzie działać z aplikacją konsolową, biblioteką klas, projektemASP.NET Corelub aplikacją MAUI pod targetującą macOS.

Scanbot został zaprojektowany jako produkt, w którym priorytetem jest aparat. Cała powierzchnia API jest zorientowana na doświadczenie podglądu na żywo: obiekty konfiguracyjne kontrolują wygląd interfejsu użytkownika kamery, formaty, na które monitoruje strumień wideo na żywo, oraz sposób przekazywania informacji zwrotnych użytkownikowi. Biblioteka dostarcza komponent do skanowania dla aplikacji konsumenckich i przedsiębiorczych na iOS, Androida i Windows (UWP/WinUI 3).

  • Główny cel platformy: iOS i Android przez .NET MAUI, plus UWP/WinUI 3 na Windows 10 1809+ przez oddzielny pakiet Scanbot.BarcodeSDK.Windows; Cele MAUI macOS nie są obsługiwane.
  • Model wejściowy: Wyłącznie obraz z kamery urządzenia na żywo — nie ma przeciążenia ścieżką pliku, strumieniem ani tablicą bajtów
  • Projekt API: ScanbotSDKMain.Barcode.StartScannerAsync(configuration) przekazuje kontrolę pełnoekranowemu doświadczeniu z kamerą i zwraca wynik z IsSuccess i kolekcją Value.Items
  • Funkcje interfejsu użytkownika aparatu: wizjer działający w czasie rzeczywistym z nakładką obszaru skanowania, sterowanie latarką, konfiguracja proporcji obrazu, informacja zwrotna dźwiękowa i haptyczna oraz blokada orientacji
  • Obsługiwane formaty: ponad 20 formatów jednowymiarowych (Code 128, EAN-13, UPC i inne) oraz kilka formatów dwuwymiarowych (QR, DataMatrix, PDF417, Aztec)
  • Brak przetwarzania plików: Nie ma mechanizmu odczytu BARCODE-a z zapisanego pliku graficznego, strumienia danych lub dokumentu PDF
  • Brak generowania kodów kreskowych: SDK odczytuje kody kreskowe; nie produkuje ich
  • Model licencyjny: roczna opłata ryczałtowa; roczny koszt jest stały niezależnie od wolumenu skanowania
  • Zakres typów projektów: Wspierane pakiety NuGet są przeznaczone dla środowisk z kamerami (MAUI iOS/Android i UWP/WinUI 3); konsola, biblioteka klas, ASP.NET Core, WPF, WinForms,Azure Functionsi hosty serwerowe Docker są poza tym zestawem celów

Architektura potoku przetwarzania obrazu z kamery

Architektura Scanbota wymaga inicjalizacji przy uruchomieniu aplikacji, a następnie wywołania skanowania za pomocą aparatu. Metoda skanowania wymaga BarcodeScannerScreenConfiguration, ponieważ cała operacja jest oparta na kamerze:

using ScanbotSDK.MAUI;
using ScanbotSDK.MAUI.Barcode;

// In MauiProgram.cs — initialization required before any scan
// ScanbotSDKMain.Initialize(new SdkConfiguration {
//     LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
//     LoggingEnabled = false
// }, builder);

// Configure scanner appearance and behavior
var configuration = new BarcodeScannerScreenConfiguration
{
    UseCase = new SingleScanningMode()
};

// Open full-screen camera scanner — UI takes over the entire screen
var result = await ScanbotSDKMain.Barcode.StartScannerAsync(configuration);

if (result.IsSuccess)
{
    foreach (var item in result.Value.Items)
        Console.WriteLine($"{item.Barcode.Format}: {item.Barcode.Text}");
}
using ScanbotSDK.MAUI;
using ScanbotSDK.MAUI.Barcode;

// In MauiProgram.cs — initialization required before any scan
// ScanbotSDKMain.Initialize(new SdkConfiguration {
//     LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
//     LoggingEnabled = false
// }, builder);

// Configure scanner appearance and behavior
var configuration = new BarcodeScannerScreenConfiguration
{
    UseCase = new SingleScanningMode()
};

// Open full-screen camera scanner — UI takes over the entire screen
var result = await ScanbotSDKMain.Barcode.StartScannerAsync(configuration);

if (result.IsSuccess)
{
    foreach (var item in result.Value.Items)
        Console.WriteLine($"{item.Barcode.Format}: {item.Barcode.Text}");
}
Imports ScanbotSDK.MAUI
Imports ScanbotSDK.MAUI.Barcode

' In MauiProgram.vb — initialization required before any scan
' ScanbotSDKMain.Initialize(New SdkConfiguration With {
'     .LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
'     .LoggingEnabled = False
' }, builder)

' Configure scanner appearance and behavior
Dim configuration As New BarcodeScannerScreenConfiguration With {
    .UseCase = New SingleScanningMode()
}

' Open full-screen camera scanner — UI takes over the entire screen
Dim result = Await ScanbotSDKMain.Barcode.StartScannerAsync(configuration)

If result.IsSuccess Then
    For Each item In result.Value.Items
        Console.WriteLine($"{item.Barcode.Format}: {item.Barcode.Text}")
    Next
End If
$vbLabelText   $csharpLabel

SDK przetwarza klatki wideo na żywo w czasie rzeczywistym, podświetla wykryte kody kreskowe w wizjerze i zwraca wynik po potwierdzeniu kodu kreskowego lub anulowaniu przez użytkownika. Obiekt konfiguracyjny kontroluje wygląd interfejsu użytkownika kamery, a nie sposób przetwarzania. To jest kompletny model.

Zrozumienie IronBarcode

IronBarcode to komercyjna biblioteka .NET do odczytu i generowania kodów kreskowych, opracowana przez firmę Iron Software. Działa w modelu przetwarzania plików: źródłami wejściowymi są ścieżki do plików, strumienie, tablice bajtów i dokumenty PDF. Nie ma interfejsu użytkownika kamery ani wymagań dotyczących sprzętu mobilnego. Biblioteka działa w każdym typie projektu .NET.

Statyczna metoda BarcodeReader.Read() w IronBarcode akceptuje dowolne źródło, które podaje kod wywołujący, niezależnie od tego, jak to źródło zostało wytworzone. Plik przesłany przez HTTP, plik PDF na dysku, obraz z magazynu blobów lub tablica bajtów zdekodowana z ciągu base64 to równoważne dane wejściowe. Biblioteka zwraca zbiór zdekodowanych wyników, z których każdy zawiera wartość BARCODE, format oraz numer strony, jeśli ma to zastosowanie.

  • Źródła danych wejściowych: ścieżki plików, strumienie, tablice bajtów i dokumenty PDF (natywne parsowanie plików PDF, a nie wyodrębnianie obrazów)
  • Obsługiwane typy projektów: aplikacje konsolowe, ASP.NET Core, WPF, WinForms, Blazor Server, Azure Functions, AWS Lambda, Docker, usługi Windows, .NET MAUI (wszystkie platformy docelowe, w tym Windows i macOS) oraz .NET Framework 4.6.2+
  • Generowanie kodów kreskowych: Tworzy kody kreskowe jako obrazy lub osadzone w dokumentach HTML i PDF
  • Obsługa formatów: ponad 30 formatów jednowymiarowych i pięć formatów dwuwymiarowych, w tymQR, DataMatrix, PDF417, Azteci MaxiCode
  • Ulepszenia w zakresie odczytu: korekcja błędów oparta na uczeniu maszynowym oraz odzyskiwanie uszkodzonych BarCodes z trudnych obrazów pochodzących ze świata rzeczywistego
  • Obiekt konfiguracji: BarcodeReaderOptions kontroluje zachowanie przetwarzania (szybkość, wykrywanie wielu kodów kreskowych), a nie wygląd interfejsu użytkownika kamery
  • Model licencyjny: jednorazowy zakup na czas nieokreślony w czterech wersjach (Lite 749 USD, Plus 1499 USD, Professional 2999 USD, Unlimited 5999 USD); nie jest wymagana coroczna odnowa

Porównanie funkcji

Poniższa tabela przedstawia podstawowe różnice międzyScanbot SDKa IronBarcode:

Funkcja Scanbot SDK IronBarcode
Główny przypadek użycia Skanowanie BarCode na żywo za pomocą kamery w telefonie komórkowym Odczytywanie i generowanie BarCodes plików i dokumentów
Model wejściowy Tylko obraz z kamery urządzenia Ścieżka do pliku, strumień, tablica bajtów, PDF
Obsługa platform iOS/Android MAUI i UWP/WinUI 3 (z kamerą) Wszystkie platformy .NET i typy projektów
Generowanie kodów kreskowych Nie Tak
Ekstrakcja BarCodes z plików PDF Nie Tak
Model licencyjny Roczna opłata ryczałtowa Jednorazowa, wieczysta
Interfejs użytkownika kamery na żywo Tak — dopracowany komponent wizjera Nie (do robienia zdjęć użyj MediaPicker)

Szczegółowe porównanie funkcji

Funkcja Scanbot SDK IronBarcode
Czytanie
Dane wejściowe ze ścieżki pliku Nie Tak
Dane wejściowe ze strumienia Nie Tak
Dane wejściowe z tablicy bajtów Nie Tak
Pobieranie kodów kreskowych z plików PDF Nie Tak
Podgląd na żywo z kamery Tak Nie
Skanowanie ramek w czasie rzeczywistym Tak Nie
Automatyczne wykrywanie formatowania Tak Tak
Korekta błędów ML Nie Tak
Odzyskiwanie uszkodzonych kodów kreskowych Nie Tak
Liczba formatów 1D 20+ 30+
Liczba formatów 2D QR, DataMatrix, PDF417, Aztec QR, DataMatrix, PDF417, Aztec, MaxiCode
Generacja
Generowanie BarCode'ów Nie Tak
Platforma
iOS MAUI Tak Tak
Android MAUI Tak Tak
Windows MAUI Nie Tak
macOS MAUI Nie Tak
UWP / WinUI 3 (z kamerą) Tak (osobny pakiet dla Windows) Tak
Aplikacja konsolowa Nie Tak
ASP.NET Core Nie Tak
Blazor Server Nie Tak
Aplikacja WPF Nie Tak
Aplikacja WinForms Nie Tak
Azure Functions Nie Tak
AWS Lambda Nie Tak
Docker / Linux Nie Tak
Usługa Windows Nie Tak
.NET Framework 4.6.2+ Nie Tak
Licencjonowanie
Model licencji Roczna opłata ryczałtowa Jednorazowa, wieczysta
Opublikowane ceny Skontaktuj się z działem sprzedaży Tak (749–5999 USD)
Ceny hurtowe Nie dotyczy (ryczałtowa opłata) Nie dotyczy (poziomy bezterminowe)

Architektura: potok kamerowy a przetwarzanie plików

Najważniejsza różnica międzyScanbot SDKa IronBarcode nie polega na braku funkcji — jest to zasadnicza różnica architektoniczna w sposobie, w jaki każda biblioteka traktuje dane wejściowe.

Podejście Scanbot SDK

Architektura Scanbota opiera się na natywnej ścieżce kamery. Gdy zostanie wywołane ScanbotSDKMain.Barcode.StartScannerAsync(configuration), biblioteka przekazuje kontrolę pełnoekranowemu doświadczeniu z kamerą, korzystając z natywnych API kamery urządzenia na iOS, Androidzie lub Windowsie. Biblioteka w sposób ciągły przetwarza klatki wideo na żywo, stosuje wykrywanie BarCode do każdej klatki i zwraca kontrolę do aplikacji wywołującej po potwierdzeniu BarCode lub zamknięciu skanera przez użytkownika. W modelu Scanbot nie ma pojęcia statycznego obrazu — dane wejściowe to zawsze strumień klatek wideo na żywo z kamery urządzenia.

Ten projekt zapewnia doświadczenie skanowania z kodami kreskowymi uwydatnionymi w czasie rzeczywistym w wizjerze, z konfigurowalnym obszarem skanowania z kontrolą proporcji, przełącznikiem latarki, dźwiękowym i wibracyjnym sprzężeniem oraz blokadą orientacji. Są to funkcje interfejsu użytkownika zbudowane z myślą o przypadku użycia kamery. Alternatywą jest to, że biblioteka jest nierozerwalnie związana ze sprzętem kamery i systemem operacyjnym, który nią steruje.

Podejście IronBarcode

IronBarcode akceptuje dowolną reprezentację binarną obrazu zawierającego kod kreskowy i zwraca zdekodowane wyniki za pomocą tej samej metody statycznej, niezależnie od tego, w jaki sposób obraz został uzyskany:

// Install: dotnet add package BarCode
using IronBarCode;

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

// From a file path — works in any project type
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
    Console.WriteLine($"{result.Value} ({result.Format})");

// From a PDF — reads all barcodes on all pages
var pdfResults = BarcodeReader.Read("invoice.pdf");
foreach (var result in pdfResults)
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");

// From a stream — useful for HTTP file uploads
using var stream = File.OpenRead("document.pdf");
var streamResults = BarcodeReader.Read(stream);

// With processing options
var options = new BarcodeReaderOptions { Speed = ReadingSpeed.Balanced };
var configuredResults = BarcodeReader.Read("image.png", options);
// Install: dotnet add package BarCode
using IronBarCode;

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

// From a file path — works in any project type
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
    Console.WriteLine($"{result.Value} ({result.Format})");

// From a PDF — reads all barcodes on all pages
var pdfResults = BarcodeReader.Read("invoice.pdf");
foreach (var result in pdfResults)
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");

// From a stream — useful for HTTP file uploads
using var stream = File.OpenRead("document.pdf");
var streamResults = BarcodeReader.Read(stream);

// With processing options
var options = new BarcodeReaderOptions { Speed = ReadingSpeed.Balanced };
var configuredResults = BarcodeReader.Read("image.png", options);
Imports IronBarCode

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

' From a file path — works in any project type
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
    Console.WriteLine($"{result.Value} ({result.Format})")
Next

' From a PDF — reads all barcodes on all pages
Dim pdfResults = BarcodeReader.Read("invoice.pdf")
For Each result In pdfResults
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next

' From a stream — useful for HTTP file uploads
Using stream = File.OpenRead("document.pdf")
    Dim streamResults = BarcodeReader.Read(stream)
End Using

' With processing options
Dim options = New BarcodeReaderOptions With {.Speed = ReadingSpeed.Balanced}
Dim configuredResults = BarcodeReader.Read("image.png", options)
$vbLabelText   $csharpLabel

To samo wywołanie działa w aplikacji konsolowej, kontrolerze .NET Core, funkcji Azure, formularzu WPF lub stronie MAUI.IronBarcodeodczytuje kody kreskowe z plików PDF w sposób natywny — nie jako obrazy wyodrębnione z plików PDF, ale poprzez bezpośrednią analizę struktury pliku PDF i wyszukiwanie kodów kreskowych na każdej stronie.

Zakres platform i wdrożeń

Zakres platformyScanbot SDKjest określony przez cele obsługiwane przez pakiet NuGet. Zakres działania IronBarcode odpowiada samemu środowisku uruchomieniowemu .NET.

Podejście Scanbot SDK

Pakiet Scanbot MAUI jest przeznaczony dla net9.0-android i net9.0-ios. Projekt .NET MAUI Application, który deklaruje tylko te dwa cele, zostanie zbudowany pomyślnie. Jednakże, gdy do net9.0-maccatalyst lub celWindows MAUIzostanie dodany do TargetFrameworks, odwołanie do pakietu Scanbot MAUI nie zostanie rozwiązane na tych celach. To nie jest problem z konfiguracją - pakiet MAUI nie dostarcza asemblerów dla Windows lub macOS MAUI. Komputer stacjonarny z Windows jest objęty oddzielnym pakietem Scanbot.BarcodeSDK.Windows dla aplikacji UWP/WinUI 3 z autofokusem kamery.

W efekcie zestaw pakietów .NET Scanbot celuje w MAUI mobile i UWP/WinUI 3 desktop, a nie w typy projektów serwerowych lub bez kamery na komputerach stacjonarnych.

Podejście IronBarcode

IronBarcode jest dystrybuowany jako pojedynczy pakiet NuGet, który działa poprawnie we wszystkich typach projektów .NET i docelowych frameworkach:

# Same package, same API — works in ASP.NET Core, WPF, console, MAUI, Azure Functions
dotnet add package BarCode
# Same package, same API — works in ASP.NET Core, WPF, console, MAUI, Azure Functions
dotnet add package BarCode
SHELL

W przypadku aplikacji MAUI, które są również przeznaczone na komputery stacjonarne z systemem Windows lub macOS,IronBarcode obsługuje wszystkie cztery platformy docelowe MAUI z poziomu jednego odwołania do pakietu, bez konieczności konfiguracji zależnej od platformy. Zespoły budujące projekt MAUI, który celuje w iOS, Androida i Windows, mogą dodaćIronBarcode raz i używać BarcodeReader.Read() na wszystkich trzech platformach bez modyfikacji.

Wzorce integracji MAUI

Obie biblioteki mogą być używane w projektach .NET MAUI, ale sposób integracji różni się znacznie w zależności od modelu wejściowego każdej biblioteki.

Podejście Scanbot SDK

W projekcie MAUI przeznaczonym dla systemów iOS i Android, Scanbot udostępnia natywny wizjer aparatu wbudowany w układ nawigacyjny aplikacji. Wywołanie ScanbotSDKMain.Barcode.StartScannerAsync() przedstawia pełnoekranowy skaner, a wynik zostaje zwrócony na stronę wywołującą, gdy użytkownik zakończy lub odrzuci skan. Ta integracja daje aplikacji mobilnej UI skanowania, które wygląda jak natywne dla platformy.

Ograniczenie pojawia się, gdy projekt się rozszerza. Dodanie celu macOS lub celuWindows MAUIpowoduje błędy kompilacji na tych platformach (komputer stacjonarny z Windows jest obsługiwany przez oddzielny pakiet Scanbot.BarcodeSDK.Windows dla aplikacji UWP/WinUI 3). Dodanie bezgłowej komponenty po stronie serwera, która potrzebuje przetwarzania kodów kreskowych, wymaga oddzielnej biblioteki - zależność Scanbot nie może towarzyszyć projektowi w ramach ASP.NET Core,Azure Functionsczy Docker.

Podejście IronBarcode

W projekcie MAUI,IronBarcode współpracuje z MediaPicker platformy, aby przechwycić zdjęcia i czytać kody kreskowe z otrzymanych obrazów. Proces skanowania wykorzystuje aparat systemowy zamiast niestandardowego wizjera:

// Works on iOS, Android, Windows, andmacOS MAUItargets
// NuGet: dotnet add package BarCode
using IronBarCode;

private async void ScanButton_Clicked(object sender, EventArgs e)
{
    var photo = await MediaPicker.CapturePhotoAsync();
    if (photo == null) return;

    using var stream = await photo.OpenReadAsync();
    using var ms = new MemoryStream();
    await stream.CopyToAsync(ms);

    var results = BarcodeReader.Read(ms.ToArray());
    foreach (var result in results)
        await DisplayAlert("Scanned", $"{result.Format}: {result.Value}", "OK");
}
// Works on iOS, Android, Windows, andmacOS MAUItargets
// NuGet: dotnet add package BarCode
using IronBarCode;

private async void ScanButton_Clicked(object sender, EventArgs e)
{
    var photo = await MediaPicker.CapturePhotoAsync();
    if (photo == null) return;

    using var stream = await photo.OpenReadAsync();
    using var ms = new MemoryStream();
    await stream.CopyToAsync(ms);

    var results = BarcodeReader.Read(ms.ToArray());
    foreach (var result in results)
        await DisplayAlert("Scanned", $"{result.Format}: {result.Value}", "OK");
}
Imports IronBarCode
Imports System.IO
Imports System.Threading.Tasks

Private Async Sub ScanButton_Clicked(sender As Object, e As EventArgs)
    Dim photo = Await MediaPicker.CapturePhotoAsync()
    If photo Is Nothing Then Return

    Using stream = Await photo.OpenReadAsync()
        Using ms As New MemoryStream()
            Await stream.CopyToAsync(ms)

            Dim results = BarcodeReader.Read(ms.ToArray())
            For Each result In results
                Await DisplayAlert("Scanned", $"{result.Format}: {result.Value}", "OK")
            Next
        End Using
    End Using
End Sub
$vbLabelText   $csharpLabel

Cechą charakterystyczną jest nakładka na wizjer na żywo. Użytkownik widzi interfejs aparatu systemowego zamiast niestandardowego obszaru skanowania, co jest wystarczające w zastosowaniach biznesowych, gdzie wystarczy funkcja "wskazania i uchwycenia". Samouczek dotyczący skanera BARCODE .NET MAUI obejmuje pełny wzorzec integracji MAUI dla platform iOS i Android, w tym obsługę uprawnień i konfigurację projektu.

Model licencyjny

Scanbot SDK i IronBarcode wykorzystują zasadniczo różne struktury licencji komercyjnych.

Podejście Scanbot

Scanbot działa w oparciu o model rocznej opłaty ryczałtowej. Roczny koszt licencji nie jest liczony według ilości skanów. Zapewnia to przewidywalne roczne budżetowanie dla zespołów korzystających wyłącznie ze stabilnych wdrożeń mobilnych. Aby uzyskać dokładną wycenę, należy skontaktować się z zespołem sprzedaży Scanbot; Opublikowane dane liczbowe nie są dostępne. Obowiązek corocznego odnawiania oznacza, że licencja stanowi stały koszt operacyjny.

Podejście IronBarcode

IronBarcode jest sprzedawany jako jednorazowy zakup na czas nieokreślony w czterech wersjach: Lite za 749 USD, Plus za 1499 USD, Professional za 2999 USD i Unlimited za 5999 USD. Nie ma wymogu corocznego odnawiania licencji w celu dalszego korzystania z zakupionej wersji. W cenie zawarte są aktualizacje oprogramowania w okresie obowiązywania licencji. Ceny są publikowane na stronie internetowej Iron Software bez konieczności prowadzenia rozmów handlowych.

Przewodnik po mapowaniu API

Zespoły oceniające różnice architektoniczne między tymi dwiema bibliotekami uznają to zestawienie za przydatne do zrozumienia równoważności koncepcji:

Scanbot SDK IronBarcode
ScanbotSDKMain.Initialize(new SdkConfiguration { LicenseKey = "..." }, builder) IronBarCode.License.LicenseKey = "key"
new BarcodeScannerScreenConfiguration { UseCase = new SingleScanningMode() } new BarcodeReaderOptions()
ScanbotSDKMain.Barcode.StartScannerAsync(configuration) BarcodeReader.Read(path / stream / bytes)
result.IsSuccess Sprawdź results.Any() lub results.FirstOrDefault() != null
result.Value.Items Wartość zwracana przez BarcodeReader.Read()
item.Barcode.Format result.Format (IronBarCode.BarcodeEncoding)
item.Barcode.Text result.Value
BarcodeFormat.Code128 BarcodeEncoding.Code128
BarcodeFormat.QrCode BarcodeEncoding.QRCode
BarcodeFormat.Ean13 BarcodeEncoding.EAN13
Konfiguracja obszaru skanowania kamery / proporcje Brak odpowiednika — kadrowanie obrazu obsługiwane przez MediaPicker
Konfiguracja błysku / latarki kamery Brak odpowiednika — użyj opcji MediaPicker
Wprowadzanie danych wyłącznie za pomocą kamery Ścieżka pliku, strumień, tablica bajtów lub plik PDF
iOS/Android MAUI and UWP/WinUI 3 Wszystkie platformy .NET

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

Istnieje kilka sytuacji, w których zespoły programistów często rozważająIronBarcode jako zamiennik lub uzupełnienie Scanbot SDK.

Przetwarzanie po stronie serwera i przetwarzanie zaplecza

Aplikacja mobilna zbudowana przy użyciu Scanbot często współistnieje z komponentem po stronie serwera, który obsługuje przesyłanie dokumentów, zadania wsadowe lub punkty końcowe API. Gdy ten komponent po stronie serwera wymaga przetwarzania kodów kreskowych — wyodrębniania kodów kreskowych z przesłanych plików PDF, sprawdzania poprawności wartości kodów kreskowych w przychodzących dokumentach lub przetwarzania danych kodów kreskowych z załączonych obrazów — aplikacja Scanbot nie jest dostępna. Pakiet nie kompiluje się w .NET Core, Azure Functions, aplikacjach konsolowych ani żadnym projekcie innym niż MAUI. Zespoły w tej sytuacji muszą utrzymywać zależność od mobilnego rozwiązania do obsługi kodów kreskowych obok oddzielnego rozwiązania po stronie serwera lub oceniać, czy IronBarcode może pełnić obie role w ramach jednego pakietu.

Wymagania dotyczące aplikacji desktopowej

Główną zaletą MAUI jest często obsługa wielu platform: jedna baza kodu przeznaczona dla systemów iOS, Android i Windows. Gdy celWindows MAUIpojawia się w planie działania — albo z początkowych wymagań, albo jako późniejsze dodanie — pakiet ScanbotBarcodeSDK.MAUI nie daje się rozwiązać na tym celu, ponieważ Scanbot obejmuje Windows przez oddzielny pakiet UWP/WinUI 3 (Scanbot.BarcodeSDK.Windows), a nie przez MAUI Windows. Zespoły, które chcą mieć jedną ścieżkę buildów Windows w wielo-celowym projekcie MAUI lub potrzebują bezgłowego komponentu Windows (takiego jak usługa Windows), nie dostaną tego z zestawu pakietów Scanbot.IronBarcode dostarcza jeden pakiet, który jest rozwiązywany na celuWindows MAUIi również działa w bezgłowych kontekstach desktopowych i serwerowych.

PDF i przepływy pracy z dokumentami

Aplikacje, które przechodzą od skanowania na żywo do automatyzacji dokumentów, napotykają ograniczenia możliwości Scanbota. Odczytywanie kodów kreskowych z faktury PDF, wyodrębnianie kodów śledzących z zeskanowanej etykiety wysyłkowej lub przetwarzanie danych kodu kreskowego z zarchiwizowanego dokumentu to działania, które wykraczają poza model wejściowy Scanbot, który jest zbudowany wokół transmisji z kamery na żywo.IronBarcode obsługuje wszystkie te dane wejściowe oparte na plikach w sposób natywny. Ten sam pakiet, który działa w aplikacji mobilnej MAUI, może wyodrębniać BARCODE-sy z dokumentów PDF w ramach zadania przetwarzania w tle, bez żadnych dodatkowych zależności.

Przewidywalne koszty licencji

Roczne koszty odnowienia wymagają ponownej oceny w każdym cyklu odnowienia. Zespoły, które rozpoczęły korzystanie z Scanbota w ramach wdrożenia mobilnego na małą skalę, a następnie rozszerzyły je na szersze wdrożenie z większą liczbą użytkowników lub platform, mogą uznać opłatę roczną za mniej korzystną w miarę wzrostu zakresu. Model jednorazowej licencji wieczystej IronBarcode eliminuje obowiązek odnawiania. Zespoły przeprowadzające oceny przedłużenia licencji często zastanawiają się, czy jednorazowy zakup lepiej wpisuje się w ich długoterminowe planowanie kosztów, zwłaszcza gdy rozszerzony zakres projektu obejmuje platformy po stronie serwera lub platformy desktopowe, które i tak nie są objęte zasięgiem Scanbota.

Typowe kwestie związane z migracją

Zespoły przechodzące zScanbot SDKna IronBarcode powinny przygotować się na kilka różnic technicznych, które pojawią się podczas przejścia.

Brak odpowiednika podglądu na żywo

Wizjer kamery Scanbota działający w czasie rzeczywistym — z nakładką obszaru skanowania, ciągłym wykrywaniem i haptycznym sprzężeniem zwrotnym — nie ma bezpośredniego odpowiednika w IronBarcode. Wzorzec zastępczy używa MediaPicker.CapturePhotoAsync() MAUI do otwarcia kamery systemowej, przechwycenia zdjęcia i zwrócenia obrazu do przetwarzania. Interakcja użytkownika polega raczej na robieniu zdjęć niż na ciągłym skanowaniu. W przypadku aplikacji biznesowych (zarządzanie zapasami, logistyka, przetwarzanie dokumentów) to rozróżnienie rzadko ma znaczenie. W przypadku aplikacji konsumenckich, w których nakładka na żywo ma kluczowe znaczenie dla wrażeń z użytkowania produktu, jest to istotna różnica w zakresie UX, którą należy ocenić przed podjęciem decyzji o migracji.

Wzorzec wywołania zwrotnego zdarzenia do bezpośredniego powrotu

ScanbotSDKMain.Barcode.StartScannerAsync() Scanbota jest async i zwraca wynik z flagą IsSuccess i kolekcją Value.Items. BarcodeReader.Read()IronBarcode zwraca kolekcję bezpośrednio — nie ma obiektu opakowującego z polem statusu. Sprawdzenie powodzenia zmienia się z result.IsSuccess na results.Any() lub sprawdzenie nuli na results.FirstOrDefault().

Zmiana nazwy przestrzeni nazw Format Enum

BarcodeFormat Scanbota (np. BarcodeFormat.Code128) i BarcodeEncodingIronBarcode(np. BarcodeEncoding.Code128) zawierają podobne elementy, ale są różnymi typami w różnych przestrzeniach nazw. Kod, który przechowuje lub porównuje wartości formatów według typu enum, wymaga aktualizacji odniesienia do typu. Porównania łańcuchów na podstawie wyników .ToString() są zazwyczaj kompatybilne, ponieważ nazwy członków są podobne, ale wyraźne porównania typu enum wymagają aktualizacji do wartości BarcodeEncoding.

Dodatki do kompilacji systemu Windows

Jeśli pakiet Scanbot powodował błędy kompilacjiWindows MAUIprzed migracją, jego usunięcie rozwiązuje te problemy. Po dodaniu IronBarcode sprawdź, czy funkcje specyficzne dla systemu Windows — okna dialogowe wyboru plików, lokalne ścieżki plików, uprawnienia systemu Windows — są odpowiednio obsługiwane w kodzie aplikacji MAUI, ponieważ różnią się one od schematów dostępu do plików w systemach iOS i Android.

Dodatkowe możliwości IronBarcode

Oprócz podstawowych scenariuszy omówionych w tym porównaniu,IronBarcode oferuje funkcje, które stają się istotne w miarę rozszerzania się projektów:

  • Generowanie kodów kreskowych: Tworzenie kodów kreskowych we wszystkich głównych formatach jednowymiarowych i dwuwymiarowych jako pliki graficzne, strumienie lub treści osadzone w dokumentach HTML i PDF
  • Przetwarzanie dokumentów z wieloma BARCODAMI: odczyt wszystkich BARCODE'ów na każdej stronie wielostronicowego pliku PDF za pomocą jednego wywołania, przy czym każdy wynik zawiera numer strony, na której został znaleziony
  • Korekcja błędów za pomocą uczenia maszynowego: odzyskiwanie BARCODE-ów z uszkodzonych, częściowo zasłoniętych lub mało kontrastowych obrazów, których standardowe algorytmy wykrywania nie są w stanie odczytać
  • Przetwarzanie obrazów w partiach: przetwarzaj tablice ścieżek obrazów lub strumienie w ramach jednej operacji, aby uzyskać wysoką przepustowość w przepływie pracy z dokumentami
  • Dostosowanie opcji BarCodeReaderOptions: Kontrola prędkości odczytu, wykrywanie wielu kodów kreskowych, filtrowanie formatów i wstępne przetwarzanie obrazów w celu zrównoważenia przepustowości i dokładności w konkretnych przypadkach użycia
  • Integracja z iOS MAUI: Pełna obsługa odczytu BarCode w aplikacjachiOS MAUIprzy użyciu wzorca MediaPicker
  • Integracja z Android MAUI: Pełna obsługa odczytu BarCode w aplikacjachAndroid MAUIprzy użyciu tego samego interfejsu API co w przypadku iOS

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

IronBarcode obsługuje .NET 6, .NET 7, .NET 8 i .NET 9, a także .NET Framework 4.6.2 i nowsze wersje. Biblioteka jest regularnie aktualizowana zgodnie z cyklem wydawniczym platformy .NET, co zapewnia kompatybilność z platformą .NET 10, której premiera przewidziana jest na koniec 2026 roku, oraz z przyszłymi wersjami. Ponieważ biblioteka IronBarcode jest biblioteką do przetwarzania plików, a nie platformowym zestawem SDK do obsługi aparatu, nie jest zależna od interfejsów API mobilnych systemów operacyjnych ani możliwości sprzętowych, co oznacza, że jej kompatybilność rośnie wraz z ekosystemem .NET, a nie jest ograniczona cyklami wsparcia platform mobilnych.

Wnioski

Scanbot SDK i IronBarcode zajmują różne kategorie produktów, które łączy oznaczenie 'barcode SDK'. Scanbot to komponent skanowania z kamery, który dostarcza doświadczenie wizjera na żywo dla iOS i Android (przez MAUI) oraz Windows (przez UWP/WinUI 3).IronBarcode to biblioteka do przetwarzania plików i dokumentów, która odczytuje i generuje kody kreskowe w pełnym zakresie typów projektów .NET i miejsc wdrożenia. Porównanie dotyczy zakresu i architektury, a nie jakości w ramach docelowej dziedziny każdej biblioteki.

Scanbot SDK jest silne w ramach swojego zdefiniowanego zakresu. Dla aplikacji, w których użytkownik bezpośrednio kieruje kamerę urządzenia na fizyczny kod kreskowy i oczekuje wizualnego sprzężenia zwrotnego w czasie rzeczywistym - w handlu detalicznym, sprzedaży biletów, w magazynie - ścieżka kamery Scanbot i komponent wizjera są przeznaczone specjalnie do tego modelu interakcji. Jeśli wdrożenie jest ograniczone do celów sprzęgniętych z kamerą (iOS, Android, oraz UWP/WinUI 3 Windows), doświadczenie skanowania na żywo jest rdzeniem produktu, a roczna opłata ryczałtowa odpowiada budżetowi, Scanbot jest rozsądnym wyborem dla tego przypadku użycia.

IronBarcode jest odpowiednim rozwiązaniem, gdy wymagania dotyczące przetwarzania kodów kreskowych wykraczają poza scenariusz z wykorzystaniem kamery na żywo. Przetwarzanie dokumentów po stronie serwera, punkty końcoweASP.NET Coreakceptujące przesyłanie plików, aplikacje desktopowe na Windows lub macOS,Azure Functionswywoływane przez magazyn obiektów blob, projekty MAUI dla wielu platform, w tym platformy desktopowe, oraz zadania przetwarzania plików PDF w trybie wsadowym – wszystko to mieści się w zakresie działania IronBarcode. Pojedynczy pakiet instaluje się bez konfiguracji warunkowej dla platformy i zapewnia to samo wywołanie BarcodeReader.Read() niezależnie od tego, czy kod działa na urządzeniu mobilnym, serwerze, czy komputerze stacjonarnym.

Dla zespołów, których wymagania obejmują zarówno skanowanie na żywo za pomocą kamery mobilnej, jak i przetwarzanie plików lub serwerów, najbardziej przejrzystym rozwiązaniem pod względem architektury jest użycie Scanbot do obsługi interfejsu użytkownika kamery mobilnej oraz IronBarcode do wszystkich pozostałych zadań. Kosztem takiego podejścia są dwie zależności od BarCodes i dwie umowy licencyjne. Dla zespołów, które wolą korzystać z aparatu systemowego zamiast niestandardowego wizjera do skanowania mobilnego, sam IronBarcode może pokryć cały zakres projektu — od aplikacji mobilnej MAUI, przez API serwera, aż po aplikację towarzysząca na Windows — za pomocą jednego pakietu i jednej licencji.

Często Zadawane Pytania

Czym jest Scanbot SDK?

Scanbot 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 Scanbot SDK a IronBarcode?

IronBarcode wykorzystuje statyczne, bezstanowe API, które nie wymaga zarządzania instancjami, podczas gdy Scanbot 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 licencjonowanie IronBarcode jest łatwiejsze niż w przypadku Scanbot 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 Scanbot 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 Scanbot 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 Scanbot?

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 Scanbot 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 Scanbot SDK do IronBarcode jest prosta?

Migracja z Scanbot 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