Altbilgi içeriğine atla
DIğER BILEşENLERLE KARşıLAşTıRıN

BarcodeScanning.MAUI vs IronBarcode: C# Barkod Kütüphanesi Karşılaştırması

BarcodeScanning.Native.Maui vs IronBarcode: Camera Control vs Full Barcode SDK

BarcodeScanning.Native.Maui, MAUI uygulamalarına yönelik bir kamera eklentisidir. Uygulamanız yüklenen dosyaları işler veya PDF'lerden barkodları okursa, bu kullanım durumu için tasarlanmamıştır. Paket kendini ".NET MAUI için barcode tarama kütüphanesi" olarak tanımlar ve uygulamada barcode canlı kamera karesine girdiğinde bir olayı tetikleyen bir CameraView kontrolüdür. Bu, tam bir özellik kümesidir. Bu karşılaştırma, ekiplerin her aracın nereye uyduğunu anlamalarına yardımcı olan bir kamera kontrol kütüphanesi ile tam özellikli bir barkod SDK'sı arasındaki mimari farkı incelemektedir.

BarcodeScanning.MAUI'yi Anlamak

BarcodeScanning.Native.Maui, iOS/macOS (Apple's Vision çerçevesi), Android (Google ML Kit) ve Windows'ta (ZXingCpp, sürüm 3.0.1'de eklendi) doğal kamera barcode tespit API'lerini bir MAUI CameraView kontrolüne sarar. Bir geliştirici, kontrolü XAML sayfasına yerleştirir, bir olay işleyicisi bağlar ve kütüphane, canlı kamera beslemesinde bir barkod algılandığında bu olayı tetikler. Tüm etkileşim modeli kamera-için, olay-dışıdır — başka bir yol yoktur.

Kütüphane açık kaynak kodludur ve MIT lisansı altında ücretsizdir. Tasarım hedefi dar ve açıktır: MAUI uygulamaları için minimum mümkün API yüzeyi ile canlı kamera barkod algılama sağlamak. Bu hedefi kendi kod çözümleme motorunu uygulamak yerine platform başına yerel motorlara delegasyon yoluyla başarır.

BarcodeScanning.Native.Maui'nin ana mimari özellikleri:

  • Sadece Kamera Girişi: Kütüphane sadece canlı kamera çerçevelerini kabul eder. Genel API'de hiç ReadFromFile(), ReadFromBytes(), ReadFromStream() ve ReadFromPdf() metodu yok.
  • Yalnızca MAUI Hedefler: Kütüphane MAUI hedeflerini destekler — iOS, Android, Windows (3.0.1'den beri, ZXingCpp ile), ve macOS Catalyst. MAUI projeleri dışında kullanılamaz (ASP.NET, konsol, WPF veya WinForms kullanılmaz).
  • Üç Farklı Motor: iOS/macOS'ta Apple Vision, Android'de Google ML Kit ve Windows'ta ZXingCpp. Semvol kapsama alanı ve kod çözümleme davranışı, üç motor arasında değişiklik gösterir.
  • Üretim Yeteneği Yok: BarcodeScanning.Native.Maui kamera çerçevelerinden barkodları okur. Herhangi bir formatta barkod üretemez.
  • iOS'da UPC-A Özelliği: Apple'ın Vision çerçevesi, UPC-A barkodları için 13 rakam döndürebilir (EAN-13 kodlamasını karşılamak için başı 0 ekleyerek). Kütüphane bu ham değeri geçirir ve uygulamalar gerektiği gibi normalleştirir.
  • iOS/Android'deki PDF417 Güvenilirliği: Kütüphanesinin GitHub sorun izleyicisi, PDF417 taramanın "çok problemli — çoğu tarama gerçekleşmez" olarak tanımlar, bu, nakliye etiketleri, ehliyetler ve biniş kartları için önemlidir.
  • Minimal Genel Yüzey: Genel API, CameraView, OnDetectionFinished, OnDetectionFinishedEventArg ve BarcodeResult'den oluşur ve DisplayValue ve BarcodeFormat ile birlikte gelir. Uygulama kodunun etkileşimde bulunduğu bütünlük budur.
  • MIT Lisansı, Ücret Yok: Kütüphane lisans ücreti olmaksızın ücretsiz kullanılabilir.

Canlı Kamera Tarama Deseni

Tüm BarcodeScanning.Native.Maui API deseni, bir XAML kontrolü ile eşleşen bir C# olay işleyicisidir:


<scanner:CameraView x:Name="CameraView"
                    OnDetectionFinished="OnBarcodeDetected"
                    CameraEnabled="True"
                    BarcodeFormats="All" />

<scanner:CameraView x:Name="CameraView"
                    OnDetectionFinished="OnBarcodeDetected"
                    CameraEnabled="True"
                    BarcodeFormats="All" />
XML
private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArg e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode != null)
        ResultLabel.Text = barcode.DisplayValue;
}
private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArg e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode != null)
        ResultLabel.Text = barcode.DisplayValue;
}
Private Sub OnBarcodeDetected(sender As Object, e As OnDetectionFinishedEventArg)
    Dim barcode = e.BarcodeResults.FirstOrDefault()
    If barcode IsNot Nothing Then
        ResultLabel.Text = barcode.DisplayValue
    End If
End Sub
$vbLabelText   $csharpLabel

Bu kontrol, kullanıcıların MAUI sayfasına gömülü gerçek zamanlı bir vizör görüntülemesini sağlar. Barkod algılama, kamera akışı aktifken sürekli olarak tetiklenir. UX, "işaretle ve tara" birincil etkileşim olduğu tüketici uygulamaları için uygun. Kısıtlama, kitaplığın desteklediği tek etkileşimin bu olmasıdır — MAUI bağlamında canlı kamera algılamanın ötesine geçen gereksinimler kapsamı dışında kalır.

IronBarcode Anlama

IronBarcode, veri girdileri üzerinde çalışan, .NET için ticari bir barkod okuma ve oluşturma kütüphanesidir. Görüntü dosyalarından, bayt dizilerinden, akışlardan ve PDF belgelerinden barkodları okur. MAUI'de, sistem kamerası ile MediaPicker üzerinden entegredir - uygulamaların fotoğraf seçimi için kullanılan aynı standart MAUI API'si - bir fotoğraf yakalayıp ve ardından sonuç olarak oluşan görüntüyü statik bir veri girişi olarak işler.

IronBarcode, platforma özgü doğal API'lere yönlendirmek yerine kendi yönetilen barcode kod çözme motorunu uygular. Bu, aynı BarcodeReader.Read() çağrısının desteklenen .NET hedeflerinde — Windows, Linux, macOS, ASP.NET ve arka plan sunucu proseslerinde — ve ayrıca bir görüntü yakalanıp okuyucuya iletildiğinde MAUI mobil hedeflerinde tutarlı davranacağı anlamına gelir. Kütüphane ayrıca BarcodeWriter ve QRCodeWriter üzerinden tam bir barcode oluşturma API'si sağlar.

IronBarcode'un ana özellikleri:

  • Statik Dosya Tabanlı API: BarcodeReader.Read(), dosya yolu, bayt dizisi, akış ya da PDF — herhangi bir statik veri kaynağını kabul eder.
  • Geniş Platform Kapsama: Windows, Linux ve macOS (ARM dahil) desteklenir, .NET Framework 4.6.2+, .NET Core 3.1+, ve .NET 5/6/7/8 yanında. Aynı yönetilen kod yolu, platforma özgü dallanmalar olmadan tüm desteklenen hedeflerde çalışır.
  • Barcode Oluşturma: BarcodeWriter.CreateBarcode() ve QRCodeWriter.CreateQrCode() Code128, QR, DataMatrix ve diğer formatları görüntü dosyası ya da bayt dizisi olarak üretir.
  • PDF Desteği: PDF belgelerine gömülü barkodlar, ara bir görüntü çıkarma adımı olmaksızın doğrudan okunur.
  • Tutarlı UPC-A Kod Çözümü: Yönetilen motoru aracılığıyla standart 12 haneli UPC-A değerini döndürür.
  • Ticari Lisanslama: Lite $749, Plus $1,499, Professional $2,999, Unlimited $5,999 — bir yıllık destekle süresiz lisanslar.
  • Sunucu Tarafı Dağıtım: Fiziksel kamera bağımlılığı olmadan ASP.NET, Azure Functions, Docker konteynerleri ve AWS Lambda üzerinde çalışır.

Özellik Karşılaştırması

Aşağıdaki tablo, BarcodeScanning.Native.Maui ve IronBarcode arasındaki temel farklılıkları vurgular:

Özellik BarcodeScanning.MAUI IronBarcode
Birincil Amaç Canlı kamera barkod algılama Herhangi bir veri kaynağından barkod okuma ve oluşturma
Giriş Kaynakları Yalnızca canlı kamera çerçeveleri Dosyalar, bayt dizileri, akışlar, PDF'ler
Platform Desteği Yalnızca MAUI — iOS, Android, Windows (ZXingCpp üzerinden), macOS Catalyst Windows, Linux, macOS, ASP.NET, konsol, WPF, artı MAUI yakalanan görüntüler üzerinden
Tanıma Motoru Üç motor (Apple Vision / Google ML Kit / ZXingCpp) Tüm hedeflere tek yönetilen motor
Barkod Üretimi Hayır Evet — BarcodeWriter + QRCodeWriter
Lisans Modeli MIT (ücretsiz, açık kaynak) Ticari — Lite $749'dan Unlimited $5,999'a
Sunucu-Tarafı / ASP.NET Hayır Evet

Ayrıntılı Özellik Karşılaştırması

Özellik BarcodeScanning.MAUI IronBarcode
Okuma
Canlı kamera çerçevesi okuma Evet — CameraView kontrolü Hayır (Medya Seçici'yi kullanarak yakalayın, sonra okuyun)
Uygulama içi kamera vizör Evet — gerçek zamanlı sürekli Hayır — Medya Seçici aracılığıyla sistem kamera UI'yi kullanır
Görüntü dosyasından oku Hayır Evet — BarcodeReader.Read(path)
Bayt dizisinden oku Hayır Evet — BarcodeReader.Read(bytes)
Akıştan oku Hayır Evet — BarcodeReader.Read(stream)
PDF'den oku Hayır Evet — BarcodeReader.Read(pdf)
Çoklu barkod algılama Evet (e.BarcodeResults aracılığıyla kare başına birden fazla) Evet (ExpectMultipleBarcodes seçeneği)
Okuma hız kontrolü None ReadingSpeed.Faster / Balanced / Detailed / ExtremeDetail
iOS üzerinde UPC-A 13 hane döndürebilir; applications normalize Standart 12 haneli UPC-A döndürür
PDF417 güvenilirliği iOS/Android motorlarında belgelenmiş sorunlar Desteklenen
Üretim
Barkod oluşturma Hayır Evet — BarcodeWriter.CreateBarcode()
QR kod üretimi Hayır Evet — QRCodeWriter.CreateQrCode()
PNG / bayt dizisi olarak çıktı Hayır Evet
Platform
iOS MAUI Evet (Apple Vision) Evet (yakalanan görüntü aracılığıyla)
Android MAUI Evet (Google ML Kit) Evet (yakalanan görüntü aracılığıyla)
Windows MAUI Evet (ZXingCpp, 3.0.1'den beri) Evet
macOS MAUI Evet(Mac Catalyst, Apple Vision) Evet
ASP.NET / sunucu-tarafı Hayır Evet
Docker / Azure / AWS Lambda Hayır Evet
.NET Framework desteği Hayır (sadece MAUI) Evet — .NET Framework 4.6.2+
Lisanslama
Lisans türü MIT (açık kaynak) Ticari süresiz
Maliyet Ücretsiz Lite $749, Plus $1,499, Professional $2,999, Unlimited $5,999
Değerlendirme düzeyi Yok Ücretsiz deneme mevcut

Mimari: Kamera Kontrolü vs Dosya İşleme API'si

Bu iki kütüphane arasındaki en temel fark girdi modelidir. BarcodeScanning.Native.Maui sürekli bir kamera akışı etrafında tasarlanmıştır; IronBarcode, ayrık veri girdileri etrafında tasarlanmıştır. Bunlar aynı fikrin rekabet eden uygulamaları değil — farklı kullanım durumları için farklı mimari seçimlerdir.

BarcodeScanning.MAUI Yaklaşımı

BarcodeScanning.Native.Maui, her platformda yerel kamera algılama hattını sarar. Android'de, ML Kit çerçeveleri işler; iOS ve macOS'ta, Apple'ın Vision çerçevesi çerçeveleri işler; Windows'da, ZXingCpp çerçeveleri işler. Kütüphane bunu bir MAUI CameraView kontrolü ve bir OnDetectionFinished olayı olarak sunar. Uygulama kodu asla doğrudan görüntü baytlarını işlemez — yalnızca olaydan çıkan algılanan barkod değerlerini işler.

private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArg e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode != null)
        ResultLabel.Text = barcode.DisplayValue;
}
private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArg e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode != null)
        ResultLabel.Text = barcode.DisplayValue;
}
Private Sub OnBarcodeDetected(sender As Object, e As OnDetectionFinishedEventArg)
    Dim barcode = e.BarcodeResults.FirstOrDefault()
    If barcode IsNot Nothing Then
        ResultLabel.Text = barcode.DisplayValue
    End If
End Sub
$vbLabelText   $csharpLabel

Bu tasarımın sonucu, başka bir giriş noktası olmadığıdır. Kamera isteğe bağlı değildir — kütüphanenin bildiği tek girdidir. Bir sunucu, bir dosya, bir PDF veya herhangi bir MAUI dışı host, kütüphaneye bir yolu yoktur.

IronBarcode Yaklaşımı

IronBarcode, görüntü verilerini BarcodeReader.Read() statik metodu üzerinden alır. Çağıran, veriyi — herhangi bir kaynaktan — sağlar ve kütüphane bunu kodlar. MAUI'de, veriler MediaPicker'dan gelir; bir sunucuda, bir form yüklemesinden gelir; bir masaüstü uygulamasında, bir dosya dialog'undan gelir.

//IronBarcode in MAUI: capture a photo, then read barcodes from it
// NuGet: dotnet add package IronBarcode
using IronBarCode;

private async void ScanBarcodeButton_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)
        ResultLabel.Text = result.Value;
}
//IronBarcode in MAUI: capture a photo, then read barcodes from it
// NuGet: dotnet add package IronBarcode
using IronBarCode;

private async void ScanBarcodeButton_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)
        ResultLabel.Text = result.Value;
}
Imports IronBarCode
Imports System.IO
Imports Microsoft.Maui.Media

Private Async Sub ScanBarcodeButton_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
                ResultLabel.Text = result.Value
            Next
        End Using
    End Using
End Sub
$vbLabelText   $csharpLabel

Bu kod, bir görüntüyü yakalayabilen MAUI hedeflerinde aynı şekilde çalışır. Sunucu tarafı kullanım için, aynı BarcodeReader.Read() metodu, bir yüklenen dosyanın bayt dizisini ya da bir PDF yolunu kabul eder. IronBarcode dokümantasyonu tüm desteklenen giriş türlerini kapsar.

Platform Kapsamı ve Tanıma Motorları

Platform kapsamı, MAUI uygulamaları oluşturan ve aynı zamanda barkod mantığını MAUI dışı projelerle paylaşması gereken ekipler için önemlidir.

BarcodeScanning.MAUI Yaklaşımı

BarcodeScanning.Native.Maui, dört MAUI hedefine (iOS, Android, Windows 3.0.1 sonrası, ve macOS Catalyst) destek sağlar, fakat her hedef farklı bir tanıma motoru kullanır: iOS ve macOS için Apple Vision, Android için Google ML Kit ve Windows için ZXingCpp. Semboloji kapsamı ve kod çözme davranışları üç motor arasında farklılık gösterir, bu yüzden bir platformda güvenilir bir şekilde çözülen bir barkod, diğerinde farklı davranabilir. MAUI dışındaki — ASP.NET, konsol, WPF, WinForms, Blazor Server, Azure Functions — kütüphanenin bir uygulaması yoktur. Hem MAUI uygulamasında hem de bir arka uç hizmetinde barkod mantığına ihtiyacı olan ekipler, MAUI dışı kod için farklı bir kütüphane kullanmalıdır.

IronBarcode Yaklaşımı

IronBarcode'un BarcodeReader.Read() çağrısı, desteklenen her hedefte aynı yönetilen motoru kullanır, bu nedenle davranışı Windows, Linux, macOS, ASP.NET ve bir görüntü yakalayıp okuyucuya iletebilen herhangi bir MAUI hedefinde tutarlıdır. Hiçbir #if WINDOWS blokları, şartlı bağımlılık yüklemesi ve yer tutucu uygulamalara gerek yoktur. Dosya ve PDF girdileri için, desen de tutarlıdır:

using IronBarCode;

// Read barcodes from a file the user selected
var file = await FilePicker.PickAsync();
if (file != null)
{
    var results = BarcodeReader.Read(file.FullPath);
    foreach (var result in results)
        Console.WriteLine($"{result.Format}: {result.Value}");
}

// Read barcodes directly from a PDF — no image extraction step needed
var pdfResults = BarcodeReader.Read("shipment-manifest.pdf");
using IronBarCode;

// Read barcodes from a file the user selected
var file = await FilePicker.PickAsync();
if (file != null)
{
    var results = BarcodeReader.Read(file.FullPath);
    foreach (var result in results)
        Console.WriteLine($"{result.Format}: {result.Value}");
}

// Read barcodes directly from a PDF — no image extraction step needed
var pdfResults = BarcodeReader.Read("shipment-manifest.pdf");
Imports IronBarCode

' Read barcodes from a file the user selected
Dim file = Await FilePicker.PickAsync()
If file IsNot Nothing Then
    Dim results = BarcodeReader.Read(file.FullPath)
    For Each result In results
        Console.WriteLine($"{result.Format}: {result.Value}")
    Next
End If

' Read barcodes directly from a PDF — no image extraction step needed
Dim pdfResults = BarcodeReader.Read("shipment-manifest.pdf")
$vbLabelText   $csharpLabel

IronBarcode MAUI entegrasyon rehberi tüm MAUI hedefleri için tam kurulum talimatları sağlar.IronBarcode ayrıca, BarcodeScanning.Native.Maui'nin hiçbir yol sunmadığı ASP.NET, Docker, Azure Functions ve AWS Lambda ortamlarında sunucu-tarafı dağıtımı destekler.

Barkod Okuma Doğruluğu: UPC-A ve PDF417

BarcodeScanning.Native.Maui'deki iki format-specific davranış, üretim uygulamaları için dikkate değerdir.

BarcodeScanning.MAUI Yaklaşımı

iOS'ta, BarcodeScanning.Native.Maui'nin temel algılaması (Apple Vision), UPC-A barkodları için 13 hane döndürebilir. UPC-A 12 basamaklı bir formattır; fazladan baştaki sıfır EAN-13 kodlamasını eşleştirir. Kütüphane bu ham değeri geçirir ve uygulamalar gerektiği gibi normalleştirir. Veritabanına normalizasyon olmadan UPC-A değerlerini kaydeden uygulamalar, başta sıfır olan kayıtlar biriktirebilir.

Belgelenmiş geçici çözüm, formatı kontrol eder ve değeri kırpar:

// Normalize iOS UPC-A — strip the leading zero when present
private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArg e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode == null) return;

    var value = barcode.DisplayValue;
    if (barcode.BarcodeFormat == BarcodeFormats.Upca && value.Length == 13)
        value = value.Substring(1);

    ProcessBarcode(value);
}
// Normalize iOS UPC-A — strip the leading zero when present
private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArg e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode == null) return;

    var value = barcode.DisplayValue;
    if (barcode.BarcodeFormat == BarcodeFormats.Upca && value.Length == 13)
        value = value.Substring(1);

    ProcessBarcode(value);
}
' Normalize iOS UPC-A — strip the leading zero when present
Private Sub OnBarcodeDetected(sender As Object, e As OnDetectionFinishedEventArg)
    Dim barcode = e.BarcodeResults.FirstOrDefault()
    If barcode Is Nothing Then Return

    Dim value = barcode.DisplayValue
    If barcode.BarcodeFormat = BarcodeFormats.Upca AndAlso value.Length = 13 Then
        value = value.Substring(1)
    End If

    ProcessBarcode(value)
End Sub
$vbLabelText   $csharpLabel

Format kontrolü, EAN-13 değerlerinin baştan 0 ile başlayanların yanlışlıkla kırpılmaması için gereklidir. PDF417, GitHub sorunları içinde, iOS/Android motorlarında 'çok problemli — çoğu tarama asla gerçekleşmez' olarak ayrı ayrı belgelenmiştir, bu da gönderi etiketleri, ehliyetler ve biniş kartları için alakalıdır.

IronBarcode Yaklaşımı

IronBarcode, yönetilen motoru aracılığıyla standart 12 haneli UPC-A değerini döndürür. PDF417, desteklenen bir formattır. Üretim tarafı da IronBarcode'un API'si aracılığıyla kullanılabilir:

using IronBarCode;

// Generate a QR code
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .SaveAsPng("qr.png");

// Generate a Code128 barcode
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("barcode.png");
using IronBarCode;

// Generate a QR code
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .SaveAsPng("qr.png");

// Generate a Code128 barcode
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("barcode.png");
Imports IronBarCode

' Generate a QR code
QRCodeWriter.CreateQrCode("https://example.com", 500) _
    .SaveAsPng("qr.png")

' Generate a Code128 barcode
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128) _
    .ResizeTo(400, 100) _
    .SaveAsPng("barcode.png")
$vbLabelText   $csharpLabel

Barkod verisi doğruluğu stok sorgulamaları, satış noktası işlemleri veya tedarik zinciri entegrasyonlarını doğrudan etkilediğinde, IronBarcode'un tutarlı format işlemesi, platforma özgü normalizasyon ihtiyacını azaltır. IronBarcode barkod okuma dokümantasyonu format-spesifik davranışı ayrıntılı olarak ele alır.

API Eşleme Başvurusu

BarcodeScanning.Native.Maui IronBarcode
CameraView XAML kontrolü Kamera kontrolü yok — yakalamak için MediaPicker.CapturePhotoAsync() kullanın
OnDetectionFinished olayı BarcodeReader.Read(imageBytes)
e.BarcodeResults BarcodeReader.Read() dönüş değeri (IEnumerable)
e.BarcodeResults.FirstOrDefault() results.FirstOrDefault()
barcode.DisplayValue result.Value
barcode.BarcodeFormat result.Format
BarcodeFormats="All" Otomatik algılanmış — çok format için yapılandırma gerektirmez
CameraEnabled="True" MediaPicker.CapturePhotoAsync() çağrısı
Yalnızca MAUI (iOS, Android, Windows, macOS) MAUI (yakalanmış görüntü aracılığıyla) + ASP.NET, konsol, WPF, masaüstü, sunucu
Yalnızca kamera çerçeveleri Dosyalar, bayt dizileri, akışlar, PDF'ler
Dosya/PDF API'si yok BarcodeReader.Read(path) — görüntü dosyalarını ve PDF'leri kabul eder
MAUI hedeflerinde üç motor Tüm hedeflere tek yönetilen motor
Üretim API'si yok BarcodeWriter.CreateBarcode() + QRCodeWriter.CreateQrCode()

Ekipler BarcodeScanning.MAUI'den IronBarcode'a Geçmeyi Düşündüğünde

Platformlar Arası Motor Tutarlılığı Gereklilik Haline Geliyor

iOS, Android, Windows ve macOS'u hedefleyen MAUI uygulamaları, BarcodeScanning.Native.Maui kullandıklarında üç farklı tanıma motoru alır: Apple Vision (iOS/macOS), Google ML Kit (Android), ve ZXingCpp (Windows). Her motorun kendi semboloji kapsamı ve kod çözme davranışı vardır, bu nedenle aynı barkod platformlar arasında farklı çözülebilir — ve uygulamalar genellikle farkları gidermek için normalizasyon katmanları ekler. Bu bakım yükü artarsa veya QA platformlar arası gerilemeleri motor farklarına bağlı olarak bildirirse, ekipler bazen barkod katmanını her hedefte aynı şekilde davranan tek bir yönetilen motora göç ettirir.

Dosya Yükleme veya PDF İşleme Gereksinimleri Eklendiğinde

Mobil uygulamalar genellikle tek giriş yöntemi olarak canlı kamera taramasıyla başlar ve daha sonra yüklenmiş görüntüleri veya belgeleri kabul etmeye genişler. Kullanıcının galerisindeki bir fotoğraftan, e-posta yoluyla alınan bir görüntüden veya gönderi manifestleri veya biniş kartları içeren bir PDF'den barkod taraması yapması gerektiğinde, BarcodeScanning.Native.Maui bu girişler için bir kod yolu yoktur. Bu gereklilik sınırına ulaşan ekipler bir seçimle karşı karşıya: dosya ve PDF girişleri için BarcodeScanning.Native.Maui'nin yanına ikinci bir barkod kütüphanesi eklemek veya tüm giriş türlerini işleyen tek bir kütüphaneye göç etmek. Farklı API'ler ve sonuç türleri olan iki barkod paketini yönetmek, tek paket çözümünün kaçındığı uzun vadeli bir karmaşıklık ekler.

Sunucu-Tarafı Barkod İşleme Başlatıldı

Mobilde barkod tarayan uygulamalar genellikle bir sunucu-tarafı bileşeni geliştirir — barkodları doğrulayan bir ASP.NET API uç noktası, PDF'leri işleyen bir arka plan işi veya yüklenmiş belgelerden izleme numaralarını çıkaran bir bulut fonksiyonu. BarcodeScanning.Native.Maui, bir MAUI UI kontrol kütüphanesidir; Sunucu tarafında bir uygulaması yoktur. Hem mobilde hem de sunucuda aynı barkod okuma mantığına ihtiyaç duyan bir ekip, sunucu tarafı için farklı bir kütüphane kullanmalıdır. Sunucu-tarafı gereksinimi geldiğinde, ekipler sıklıkla, hem mobil hem de sunucuya hitap eden tek bir kütüphaneye toparlamanın, iki ayrı uygulamayı sürdürmekten daha tercih edilir olup olmadığını değerlendirirler.

UPC-A Veri Normalizasyonu Kaygı Haline Geliyor

iOS UPC-A 13 basamaklı davranışı her zaman geliştirme aşamasında fark edilmez. Geliştirme aşamasında taranan UPC-A barkodları doğru çalışıyor gibi görünebilir, ancak Apple'ın Vision çerçevesinden gelen öncül sıfır, normalizasyon eksikliğinde veritabanında görünebilir. İnventör kayıtlarında, satış noktası sistemlerinde veya tedarik zinciri entegrasyonlarında 13 haneli UPC-A değerleri keşfeden ekipler hem bir kod düzeltmesine hem de bir veri düzeltme adımına ihtiyaç duyabilir. Belgelenmiş normalizasyon yeni taramaları ele alır; tutarlı UPC-A çıkısı olan bir kütüphaneye geçmek bazen uzun vadeli bir çözüm olarak tercih edilir.

PDF417 Belge Taraması Gerekli Olduğunda

PDF417, Kuzey Amerika'da sevkiyat etiketleri, ehliyetler ve biniş kartlarında kullanılan barkod formatıdır. Bunlar, lojistik, kimlik doğrulama ve seyahat uygulamaları için yaygın tarama hedefleridir. BarcodeScanning.Native.Maui'nin GitHub sorun izleyici PDF417'yi 'çok problemli — çoğu tarama asla gerçekleşmez' olarak iOS/Android motorlarında belgeler. PDF417 güvenilirliğinin işlevsel bir gereklilik olduğu uygulamalar için, ekipler genellikle alternatif kütüphaneleri değerlendirir.

Genel Geçiş Dikkat Edilmesi Gereken Hususlar

Kamera Olayından Medya Seçici ve Statik Okuya Geçiş

Göçteki temel yapısal değişiklik, sürekli kamera olay deseninin yerine bir MediaPicker görüntü ile ardından BarcodeReader.Read() gelmesidir. OnDetectionFinished olay işleyicisi, CameraView XAML kontrolü ve scanner: XML ad alanı bildirimi kaldırılır. Yerine bir düğme MediaPicker.CapturePhotoAsync()'i tetikler ve sonuçta ortaya çıkan fotoğraf baytları BarcodeReader.Read()'ya iletilir. Bu, kullanıcı deneyimini canlı sürekli vizörden sistem kamera ekranına dönüştürür — çoğu iş uygulaması için uygundur.

İş Parçacığı Aktarma Değişiklikleri

BarcodeScanning.Native.Maui, OnDetectionFinished'i bir arka plan iş parçacığı üzerinde tetikler, bu nedenle UI öğelerini güncelleyen mevcut işleyicilerin tümü güncellemelerini MainThread.BeginInvokeOnMainThread() içinde sararlar.IronBarcode tarafından kullanılan MediaPicker + async deseni ile, await döndüğünde devam etme, çoğunlukla ana iş parçacığı olan çağıran bağlamda olur. Çoğu durumda, MainThread.BeginInvokeOnMainThread() sarmalayıcılar kaldırılabilir, olay işleyici kodunu basitleştirir.

UPC-A Normalizasyonunun Kaldırılması

BarcodeScanning.Native.Maui'nin iOS için UPC-A 13 haneli davranışını ele alan herhangi bir kod tabanı, BarcodeFormats.Upca kontrol eden ve önceden sıfırı çıkarmak için Substring(1) çağıran koda sahip olacaktır. Göçten sonra bu kod kaldırılmalıdır —IronBarcode standart 12 haneli değeri döndürür ve normalizasyon yerinde bırakılırsa geçerli UPC-A okumalarından ilk hane yanlışlıkla kaldırılır.

MAUI İzinleri

BarcodeScanning.Native.Maui, paket kurulumu sırasında Android ve iOS manifestlerine kamera izinleri ekler. IronBarcode, MediaPicker kullandığında, AndroidManifest.xml ve Info.plist'deki standart MAUI kamera izinleri gereklidir — herhangi bir MAUI uygulamasının MediaPicker.CapturePhotoAsync() için ihtiyaç duyduğu aynı izinler. Bu izinler, genellikle kamerayı herhangi bir amaç için kullanan MAUI projelerinde zaten mevcuttur.

Ek IronBarcode Yetenekleri

Bu karşılaştırmada ele alınan yeteneklerin ötesinde, IronBarcode, BarcodeScanning.Native.Maui'nin hiçbir düzeyde ele almadığı özellikler sunar:

  • Barkod Üretimi: Code128, QR, DataMatrix, PDF417 ve diğer formatları PNG, SVG veya bayt dizisi olarak üretin — MAUI UI, API yanıtlarında veya basılı etiketlerde kullanılabilir.
  • QR Kod Üretimi: Logo gömme, renk özelleştirme ve hata düzeltme seviyesini kontrol ederek stilize edilmiş QR kodları oluşturun.
  • Çoklu Barcode Okuma: ExpectMultipleBarcodes seçeneği, tek bir görüntüdeki tüm barcode'ları bir geçişte okur.
  • PDF Barkod Çıkartılması: PDF belgelerine gömülü barkodları doğrudan okuyun — ara görüntü dönüşümü gerekmez.
  • Sunucu-Tarafı Dağıtım: ASP.NET, Azure Functions, Docker ve AWS Lambda'da aynı barkod okuma ve üretim mantığını herhangi bir kamera bağımlılığı olmaksızın dağıtın.
  • Okuma Hızı Yapılandırması: ReadingSpeed.Faster, Balanced, Detailed ve ExtremeDetail ayarları, görüntü kalitesine bağlı olarak throughput ile doğruluk arasında ince ayar yapmayı sağlar.
  • Sunucu ve Masaüstü Yeniden Kullanımı: Aynı kütüphane ASP.NET, konsol, WPF ve WinForms projelerinde çalışır, bu nedenle barkod mantığı bir MAUI istemcisi ve bir arka uç hizmeti arasında ikinci bir paket olmadan paylaşılabilir.

.NET Uyumluluğu ve Geleceğe Hazırlık

IronBarcode, .NET 6, .NET 7 ve .NET 8'i, ayrıca .NET Framework 4.6.2 ve sonrasını destekler. Bu, modern .NET hedeflerinde çalıştığı gibi, henüz göç etmemiş eski sunucu ortamlarında da çalışacağı anlamına gelir. BarcodeScanning.Native.Maui, .NET Framework desteği ve sunucu tarafı dağıtım yolu olmayan bir sadece MAUI kütüphanesidir. Kod tabanı hem MAUI'yi hem de mevcut .NET Framework veya .NET Core sunucu uygulamalarını kapsayan ekipler için IronBarcode, tüm ortamlar arasında tutarlı bir API sağlar ve her çalışma zamanı bağlamı için ayrı bir barkod paketi gerektirmez.

Sonuç

BarcodeScanning.Native.Maui ve IronBarcode, farklı sorunları ele alır. BarcodeScanning.Native.Maui, otomatik barkod algılama ile MAUI hedeflerine gerçek zamanlı bir vizör sağlayan bir kamera kontrol kütüphanesidir ve tanımayı üç farklı platform motoruna devreder. IronBarcode, .NET hedefleri üzerinden tek bir yönetilen motor aracılığıyla herhangi bir kaynaktan statik görüntü verilerini işleyen bir barkod okuma ve oluşturma kütüphanesidir. Mimari fark — sürekli kamera yayını ve ayrık veri girişi — hangi kütüphanenin belirli gereksinim seti için uygun olduğunu belirler.

BarcodeScanning.Native.Maui, canlı uygulama içi kamera önizlemesi ile sürekli çerçeve algılamanın gerekli UX deseni olduğu bir MAUI uygulaması olduğunda ve gereksinimlerin dosya yüklemeleri, PDF işleme veya sunucu tarafı barkod işlemesini içermeyecek şekilde genişlemeyeceği durumda doğru tercihtir. Bu kapsam içinde ücretsizdir, minimaldir ve işlevseldir.

IronBarcode, barkod girdisinin, canlı kameraya ek olarak veya yerine, dosyalardan, PDF'lerden veya bayt dizilerinden geldiğinde, sunucu tarafı barkod işlemesi mimarinin bir parçası olduğunda veya okuma ile birlikte barkod oluşturmanın gerekli olduğu durumlarda doğru tercihtir. Ayrıca, platformlar arası tutarlı kod çözme davranışı veya PDF417 güvenilirliğinin üretim gereklilikleri olduğunu durumlarda da uygundur. Bu yetenekler için ticari lisans maliyeti, verilen ödündür.

Gereksinimleri şu anda BarcodeScanning.Native.Maui'nin kapsamına uyan ekipler için, kütüphane makul ve ekonomik bir tercih olur. Gereksinimleri büyümüş veya canlı kamera taramasının ötesine geçmesi beklenen ekipler için, IronBarcode'un girdii türleri, platformlar ve dağıtım hedefleri arasında tutarlı API'si pratik bir alternatiftir.

Sıkça Sorulan Sorular

BarcodeScanning.MAUI nedir?

BarcodeScanning.MAUI, C# uygulamalarında barkod oluşturma ve okuma için bir .NET barkod kütüphanesidir. Geliştiricilerin .NET projeleri için barkod çözümü seçerken değerlendirdiği birkaç alternatiftir.

BarcodeScanning.MAUI ile IronBarcode arasındaki temel farklar nelerdir?

IronBarcode, örnek yönetimi gerektirmeyen statik, durumsuz bir API kullanırken, BarcodeScanning.MAUI genellikle kullanım öncesi örnek oluşturma ve yapılandırmayı gerektirir. IronBarcode ayrıca tüm ortamlarda yerel PDF desteği, otomatik format algılama ve tek anahtar lisans sunar.

IronBarcode, BarcodeScanning.MAUI'ye göre lisanslanması daha kolay mı?

IronBarcode hem geliştirme hem de üretim dağıtımlarını kapsayan tek bir lisans anahtarı kullanır. Bu, SDK anahtarlarını çalışma zamanı anahtarlarından ayıran lisanslama sistemlerine kıyasla CI/CD hatlarını ve Docker yapılandırmalarını basitleştirir.

IronBarcode, BarcodeScanning.MAUI'nin desteklediği tüm barkod formatlarını destekliyor mu?

IronBarcode, QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztek, EAN-13, UPC-A, GS1 ve daha birçokları dahil olmak üzere 30'dan fazla barkod sembolojisini destekler. Format otomatik algılama, açıkça format sayımını gerektirmez.

IronBarcode doğal PDF barkod okuma desteği sunuyor mu?

Evet. IronBarcode, ayrı bir PDF render kütüphanesi gerektirmeden, BarcodeReader.Read('document.pdf') kullanarak PDF dosyalarından doğrudan barkod okur. Sayfa bazında sonuçlar sayfa numarası, barkod formatı, değeri ve güven puanını içerir.

IronBarcode, BarcodeScanning.MAUI'ye kıyasla toplu işlemi nasıl ele alır?

IronBarcode'un statik yöntemleri durum terkibesizdir ve doğal olarak thread-safe'dir, bu da thread başına örnek yönetimi olmadan Parallel.ForEach'in doğrudan kullanımına olanak tanır. Herhangi bir fiyatlandırma seviyesinde bir throughput tavanı yoktur.

IronBarcode hangi .NET sürümlerini destekliyor?

IronBarcode, .NET Framework 4.6.2+, .NET Core 3.1 ve .NET 5, 6, 7, 8 ve 9'u tek bir NuGet paketinde destekler. Platform hedefleri arasında Windows x64/x86, Linux x64 ve macOS x64/ARM bulunur.

Bir .NET projesine IronBarcode'u nasıl kurarım?

IronBarcode'u NuGet üzerinden kurun: Paket Yöneticisi Konsolunda 'Install-Package IronBarCode' komutunu veya CLI'da 'dotnet add package IronBarCode' komutunu çalıştırın. Ek bir SDK yükleyicisi veya çalışma zamanı dosyası gerekmez.

IronBarcode'u satın almadan önce değerlendirebilir miyim, BarcodeScanning.MAUI'nin aksine?

Evet. IronBarcode'un deneme modu, yalnızca oluşturulan çıktı görüntülerine bir filigran ekleyerek, barkod değerlerini tam olarak döndürür. Satın almadan önce, kendi belgelerinizde okuma doğruluğunu kıyaslayabilirsiniz.

BarcodeScanning.MAUI ve IronBarcode arasındaki fiyat farkı nedir?

IronBarcode, geliştirme ve üretimi kapsayan, sürekli bir tek geliştirici lisansı için $749'dan başlar. Fiyat detayları ve hacim seçenekleri IronBarcode lisanslama sayfasında mevcuttur. Ayrı bir çalışma zamanı lisansı gerekliliği yoktur.

BarcodeScanning.MAUI'den IronBarcode'a geçiş yapmak kolay mı?

BarcodeScanning.MAUI'den IronBarcode'a geçiş esas olarak, örnek tabanlı API çağrılarını IronBarcode'un statik yöntemleriyle değiştirmeyi, lisans gerekliliklerini kaldırmayı ve sonuç özelliği adlarını güncellemeyi içerir. Çoğu geçiş, kodun azaltılmasını içerir.

IronBarcode, logolu QR kodları üretebiliyor mu?

Evet. QRCodeWriter.CreateQrCode().AddBrandLogo('logo.png'), konfigüre edilebilir hata düzeltme ile QR koduna yerel olarak bir marka görüntüsü yerleştirir. Renkli QR kodları, ChangeBarCodeColor() ile de desteklenir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara