IRONSOFTWAREHOME
DIĞER BILEŞENLERLE KARŞILAŞTIRIN

ZXing.Net.MAUI vs IronBarcode: C# MAUI Barkod Karşılaştırması 2026

Curtis Chau
Curtis Chau
Updated: 1 Ağustos 2026

ZXing.Net.Maui.Controls v0.7.4. NuGet'te kararlı ancak hala öncesi 1.0.Windows MAUItaraması desteklenmez (sadece üretim). iPhone 15 Pro otomatik odaklama, etkilenmiş olarak belgelenmiştir (sorun #260). Dispose() olmadan kamera kaynak sızıntısı (sorun #164). Bu, çoğu .NET MAUI geliştiricisinin ilk başvurduğu kütüphanedir — ve proje gönderilmeden önce üretim sorunlarını en sık ortaya çıkaran kütüphanedir.

ZXing.Net.MAUI Anlaşılması

ZXing.Net.MAUI, Jon Dick (GitHub: Redth) tarafından MIT lisansı altında geliştirilen ve yayınlanan, ZXing.Net barkod kütüphanesinin bir topluluk tarafından işletilen .NET MAUI portudur. XAML kamera kontrolü sağlar, CameraBarcodeReaderView, MAUI sayfalarına canlı bir barkod tarama vizörü yerleştirir. Geliştiriciler, kamera kareleri yakaladıkça tarama sonuçlarını almak için bir BarcodesDetected olayı bağlar. Kütüphane, ZXing.Net'ten tam barkod formatı motorunu devralır, BarcodeFormats enum'u ve BarcodeReaderOptions yapılandırma modelini içerir.

Paket ZXing.Net.Maui.Controls MauiProgram.cs içinde builder.UseBarcodeReader() aracılığıyla kayıtlıdır ve iOS ve Android için mobil kamera iş hattı etrafında tasarlanmıştır. Kütüphane, ticari bir kuruluş tarafından desteklenmez, SLA'a sahip değildir ve ücretli bir destek katmanı yoktur. v0.7.4 sürümü, kararlı bir NuGet sürümü ancak semantik sürümleme altında hala öncesi 1.0'dır.

ZXing.Net.MAUI'nin önemli mimari özellikleri:

  • Öncesi 1.0 Durum: NuGet paketi v0.7.4'tedir — kararlı, ancak halen öncesi 1.0. 1.0 öncesinde küçük sürüm API değişiklikleri olası, hata düzeltme hızı topluluk bakıcısına bağlı ve bir ticari destek sözleşmesi yok.
  • iOS ve Android Tarama: Kütüphane, iOS ve Android için platform kamera API'lerine dayanmaktadır.Windows MAUIyalnızca üretimi destekler — kamera taraması uygulanmamıştır. Mac Catalyst, hedef çerçeve listesine dahil edilmiştir, ancak tarama resmi olarak belgelenmemiştir.
  • Sürekli Kamera Vizörü: CameraBarcodeReaderView sayfa görünürken sürekli çalışan bir canlı kamera kontrolüdür. Ekran alanı kaplar ve sayfa yaşam döngüsü yönetimi gerektirir.
  • Dispose() Uygulaması Yok: Kontrol, IDisposable uygulamaz. Kamera kaynakları sayfa gezintisinde resmi olarak serbest bırakılmaz, IsDetecting = false çözüm yolu gerektirir OnDisappearing() (GitHub sorunu #164).
  • iPhone 15 Pro Otomatik Odaklama Sorunu: GitHub sorunu #260, iPhone 15 Pro ve Pro Max cihazlarının (donanım tanıtıcıları iPhone16,1 ve iPhone16,2) barkod algılaması için güvenilir odaklama sağlamadığını belgeler. Şu anda programatik bir düzeltme mevcut değil.
  • Android Kamera Uyumluluk Sorunu: GitHub sorunu #275, AndroidX Camera 1.5.0 ile uyumluluk çakışmalarından kaynaklanan derleme hatalarını takip eder, kamera paketlerini 1.4.x ile sabitleme veya projeyi minSdkVersion yükseltme çözüm yolu ile.
  • ZXing.Net Format Özelliğini Devralır: Her tarama oturumu, hangi BarcodeFormats değerlerinin taranacağını açıkça belirlemeyi gerektirir. BarcodeReaderOptions.Formats içinde listelenmeyen formatlar, kamera çerçevesinde görünür olsa bile sessizce yok sayılır.
  • Sadece Kamera Mimarisi: Kütüphane bir dosya girişi API'sine, bir akış okuma API'sine ve bir PDF barkod çıkarımına sahip değildir. Tüm taramalar canlı kamera vizörü aracılığıyla gerçekleşmelidir.

CameraBarcodeReaderView Mimarisi

CameraBarcodeReaderView kontrolü, ZXing.Net.MAUI'nin merkez bileşenidir. XAML'de beyan edilir ve BarcodeReaderOptions bağı ile yapılandırılır. Kullanan her sayfa, OnAppearing ve OnDisappearing geçersiz kılmalarını, IsDetecting durumunu yönetmek için uygulamalıdır:

<!-- ZXing.Net.Maui XAML: requires xmlns declaration and lifecycle wiring -->
<ContentPage xmlns:zxing="clr-namespace:ZXing.Net.Maui.Controls;assembly=ZXing.Net.MAUI.Controls">
    <zxing:CameraBarcodeReaderView
        x:Name="CameraView"
        Options="{Binding ReaderOptions}"
        BarcodesDetected="OnBarcodesDetected" />
</ContentPage>
XML
// Toggling IsDetecting in lifecycle overrides is the documented pattern
protected override void OnDisappearing()
{
    base.OnDisappearing();
    if (CameraView != null)
        CameraView.IsDetecting = false;  //HayırIDisposable on the control
}

protected override void OnAppearing()
{
    base.OnAppearing();
    if (CameraView != null)
        CameraView.IsDetecting = true;
}
C#

Bir ZXing.Net.MAUI uygulamasındaki her tarama sayfası bu yaşam döngüsü şablonunu taşır. IDisposable yokluğu, kamera durumunun standart Dispose modelinden ziyade IsDetecting bayrağı aracılığıyla manuel olarak yönetilmesi gerektiği anlamına gelir.

IronBarcode Anlama

IronBarcode, Iron Software tarafından geliştirilen ticari olarak desteklenen bir .NET barkod kütüphanesidir. Sabit bir API olan BarcodeReader.Read() aracılığıyla hem barkod okuma hem de oluşturma sağlar, bu API görüntü baytlarını, dosya yollarını, akışları ve PDF belgelerini kabul eder. MAUI context'inde,IronBarcode MAUI'nin yerleşik MediaPicker ile eşleşir, böylece sistem kamerası aracılığıyla görüntüler yakalanır, ardından bir sürekli kamera akışını işlemlemek yerine, yakalamadan sonra ortaya çıkan görüntü işlenir.

Kütüphane tüm MAUI platformlarını — iOS, Android, Windows ve macOS — aynı paket ve aynı kod yolları üzerinden hedefler. MauiProgram.cs içinde platforma özgü hizmet kaydı gerekli değildir, XAML'de yerleştirilmiş kamera görünümü kontrolü yoktur ve IronBarcode çalıştıran kamera durumunu sürdürmediği için yaşam döngüsü yönetimi gerekmez.

IronBarcode'un ana özellikleri:

  • Stabil Ticari Yayın: Ticari destek, SLA ve düzenli bir sürüm ritmiyle üretime hazır bir NuGet paketi olarak yayınlanır.
  • Tüm MAUI Platformları: iOS, Android, Windows vemacOS MAUIhedeflerini tek bir paketten ve tek bir kod paterninden destekler.
  • Durumsuz API: BarcodeReader.Read() statik bir yöntem çağrısıdır. Tarama arasında arka plan süreçleri çalışmaz, yaşam döngüsü kancaları gerekmez ve sayfa gezintileri arasında kamera kaynakları birikmez.
  • Tüm Formatların Otomatik Algılaması: Format belirtim listesi olmadan otomatik olarak 50'den fazla barkod formatını algılar. Bilinmeyen bir formatı taramak için yapılandırma gerekmiyor.
  • Dosya ve PDF Okuma: Dosya yolları, bayt dizileri, akışlar ve PDF belgelerinden yerel olarak barkod okur, canlı kamera kütüphanelerinin ele alamayacağı senaryoları kapsamaktadır.
  • ML Destekli Hasarlı Barkod Kurtarma: Makine öğrenimi modellerini, sınır algoritmalarının başaramayacağını hasarlı, kısmen gizlenmiş veya düşük kaliteli görüntülerden barkod kurtarmak için uygular.
  • Barkod Üretimi: Tüm ana 1D ve 2D barkod formatlarını, boyutlandırma, renk ve kenar boşluğu yapılandırmaları ile görüntüler olarak üretir.
  • Çapraz Dağıtım: Aynı paket, ASP.NET Core, WPF, WinForms, konsol uygulamaları, Azure Fonksiyonları ve Docker konteynerlerinde MAUI ile birlikte çalışır.

Özellik Karşılaştırması

Aşağıdaki tablo, ZXing.Net.MAUI ve IronBarcode arasındaki ana farkları vurgular:

ÖzellikZXing.Net.MAUIIronBarcode
Sürüm DurumuKararlı ancak öncesi-1.0 (v0.7.4)Kararlı, ticari sürüm
Platform DesteğiiOS, Android tarama (yalnızca Windows üretim)iOS, Android, Windows, macOS, sunucu
Format Belirtimi GerekliEvetHayır (otomatik algılama)
Kamera Kaynak YönetimiManuel (IsDetecting)Uygulanamaz — durumsuz
PDF Barkod ÇıkartmaMevcut değilEvet
LisansMIT (ücretsiz, topluluk)Ticari
Ticari DestekNoneEvet

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

ÖzellikZXing.Net.MAUIIronBarcode
Platform
iOS MAUIEvet (iPhone 15 Pro odak sorunu #260)Evet
Android MAUIEvet (Kamera 1.5.0 yapı sorunu #275)Evet
Windows MAUIYalnızca üretim — tarama uygulanmamışEvet
macOS MAUIMac Catalyst hedeflenmiştir; tarama resmi olarak belgelenmemiştirEvet
ASP.NET Core / SunucuHayırEvet
WPF / WinFormsHayırEvet
Azure Fonksiyonları / DockerHayırEvet
.NET Framework 4.6.2+HayırEvet
Okuma
Format otomatik algılamaHayır — formatları belirtmeniz gerekiyorEvet (50+ format)
Dosya yolu girişiSadece ZXing.Net çekirdek üzerindenEvet
Akış girişiSadece ZXing.Net çekirdek üzerindenEvet
PDF barkod çıkarımıHayırEvet
Hasarlı barkod kurtarmaYalnızca TryHarderEvet (ML destekli)
Kamera Entegrasyonu
Canlı vizör kontrolüEvetHayır (MediaPicker sistem UI)
Yaşam döngüsü yönetimi gerekiyorEvet (IsDetecting)Hayır
Dispose() uygulamasıHayırUygulanamaz
iPhone 15 Pro otomatik odaklanmaEtkilenen (GitHub sorunu #260)Uygulanamaz
Üretim
Barkod oluşturmaEvet (ZXing.Net üzerinden)Evet
Bakım
Sürüm durumuKararlı ancak öncesi-1.0 (v0.7.4)Üretime hazır
Ticari destekNoneEvet
API stabilite garantisiÖncesi-1.0 — küçük sürüm değişiklikleri olasıEvet
LisansMIT (ücretsiz)Ticari

Platform Desteği

Platform kapsamı, ZXing.Net.MAUI ve IronBarcode arasındaki yapısal bir farktır çünkü iki kütüphane, .NET MAUI uygulamalarının nerede çalıştığına dair temelde farklı varsayımlar üzerine inşa edilmiştir.

ZXing.Net.MAUI Yaklaşımı

ZXing.Net.MAUI, iOS ve Android için platform kamera API'lerine dayalı olarak tasarlanmıştır. Windows MAUI, yalnızca barkod üretimini destekler — kamera taraması uygulanmadı ve kamuya açık bir yol haritasında değil. Bu, kütüphaneyi yalnızca mobil işletim sistemleri için yazılmış platform uygulamaları ile canlı bir kamera görüntüleyici kontrolü etrafında inşa etme mimari tercihine yansıtılır.

net8.0-windows10.0.19041.0 hedefleyen bir MAUI projesi, ZXing.Net.MAUI'den barkod tarama işlevi elde edemez. Mac Catalyst hedef çerçeve listesinde mevcuttur, ancak o hedefte tarama resmi olarak belgelenmemiştir. Yalnızca mobil hedeflerle başlayan ve daha sonra Windows veya macOS gerekliliği ekleyen takımlar, ZXing.Net.MAUI'nin bu hedeflerde tarama yapamayacağını görecektir. iOS desteği kendisi bir uyarı taşır: GitHub sorunu #260, iPhone 15 Pro ve Pro Max cihazlarının güvenilir algılamayı önleyen bir otomatik odaklama sorunundan etkilendiğini belgeler.

IronBarcode Yaklaşımı

IronBarcode, aynı paketten ve aynı kod deseninden — iOS, Android, Windows ve macOS — tüm MAUI hedef çerçevelerini destekler. MediaPicker + BarcodeReader.Read() yaklaşımı her platforma doğal olarak haritalanır: mobilde, MediaPicker.CapturePhotoAsync() cihaz kamerasını çağırır; Windows'ta, bu bir masaüstü ortamı için uygun davranış olan dosya seçicisine eşlenir. Platforma özgü kod yok, koşullu derleme yok ve platform hizmeti kaydı yok.

Windows ve macOS için MAUI masaüstü barkod deseni, mobil taramayı ele alan aynı paket tarafından karşılanır. Android cihazda çalışan aynı BarcodeReader.Read() çağrısı, ASP.NET Core son noktasında, bir WinForms masaüstü uygulamasında veya bir Azure İşlevinde de çalışır — dağıtım hedefi API'yi etkilemez.

Kamera Entegrasyonu ve Yaşam Döngüsü

İki kütüphane, MAUI uygulamasında kamera erişiminin nasıl çalıştığı konusunda zıt mimari pozisyonlar alır.

ZXing.Net.MAUI Yaklaşımı

CameraBarcodeReaderView XAML sayfasına yerleştirilmiş kalıcı bir kamera kontrolüdür. IsDetecting true olarak ayarlandığında kamera karelerini işlemeye başlar ve false olarak ayarlandığında durur. Dispose() bir uygulamanın yokluğu, kullanıcı uzaklaştığında, standart IDisposable modeli aracılığıyla kamera kaynaklarının serbest bırakılmadığı anlamına gelir. Belgelenen azaltma, IsDetecting = false OnDisappearing() içinde ayarlayıp OnAppearing() içinde geri yüklemektir:

// ZXing.Net.MAUI: toggle IsDetecting in page lifecycle overrides
protected override void OnDisappearing()
{
    base.OnDisappearing();
    CameraView.IsDetecting = false;
}

protected override void OnAppearing()
{
    base.OnAppearing();
    CameraView.IsDetecting = true;
}

Bu desen, bir tarayıcı barındıran her sayfada tekrarlanmalıdır. Sıkça tarama sayfalarına gidip gelen ve geri dönen uygulamalar, tamamıyla serbest bırakılmamış kamera kaynakları biriktirebilir; bu, bellek büyümesi raporları ve dönüşte aralıklı kamera başlatılması ile GitHub sorunu #164 altında izlenir. iPhone 15 Pro otomatik odaklama sorunu (GitHub issue #260), kamera entegrasyon katmanı içinde ayrı bir endişedir: kamera görünümü barkodu net bir şekilde render eder, ancak otomatik odaklama sistemi, iPhone16,1 ve iPhone16,2 donanımda algılama için yeterince keskin bir şekilde kilitlenmez. Belgelendirilmiş çözüm, kullanıcıya cihaz ile barkod arasında elle mesafe ayarlaması yapmasını talimat vermektir.

IronBarcode Yaklaşımı

IronBarcode, XAML düzenine bir kamera kontrolü yerleştirmez. Bunun yerine, MediaPicker.CapturePhotoAsync() çağrısı, kullanıcı bir düğmeye dokunduğunda sistem kamera UI'ını açar. Sistem kamerası, odak, pozlama ve otomatik odaklamayı bağımsız olarak kontrol eder. Kullanıcı yakalamayı onayladığında, elde edilen görüntü BarcodeReader.Read()'a bayt dizisi olarak geçirilir:

// NuGet: dotnet add package IronBarcode
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 barcode in results)
        Console.WriteLine($"{barcode.Format}: {barcode.Value}");
}

//HayırOnAppearing or OnDisappearing needed — no camera state to manage
C#

.NET MAUI barkod tarayıcı dersinde bu desen için tam proje kurulumu, hem iOS hem de Android için izin yapılandırmasının dahil olması ele alınmıştır. Kalıcı bir kamera görünümü olmadığı için, serbest bırakılacak kaynak, değiştirilmesi gereken durum veya sayfalar boyunca korunması gereken bir yaşam döngüsü şablonu yoktur.

Format Belirtimi

Bir kütüphanenin barkod format algılamasını nasıl ele aldığı, gerçek dünya dağıtımlarında tarama güvenilirliği için doğrudan sonuçlar doğurur.

ZXing.Net.MAUI Yaklaşımı

ZXing.Net.MAUI, ZXing.Net format belirtimi gereksinimini devralır. Tarama başlamadan önce, geliştirici, BarcodeReaderOptions.Formats'a algılanması gereken BarcodeFormats enum değerlerinin bir maskeasını doldurmalıdır. Bu listede yer almayan formatlar tespit edilmeyecek — sessizce, hata veya uyarı olmaksızın:

// ZXing.Net.MAUI: formats must be declared explicitly
// Formats not listed here are not detected
ReaderOptions = new BarcodeReaderOptions
{
    Formats = BarcodeFormats.QRCode |
              BarcodeFormats.Code128 |
              BarcodeFormats.Ean13 |
              BarcodeFormats.UpcA,
    TryHarder = true,
    AutoRotate = true
};

Kullanıcı bir GS1 DataBar, Aztek kodu, MaxiCode veya seçeneklerde ilan edilmeyen herhangi bir formatı kameraya doğrultursa, tarama, hata bildirimi yapılmaksızın sonuç vermez. Kamera, barkodu gösterir ve uygulamaya sonuç gönderilmez. Kontrollü bir ortamda — her öğenin Code128 etiketi taşıdığı bir depoda — bu yönetilebilir. Barkod formatlarının dış tedarikçiler, müşteriler veya üçüncü taraf sistemler tarafından belirlendiği dağıtımlarda, bir geri dönüş yolunun olmaması, tekrarlayan bir destek sorunu haline gelir.

IronBarcode Yaklaşımı

IronBarcode, önceden yapılandırma olmaksızın desteklenen tüm formatlar arasında otomatik format algılaması gerçekleştirir. BarcodeReader.Read() görüntüyü analiz eder ve format ne olursa olsun tanımladığı her barkod için sonuçlar döndürür. BarcodeReaderOptions listesine gerek yoktur:

// IronBarcode: no format specification needed
// All 50+ formats detected automatically
var results = BarcodeReader.Read(imageBytes);
foreach (var barcode in results)
    Console.WriteLine($"{barcode.Format}: {barcode.Value}");

Sadece bir formatın beklenildiği kontrollü bir senaryo için performans ayarlaması gerekiyorsa, format ipuçları isteğe bağlı olarak iletilebilir — ancak doğru algılama için asla gerekli değildir. Geliştirici tarafından beklenmeyen bir formattaki bir barkod yine de algılanacak ve döndürülecektir.

Dosya ve PDF İşleme

Canlı kamera taramanın ötesinde, birçok üretim barkod iş akışı, saklanan belgelerden okuma işlemini içerir — sevk irsaliyeleri, dijital biletler, yüklenen görüntüler ve PDF ekleri.

ZXing.Net.MAUI Yaklaşımı

ZXing.Net.MAUI, bir kamera kontrol kütüphanesidir. Dosya yollarından, doğrudan depolamadan iletilen bayt dizilerinden veya PDF belgelerinden barkod okuma için bir API'ye sahip değildir. CameraBarcodeReaderView kontrolü, canlı bir kamera beslemesi gerektirir; bir dosya yolunu kabul eden ve barkod sonuçlarını döndüren statik bir yöntem yoktur. Yüklenen PDF'lerden, belge yönetim sistemlerinden veya toplu görüntü işleme kuyruklarından barkod okumaları gereken ekipler, bu senaryolar için ZXing.Net.MAUI kullanamaz ve ayrı bir kütüphane eklemeleri gerekir.

IronBarcode Yaklaşımı

IronBarcode, aynı BarcodeReader.Read() yöntemiyle herhangi bir kaynaktan barkod okur. Dosya yollarını, bayt dizilerini, akışları ve PDF belgelerini kabul eder. PDF işleme özgüdür — IronBarcode, PDF sayfalarını doğrudan ara rasterleştirme adımı olmadan işler:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Read barcodes from a PDF file
var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format}{barcode.Value}");

// Read from a user-selected file using MAUI FilePicker
var file = await FilePicker.PickAsync();
if (file != null)
{
    var fileResults = BarcodeReader.Read(file.FullPath);
    foreach (var result in fileResults)
        ResultLabel.Text += $"\n{result.Format}: {result.Value}";
}

Çok sayfalı belgeler ve sayfalar arasında karışık barkod formatlarını içeren tam PDF barkod okuma iş akışı, PDF'den barkod okuma kılavuzunda belgelenmiştir. Bu, ZXing.Net.MAUI'nin yalnızca kamera tabanlı mimarisiyle ele alamayacağı sevk irsaliyeleri, dijital biletler, belge yönetim iş akışları ve toplu işleme senaryolarını kapsar.

API Eşleme Başvurusu

ZXing.Net.MAUIIronBarcodeNotlar
builder.UseBarcodeReader()Gerekli değilMauiProgram.cs'dan Kaldır
xmlns:zxing="clr-namespace:ZXing.Net.Maui.Controls;..."Gerekli değilXAML ad alanı bildirimini kaldırın
<zxing:CameraBarcodeReaderView><Button> + MediaPicker ile DeğiştirMimari değişiklik
Options="{Binding ReaderOptions}"Gerekli değilSeçenekler nesnesi gerekli değil
BarcodesDetected="OnBarcodesDetected"BarcodeReader.Read() dönüş değeriOlay → yöntem dönüşü
new BarcodeReaderOptions { Formats = BarcodeFormats.X | ... }Gerekli değilOtomatik algılama bunu değiştiriyor
BarcodeDetectionEventArgs eIEnumerable<BarcodeResult>Farklı sonuç sunum modeli
e.ResultsBarcodeReader.Read() dönüş değeri
barcode.Valueresult.ValueAynı özellik adı
barcode.Formatresult.FormatAynı özellik adı
BarcodeFormats.QRCodeBarcodeEncoding.QRCodeEnum yeniden adlandırma
BarcodeFormats.Code128BarcodeEncoding.Code128Enum yeniden adlandırma
BarcodeFormats.Ean13BarcodeEncoding.EAN13Enum yeniden adlandırma
CameraView.IsDetecting = false (OnDisappearing)Gerekli değil — yöntemi kaldırınIronBarcode durumsuzdur
CameraView.IsDetecting = true (OnAppearing)Gerekli değil — yöntemi kaldırınIronBarcode durumsuzdur
Dosya girişi API'si yokBarcodeReader.Read("path/to/file.png")Yeni özellik
PDF API'si yokBarcodeReader.Read("document.pdf")Yeni özellik

Takımlar ZXing.Net.MAUI'den IronBarcode'a Geçmeyi Düşündüğünde

Birden fazla somut senaryo, ZXing.Net.MAUI için bir yedek olarak IronBarcode'u değerlendirme kararını yönlendirir. Bunlar proje düzeyi ve ürün düzeyi koşullardır, uygulama tercihleri ​​değildir.

Windows MAUIGereksinimleri

Yeniden değerlendirme için en yaygın tetikleyici, yalnızca iOS ve Android olarak başlayan bir projeyeWindows MAUIhedefinin eklenmesidir. MAUI ekipleri sıklıkla mobil öncelikli yapılarla başlar ve gereksinimler geliştikçe masaüstü hedeflerine genişler. Bu genişleme olduğunda, ZXing.Net.MAUI ilerlemek için bir yol sunmaz — Windows platformu uygulanmamış ve kamuya açık bir yol haritasında yer almıyor. Takım, barkod taramanın Windows'ta mevcut olmayacağını kabul etmeli veya kütüphaneyi değiştirmeli. Değişiklikle tarama deseni ne olursa olsun yapısal bir değişiklik gerektirdiği için, ekipler genellikle değişikliği aynı anda tüm platformlar için yapar.

Mevcut Nesil Donanım Uyumluluğu

iPhone 15 Pro otomatik odaklama sorunu (GitHub sorunu #260), bir üretim barkod tarayıcısı iOS kullanıcılarına sunan her takım için ciddi bir değerlendirme konusudur. iPhone 15 Pro ve Pro Max, cilalı bir uygulama deneyimi bekleyen tüketici segmentinde yaygındır ve kullanıcıların bir barkoda olan mesafelerini ayarlamalarını isteyen bir çözüm, eski iPhone donanımına kıyasla belirgin bir kullanıcı deneyimi gerilemesidir. QA'daki bu konuyu iş yüzeye çıkaran veya iPhone 15 Pro kullanıcılarından destek raporları alan takımlar, şu anda bir çözümün mevcut olmadığı bir kütüphanede kalmak ile kamera görüş odak modeli tarafından etkilenmeyen bir yaklaşıma geçmek arasında bir seçimle karşı karşıyadır.

Dosya ve Belge İşleme

Barkod tarama gereksinimleri nadiren sadece canlı kamera yakalama ile sınırlı kalır. Envanter tarayıcıları olarak başlayan uygulamalar, sıklıkla yüklenen PDF'lerden barkod okumaları, sevk irsaliyelerini işleme ve e-posta eklerinden dijital biletleri işleme eklemelerde genişler. ZXing.Net.MAUI, bu senaryolar için bir API'ye sahip değildir. Bir dosya veya belgeden barkod okuma gerektiren bir ürün gereksinimi kaydedildiğinde, ZXing.Net.MAUI kullanan ekipler, bunu ele almak için ayrı bir kütüphane eklemelidir. Takım bu dosya tabanlı senaryoların herhangi biri için zaten IronBarcode kullanıyorsa, MAUI kamera taramasını aynı kütüphaneye konsolide etmek doğal bir sonraki adım olur.

Üretim Kararlılık Gereksinimleri

v0.7.4'teki öncesi-1.0 tanımlaması — paketin kendisi kararlı bir NuGet sürümü iken — yazılım bileşimi analizi, bağımlılık denetimleri veya iç onay süreçlerine tabi olan ekipler için sonuçlar taşır. Bazı kurumsal ortamlar, üretim bağımlılıklarının bir 1.0+ kararlı sürüm taşımasını, ticari bir destek sözleşmesi veya her ikisini birden gerektirir. ZXing.Net.MAUI, topluluk tarafından bakımı yapılmakta ve öncesi-1.0'dir, bu da dahili araçlar ve prototipler için uyumludur, ancak barkod tarayıcılarının temel bir iş akışı olduğu müşteri odaklı uygulamalarda inceleme adımları ekler. Ücretli bir destek katmanının olmaması, kritik bir hatanın topluluk bakıcısının bulunabilirliğine bağlı olduğu anlamına gelir.

Genel Geçiş Dikkat Edilmesi Gereken Hususlar

ZXing.Net.MAUI'den IronBarcode'a geçiş üç belirli teknik değişikliği içerir ve barkod taramaya katılan kod tabanındaki her dosyayı etkiler.

CameraBarcodeReaderView'dan MediaPicker Desenine

CameraBarcodeReaderView XAML kontrolü ve xmlns:zxing ad alanı bildirimi tamamen kaldırıldı. Taranan bir görüntü görünümü içeren her XAML dosyasındaki değişim, MediaPicker.CapturePhotoAsync() işlemini Clicked işlemcisinde çağıran bir Button kontrolüdür. BarcodesDetected aracılığıyla sonuçların geldiği olaya dayalı model, doğrudan async işlemcisinde BarcodeReader.Read() dönüş değerini okuyarak değiştirilir.

IsDetecting Yaşam Döngüsü Kaldırılması

CameraView.IsDetecting devre dışı bırakmak için var olan her OnAppearing ve OnDisappearing geçersiz kılması silinebilir. Bu geçersiz kılmalar diğer sayfa yaşam döngüsü mantığını içeriyorsa, IsDetecting satırları kaldırılır ve kalan mantık korunur. IronBarcode'un IsDetecting'na eşdeğer bir şey yoktur çünkü sayfa gezintileri arasında yönetilmesi gereken kalıcı bir kamera durumu yoktur.

UseBarcodeReader() Kaydı Kaldırılması

ZXing.Net.MAUI, platform kamera hizmetlerini kaydetmek için MauiProgram.cs içinde tek seferlik builder.UseBarcodeReader() çağrısı gerektirir.IronBarcode herhangi bir MauiProgram.cs kaydı gerektirmez. UseBarcodeReader() satırı kaldırılır ve onu destekleyen using ZXing.Net.Maui; ad alanı ithalatı paket kaldırılması ile birlikte kaldırılır.

Ek IronBarcode Yetenekleri

Bu karşılaştırmada ele alınan senaryoların ötesinde, IronBarcode, bir kamera tabanlı MAUI kontrolünün sunduğunun çok daha ötesine geçen barkod işlevselliği sunar:

  • iOS Barkod Tarama: Aynı MediaPicker + BarcodeReader.Read() modelini kullanarak tamiOS MAUIdesteği — platforma özgü kamera yönetimi, format listeleri ve yaşam döngüsü gereksizleri yok.
  • Android Barkod Tarama: ZXing.Net.MAUI'de bulunan Kamer 1.5.0 bağımlılık sabitleme sorunları olmaksızın, aynı birleşik API üzerindenAndroid MAUItaraması.
  • Barkod Üretimi: Konfigüre edilebilir boyutlandırma, renk, sessiz bölge ve hata düzeltme seviyesiyle resimler olarak QR kodları, Code128, EAN-13, PDF417, Data Matrix ve tüm büyük formatları üretir.
  • Toplu İşleme: Tek bir çağrıda çok sayfalı bir PDF'nin tüm sayfalarındaki veya bir resim dizinindeki tüm barkodları okur, her sonuçla sayfa numarası meta verilerini döndürür.
  • Sunucu Tarafı Dağıtım: Aynı NuGet paketi ve aynı BarcodeReader.Read() çağrısı ASP.NET Core uç noktalarında, Azure İşlevlerinde ve Docker konteynerlerinde çalışır — bir paket hem mobil istemciyi hem de sunucu arka planını kapsar.
  • Hasarlı Barkod Kurtarma: Standart eşik temelli dönüştürücülerin işleyemediği fiziksel hasarlı etiketlerden, düşük kontrastlı baskılardan ve optimal olmayan açılarda yakalanan görüntülerden barkodları kurtaran makine öğrenme modelleri.
  • Stilize Barkod Üretimi: ZXing.Net üzerinden sunulan tek renkli çıktının ötesinde özel renkler, gömülü logolar, yuvarlatılmış köşeler ve açıklama metni ile barkodlar üretir.

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

IronBarcode, düzenli güncellemelerle güncel .NET sürümlerine hitap eden aktif bir geliştirmeyi sürdürüyor. Kütüphane .NET 8, .NET 9'u destekler ve sonraki .NET sürümlerinin peşinden gider. Ayrıca, eski uygulama ortamları için .NET Framework 4.6.2 ve sonrası destekler. Topluluk tarafından bakımı yapılan, öncesi-1.0 paket olarak ZXing.Net.MAUI, .NET sürüm destek zaman çizelgeleri üzerinde resmi taahhütler taşımaz. MAUI projeleri için — .NET sürüm ritmine bağlı olanlar — her .NET sürümünü takip eden aktif bir şekilde sürdürülen, ticari olarak desteklenen bir kütüphanenin varlığı, uzun vadeli planlama için önemlidir.

Sonuç

ZXing.Net.MAUI ve IronBarcode, bir .NET MAUI uygulamasında barkod okuma konusundaki aynı soruna farklı cevaplar sunar — ancak farklı mimari öncüllerden başlarlar. ZXing.Net.MAUI, XAML sayfasına doğrudan yerleştirilmiş canlı bir kamera vizörü yerleştirir, analiz edilen kareler sırasında olayları tetikleyen kalıcı bir kamera kontrolü olarak çalışır. IronBarcode, kamerayı sistem MediaPicker yoluyla erişilen bir yakalama cihazı olarak ele alır, yakalamadan sonra statik bir görüntüyü işleyerek sürekli bir akışı yerine getirir. Yaklaşım farkı neredeyse her şeyi belirler: platform kapsamı, yaşam döngüsü karmaşıklığı, format işleme ve dağıtım kapsamı.

ZXing.Net.MAUI, belirli proje profilleri için gerçekten uygundur: iOS ve Android uygulamaları, prototipler ve dahili araçlar, barkod formatlarını önceden bilen ekipler,Windows MAUItarama gereksinimi olmayan projeler ve sıfır maliyetli MIT lisansının karar verici faktör olduğu durumlar. Sabit bir Android cihaz grubunda Code128 etiketlerini tarayan bir depo envanter tarayıcısı için, ZXing.Net.MAUI doğru çalışacaktır. Pre-1.0 durumu, iPhone 15 Pro sorunu ve yaşam döngüsü şablonları, doğru bağlamda kabul etmeye değer gerçek değiş tokuşlardır.

Proje kapsamı daha geniş olduğunda IronBarcode uygundur: Windows veyamacOS MAUIhedefleri, harici sistemlerden bilinmeyen veya değişken barkod formatları, PDF'lerden veya yüklenen dosyalardan barkod okuma gereksinimleri, üretim kalitesinde stabilite ihtiyaçları veya mobil taramanın ötesinde sunucu tarafı barkod işleme. Ticari lisans, destek, bakım ve .NET sürümleri genelinde uyumluluk güncellemelerini kapsayan bir yatırımdır. Durumsuz API, ZXing.Net.MAUI'nin geliştiricilerin manuel olarak önlem almasını gerektirdiği bir hata kategorisini — kamera kaynak sızıntıları, yaşam döngüsü durumu hataları — ortadan kaldırır.

Dürüst bir değerlendirme, hiç bir kütüphanenin evrensel olarak doğru olmadığıdır. ZXing.Net.MAUI, ilk kütüphane olarak birçok MAUI geliştiricisinin denediği haklıdır çünkü ücretsizdir, tanıdıktır ve entegrasyon hızlıdır. Taşıdığı problemlerin gerçek olduğu, ancak yalnızca belirli proje koşullarında önemli olduğu gerçeği. Bu koşullar mevcut olduğunda — bir Windows gereksinimi, mevcut nesil iPhone donanımı, dosya tabanlı tarama veya üretim kararlılık standartları — IronBarcode'un hepsini ele aldığı bir durum söz konusudur. Seçim, ZXing.Net.MAUI'nin bilinen sınırlamalarının engelleyici hale geldiği senaryoların içinde veya dışında projenin özel kısıtlamalarının olarak bulunup bulunmadığına bağlıdır.

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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez