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

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

QRCoder bir şeyi olağanüstü iyi yapar: saf C# içinde sıfır harici bağımlılıkla QR kodları üretir, sınırsızMITlisansına sahip ve standart yük biçimlendirmeden bir dizi çıktı çizimine kadar her şeyi ele alır. 8 milyonun üzerinde NuGet indirmesiyle, itibarı kazanılmıştır.IronBarcodeile karsilastirma, bir kalite degerlendirmesi degildir — kapsam sorusudur. IronBarcode, 50'den fazla barkod formatini kapsar, hem okur hem de yazar, ve tek bir tutarli API uzerinden PDF belgelerine entegre olur. QR oluşturmanin otesine gecen gereksinimlere sahip takimlar icin, QRCoder'in tasariminin neden sona erdigini anlamak onemlidir.

QRCoder'i Anlamak

QRCoder, 2013 yilinda Raffael Herrmann tarafindan oluşturuldu ve simdi Shane32 tarafindan surduruluyor. Kutuphane tamamen C# dilinde yazilmistir ve hicbir harici bagimliligi yoktur — SkiaSharp sürüm uyusmazliklari yok, ImageSharp ticari lisans endiseleri yok, dağıtilacak yerel ikili dosyalar yok. Herhangi bir platformda calisir; .NET nerde calisiyorsa orda calisir.

MIT lisansi gercekten sinirsizdir. Bazı popüler kitaplıklarda olduğu gibi gelir eşigi ticari lisans gereksinimini tetiklediginde,QRCoderhükümsiz gizli ticari kisitlamalari yoktur. Bu ayrım, ticari uygulamalar geliştiren takımlar icin onemlidir.

PayloadGenerator sınıfı önemli bir pratik değer katar: Geliştiricilerin her standart için kablo formatını ezberlemesi gerekmez, çünkü WiFi kimlik bilgileri, iletişim kartları (vCard), takvim etkinlikleri, SMS mesajları ve coğrafi konum noktaları gibi yaygın QR kodu veri formatlarını işler. Rendirim çeşitliligide bircok cikti turu boyunca kuvvetlidir.

Anahtar mimari özellikler:

  • Sıfır Harici Bağımlılık: Konteynerize veya sinirli ortamlarda dağıtimi basitlestiren ucuncu taraf calistirma gereksinimleri olmadan saf C#
  • MIT Lisansı Gelir Kısıtlaması Yok: gelir esikleri veya ticari tetikleyiciler olmadan ticari kullanim icin gercekten ücretsiz
  • PayloadGenerator Yardımcıları: WiFi, vCard, CalendarEvent, SMS, Geo ve diğer yaygin QR yuk standartlari icin yerleşik formatlayicilar
  • Rendirici Çeşitliliği: PNG baytları, SVG dizgesi, ASCII sanatı, Base64, BMP ve birkaç ek çıktı formatı
  • Tam Hata Düzeltme Kontrolü: ECC seviyeleri (L, M, Q, H) açığa çıkarılmıştır.
  • Mikro QR Desteği: Tüm barkod kütüphanelerinde mevcut olmayan, yer sıkıntısı olan etiketler için kompakt QR varyantı
  • Sadece QR Tasarımı: API yüzeyi sadece QR kod oluşturmayı kapsar — 1D formatları,DataMatrixyoktur, barkod okuma yoktur

Sadece QR Tasarımı

QRCoder, veri oluşturma adımını render adımından ayırır. QRCodeGenerator, ardından bir renderer sınıfına geçirilen bir QRCodeData ara nesnesi üretir. Bu kalıp, ek nesneler pahasına çıkış formatı üzerinde hassas kontrol saglar:

using QRCoder;
using System.IO;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.M
);

// PNG bytes via PngByteQRCode
var pngQR = new PngByteQRCode(qrCodeData);
byte[] pngBytes = pngQR.GetGraphic(20); // 20px per module
File.WriteAllBytes("qr.png", pngBytes);

// SVG string via SvgQRCode
string svgContent = new SvgQRCode(qrCodeData).GetGraphic(10);
File.WriteAllText("qr.svg", svgContent);
using QRCoder;
using System.IO;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.M
);

// PNG bytes via PngByteQRCode
var pngQR = new PngByteQRCode(qrCodeData);
byte[] pngBytes = pngQR.GetGraphic(20); // 20px per module
File.WriteAllBytes("qr.png", pngBytes);

// SVG string via SvgQRCode
string svgContent = new SvgQRCode(qrCodeData).GetGraphic(10);
File.WriteAllText("qr.svg", svgContent);
Imports QRCoder
Imports System.IO

Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M)

' PNG bytes via PngByteQRCode
Dim pngQR As New PngByteQRCode(qrCodeData)
Dim pngBytes As Byte() = pngQR.GetGraphic(20) ' 20px per module
File.WriteAllBytes("qr.png", pngBytes)

' SVG string via SvgQRCode
Dim svgContent As String = New SvgQRCode(qrCodeData).GetGraphic(10)
File.WriteAllText("qr.svg", svgContent)
$vbLabelText   $csharpLabel

QRCodeGenerator.CreateQrCode metodu, kod oluşturmanın tek giriş noktasıdır — CreateCode128 yoktur, CreateDataMatrix yoktur, CreateEAN13 yoktur. Kutuphane belirtilen kapsamina tamamen uyar.

IronBarcode'u Anlamak

IronBarcode, 50'den fazla barkod formatini tek bir, tutarli bir API uzerinden kapsayan Iron Software tarafindan geliştirilmis ticari bir .NET barkod kutuphanesidir. Farklı format aileleri için ayrı kütüphaneler bulundurmak yerine,IronBarcodetüm formatları BarcodeEncoding parametreleri üzerinden aynı statik BarcodeWriter ve BarcodeReader giriş noktalarıyla sunar.

Kütüphane, statik bir API modeli kullanır: BarcodeWriter.CreateBarcode örnek kurulumu gerektirmez ve BarcodeReader.Read otomatik çok formatlı algılama ile dosya yolları, akışlar, bayt dizileri ve System.Drawing.Bitmap nesneleri kabul eder. PDF belge desteği – hem PDF sayfalarından barkod okuma hem de barkodları PDF'lere yerleştirme – harici bağımlılıklar olmaksızın dahildir.

Anahtar özellikler:

  • 50+ Barkod Formatı: QR Kod, Code 128, EAN-13, UPC-A, DataMatrix, PDF417, Aztec, MaxiCode ve tek bir BarcodeEncoding parametresi üzerinden daha fazlası
  • Entegre Okuma API: BarcodeReader.Read, resimler, PDF'ler ve akışlar ile otomatik format algılaması yapar — ikinci bir kütüphane gerekmez
  • QR Kod Özelleştirme: Logo gömme, renk değişiklikleri ve sessiz alan kontrolü QRCodeWriter metotları üzerinden
  • PDF Entegrasyonu: PDF sayfalarından barkodları oku ve mevcut PDF belgelere barkodları damgala
  • Statik API Modeli: Üreteç örneği gerektirmez — BarcodeWriter statik bir sınıftır
  • Ticari Lisans: $749'dan başlayan fiyatlarla tek geliştirici lisansı, format başına kısıtlamalar olmaz

Özellik Karşılaştırması

Aşağıdaki tablo,QRCoderveIronBarcodearasındaki temel farkları özetlemektedir:

Özellik QRCoder IronBarcode
QR Kodu Oluşturma Evet — mükemmel Evet
1D Barkod Oluşturma Hayır Evet (30+ format)
Diğer 2D Formatlar Hayır Evet (DataMatrix, PDF417, Aztec, vb.)
Barkod Okuma Hayır Evet — otomatik algılama
PDF Desteği Hayır Evet — oku ve damgala
Lisans MIT — gerçek anlamda ücretsiz Ticari ($749 tek geliştirici)

Detayli Özellik Karsilastirmasi

Özellik QRCoder IronBarcode
Uretim
QR Kod Evet Evet
Mikro QR Evet Hayır
Kod 128 Hayır Evet
EAN-13 / UPC-A Hayır Evet
DataMatrix Hayır Evet
PDF417 Hayır Evet
Aztek Hayır Evet
Toplam formatlar 1 50+
QR Kod Özellikleri
Hata düzeltme (L/M/Q/H) Evet Evet
Logo yerleştirme Evet Evet
Renk özelleştirme Evet Evet
SVG çıkışı Evet Evet
ASCII sanat formatı Evet Hayır
Base64 formatı Evet Hayır
PayloadGenerator yardımcıları Evet Hayır — manuel dizi oluşturma
Okuma
Görüntüden çöz Hayır Evet
PDF'den çöz Hayır Evet
Otomatik format algılama Hayır Evet
Entegrasyon
PDF barkod damgalama Hayır Evet
Sıfır harici bağımlılık Evet Kendisi yeterli
Lisanslama
Lisans türü MIT Ticari
Gelir kısıtlamaları None None
Format başına fiyatlandırma None None

QR Kodu Oluşturma

Her iki kütüphane de QR kodları oluşturur, ancak API'ları oluşturma adımı ve render adımının birbirleriyle nasıl ilişkili olduğunu farklı tasarım felsefeleri yansıtır.

QRCoder Yaklaşımı

QRCoder iki aşamalı bir model kullanır: QRCodeGenerator.CreateQrCode veri ve hata düzeltme seviyesini kodlayan bir QRCodeData ara nesne üretir ve ayrı bir renderer sınıfı bu ara nesneyi istenen çıkış formatına dönüştürür. ECC seviyesi varsayılanı olmayan gerekli bir parametredir — geliştiricilerin açıkça seçmeleri gerekmektedir:

using QRCoder;
using System.IO;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.M
);

var qrCode = new PngByteQRCode(qrCodeData);
byte[] pngBytes = qrCode.GetGraphic(20); // pixels per module
File.WriteAllBytes("qr.png", pngBytes);
using QRCoder;
using System.IO;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.M
);

var qrCode = new PngByteQRCode(qrCodeData);
byte[] pngBytes = qrCode.GetGraphic(20); // pixels per module
File.WriteAllBytes("qr.png", pngBytes);
Imports QRCoder
Imports System.IO

Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M)

Dim qrCode As New PngByteQRCode(qrCodeData)
Dim pngBytes As Byte() = qrCode.GetGraphic(20) ' pixels per module
File.WriteAllBytes("qr.png", pngBytes)
$vbLabelText   $csharpLabel

Bu model, kod verilerini yeniden üretmeden qrCodeData nesnesini birden fazla çıkış formatı için yeniden kullanmanın avantajını sağlar. Renderer sınıfları arasında PngByteQRCode, SvgQRCode, AsciiQRCode, Base64QRCode ve BitmapByteQRCode vardır.

IronBarcode Yaklaşımı

IronBarcode, oluşturma ve rendera statik BarcodeWriter sınıfı üzerinde bir akış zincirine indirger. Formatı BarcodeEncoding.QRCode parametresi seçer ve SaveAsPng veya ToPngBinaryData gibi terminal metotlar çıktıyı belirler:

using IronBarCode;

// Single fluent call — no intermediate objects
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .ResizeTo(400, 400)
    .SaveAsPng("qr.png");
using IronBarCode;

// Single fluent call — no intermediate objects
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .ResizeTo(400, 400)
    .SaveAsPng("qr.png");
Imports IronBarCode

' Single fluent call — no intermediate objects
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode) _
    .ResizeTo(400, 400) _
    .SaveAsPng("qr.png")
$vbLabelText   $csharpLabel

Açık hata düzeltme kontrolü gerektiren durumlar için, QRCodeWriter sınıfı formatlara özgü seçenekler sunar:

using IronBarCode;

var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Medium
);
qr.SaveAsPng("qr.png");
using IronBarCode;

var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Medium
);
qr.SaveAsPng("qr.png");
Imports IronBarCode

Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium)
qr.SaveAsPng("qr.png")
$vbLabelText   $csharpLabel

IronBarcode 2D barkod oluşturma rehberi, aynı BarcodeWriter giriş noktası üzerinden QR Kod, DataMatrix,PDF417veAztekde dahil olmak üzere tüm desteklenen 2D formatları kapsar.

QR Kod Özelleştirme

Her iki kütüphane de QR kodlarında logo yerleştirme ve renk değişikliklerini destekler, ancak hangi sistem türlerinin gerektiği konusunda yaklaşımları farklıdır.

QRCoder Yaklaşımı

QRCoder logo gömme yolları QRCode renderer sınıfı üzerinden gider (PngByteQRCode'den farklı), bu sınıf bir GetGraphic overloadu sunar ve bir System.Drawing.Bitmap kabul eder. Bu, çağırıcı kodun logo dosyasını yüklemek için doğrudan System.Drawing ile çalışması gerektiği anlamına gelir:

using QRCoder;
using System.Drawing;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.H // High ECC required when logo occludes part of the code
);

var qrCode = new QRCode(qrCodeData);
var logoBitmap = new Bitmap("logo.png");
var qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap);
qrBitmap.Save("qr-logo.png", System.Drawing.Imaging.ImageFormat.Png);
using QRCoder;
using System.Drawing;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.H // High ECC required when logo occludes part of the code
);

var qrCode = new QRCode(qrCodeData);
var logoBitmap = new Bitmap("logo.png");
var qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap);
qrBitmap.Save("qr-logo.png", System.Drawing.Imaging.ImageFormat.Png);
Imports QRCoder
Imports System.Drawing

Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.H) ' High ECC required when logo occludes part of the code

Dim qrCode As New QRCode(qrCodeData)
Dim logoBitmap As New Bitmap("logo.png")
Dim qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap)
qrBitmap.Save("qr-logo.png", System.Drawing.Imaging.ImageFormat.Png)
$vbLabelText   $csharpLabel

Renk özelleştirmesi, GetGraphic overloadunun darkColor ve lightColor parametreleri üzerinden benzer bir model takip eder.

IronBarcode Yaklaşımı

IronBarcode, logo gömme ve renk değişikliklerini QRCodeWriter sonuç nesnesi üzerinde adlandırılan yöntemler olarak sunar. AddBrandLogo metodu bir dosya yolu kabul eder ve ChangeBarCodeColor bir Color değeri kabul eder:

using IronBarCode;
using System.Drawing;

// Logo embedding
var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest
);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-logo.png");

// Colour customisation
var coloredQr = QRCodeWriter.CreateQrCode("https://example.com", 500);
coloredQr.ChangeBarCodeColor(Color.DarkBlue);
coloredQr.SaveAsPng("colored-qr.png");
using IronBarCode;
using System.Drawing;

// Logo embedding
var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest
);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-logo.png");

// Colour customisation
var coloredQr = QRCodeWriter.CreateQrCode("https://example.com", 500);
coloredQr.ChangeBarCodeColor(Color.DarkBlue);
coloredQr.SaveAsPng("colored-qr.png");
Imports IronBarCode
Imports System.Drawing

' Logo embedding
Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
qr.AddBrandLogo("logo.png")
qr.SaveAsPng("qr-logo.png")

' Colour customisation
Dim coloredQr = QRCodeWriter.CreateQrCode("https://example.com", 500)
coloredQr.ChangeBarCodeColor(Color.DarkBlue)
coloredQr.SaveAsPng("colored-qr.png")
$vbLabelText   $csharpLabel

QR kod stil özelleştirme rehberi, logo boyutlandırma, renk kombinasyonları ve sessiz alan kontrolünü ayrıntılı bir şekilde kapsar.

Barkod Okuma

Barkod okuma, iki kütüphane arasındaki en belirgin beceri farkını temsil eder.

QRCoder Yaklaşımı

QRCoder'in bir barkod okuma API'si yok. QRCodeGenerator sınıfı ve tüm renderer sınıfları yalnızca oluşturma içindir. Görsel, dosya veya akıştan QR kodu çözmek için bir yöntem yok. Hem QR kodları oluşturup hem de okumaları gereken uygulamalar, genellikle kendi API'si, kendi ad alanı ve kendi bakım döngüsü ile ayrı bir kütüphane eklemelidir — genellikle ZXing.Net:

//QRCoderhas no reading API.
// These methods do not exist:
//   qrGenerator.Decode("image.png");
//   QRCodeReader.Read("image.png");
//
// A separate library (e.g., ZXing.Net) is required for decoding.
//QRCoderhas no reading API.
// These methods do not exist:
//   qrGenerator.Decode("image.png");
//   QRCodeReader.Read("image.png");
//
// A separate library (e.g., ZXing.Net) is required for decoding.
'QRCoder has no reading API.
' These methods do not exist:
'   qrGenerator.Decode("image.png")
'   QRCodeReader.Read("image.png")
'
' A separate library (e.g., ZXing.Net) is required for decoding.
$vbLabelText   $csharpLabel

Bu bir tasarım kararıdır, bir gözden kaçırma değil — QRCoder, açık bir şekilde bir üretim kütüphanesidir.

IronBarcode Yaklaşımı

IronBarcode, aynı pakette bir okuma API'si dahil eder. BarcodeReader.Read görüntü dosyaları, PDF dosyaları, akışlar ve System.Drawing.Bitmap nesneleri kabul eder. Hangi formatın aranacağını belirtmek zorunda kalmadan barkod formatlarını otomatik olarak algılar ve görselde bulunan tüm barkodları geri döndürür:

using IronBarCode;

// Reading a QR code — no separate library required
var results = BarcodeReader.Read("qr.png");
foreach (var result in results)
{
    Console.WriteLine(result.Text);        // decoded value
    Console.WriteLine(result.BarcodeType); // QRCode, Code128, EAN13, etc.
}
using IronBarCode;

// Reading a QR code — no separate library required
var results = BarcodeReader.Read("qr.png");
foreach (var result in results)
{
    Console.WriteLine(result.Text);        // decoded value
    Console.WriteLine(result.BarcodeType); // QRCode, Code128, EAN13, etc.
}
Imports IronBarCode

' Reading a QR code — no separate library required
Dim results = BarcodeReader.Read("qr.png")
For Each result In results
    Console.WriteLine(result.Text)        ' decoded value
    Console.WriteLine(result.BarcodeType) ' QRCode, Code128, EAN13, etc.
Next
$vbLabelText   $csharpLabel

Görüntülerden barkod okuma rehberi, PDF'lerden, çok sayfalı belgelerden, akışlardan ve düşük çözünürlüklü veya gürültülü görüntülerden okumayı aynı giriş noktası üzerinden kapsar.

QR'nin Ötesindeki Format Kapsamı

QRCoder Yaklaşımı

QRCoder, yalnızca QR kodları üretir — bu bir tasarım gereğidir. QRCodeGenerator.CreateQrCode metod, kütüphanenin sağladığı tek üretim giriş noktasıdır. QR kodlarıyla başlayıp daha sonraKod 128nakliye etiketleri, EAN-13 ürün kodları veyaDataMatrixilaç uygunluk kodları gerektiren projeler, her ek formatı kapsamak için ikinci bir kütüphane eklemelidir:

using QRCoder;

//QRCoderis limited to QR — other formats require separate packages
var qrGenerator = new QRCodeGenerator();
var qr = qrGenerator.CreateQrCode("scan-to-track", QRCodeGenerator.ECCLevel.M);

//Kod 128requires a different library (e.g., NetBarcode)
//DataMatrixrequires yet another library
// Reading any format requires yet another library
using QRCoder;

//QRCoderis limited to QR — other formats require separate packages
var qrGenerator = new QRCodeGenerator();
var qr = qrGenerator.CreateQrCode("scan-to-track", QRCodeGenerator.ECCLevel.M);

//Kod 128requires a different library (e.g., NetBarcode)
//DataMatrixrequires yet another library
// Reading any format requires yet another library
Imports QRCoder

'QRCoder is limited to QR — other formats require separate packages
Dim qrGenerator As New QRCodeGenerator()
Dim qr = qrGenerator.CreateQrCode("scan-to-track", QRCodeGenerator.ECCLevel.M)

'Kod 128 requires a different library (e.g., NetBarcode)
'DataMatrix requires yet another library
'Reading any format requires yet another library
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı

IronBarcode tüm format ailelerini aynı BarcodeWriter.CreateBarcode giriş noktası üzerinden kapsar. QR kodundan Code 128'e ve DataMatrix'e geçiş, yalnızca BarcodeEncoding parametresini değiştirmeyi gerektirir — ek paketler, yeni ad alanları, ayrı API'ler gerekmez:

using IronBarCode;

// All formats — one API, one package
BarcodeWriter.CreateBarcode("scan-to-track", BarcodeEncoding.QRCode)
    .SaveAsPng("campaign-qr.png");

BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .SaveAsPng("product-code.png");

BarcodeWriter.CreateBarcode("LOT-ABC-123", BarcodeEncoding.DataMatrix)
    .SaveAsPng("pharma-code.png");
using IronBarCode;

// All formats — one API, one package
BarcodeWriter.CreateBarcode("scan-to-track", BarcodeEncoding.QRCode)
    .SaveAsPng("campaign-qr.png");

BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .SaveAsPng("product-code.png");

BarcodeWriter.CreateBarcode("LOT-ABC-123", BarcodeEncoding.DataMatrix)
    .SaveAsPng("pharma-code.png");
Imports IronBarCode

' All formats — one API, one package
BarcodeWriter.CreateBarcode("scan-to-track", BarcodeEncoding.QRCode) _
    .SaveAsPng("campaign-qr.png")

BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128) _
    .SaveAsPng("shipping-label.png")

BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13) _
    .SaveAsPng("product-code.png")

BarcodeWriter.CreateBarcode("LOT-ABC-123", BarcodeEncoding.DataMatrix) _
    .SaveAsPng("pharma-code.png")
$vbLabelText   $csharpLabel

API Eslestirme Referansi

QRCoder IronBarcode
new QRCodeGenerator() Statik sınıf — örnek gerekmez
qrGenerator.CreateQrCode(data, ECCLevel.M) BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode)
new PngByteQRCode(qrCodeData) Gerekli değil — işleme, zincirin bir parçasıdır
qrCode.GetGraphic(20) .ToPngBinaryData() ile .ResizeTo(w, h)
new SvgQRCode(qrCodeData).GetGraphic(10) .SaveAsSvg(path)
new QRCode(qrCodeData).GetGraphic(...) QRCodeWriter.CreateQrCode(data, size, level)
QRCodeGenerator.ECCLevel.L QRCodeWriter.QrErrorCorrectionLevel.Low
QRCodeGenerator.ECCLevel.M QRCodeWriter.QrErrorCorrectionLevel.Medium
QRCodeGenerator.ECCLevel.Q QRCodeWriter.QrErrorCorrectionLevel.Quartile
QRCodeGenerator.ECCLevel.H QRCodeWriter.QrErrorCorrectionLevel.Highest
PayloadGenerator.WiFi(...).ToString() "WIFI:T:WPA;S:{ssid};P:{pass};;"
Okuma API'si yok BarcodeReader.Read(path)
Sadece QR formatı BarcodeEncoding.* aracılığıyla50+format

Ekipler QRCoder'dan IronBarcode'a Geçmeyi Düşündüğünde

Projeleri kesinlikle yalnızca QR ile sınırlı olacak ekipler için,QRCoderiyi bakim gören bir kütüphanedir ve amacını iyi bir şekilde hizmet etmeye devam eder. Aşağıdaki senaryolar, ekiplerin bu duruşu yeniden değerlendirmeye yönlendirecek koşulları tanımlar.

Format Gereksinimleri QR'nin Ötesine Geçiyor

Çoğu barkod gereksinimi QR kodlarıyla başlar veQRCoderbu başlangıç kapsamını güvenilir bir şekilde işler. İkinci bir format konuşmaya girdiğinde gerginlik ortaya çıkar. Nakliye icinKod 128etiketleri gereksinen lojistik ekipleri, EAN-13 ürün kodları gereksinen perakende operasyonlar, seri numaralandırma icinDataMatrixtalep eden farmasötik iş akışları — her yeni format bir ekibi başka bir NuGet bağımlılığı eklemeye itiyor. Her ek kütüphanenin entegrasyon maliyeti, öğrenilecek yeni bir ad alanı, izlenecek bir sürüm döngüsü ve .NET yükseltmelerinde potansiyel sürüm çakışması noktası içerir.

Barkod Okuma Gereksinimi Olmak

Kampanya için gönderilen QR kodları oluşturan bir uygulama, sadece oluşturma sistemidir. Gelen gönderimleri işleyen, ürün kodlarını varışta doğrulayan veya bir etkinlikte biletleri onaylayan bir uygulama ise, oluşturma ve okuma sistemidir.QRCodertasarım gereği okuma yeteneğine sahip değil — bu boşluk ikinci bir kütüphane tarafından doldurulmalıdır. Okuma kütüphanesinin format belirtim gereksinimleri veya kendi başına iş parçacığı güvenliği kısıtlamaları getirmesi durumunda, bir okuma kütüphanesinin tanıtımı, barkod alt sisteminin entegrasyon ayak izini önemli ölçüde değiştirir.

Çoklu Kütüphane Bakım Yükü

QRCoder tabanlı bir proje için doğal bir birikim modeli, tahmin edilebilir bir yol izler: QR oluşturma icin QRCoder, gönderi etiketleri icin 1D barkod kütüphanesi, çözücüler icin okuma kütüphanesi. Her kütüphane kendi belgelerini, kendi sürüm temposunu ve kendi işleyiş değişikliği geçmişini taşır. Küçük bir .NET sürüm yükseltmesi, bir kütüphane icin önemsiz olabilir, ancak başka birinde önemli bir değişiklikle çakışabilir. Yıllar boyunca bu birikimi yöneten ekipler, gizli maliyetin başlangıç entegrasyonunda değil, çoklu yükseltme döngülerinde artan bakım yükünde olduğunu bildiriyor.

PDF Belge Desteği

Barkodları PDF raporlarına gömmek veya belge işleme hattında gelen PDF belgelerinden barkod çıkarmak,QRCoderile mümkün değildir. PDF desteği ya barkod yetenekleri olan tam bir PDF kütüphanesi ya da özel kütüphane kombinasyonu gerektirir. Belge odaklı iş akışları (fatura işleme, uyum raporlama, şablonlu PDF'lerden etiket oluşturma) oluşturan ekipler, QRCoder'in kapsam sınırının bir projenin yaşam döngüsünün başlarında PDF gereksinimleriyle kesiştiğini fark eder.

Genel Geçiş Dusunceleri

PayloadGenerator Dize Formatı

QRCoder'ın PayloadGenerator yardımcı sınıfları, kamuya açık QR kod yük standardı ile uyumlu dizeler üretir. Örneğin, WiFi formatı WIFI:T:WPA;S:NetworkName;P:Password;; üretir. Bu dizeler, IronBarcode'da yardımcı sınıf olmadan doğrudan oluşturulabilir, çünkü format, QR kodu spesifikasyonu tarafından belgelenmiş bir genel standarttır. Çok sayıda PayloadGenerator kullanımına sahip ekipler, dizge oluşturmayı tekrarlayan küçük statik yardımcı yöntemler yazmayı planlamalıdır.

ECCLevel Enum Eşleme

QRCoder, L, M, Q, H değerleriyle QRCodeGenerator.ECCLevel kullanır.IronBarcodeQRCodeWriter.QrErrorCorrectionLevel kullanır ve değerler Low, Medium, Quartile ve Highest'dir. Eşleme doğrudandır, ancak enum referansları tüm çağrı noktalarında güncellenmelidir. QRCoder, her CreateQrCode çağrısında açık ECC seçimi gerektirirken, IronBarcode, BarcodeWriter.CreateBarcode yolu kullanıldığında mantıklı bir varsayılan uygular.

Renderer Sınıfı Kaldırma

QRCoder'ın renderer sınıfları — PngByteQRCode, SvgQRCode, AsciiQRCode, Base64QRCode, QRCode — geçişten sonra gereksiz hale gelir. IronBarcode, rendera GeneratedBarcode üzerinde akış zincirine yerleştirir, bu nedenle ara renderer nesnesi modeli taşınmaz. Bu renderer sınıflarını anında başlatan kod, BarcodeWriter sonuç üzerinde terminal metot çağrılarıyla değiştirilebilir.

EkIronBarcodeIlkeler

Yukarıdaki karşılaştırma bölümlerinde yer almayanIronBarcodeyetenekleri:

.NET Uyumlulugu ve Gelecek Hazirikligi

IronBarcode, düzenli olarak güncellenen ve mevcut ve gelecekteki .NET sürümlerine yönelik hedeflemeler içeren aktif bir geliştirme süreci yürütmektedir. Kütüphane, .NET 8, .NET 9'u destekler ve .NET 10 için (2026 sonunda beklenen) uyumluluk güncellemeleri, Iron Software'in devam eden sürüm takvimine dahildir.QRCoderda aktif olarak bakımı yapılmakta olup tüm mevcut .NET hedeflerinde çalışmaktadır; sıfır bağımlılık tasarımı ileriye dönük uyumluluğu basit hale getirir. Her iki kütüphane de uzun vadeli .NET projeleri için uygundur. IronBarcode'u tercih eden takımlar için ticari destek modeli, teknik yardıma doğrudan erişim ve öncelikli hata çözümü sağlar.

Sonuç

QRCoder ve IronBarcode, farklı mimari başlangıç noktalarından yola çıkarak aynı başlangıç gereksinimini — QR kodu oluşturma — karşılar. QRCoder, QR'da bilerek sona erdirilen, belirli bir format için özel olarak üretilmiş bir kütüphanedir. IronBarcode, 50'den fazla barkod formatında oluşturma, okuma ve PDF entegrasyonunu kapsayan çok formatlı bir kütüphanedir. Karşılaştırma, iyi bir kütüphane ile daha iyi bir kütüphane arasında değildir; uzmanlaşmış bir araç ile genel amaçlı bir araç arasındadır.

QRCoder, QR kodu oluşturmanın kalıcı ve sınırlı bir gereklilik olduğu projeler için doğru seçimdir. Bağımlı olmadığı izi, sınırsızMITlisansı ve PayloadGenerator yardımcıları ile, 2FA kayıt iş akışı, bir pazarlama kampanyası QR üreticisi veya barkod kapsamının kesin olarak belirlendiği herhangi bir bağlam için mükemmel bir seçimdir. Kütüphane, iyi bakımlı, yaygın olarak kullanılır ve belirtilen fonksiyonunu güvenilir bir şekilde yerine getirir. Bu özelliklere sahip ekipler için geçiş yapmanın bir avantajı yoktur.

Barkod gereksinimleri QR oluşturmanın ötesine geçiyor — veya geçmesi muhtemelse — daha pratik seçimIronBarcodeolur. Gelen gönderilerden veya taranmış belgelerden kodları okuyabilen, QR kampanyaları yanındaKod 128etiketleri oluşturan veya PDF raporlarına gömülü barkodlar üreten uygulamalar, tüm bu görevlerde tutarlı bir API'den faydalanır. QRCoder C# alternatifleri rehberi, sadece QR olan kütüphanelerin üretim ortamlarında sınırlarına ulaştığı yer hakkında ek bağlam sağlar. Lisanslama $749'dan başlıyor ve IronBarcode lisans sayfasında tam olarak kapsanmaktadır.

Dürüst değerlendirme, doğru aracın tamamen projenin kapsamına bağlı olduğunu belirtir. Kalıcı yalnızca QR gereksinimleri için,QRCodergerekli her şeyi ücretsiz olarak sağlar. Birden fazla formatı, okumayı veya PDF entegrasyonunu kapsayan gereksinimler için, IronBarcode, proje geliştikçe birden çok tek amaçlı kütüphane yönetme gereğini ortadan kaldırır.

Sıkça Sorulan Sorular

QRCoder.NET nedir?

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

QRCoder.NET ve IronBarcode arasındaki ana farklar nelerdir?

IronBarcode, örnek yönetimi gerektirmeyen statik, durumsuz bir API kullanır, oysa QRCoder.NET 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 ortamlar arasında tek anahtarlı lisanslama sağlar.

IronBarcode lisanslamak QRCoder.NET'den 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, QRCoder.NET'in 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, toplu işlemeyle QRCoder.NET'e kıyasla nasıl başa çıkıyor?

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.

IronBarcode'u satın almadan önce değerlendirebilir miyim, QRCoder'den farklı olarak?

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.

QRCoder.NET 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.

QRCoder.NET'den IronBarcode'a geçiş yapmak basit mi?

QRCoder.NET'den IronBarcode'a geçiş, öncelikle örnek tabanlı API çağrılarını IronBarcode'un statik yöntemleriyle değiştirmek, lisanslama belgelerini kaldırmak ve sonuç özellik adlarını güncellemeyi içerir. Çoğu geçiş, kodu azaltmakla, eklemekten daha fazla ilgilidir.

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