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

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

BarcodeScanning.Native.Maui, bir kamera eklentisidir, bir barkod kütüphanesi degildir. Uygulamanız Windows'ta çalışıyorsa, yüklenen dosyaları işler veya PDF'lerden barkod okursa, yanlıştır — ve README bunu açıkça belirtmiyor. Paket sayfasi, onu teknik olarak dogru bir sekilde "barcode tarama kutuphanesi for .NET MAUI" olarak tanimlamaktadir, ancak onemli kisitlamayi belirtmemektedir: bir barcode canli kamera cercevesine girdiginde bir olayi tetikleyen CameraView kontroludur. Bu, tam özellik kümesidir. Bu karşılaştırma, bir kamera kontrol kütüphanesi ile tam özellikli bir barkod SDK'sı arasındaki mimari farkı inceler, ekiplerin hangi aracın nereye sığdığını ve hangisinin yetersiz kaldığını anlamalarına yardımcı olur.

BarcodeScanning.MAUI'yi Anlamak

BarcodeScanning.Native.Maui, iOS'da (Apple'in Vision framework'u) ve Android'de (ML Kit) yerel kamera barcode tespit API'lerini MAUI CameraView kontrolune sarar. Bir geliştirici kontrolü XAML sayfasına ekler, bir olay işleyici kurar ve kütüphane, canlı kamera akışında her bir barkod algılandığında bu olayı tetikler. Tüm etkileşim modeli kamera içeri doğru, olay dışarı doğru — başka bir yol yok.

Kütüphane MIT lisansı altında açık kaynak ve ücretsizdir. Tasarım amacı dar ve açıktır: iOS veAndroid MAUIuygulamaları için canlı kamera barkod algılaması sağlamak. Bu amaca, kendi barkod çözme motorunu uygulamak yerine native platform API'lerine delege ederek ulaşır.

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

  • Yalnızca Kamera Girişi: Kütüphane yalnızca canlı kamera karelerini kabul eder. Herhangi bir ReadFromFile(), ReadFromBytes(), ReadFromStream() ve ReadFromPdf() metodu halka acik API'de mevcut degildir.
  • Yalnızca iOS ve Android: Kütüphane iOS'a özgü (Vision framework) ve Android'e özgü (ML Kit) yerel API'leri sarmalar. MAUI'deki Windows hedefinin uygulanması yoktur ve bu konuda bir plan yapılmamıştır.
  • Üretim Özelliği Yok: BarcodeScanning.Native.Maui, kamera karelerinden barkod okur. Barkodları hiçbir formatta üretemez.
  • iOS UPC-A Hatası: Apple'ın Vision framework'ü, UPC-A barkodları için 13 basamak döndürüyor (EAN-13 kodlamasına uyacak şekilde bir ön sıfır ekleyerek). Kütüphane bu ham değeri düzeltmeden geçirir, uygulama kodunda manuel bir çözüm gerektirir.
  • PDF417 Güvenirlik Bilinen Sorunu: Kütüphanenin kendi GitHub sorun izleyicisi, PDF417 tarama işlemini "çok problemli - çoğu tarama asla gerçekleşmez" olarak belgeler, bu da sevkiyat etiketleri, sürücü lisansları ve biniş kartları için doğrudan bir engelleyicidir.
  • Minimal Halk Acik Yuzey: Halk acik API, CameraView, OnDetectionFinished, OnDetectionFinishedEventArgs ve BarcodeResult ile DisplayValue ve BarcodeFormat icerir. Bu, uygulama kodunun etkileşime girdiği her şeydir.
  • MIT Lisansı, Ücret Yok: Kütüphane, herhangi bir lisans ücreti olmadan kullanılabilir.

Canlı Kamera Tarama Modeli

Tüm BarcodeScanning.Native.Maui API modeli, bir C# olay işleyici ile eşleştirilmiş bir XAML kontrolüdür:


<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, OnDetectionFinishedEventArgs e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode != null)
        ResultLabel.Text = barcode.DisplayValue;
}
private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArgs e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode != null)
        ResultLabel.Text = barcode.DisplayValue;
}
Private Sub OnBarcodeDetected(sender As Object, e As OnDetectionFinishedEventArgs)
    Dim barcode = e.BarcodeResults.FirstOrDefault()
    If barcode IsNot Nothing Then
        ResultLabel.Text = barcode.DisplayValue
    End If
End Sub
$vbLabelText   $csharpLabel

Bu kontrol, kullanıcıya MAUI sayfasına gömülü gerçek zamanlı bir vizör verir. Kamera görüntü akışı aktifken barkod algılama sürekli olarak çalışır. UX, "hedefle ve tara"nın ana etkileşim olduğu tüketici uygulamaları için gerçekten iyidir. Sınırlama, bunun kütüphanenin desteklediği tek etkileşim olmasıdır - gereksinimler iOS veya Android'de canlı kamera algılaması dışında genişlediği anda, BarcodeScanning.Native.Maui'nin sunabileceği hiçbir şey yoktur.

IronBarcode'u Anlamak

IronBarcode, .NET için veri girişleri üzerinde çalışan bir ticari barkod okuma ve üretim kütüphanesidir, kamera akışları yerine. Image dosyalarından, byte dizilerinden, akışlardan ve PDF belgelerinden barcode okur. MAUI'de, sistem kamerasiyla MediaPicker araciligiyla entegre olur - uygulamalarin foto secimi icin kullandigi ayni standart MAUI API'si - fotograf ceker ve sonrasinda olusan görüntüyu statik bir girdig olarak isler.

IronBarcode, platforma ozgu yerel API'lere devretmek yerine kendi barcode cozumleyici motorunu uygular. Bu, ayni BarcodeReader.Read() cagrisinin iOS, Android, Windows, macOS, ASP.NET ve arka plan sunucu işleminde tutarli bir sekilde davranacagi anlamina gelir. Kutuphanesi, ayrica BarcodeWriter ve QRCodeWriter araciligiyla tam bir barcode oluşturma API'si sunar.

IronBarcode'un ana özellikleri:

  • Statik Dosya Tabanli API: BarcodeReader.Read() bir dosya yolu, byte dizisi, akis veya PDF - herhangi bir statik veri kaynagini kabul eder.
  • Tüm Platform Kapsamı: iOS, Android, Windows vemacOS MAUIhedeflerinin tümü desteklenir. Aynı kod, platforma özgü dallanmalar olmadan tüm dördünde çalışır.
  • Barcode Oluşturma: BarcodeWriter.CreateBarcode() ve QRCodeWriter.CreateQrCode() Code128, QR, DataMatrix ve diğer formatlari görüntü dosyalari veya byte dizileri olarak oluşturur.
  • PDF Desteği: PDF belgelerine gömülü barkodlar, arada bir image çıkarma adımı olmadan doğrudan okunur.
  • Doğru UPC-A Çözme: Manuel normalizasyon geçici çözümler gerektirmeden doğru 12 basamaklı UPC-A değerini döner.
  • Ticari Lisanslama:Lite $749, Plus $1,499, Professional $2,999, Unlimited $5,999— bir yıl destek ile süresiz lisanslar.
  • Sunucu Tarafı Dağıtımı: ASP.NET, Azure Functions, Docker konteynerleri ve AWS Lambda'da çalışır, fiziksel bir kamera üzerinde platform bağımlılığı olmadan.

Özellik Karşılaştırması

Aşağıdaki tablo, BarcodeScanning.Native.Maui veIronBarcodearasındaki temel farkları vurgular:

Özellik BarcodeScanning.MAUI IronBarcode
Birincil Amaç Canlı kamera barkod algılama Herhangi bir veri kaynağından barkod okuma ve üretimi
Girdi Kaynakları Sadece canlı kamera kareleri Dosyalar, byte dizileri, akışlar, PDF'ler
Platform Desteği Yalnızca iOS veAndroid MAUI iOS, Android, Windows,macOS MAUI+ sunucu tarafı
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

Detayli Özellik Karsilastirmasi

Özellik BarcodeScanning.MAUI IronBarcode
Okuma
Canlı kamera çerçevesi okuma Evet — CameraView kontrolü Hayır (yakalamak için MediaPicker kullanın, ardından okuyun)
Uygulama içi kamera vizörü Evet — gerçek zamanlı sürekli Hayır — MediaPicker aracılığıyla sistem kamera UI'sini kullanır
Görüntü dosyasından okuma Hayır Evet — BarcodeReader.Read(path)
Byte dizisinden okuma Hayır Evet — BarcodeReader.Read(bytes)
Akıştan okuma Hayır Evet — BarcodeReader.Read(stream)
PDF'den okuma Hayır Evet — BarcodeReader.Read(pdf)
Çoklu barkod algılama Evet (bir cercevede coklu e.BarcodeResults ile) Evet (ExpectMultipleBarcodes secenegi)
Okuma hız kontrolü None ReadingSpeed.Balanced / Faster / Slower
iOS üzerinde UPC-A doğruluğu 13 basamak döner (hata), manuel normalizasyon gerektirir Doğru 12 basamaklı UPC-A döner
PDF417 güvenirligi "Çoğu tarama hiçbir zaman gerçekleşmez" (GitHub sorunları) Desteklenir
Uretim
Barkod üretimi Hayır Evet — BarcodeWriter.CreateBarcode()
QR kod uretimi Hayır Evet — QRCodeWriter.CreateQrCode()
Çıkış PNG / bayt dizisi olarak Hayır Evet
Platform
iOS MAUI Evet Evet
Android MAUI Evet Evet
Windows MAUI Hayır Evet
macOS MAUI Belirtilmemiş Evet
ASP.NET / sunucu tarafı Hayır Evet
Docker / Azure / AWS Lambda Hayır Evet
.NET Framework desteği Hayır (yalnızca 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
Degerlendirme modu N/A Ücretsiz deneme mevcut

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

Bu iki kitaplık arasındaki en temel fark girdi modelidir. BarcodeScanning.Native.Maui, sürekli bir kamera akışı etrafında tasarlanmıştır; IronBarcode, ayrık veri girişleri etrafında tasarlanmıştır. Bunlar aynı fikrin yarışan uygulamaları değildir — farklı kullanım senaryoları için farklı mimari seçimlerdir.

BarcodeScanning.MAUI Yaklaşımı

BarcodeScanning.Native.Maui her platformda yerel kamera algılama boru hattını sarmalar. Android'de ML Kit kareleri işler. iOS'ta Apple'ın Vision çerçevesi kareleri işler. Kutuphanesi, bunu OnDetectionFinished olayi ile bir MAUI CameraView kontrole yusturur. Uygulama kodu hiçbir zaman doğrudan resim baytlarını işlemez — yalnızca olaydan çıkan algılanan barkod değerlerini işler.

private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArgs e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode != null)
        ResultLabel.Text = barcode.DisplayValue;
}
private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArgs e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode != null)
        ResultLabel.Text = barcode.DisplayValue;
}
Private Sub OnBarcodeDetected(sender As Object, e As OnDetectionFinishedEventArgs)
    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ı olmamasıdır. Kamera isteğe bağlı değildir — kütüphanenin bildiği tek giriş kamera. Bir sunucu, bir dosya, bir PDF, bir Windows makinesi — bunların hiçbiri bu kütüphanenin beklediği anlamda kameraya sahip değildir.

IronBarcode Yaklaşımı

IronBarcode, görüntü verilerini BarcodeReader.Read() statik metodu araciligiyla alir. Çağrı yapan kişi veriyi sağlar — herhangi bir kaynaktan — ve kütüphane bunu çözümler. MAUI'de veriler MediaPicker'den gelir; bir sunucuda, bir form yüklemesinden gelir; bir masaüstü uygulamasında, bir dosya iletişim kutusundan gelir.

//IronBarcodein 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;
}
//IronBarcodein 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

'IronBarcode in MAUI: capture a photo, then read barcodes from it
' NuGet: dotnet add package IronBarcode

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 iOS, Android ve Windows MAUI'da aynı şekilde çalışır. Sunucu tarafinda kullanim icin ayni BarcodeReader.Read() metodu, yuklenen bir dosyanin byte dizisini veya bir PDF yolunu kabul eder. IronBarcode belgeleri tüm desteklenen giriş türlerini içerir.

Platform Kapsamı ve Windows Desteği

Platform kapsamı, MAUI uygulamaları oluşturan ekipler için BarcodeScanning.Native.Maui'nin yapısal sınırlılığının somutlaştığı yerdir.

BarcodeScanning.MAUI Yaklaşımı

BarcodeScanning.Native.Maui, MAUI'da Windows hedefini desteklemez. Bu geçici bir boşluk değildir — kütüphanenin mimarisinin yapısal bir sonucudur. Kütüphane iOS'a özgü (Vision çerçevesi) ve Android'e özgü (ML Kit) yerel API'leri sarmalar. Windows'un hiçbiri yoktur. iOS, Android ve Windows'u hedefleyen bir MAUI uygulaması oluşturan ekipler — standart bir çoklu hedef senaryosu — üç hedef için de barkod çözümü olarak BarcodeScanning.Native.Maui'yi kullanamazlar. Ya Windows için platforma özgü kodu ayrı ayrı uygulamaları ya da kütüphaneyi tamamen değiştirmeleri gerekir.

IronBarcodeYaklaşımı

IronBarcode'nin BarcodeReader.Read() cagrisı, platforma ozgu hiçbir kod olmadan Windows, iOS, Android vemacOS MAUIhedeflerinde calisir. Herhangi bir #if WINDOWS bloklari, kosullu bagimlilik yuklemesi ve stub uygulamalar gerekmez. Dosya ve PDF girişleri için model 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 kılavuzu tüm MAUI hedefleri için eksiksiz kurulum talimatları sağlar.IronBarcodeayrıca BarcodeScanning.Native.Maui'nin hiçbir yolu olmadığı ASP.NET, Docker, Azure Functions ve AWS Lambda ortamlarında sunucu tarafı dağıtımı da destekler.

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

BarcodeScanning.Native.Maui'de iki belirli biçim doğruluğu problemi, üretim uygulamaları için doğrudan sonuçlar doğurur.

BarcodeScanning.MAUI Yaklaşımı

iOS'ta, BarcodeScanning.Native.Maui'nin temelindeki algılama (Apple Vision) UPC-A barkodları için 13 basamak döndürür. UPC-A 12 basamaklı bir formattır; fazladan ön sıfır EAN-13 kodlamasına uyar. Kütüphane bu ham değeri düzeltme yapmadan geçer. UPC-A değerlerini bir veritabanında saklayan uygulamalar, orada ait olmayan bir ön sıfır ile kayıtlar biriktirebilir.

Belgelenen çözüm yolu, biçimi kontrol etmeyi ve değeri kırpmayı gerektirir:

// Workaround required for iOS UPC-A — strip the leading zero manually
private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArgs e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode == null) return;

    var value = barcode.DisplayValue;
    if (barcode.BarcodeFormat == BarcodeFormat.UPC_A && value.Length == 13)
        value = value.Substring(1); // strip Apple's prepended leading zero

    ProcessBarcode(value);
}
// Workaround required for iOS UPC-A — strip the leading zero manually
private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArgs e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode == null) return;

    var value = barcode.DisplayValue;
    if (barcode.BarcodeFormat == BarcodeFormat.UPC_A && value.Length == 13)
        value = value.Substring(1); // strip Apple's prepended leading zero

    ProcessBarcode(value);
}
' Workaround required for iOS UPC-A — strip the leading zero manually
Private Sub OnBarcodeDetected(sender As Object, e As OnDetectionFinishedEventArgs)
    Dim barcode = e.BarcodeResults.FirstOrDefault()
    If barcode Is Nothing Then Return

    Dim value = barcode.DisplayValue
    If barcode.BarcodeFormat = BarcodeFormat.UPC_A AndAlso value.Length = 13 Then
        value = value.Substring(1) ' strip Apple's prepended leading zero
    End If

    ProcessBarcode(value)
End Sub
$vbLabelText   $csharpLabel

Eğer format kontrolü yapılmazsa, bu çözüm yolu sessizce 0 ile başlayan EAN-13 barkodlarını bozar. PDF417 ayrı olarak GitHub sorunlarında "çok problemli — çoğu tarama asla gerçekleşmez" olarak belgelenmiştir, sevkiyat etiketlerini, ehliyetleri ve biniş kartlarını etkiler.

IronBarcode Yaklaşımı

IronBarcode, manuel normalizasyona gerek kalmadan doğru 12 basamaklı UPC-A değerini döndürür. PDF417, güvenilir şekilde okunan desteklenen bir biçimdir. Üretim tarafı IronBarcode'un API'si aracılığıyla da mevcuttur:

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ğunun doğrudan envanter sorgularını, satış noktası işlemlerini veya tedarik zinciri entegrasyonlarını etkilediği uygulamalar için, IronBarcode'un doğru format işlemesi, BarcodeScanning.Native.Maui'nin uygulama kodunda bıraktığı bir üretim hatası kategorisini ortadan kaldırır. IronBarcode barkod okuma belgeleri biçimlere özgü davranışı ayrıntılı olarak kapsar.

API Eslestirme Referansi

BarcodeScanning.Native.Maui IronBarcode
CameraView XAML kontrolü Kamera kontrolu yok — yakalamak icin MediaPicker.CapturePhotoAsync() kullanin
OnDetectionFinished olay BarcodeReader.Read(imageBytes)
e.BarcodeResults BarcodeReader.Read()'nin donus degeri (IEnumerable)
e.BarcodeResults.FirstOrDefault() results.FirstOrDefault()
barcode.DisplayValue result.Value
barcode.BarcodeFormat result.Format
BarcodeFormats="All" Otomatik tespit edildi — çoklu format için yapılandırma gerekmez
CameraEnabled="True" MediaPicker.CapturePhotoAsync() cagrisı
Yalnızca iOS + Android iOS, Android, Windows, macOS (MAUI) + ASP.NET, masaüstü
Yalnızca kamera kareleri Dosyalar, byte dizileri, akışlar, PDF'ler
Dosya/PDF API'si yok BarcodeReader.Read(path) — görüntü dosyalarini ve PDF'leri kabul eder
Windows MAUI yok TamWindows MAUIdesteği
Üretim API'si yok BarcodeWriter.CreateBarcode() + QRCodeWriter.CreateQrCode()

Takımların BarcodeScanning.MAUI'den IronBarcode'a Geçmeyi Düşünmesi İçin Durumlar

Windows MAUI Hedefi Derleme Eklenir

MAUI uygulamaları genellikle iOS ve Android hedefi ile başlar ve uygulama olgunlaştıkça veya kurumsal dağıtım gereksinimleri genişledikçe daha sonra Windows eklenir. Windows hedefi eklendiğinde, BarcodeScanning.Native.Maui hemen bir engelleyici haline gelir — Windows uygulaması yoktur ve kitaplık içinde bir çözüm yoktur. Bu durumda olan ekiplerin ya farklı bir kitaplık kullanarak Windows için ayrı bir barkod uygulamasını sürdürmeleri ya da barkod katmanını tüm MAUI hedeflerinde tutarlı bir şekilde çalışan bir kitaplığa taşımaları gerekir. İkinci yol operasyonel olarak daha basittir ve platforma özgü dallanmanın bakım yükünü ortadan kaldırır.

Dosya Yükleme veya PDF İşleme Gereksinimleri Eklenir

Mobil uygulamalar genellikle canlı kamera taramayı tek giriş yöntemi olarak başlatır ve daha sonra yüklenen resimleri veya belgeleri kabul etme yeteneğini genişletir. Bir kullanıcı galerisindeki bir fotoğraftan, e-posta ile alınan bir resimden ya da gönderi manifestoları veya biniş kartları içeren bir PDF'den bir barkod taramaya ihtiyaç duyduğunda, BarcodeScanning.Native.Maui teklif edilecek bir kod yolu yoktur. Bu gereksinim sınırına ulaşan ekipler bir seçimle karşı karşıya: Dosya ve PDF girişleri için BarcodeScanning.Native.Maui ile birlikte ikinci bir barkod kitaplığı eklemek veya tüm giriş türlerini işleyen tek bir kitaplığa geçmek. Farklı API'lere, farklı sonuç türlerine ve farklı format destek tablolarına sahip iki barkod paketi yönetmek, uzun vadede bir tek paketli çözümün sağladığından kaçınılan bir karmaşıklık katmanı oluşturur.

Sunucu Tarafı Barkod İşleme Tanıtılır

Mobil üzerinde barkod tarayan uygulamalar sıklıkla bir sunucu tarafı bileşeni — barkodları doğrulayan bir ASP.NET API uç noktası, PDF'leri işleyen bir arka plan işi veya yüklenen belgelerden takip numaraları çıkartan bir bulut işlevi — geliştirirler. BarcodeScanning.Native.Maui, bir kamera donanım bağlamına bağlı bir UI kontrol kitaplığıdır; sunucu işleminde çalışamaz. Hem mobil hem de sunucuda aynı barkod okuma mantığına ihtiyaç duyan bir ekip, sunucu tarafında farklı bir kitaplık kullanmalıdır. Sunucu tarafı gereksinimi ortaya çıktığında, ekipler sıklıkla hem mobil hem de sunucuyu kapsayan tek bir kitaplık konsolide edilmesinin mi yoksa iki ayrı uygulamayı sürdürmesinin mi tercih edileceğini değerlendirir.

UPC-A Veri Doğruluğu Üretim Sorunu Haline Gelir

iOS UPC-A 13-basamak davranışı her zaman geliştirme sırasında yakalanmaz. Geliştirme sırasında taranan UPC-A barkodları doğru çalışıyor gibi görünebilir, ancak Apple'ın Vision çerçevesinin eklediği ön sıfır veritabanında görünür. Envanter kayıtlarında, satış noktası sistemlerinde veya tedarik zinciri entegrasyonlarında 13-basamak UPC-A değerlerini keşfeden ekipler, bir kod sorununa ek olarak bir veri düzeltme sorunuyla karşı karşıya kalırlar. BarcodeScanning.Native.Maui'nin GitHub sorunlarında belgelenen çözüm yolu, yeni taramaları düzeltir ancak tarihi verileri düzeltmez. Veri kalitesi sorununun kapsamı netleşince, uygulama düzeyinde normalleştirme yapmadan doğru UPC-A değerleri döndüren bir kütüphaneye geçmek genellikle daha temiz uzun vadeli bir çözüm olur.

PDF417 Belge Taraması Gereklidir

PDF417, Kuzey Amerika'daki nakliye etiketleri, sürücü belgeleri 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 izleyicisi PDF417'yi "çok sorunlu - çoğu tarama asla gerçekleşmez" olarak belgeler. PDF417 güvenilirliğinin fonksiyonel bir gereklilik olduğu herhangi bir uygulamada, bu bilinen sorun alternatif kütüphanelerin değerlendirilmesini zorunlu kılan doğrudan bir engelleyicidir.

Genel Geçiş Dusunceleri

Kamera Etkinliğinden MediaPicker'a ve Statik Okumaya

Gocteki temel yapisel değişiklik, surekli kamera olay kalibinin BarcodeReader.Read()'nin ardindan bir MediaPicker yakalamayla değiştirilmesidir. OnDetectionFinished olay isleyicisi, CameraView XAML kontrolü ve scanner: XML isim alani bildirimi kaldirilmistir. Yerlerine bir dugme MediaPicker.CapturePhotoAsync()'yi tetiikler ve olusan fotograf baytları BarcodeReader.Read()'ye iletilir. Bu, kullanıcı deneyimini canlı sürekli bir vizörden sistem kamera ekranına değiştirir - çoğu iş uygulamaları için uygundur.

Thread Yönlendirme Değişiklikleri

BarcodeScanning.Native.Maui, arka plan is parcaciginda OnDetectionFinished'yi tetikler, bu nedenle UI elementlerini güncelleyen mevcut tüm isleyiciler güncellemelerini MainThread.BeginInvokeOnMainThread() icinde sarar.IronBarcodetarafindan kullanilan MediaPicker + async deseni ile, await'dan sonra devam durumu cagrilan baglamda doner, bu genellikle ana is parcacigidir. Cogu durumda, MainThread.BeginInvokeOnMainThread() sarmalayıcılar kaldırilabilir ve olay isleyici kodu basitlestirilir.

UPC-A Geçici Çözümün Kaldırılması

BarcodeScanning.Native.Maui'nin iOS UPC-A 13-hane davranisini yoneten herhangi bir kod tabanında, BarcodeFormat.UPC_A'yi kontrol eden ve ondeki sıfırı silmek icin Substring(1)'yi cagiracak kodu icerecektir. Bu kod, geçişten sonra silinmelidir —IronBarcodedoğru 12 haneli değeri döndürür ve geçici çözüm yerinde bırakılırsa, geçerli UPC-A okumalarından ilk hanenin yanlış çıkarılmasına sebep olur.

MAUI İzinleri

BarcodeScanning.Native.Maui, paketin ayarları kapsamında Android ve iOS bildirilerine kamera izinlerini otomatik olarak ekler. IronBarcode'nin MediaPicker'yi kullanmasiyla, AndroidManifest.xml ve Info.plist içindeki standart MAUI kamera izinleri gereklidir — MediaPicker.CapturePhotoAsync() icin her MAUI uygulamasinin ihtiyaçi olan izinlerdir. Bu izinler, kamera kullanımı için herhangi bir amaçla kullanılan MAUI projelerinde genellikle zaten mevcut olur.

EkIronBarcodeIlkeler

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

  • Barkod Oluşturma: MAUI UI'de, API yanıtlarında veya basılı etiketlerde kullanılabilir PNG, SVG veya bayt dizisi olarak Code128, QR, DataMatrix, PDF417 ve diğer formatları üretin.
  • QR Kod Oluşturma: Logo yerleştirme, renk özelleştirme ve hata düzeltme seviyesi kontrolü ile stilize edilmiş QR kodları oluşturun.
  • Coklu Barcode Okuma: ExpectMultipleBarcodes secenegi, tek bir görüntüde mevcut tüm barcode'leri tek bir gecisle okur.
  • PDF Barkod Çıkarma: PDF belgelerine gömülü barkodları doğrudan okuyun — ara görüntü dönüşümüne gerek yoktur.
  • Sunucu Tarafı Dağıtım: Aynı barkod okuma ve üretim mantığını ASP.NET, Azure Functions, Docker ve AWS Lambda'da kamera bağımlılığı olmadan dağıtın.
  • Okuma Hizi Yapılandırmasi: ReadingSpeed.Faster, Balanced ve Slower ayarlari, görüntü kalitesine bagli olarak cikis hizi ile dogruluk arasinda ayar yapmaya olanak tanir.
  • macOS MAUI Desteği: BarcodeScanning.Native.Maui'nin belgelemediği dördüncü MAUI hedefini kapsayan macOS desteği.

.NET Uyumlulugu ve Gelecek Hazirikligi

IronBarcode, .NET 6, .NET 7, .NET 8 ve .NET 9'u, ayrıca .NET Framework 4.6.2 ve sonraki sürümleri destekler. Bu demek oluyor ki, tam MAUI hedef setinde ve henüz modern .NET'e geçiş yapmamış eski sunucu ortamlarında çalışır.IronBarcodedüzenli güncellemeler alır ve 2026 yılına kadar benimsenme arttıkça .NET 10 ile uyumludur. BarcodeScanning.Native.Maui bir MAUI'ye özel kütüphanedir ve .NET Framework desteği yoktur, sunucu tarafı dağıtım yolu bulunmamaktadır. Kod tabanı hem MAUI hem de mevcut .NET Framework veya .NET Core sunucu uygulamalarını kapsayan ekipler için,IronBarcodetü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 veIronBarcodefarklı sorunları ele alır. BarcodeScanning.Native.Maui, iOS ve Android'de otomatik barkod algılama ile gerçek zamanlı bir vizör sağlayan bir kamera kontrol kütüphanesidir. IronBarcode, tüm .NET platformları genelinde herhangi bir kaynaktan statik görüntü verilerini işleyen bir barkod okuma ve üretim kütüphanesidir. Mimari fark — sürekli kamera akışı yerine ayrık veri girişi — belli bir dizi gereksinim için hangi kütüphanenin uygun olduğunu belirler.

BarcodeScanning.Native.Maui, canlı uygulama içi kamera ön izlemesi ile sürekli çerçeve algılama gereken kullanıcı deneyimi deseni olduğunda, gereksinimlerin Windows, dosya yüklemeleri, PDF işleme veya sunucu tarafı barkod çalışmasını içerecek şekilde genişlemeyeceği zamanlarda yalnızca iOS ve Android'i hedefleyen bir tüketici mobil uygulaması olduğunda doğru seçimdir. Bu sınırlı kapsam içinde ücretsiz, minimal ve işlevseldir.

IronBarcode, platform kapsaması Windows MAUI'yi içermeliyken, barkod girişi dosyalardan, PDF'lerden veya canlı bir kameranın yanı sıra ya da yerine bayt dizilerinden geldiği; sunucu tarafı barkod işlemenin mimarinin bir parçası olduğu veya okuma yanı sıra barkod üretiminin de gerektiği durumlarda doğru seçimdir. Ayrıca, üretim gereksinimleri olan UPC-A hassasiyeti veya PDF417 güvenilirliği kabul edilebilir sınırlamalar olmaktan çıkarsa uygundur. Bu yetenekler karşılığında ticari lisans maliyeti söz konusudur.

Gereksinimlerinin şu anda BarcodeScanning.Native.Maui'nin dar kapsamına uyan ekipler için, kütüphane makul ve maliyet açısından etkili bir seçimdir. Gereksinimlerinin canlı kamera taramanın iki platformdan daha fazla büyüdüğü veya büyümesi beklendiği ekipler için BarcodeScanning.Native.Maui ile kapsam uyumsuzluğu bir yapılandırma sorunu değildir - mimari bir sorundur. IronBarcode'un tüm giriş türleri, platformlar ve dağıtım hedefleri genelinde tutarlı API'si, bu uyumsuzluğun pratik çözümüdür.

Sıkça Sorulan Sorular

BarcodeScanning.MAUI nedir?

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

BarcodeScanning.MAUI ve IronBarcode arasındaki ana farklar nelerdir?

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

IronBarcode'u lisanslamak, BarcodeScanning.MAUI'dan daha mı kolay?

IronBarcode, hem geliştirme hem de üretim dağıtımlarını kapsayan tek bir lisans anahtarı kullanır. Bu durum, CI/CD hatları ve Docker yapılandırmalarını, SDK anahtarlarını çalıştırma anahtarlarından ayıran lisanslama sistemleriyle karşılaştırıldığında basitleştirir.

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

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

IronBarcode yerel PDF barkod okuma desteği veriyor mu?

Evet. IronBarcode, BarcodeReader.Read('document.pdf') kullanarak PDF dosyalarından barkodları doğrudan okur, ayrı bir PDF işleme kütüphanesi gerektirmez. Sayfa başına sonuçlar, sayfa numarası, barkod formatı, değeri ve güven skoru içerir.

IronBarcode, BarcodeScanning.MAUI ile karşılaştırıldığında toplu işlemeyi nasıl yönetiyor?

IronBarcode'un statik yöntemleri durumsuz ve doğal olarak iş parçacığı güvenlidir, Parallel.ForEach'in doğrudan kullanımını sağlar ve iş parçacığı başı örnek yönetimi gerektirmez. Hiçbir fiyatlandırma seviyesi için bant genişliği sınırı 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 paketi içinde destekler. Platform hedefleri arasında Windows x64/x86, Linux x64 ve macOS x64/ARM bulunuyor.

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

NuGet aracılığıyla IronBarcode'u kurun: 'Install-Package IronBarCode' komutunu Paket Yöneticisi Konsolunda veya CLI'de 'dotnet add package IronBarCode' komutunu çalıştırın. Ek bir SDK yükleyici veya çalışma zamanı dosyaları gerekli değildir.

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

Evet. IronBarcode'ın deneme modu, yalnızca oluşturulan çıktı görüntülerine bir filigran ekleyerek tam çözümlenmiş barkod değerlerini verir. Satın almadan önce kendi belgelerinizde okuma doğruluğunu test edebilirsiniz.

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

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

BarcodeScanning.MAUI'dan IronBarcode'a geçiş kolay mıdır?

BarcodeScanning.MAUI'dan IronBarcode'a geçiş, öncelikle örnek tabanlı API çağrılarını IronBarcode'un statik yöntemleriyle değiştirmeyi, lisanslama klişelerini kaldırmayı ve sonuç özellik adlarını güncellemeyi içerir. Çoğu geçiş, kod eklemekten ziyade azaltmayı içerir.

IronBarcode, logolu QR kodları üretiyor mu?

Evet. QRCodeWriter.CreateQrCode().AddBrandLogo('logo.png') kullanarak bir QR koduna yerel logolu bir marka resmi ekleyin, yapılandırılabilir hata düzeltme ile. ChangeBarCodeColor() üzerinden renkli QR kodları da desteklenir.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

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